Skip to content

fix(skill): name graphify affected in every always-on block (#3177) - #3241

Open
abhay-codes07 wants to merge 1 commit into
Graphify-Labs:v8from
abhay-codes07:fix/always-on-affected
Open

fix(skill): name graphify affected in every always-on block (#3177)#3241
abhay-codes07 wants to merge 1 commit into
Graphify-Labs:v8from
abhay-codes07:fix/always-on-affected

Conversation

@abhay-codes07

Copy link
Copy Markdown
Contributor

Closes #3177.

The problem

The always-on block is the text that reaches the agent on every session — and none of the six templates mentioned affected. The issue's field measurement makes the cost concrete: on a real deployment, zero affected calls in 262 sessions (counted from tool_use blocks, not text grep), while the verbs the block does name — query, path, explain — were used daily once the graph was consulted at all. Agents reach for what the block names; the blast-radius verb was invisible at the only layer that is always loaded.

The change

All six templates (CLAUDE.md, AGENTS.md, GEMINI.md, Copilot instructions, Antigravity rules, Kiro steering) now name graphify affected "<symbol-or-file>" beside query/path/explain, each in its own template's voice — a rule bullet in the bullet-styled blocks, a sentence in Kiro's paragraph, a wrapped sentence in the Copilot prose. The wording says what the verb uniquely answers: the blast radius (reverse dependencies), which query/path/explain do not show.

The always-on blocks are frozen against a v8 baseline by the --always-on-roundtrip validator, so each addition is recorded in ALWAYS_ON_SANCTIONED_EDITS as an audited, purely-additive substitution — the guard keeps rejecting any other drift. Artifacts regenerated, expected/ blessed, all five skillgen validators pass.

Two existing tests that pinned the registry to exactly the single #1530 entry are updated faithfully: the #1530 substitution is still asserted first and intact, every constant is asserted to carry exactly one purely-additive #3177 edit (token-prefix additivity, since the Copilot edit rewraps a line), and the byte-compare now applies the full registry rather than one hand-applied pair.

Tests

tests/test_always_on_affected.py — all six blocks exist, every one names graphify affected and the blast radius, and the previously-named verbs are untouched. With the change reverted, 6 of 13 fail (the existence and query-verb checks rightly keep passing). tests/test_skillgen.py passes in full (78 together); the full suite matches the fresh v8 (0.9.53) baseline.

…fy-Labs#3177)

The always-on block is the text that reaches the agent on EVERY session -
and none of the six templates mentioned `affected`. Measured on a real
deployment: zero calls in 262 sessions, while the verbs the block does
name (query, path, explain) were used daily once the graph was consulted
at all. Agents reach for what the block names.

All six templates (CLAUDE.md, AGENTS.md, GEMINI.md, Copilot instructions,
Antigravity rules, Kiro steering) now name the blast-radius verb beside
query/path/explain, in each template's own voice, and the additions are
recorded as sanctioned edits against the frozen v8 baseline so the
always-on round-trip validator keeps guarding everything else. Artifacts
regenerated, expected/ blessed, all five skillgen validators pass.
Copilot AI lite review requested due to automatic review settings August 31, 2026 11:50

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@graphify-labs graphify-labs Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Graphify reviewed this change.

Worth a look — the grounded gate found no coupling regressions or blocking issues, but 1 advisory finding(s) below merit a look before merge.


Graphify review — findings

Adds a graphify affected "<symbol-or-file>" blast-radius rule to all six always-on templates so every session tells the agent to check reverse dependencies before modifying a symbol, and mirrors it into the packaged expected/ fixtures. Extends the sanctioned-edit registry so each always-on constant carries exactly one purely additive #3177 substitution, and reworks test_always_on_roundtrip_is_byte_faithful to apply every sanctioned edit in sequence rather than the single old→new pair. Adds test_always_on_affected.py, which asserts all six blocks name both graphify affected/"blast radius" and the existing graphify query verb.

Worth a look

  • Additive-edit assertion fails for kiro-steering block whose new text is not a word-prefixtests/test_skillgen.py:771 · Escalate · medium
    • agreed by 2 of 2 members but NOT verified (no proof, no reproducing execution) — consensus is not a verdict; needs human review
Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 282 functions depend on the 282 functions this change touches.

Health — this change adds coupling hotspots:

  • new: render() — 13 callers, 5 callees
  • new: audit_coverage() — 8 callers, 6 callees
  • new: main() — 3 callers, 11 callees
  • new: monolith_roundtrip() — 3 callers, 5 callees
  • new: test_audit_catches_a_dropped_non_allowlisted_heading() — 0 callers, 6 callees

Verification — 282 functions in the blast radius were not formally verified this run (proofs are advisory here).

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 282 function(s) in the blast radius were not formally verified this run

· 5 more finding(s) on lines outside this diff (see the check run).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

always_on: none of the six templates name affected, and it went uncalled in 262 sessions

2 participants