An advisory nudge names a node you can still advise - #213
Merged
Conversation
…ipped The milestone was scaffolded 2026-08-11 by add/3.0.0 and driven to six closed tasks without its CARD or EXIT ever being filled in. Nothing asked: `freeze` did not refuse a template Milestone until the `authoring-beat-named` task shipped that guard, and `placeholders_in` reads only RULES/ASSUMPTIONS/CHECKS, which a Milestone body does not have. The new `unauthored_node` finding surfaced it, and `status` had been pointing at it as live work for three weeks. Deleting it was considered and rejected on inspection: six tasks declare `milestone: v3-final-collateral` and all six are done, so removing the node would have traded one warning for six dangling edges. Authored retrospectively from what those six tasks shipped, closed 6/6, archived. The `why:` says out loud that it was written after the fact. author: Tin Dang
Measured on this repo's own bundle: 23 of doctor's 25 findings were `unadvised_sensitive`, and every one named a task already `done`. The advice each carries — attach a lens — is unreachable on a closed, gated node, so the report read as a wall of noise with the two actionable findings sitting inside it. A report is read as a worklist whether or not it was written as one. `unadvised_sensitive` now skips a node whose status is `done`. Everything else is untouched: type, sensitivity floor, lens presence, and the severity split where security warns and the softer floors nudge. Three calls inside the contract, each with a probe: - `done` is the ONLY exclusion. A node in `verify` can still take a lens before its gate, so excluding it would hide a finding while it is still actionable. - An ABSENT status is not closed (R:BLINDCLOSE). Hiding a finding on a malformed node is the failure this rule guards against, not an instance of it. - The closed findings are DROPPED, not tallied. A summary line is still a line the reader has to decide to ignore. On this bundle: 25 findings -> 1, and the survivor is the real `edge_unresolved` defect that the noise had been burying. Task: doctor-nudges-what-you-can-act-on, gated PASS on receipt runs/1.md. ENGINE_MD5 re-aimed 7932ec06 -> the doctor scoping. author: Tin Dang
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.
Two commits, both prompted by the
unauthored_nodefinding that shipped in 3.4.0 actually pointing at something.caf5b103— doctor reports what you can act onMeasured on this repo's own bundle: 23 of doctor's 25 findings were
unadvised_sensitive, and every one named a task alreadydone. The advice each carries — attach a lens — is unreachable on a closed, gated node, so the report read as a wall with the two actionable findings sitting inside it. A report is read as a worklist whether or not it was written as one.unadvised_sensitivenow skips a node whose status isdone. Type, sensitivity floor, lens presence and the severity split (securitywarn, softer floorsinfo) are untouched.Three calls inside the contract, each carrying a probe:
doneis the ONLY exclusion. A node inverifycan still take a lens before its gate; excluding it would hide a finding while it is still actionable.R:BLINDCLOSE). Hiding a finding on a malformed node is the failure this rule guards against, not an instance of it.On this bundle: 25 findings → 1, and the survivor is the real
edge_unresolveddefect the noise had been burying.62e157f3— v3-final-collateral, authored from the work it shippedScaffolded 2026-08-11 by
add/3.0.0and driven to six closed tasks without its CARD or EXIT ever being filled in. Nothing asked:freezedid not refuse a template Milestone untilauthoring-beat-namedshipped that guard, andplaceholders_inreads only RULES/ASSUMPTIONS/CHECKS, which a Milestone body does not have.statushad been pointing at it as live work for three weeks.Deletion was considered and rejected on inspection. Six tasks declare
milestone: v3-final-collateraland all six aredone, so removing the node would have traded one warning for six dangling edges. Authored retrospectively from what those six shipped, closed 6/6, archived — thewhy:says out loud that it was written after the fact.Verification
1116 passed, 7 skippedacross both test roots. Taskdoctor-nudges-what-you-can-act-ongated PASS onruns/1.mdatfreshness: fresh;ENGINE_MD5re-aimed and all four engine twins synced.One note for the reviewer: my first fixture called
add.doctor(root / ".add"), which returns[]—doctortakes the project root. That is the "green anchor proving nothing" shape, and it surfaced only because a check asserting preserved behaviour was failing when it should have passed.