fix(Custodian): collapse extra-root call-graph walks for sweep timeout - #52
Open
ProtocolWarden wants to merge 1 commit into
Open
fix(Custodian): collapse extra-root call-graph walks for sweep timeout#52ProtocolWarden wants to merge 1 commit into
ProtocolWarden wants to merge 1 commit into
Conversation
Owner
Author
|
Self-review concerns — auto-fixing (up to 6 attempts; re-queued if still unresolved): Failed checks: code_quality |
Owner
Author
|
Needs human attention (reason= The automated fix passes exhausted the Self-Heal Ladder (reached L2/2) without changing the branch; a fresh self-review on the same PR head still finds concerns. Further autonomous retries would repeat without progress. Latest concerns: Failed checks: code_quality |
ProtocolWarden
added a commit
that referenced
this pull request
Aug 3, 2026
First `cl reconcile prune --apply` this repo has had. The workflow was unrunnable here until ContextLifecycle #52 gave the lock an msvcrt backend -- `reconcile_lock` raised on any non-POSIX host, which is why this log kept being hand-trimmed instead of reconciled. Six sections moved to the private archive (PrivateManifest archive/console/Custodian/log-2026-08-03.md): INJ1, DC10 and the four D12 entries -- exactly the work #68 documented. The DOC GAP gate holds the rest back, correctly: pattern-collision masking, the orphan-scaffold cleanup and the `--only` gate still have no durable doc, so they stay `partial`. Ran with `--recent 20` rather than the default 10. At 10, prune also sweeps unclaimed sections past the tenth purely by age, which would have archived the undocumented work the gate had just declined to release -- the recency rule silently outranks the DOC GAP gate, which is worth knowing before running this with defaults. The archive pointer is hand-corrected. `cl reconcile prune` writes the archive's ABSOLUTE local path (prune.py `_pointer_section`), which on this machine put a home directory and a real name into a public repo, and would be meaningless on any other host. Replaced with the spec's own `<private-manifest>/...` form (boundary rule I2 -- the private repo is resolved at runtime, never hardcoded). Verified safe: `_ensure_pointer` is idempotent on the heading plus the pointer prefix rather than the path, so a re-run leaves the correction in place. The generator bug is ContextLifecycle's and is not fixed here. 399 -> 346 lines, 372 with this entry. Verified nothing was lost: every non-blank line of the pre-prune log is present in either the trimmed log or the archive. Re-running prune is a no-op and post-prune check is GREEN. Audit 0 findings. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ProtocolWarden
added a commit
that referenced
this pull request
Aug 3, 2026
First `cl reconcile prune --apply` this repo has had. It was unrunnable here until ContextLifecycle #52 gave the lock an msvcrt backend (`reconcile_lock` raised on any non-POSIX host) -- the mechanical reason this log has been hand-trimmed for months rather than reconciled. Six sections went to the private archive: INJ1, DC10 and the four D12 entries, exactly the work #68 documented. The DOC GAP gate held the rest back, correctly -- pattern-collision masking, the orphan-scaffold cleanup and the `--only` gate have no durable doc, so they stay `partial`. What this actually rescues: by the time it landed, #66/#67/#69 had each hand-pruned to fit under RC1 and all six sections were ALREADY DELETED from main. ADR 0001 named that pattern in the abstract ("D12's 'ships OPT-IN -- was red-walling consumers' shaped C16's default in #69, and entries from that era are now gone"); this is the concrete instance. The archive is therefore not a tidier copy of what main holds, it is the only copy outside git history. Ran with `--recent 20`, not the default 10. At 10 the prune also sweeps unclaimed sections past the tenth purely by age, so the recency rule silently outranks the DOC GAP gate and would have archived the undocumented work the gate had just declined to release. The pointer is hand-corrected. `cl reconcile prune` writes the archive's ABSOLUTE local path (`prune.py` `_pointer_section`), which on this machine put a home directory and a real name into this public repo, and is meaningless on any other host. Replaced with the spec's `<private-manifest>/...` form, which is what boundary rule I2 requires anyway. Safe to edit: `_ensure_pointer` is idempotent on the heading plus pointer prefix rather than the path, verified by re-running prune. The generator bug is ContextLifecycle's and is not fixed here. No narrative log entry, deliberately. main sits at 389/400 and a full entry runs ~36 lines, so adding one would have meant pruning history to land a commit about not pruning history. ADR 0001 argues rationale belongs in commit messages rather than duplicated into the log; this follows that. The pointer is the log's record. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ProtocolWarden
added a commit
that referenced
this pull request
Aug 3, 2026
First `cl reconcile prune --apply` this repo has had. It was unrunnable here until ContextLifecycle #52 gave the lock an msvcrt backend (`reconcile_lock` raised on any non-POSIX host) -- the mechanical reason this log has been hand-trimmed for months rather than reconciled. Six sections went to the private archive (PrivateManifest #14): INJ1, DC10 and the four D12 entries, exactly the work #68 documented. The DOC GAP gate held the rest back, correctly -- pattern-collision masking, the orphan-scaffold cleanup and the `--only` gate have no durable doc, so they stay `partial`. What this actually rescues: by the time it landed, #66/#67/#69 had each hand-pruned to fit under RC1 and all six sections were ALREADY DELETED from main. ADR 0001 named that pattern in the abstract; this is the concrete instance. The archive is the only copy outside git history. Ran with `--recent 20`, not the default 10. At 10 the prune also sweeps unclaimed sections past the tenth purely by age, so the recency rule silently outranks the DOC GAP gate and would have archived the undocumented work the gate had just declined to release. The pointer is hand-corrected. `cl reconcile prune` writes the archive's ABSOLUTE local path (`prune.py` `_pointer_section`), which on this machine put a home directory and a real name into this public repo. Replaced with the spec's `<private-manifest>/...` form, which boundary rule I2 requires anyway. Safe to edit: `_ensure_pointer` is idempotent on the heading plus pointer prefix rather than the path, verified by re-running prune. The generator bug is ContextLifecycle's and is not fixed here. No narrative log entry, deliberately. main sits at 389/400 and a full entry runs ~36 lines, so adding one would have meant pruning history to land a commit about not pruning history. ADR 0001 argues rationale belongs in commit messages rather than duplicated into the log; this follows that. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
No description provided.