Skip to content

chore(config): raise our own r1_line_budget to 1000, and say why - #73

Open
ProtocolWarden wants to merge 1 commit into
mainfrom
fix/rc1-budget-headroom
Open

chore(config): raise our own r1_line_budget to 1000, and say why#73
ProtocolWarden wants to merge 1 commit into
mainfrom
fix/rc1-budget-headroom

Conversation

@ProtocolWarden

Copy link
Copy Markdown
Owner

.console/log.md sat at 396 against a 400 budget, so the next entry anyone wrote red-failed our own audit.

Not hypothetical. It happened to #72 (437 lines), cleared only by pruning the two oldest surviving entries and condensing the new one — buying four lines. #66, #67 and #69 each pruned to land as well. The tax is structural: the pre-commit hook requires log.md to grow on every source commit and RC1 caps it, so their intersection is "delete history as a precondition for committing."

Two routes considered and rejected

Implement ADR 0001. Not ours to do — the ADR says so in its own Status section. .console/ is defined by the console-reconciliation spec, ContextLifecycle owns it, and RC1/RC2 are our implementation of the spec's gates, so adopting Option D here changes what those gates enforce fleet-wide. It is still proposed. Patching around an open question we raised ourselves would be the worst of both.

Add an archive file RC1 doesn't count. #65 already reverted exactly this. Pruned .console/ history goes to <private-manifest>/archive/console/<repo>/ via cl reconcile (spec §3.3 / Layer C); a second local archive is an orphan the tool never maintains.

Worse — RC1's glob is .console/*.md, top level only. Sharding into .console/log/2026-08.md would not reduce the count; it would remove the file from the gate's view entirely. Silently relocating content out of a control's reach isn't archiving, it's disabling the control while leaving it green. We removed || true from a consumer's audit install last week for being that same shape.

What this does instead

audit.r1_line_budget is a documented per-repo knob, read by detect_r1 and defaulted rather than hardcoded — so this touches no detector, no spec, and no other repo.

It is also what the detector intends. Its own docstring:

R1 (advisory) — … LOW/advisory — a "reconciliation due" signal, no judgement about what to prune.

400 suits an operator workspace whose log is session-continuity notes. Ours is a different artifact: it documents detector semantics consumers depend on, which is why entries run ~30 lines, and why pruning has already cost something real — the D12 entry that shaped C16's default-off design now survives only in git.

1000 gives ~20 entries of runway, putting reconciliation back on a scheduled cadence instead of every other commit. Still bounded, still gated, still archived by cl reconcile when it fires.

Explicitly interim

The fix is ADR 0001 landing one way or the other. This stops the bleeding without pre-empting that decision, and preserves the history the decision is about. Sized so that writing this entry does not itself trip the gate — the exact failure mode that prompted it.

Verification

  • log.md 442/1000 — RC1 gone.
  • custodian-doctor --strict → OK.
  • Audit's one remaining finding is W2 (core.hooksPath unset), pre-existing and local to my clone; CI sets it as the audit job's first step.

🤖 Generated with Claude Code

.console/log.md sat at 396 against a 400 budget, so the next entry anyone wrote
red-failed our own audit. Not hypothetical: that happened to #72 (437 lines) and
was cleared only by pruning the two oldest surviving entries and condensing the
new one, buying four lines. #66, #67 and #69 each pruned to land as well. The tax
is structural — the pre-commit hook requires log.md to grow on every source
commit and RC1 caps it, so their intersection is "delete history as a
precondition for committing."

Considered and rejected two of the three routes.

IMPLEMENT ADR 0001 — not ours to do. The ADR says so in its own Status section:
.console/ is defined by the console-reconciliation spec, ContextLifecycle owns
it, and RC1/RC2 are our implementation of the spec's gates, so adopting Option D
here changes what those gates enforce fleet-wide. It is still `proposed`.
Patching around an open question we raised ourselves would be the worst of both.

ADD AN ARCHIVE FILE RC1 DOES NOT COUNT — #65 already reverted exactly this.
Pruned .console/ history goes to <private-manifest>/archive/console/<repo>/ via
`cl reconcile` (spec §3.3 / Layer C); a second local archive is an orphan the
tool never maintains. Worse, RC1's glob is `.console/*.md` — top level only — so
sharding into .console/log/2026-08.md would not reduce the count, it would remove
the file from the gate's view entirely. Silently relocating content out of a
control's reach is not archiving, it is disabling the control while leaving it
green. We removed `|| true` from a consumer's audit install last week for being
that same shape.

RAISE OUR OWN BUDGET — `audit.r1_line_budget` is a documented per-repo knob, read
by detect_r1 and defaulted rather than hardcoded, so this touches no detector, no
spec and no other repo. It is also what the detector intends: its docstring calls
R1 "LOW/advisory — a reconciliation due signal, no judgement about *what* to
prune." 400 suits an operator workspace whose log is session-continuity notes.
Ours is a different artifact — it documents detector semantics consumers depend
on, which is why entries run ~30 lines and why pruning has already cost something
real (the D12 entry that shaped C16's default-off design survives only in git).
1000 gives ~20 entries of runway, putting reconciliation back on a scheduled
cadence instead of every other commit. Still bounded, still gated, still archived
by `cl reconcile` when it fires.

Explicitly interim. The fix is ADR 0001 landing one way or the other; this stops
the bleeding without pre-empting it, and preserves the history that decision is
about. Sized so writing this entry does not itself trip the gate.

Verified: log.md 442/1000, RC1 gone, custodian-doctor --strict OK. The one
remaining audit finding is W2 (core.hooksPath unset), pre-existing and local to
this clone — CI sets it as the audit job's first step.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.

1 participant