feat: advisory inline guard, posture as the only dial (0.0.45) - #44
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
summary
judgmentposture: it counts the window and attaches one advisory per budget multiple, so locus stays a judgment call instead of a blocked tool call. 0.0.44 demoted locus in the rules but left the mechanism denying with two escape routes, and both can be unavailable at the same moment: dispatch is gone when the session forbids the Agent tool or the package is structurally stranded, and verification cannot exist before the write, because the write you need is the one being blockedFUSION_INLINE_GUARD_MODEis retired rather than documented. a gate that ships an environment variable to switch it off is a gate that should not be blocking, and gate strength now has exactly one control, the posture dial. the auditmodefield is derived from posture (strictrecordsenforce,judgmentrecordsadvisory), so the ledger schema and/fusion:statsread unchangedTaskOutputorTaskStopprobe of a worker that already completed and was reaped. both were switchable through the retired variable and are provably useless calls, not locus judgments/fusion:statskeeps measuring what the deny used to prevent: the coercion ledger gainsinlineSprawlWindows(a window past twice the budget with no verification and no dispatch) anddeepestUnverifiedWindow, both derived from advisory depth so they stay populated now that judgment posture emits no denialsverificationevents exist in the whole ledger. the clincher is a session under 0.0.44 where the window had 4 writes and 1136 bytes left, denied a new React component twice on the byte cap, and only moved after the environment variable was set, after which it wrote 20 more files without incidentbreaking changes
FUSION_INLINE_GUARD_MODEis removed. it was the compatibility escape hatch for the blocking guard, and injudgmentposture there is nothing left to escape. a setup that relied on it can drop it; a setup that wants the old floors uses/fusion:config set-posture strictjudgmentposture (it still fails closed instrict), because an unreadable counter should never stop the workstrictposture is byte for byte the 0.0.44 behavior: five writes per dispatch opened window, three tail edits at most 1024 bytes to files already in the window, the zero dispatch relief of ten writes and 16384 bytes, new path Writes and NotebookEdit denied past thattest plan
already verified
npm test-> 1057 tests, 1056 pass, 0 fail, 1 skipclaude plugin validateonplugins/codex,plugins/grok,plugins/fusion, and.-> 4/4 passednode bench/manifest.mjs --check-> up to date; all 9 JSON manifests parsenode plugins/fusion/scripts/generate-rules-manifest.mjs-> 36 hashes, rules sync suite 14/14FUSION_INLINE_GUARD_MODE,reliefWritesInWindow,reliefBytesInWindow,countUnverifiedAccumulations-> no remaining references outside the CHANGELOGmode=advisory posture=judgmentreviewer should verify
FUSION_POSTURE=strictstill denies: five Edits inside a repo, then a sixth new path Write is refused with the dispatch framed reason, and/fusion:statsshows the deny withmode: enforceplugins/fusion/rules/orchestration.md, the runtime guard line); the load bearing invariants in CONTRIBUTING's rules release checklist are untouched by itnotes
/fusion:statsplus the firstinlineSprawlWindowsreading