@event4u/agent-config 14.6.0 → 14.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +260 -7
- package/README.md +1 -1
- package/dist/agent-src/commands/analyze/inbox.md +264 -10
- package/dist/agent-src/commands/analyze.md +1 -1
- package/dist/agent-src/commands/roadmap/process-full.md +116 -30
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +31 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +135 -104
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/decision-revisit-gate.md +3 -0
- package/dist/agent-src/rules/fix-what-you-see.md +108 -0
- package/dist/agent-src/rules/no-roadmap-references.md +0 -5
- package/dist/agent-src/rules/recurring-criticism.md +110 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/rule-type-governance.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +17 -0
- package/dist/agent-src/rules/skill-quality.md +0 -2
- package/dist/agent-src/rules/source-confidentiality.md +37 -7
- package/dist/agent-src/scripts/archival_sweep.ts +117 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +19 -3
- package/dist/agent-src/scripts/gate_budget.ts +282 -0
- package/dist/agent-src/scripts/gate_execute.ts +72 -31
- package/dist/agent-src/scripts/roadmap_gates.ts +74 -3
- package/dist/agent-src/scripts/update_roadmap_progress.ts +251 -7
- package/dist/agent-src/skills/ai-council/SKILL.md +48 -807
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +320 -0
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +99 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +162 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +125 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +143 -0
- package/dist/agent-src/skills/quality-tools/SKILL.md +34 -326
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +113 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +222 -0
- package/dist/agent-src/skills/roadmap-management/SKILL.md +15 -409
- package/dist/agent-src/skills/roadmap-management/references/archival.md +226 -0
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +107 -0
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +47 -0
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +58 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +34 -570
- package/dist/agent-src/skills/skill-writing/references/procedure.md +275 -0
- package/dist/agent-src/skills/skill-writing/references/read-only-scripts.md +18 -0
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +298 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +45 -2
- package/dist/agent-src/templates/scripts/telemetry/flush_sender.mjs +163 -0
- package/dist/agent-src/templates/scripts/telemetry/remote.ts +160 -7
- package/dist/agent-src/templates/scripts/telemetry/transport.ts +169 -0
- package/dist/cli/registry.js +1 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/chunk-2GNWGMAL.js +172 -0
- package/dist/cli-delegate/{chunk-RLN73PR5.js → chunk-4VR4ORQ6.js} +10 -7
- package/dist/cli-delegate/chunk-6EOCNQAM.js +402 -0
- package/dist/cli-delegate/{chunk-XURJ4AQC.js → chunk-74E3TKWV.js} +381 -280
- package/dist/cli-delegate/{chunk-3UCJWMMP.js → chunk-7F3VYSM2.js} +4 -4
- package/dist/cli-delegate/{chunk-BKO2AZ7Z.js → chunk-B2ERU2VA.js} +1 -1
- package/dist/cli-delegate/{chunk-NXFWFAYV.js → chunk-G23AT6GD.js} +1 -0
- package/dist/cli-delegate/{chunk-63WSP6YZ.js → chunk-GJ5BVHXM.js} +72 -165
- package/dist/cli-delegate/{chunk-P6LQDIWK.js → chunk-JZ4NR2TW.js} +338 -0
- package/dist/cli-delegate/chunk-MWRD5YOH.js +100 -0
- package/dist/cli-delegate/{chunk-GRRPEPRN.js → chunk-T7L2QK3K.js} +24 -5
- package/dist/cli-delegate/{chunk-EVTY7ISR.js → chunk-YM4GZDJG.js} +9 -1
- package/dist/cli-delegate/cmd_conformance.js +459 -709
- package/dist/cli-delegate/cmd_doctor.js +6 -6
- package/dist/cli-delegate/cmd_explain.js +1 -1
- package/dist/cli-delegate/cmd_export.js +7 -6
- package/dist/cli-delegate/cmd_handoff.js +6 -6
- package/dist/cli-delegate/cmd_packs_active.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +7 -6
- package/dist/cli-delegate/cmd_session_recycle.js +840 -30
- package/dist/cli-delegate/cmd_settings_migrate.js +7 -6
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +7 -6
- package/dist/cli-delegate/cmd_uninstall.js +9 -7
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +7 -6
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +68 -25
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +10 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +8 -6
- package/dist/hooks/dispatch.js +2901 -2053
- package/dist/install/claudePathsPlan.js +187 -0
- package/dist/install/claudePathsPlan.js.map +1 -0
- package/dist/install/hostLayerFingerprint.js +136 -0
- package/dist/install/hostLayerFingerprint.js.map +1 -0
- package/dist/install/install.mjs +553 -425
- package/dist/install/partitionEligibility.js +276 -0
- package/dist/install/partitionEligibility.js.map +1 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1744 -1191
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_src.js +41 -0
- package/dist/scripts/_lib/agent_src.js.map +1 -1
- package/dist/scripts/_lib/install_layout.js +83 -0
- package/dist/scripts/_lib/install_layout.js.map +1 -0
- package/dist/scripts/_lib/installed_lock.js +444 -0
- package/dist/scripts/_lib/installed_lock.js.map +1 -0
- package/dist/scripts/condense.js +13 -164
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/contracts/settings-classes.md +12 -6
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +8 -3
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +26 -0
- package/docs/guidelines/agent-infra/memory-access.md +17 -0
- package/docs/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
- package/package.json +1 -1
- package/src/agent-src/scripts/archival_sweep.ts +117 -0
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +19 -3
- package/src/agent-src/scripts/gate_budget.ts +282 -0
- package/src/agent-src/scripts/gate_execute.ts +72 -31
- package/src/agent-src/scripts/roadmap_gates.ts +74 -3
- package/src/agent-src/scripts/update_roadmap_progress.ts +251 -7
- package/src/agent-src/templates/scripts/telemetry/flush_sender.mjs +163 -0
- package/src/agent-src/templates/scripts/telemetry/remote.ts +160 -7
- package/src/agent-src/templates/scripts/telemetry/transport.ts +169 -0
- package/src/config/agent-settings.template.yml +27 -2
- package/src/config/ci-local-parity.yml +18 -0
- package/src/config/estate-count-budget.json +339 -3
- package/src/config/gate-violation-baselines.json +41 -41
- package/src/config/rule-activation-census.json +14 -6
- package/src/config/rule-stub-ceilings.json +19 -6
- package/src/install/claudePathsPlan.ts +196 -0
- package/src/install/hostLayerFingerprint.ts +145 -0
- package/src/install/partitionEligibility.ts +325 -0
- package/src/scripts/_cli/cmd_session_recycle.ts +9 -1
- package/src/scripts/_dispatch.bash +6 -1
- package/src/scripts/_lib/ac_heading.ts +30 -0
- package/src/scripts/_lib/agent_src.ts +42 -0
- package/src/scripts/_lib/bench_ab_pinned_repo.ts +162 -0
- package/src/scripts/_lib/bench_ab_workspace.ts +10 -1
- package/src/scripts/_lib/envelope_grounding.ts +38 -8
- package/src/scripts/_lib/installed_lock.ts +50 -5
- package/src/scripts/_lib/md_section.ts +129 -0
- package/src/scripts/_lib/scope_guard.sh +26 -3
- package/src/scripts/_lib/self_repair.ts +19 -0
- package/src/scripts/_lib/self_repair_class_b.ts +171 -0
- package/src/scripts/ai_council/cli_help.ts +55 -0
- package/src/scripts/before_complete_hook.ts +153 -28
- package/src/scripts/bench_ab_v2_complexity.ts +27 -7
- package/src/scripts/check_references.ts +60 -0
- package/src/scripts/check_release_published.ts +32 -11
- package/src/scripts/check_single_delivery.ts +59 -15
- package/src/scripts/ci_settle.ts +170 -0
- package/src/scripts/condense.ts +20 -170
- package/src/scripts/council_cli.ts +3 -3
- package/src/scripts/dispatch_r2_reviewer.ts +6 -14
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +77 -14
- package/src/scripts/hooks/block_no_verify.ts +61 -10
- package/src/scripts/hooks/block_unauthorized_git.ts +1 -1
- package/src/scripts/hooks/concern_registry.ts +4 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +8 -3
- package/src/scripts/hooks/run_continuation_hook.ts +8 -5
- package/src/scripts/hooks/ship_diff_volume_hook.ts +81 -15
- package/src/scripts/hooks/source_first_gate_hook.ts +464 -0
- package/src/scripts/hooks/state_io.ts +782 -20
- package/src/scripts/hooks/subagent_ledger_hook.ts +44 -15
- package/src/scripts/hooks/telemetry_flush_hook.ts +139 -0
- package/src/scripts/hooks/telemetry_self_repair.ts +128 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +22 -4
- package/src/scripts/hooks/turn_end_gate_hook.ts +81 -15
- package/src/scripts/install.ts +16 -11
- package/src/scripts/language_mirror_hook.ts +561 -25
- package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
- package/src/scripts/lint_plan_risk_register.ts +4 -3
- package/src/scripts/lint_skill_router_head.ts +4 -4
- package/src/scripts/mcp_server/tools.ts +2 -2
- package/src/scripts/new_roadmap.ts +136 -0
- package/src/scripts/pack_mcp_content.ts +20 -5
- package/src/scripts/release.ts +37 -38
- package/src/scripts/report_layer_overlap.ts +6 -0
- package/src/scripts/self_repair_hook.ts +37 -5
- package/src/scripts/session_register_hook.ts +11 -0
- package/src/scripts/skill_usage_collect.ts +11 -1
- package/src/scripts/skill_usage_report.ts +278 -8
- package/src/scripts/sync_pr_branch.ts +7 -0
- package/src/server/schemas/settings.ts +8 -0
- package/dist/cli-delegate/chunk-EJITJBJX.js +0 -172
- package/dist/cli-delegate/chunk-PZWRPRWP.js +0 -38
- /package/dist/cli-delegate/{chunk-RYNADUFG.js → chunk-LWTYTX6F.js} +0 -0
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
]
|
|
17
17
|
},
|
|
18
18
|
"baseline": {
|
|
19
|
-
"active_roadmaps":
|
|
20
|
-
"later_roadmaps":
|
|
21
|
-
"open_blockers":
|
|
19
|
+
"active_roadmaps": 14,
|
|
20
|
+
"later_roadmaps": 55,
|
|
21
|
+
"open_blockers": 47
|
|
22
22
|
},
|
|
23
23
|
"baseline_history": [
|
|
24
24
|
{
|
|
@@ -133,12 +133,348 @@
|
|
|
133
133
|
"open_blockers": 74,
|
|
134
134
|
"why": "RE-MEASURED AT MERGE, not carried over from either side, because both sides moved. This branch adopts road-to-single-delivery (+1 active) and opens four blockers on it (+4); the trunk meanwhile WALKED DOWN by archiving road-to-inbox-harvest-2026-08-b-dispatch-safety. Taking this branch authored numbers through the merge would have silently pocketed that archival as headroom, which is the loose-ratchet failure two earlier entries in this file record from the other direction. So the trunk file was taken whole and these numbers are the measurement on the merged tree: 33 + 1 = 34 active, 49 later unchanged, 70 + 4 = 74 blockers. WHAT THE +4 BUYS, since it is the larger half: partition-requires-global-layer HALTED Phase 2 mid-implementation - the partition leaves the project layer with 16 rules and zero skills, so a checkout with no current global install would silently drop from 111 rules and 338 skills to 16 and 0, which is an under-governed session rather than a token cost. compact-survival-of-package-only-rules carries four rules that stop surviving /compact once their unscoped global twin is gone, three of them Iron-Law bearing. overlap-check-binding-surface exists because two gates in this area already report to nobody. host-skill-suppression-capability is a host probe whose negative answer closes it. Each carries enumerated options and a recommendation rather than a flag. later_roadmaps unchanged at 49 is the check that nothing was parked to pay for any of this."
|
|
135
135
|
},
|
|
136
|
+
{
|
|
137
|
+
"at": "2026-08-19",
|
|
138
|
+
"active_roadmaps": 34,
|
|
139
|
+
"later_roadmaps": 49,
|
|
140
|
+
"open_blockers": 73,
|
|
141
|
+
"why": "WALKED DOWN by 1 blocker, net of two resolutions and one new finding, which is why the delta is -1 rather than -2. RESOLVED: overlap-check-binding-surface, on a CONVERGED AI council verdict (2/2) - preflight, with both seats requiring the binding be provably live, which it now is. And partition-requires-global-layer, resolved to option (c) not by a vote but by a MEASUREMENT that eliminated option (a): consistency.yml runs task generate-tools on a fresh checkout, so refusing without a global layer would break the pipeline - the exact counter-case one seat had named against its own choice. OPENED: warn-path-unreachable-without-version-marker, and it is a finding against work this same branch marked DONE. Phase 3 instrumented the scope guard WARN verdict with an overlap count; measured, that branch never executes, because installed_version_at returns unknown for ~/.claude (no package.json beside a host directory) so every real cross-scope install classifies as DRIFT. The instrumentation is live and unreachable, which reads as coverage in the diff. Recording it as a blocker rather than silently repairing it is the point: it falsifies part of a completed phase. active and later unchanged, which says nothing was created or parked to absorb any of this."
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"at": "2026-08-19",
|
|
145
|
+
"active_roadmaps": 34,
|
|
146
|
+
"later_roadmaps": 49,
|
|
147
|
+
"open_blockers": 74,
|
|
148
|
+
"why": "RESTORED to 74, and this entry records a WRONG WALK-DOWN rather than growth. The entry directly above walked open_blockers 74 -> 73 on the grounds that two blockers resolved and one opened. Two did resolve. But Phase 2 had halted a SECOND time in the same change - on an undecidable current-global-layer predicate - and that halt was written as PROSE in step 2.0 instead of as a blocker. So the number of open DECISIONS never fell, only the number of recorded ones did, and the ratchet was satisfied by not writing something down. R2 review caught it: after the flip, no open blocker blocked Phase 2, the dashboard stopped explaining the halt, and lint_roadmap_blockers decidability fields never applied to the live decision. partition-current-layer-undecidable now carries it with three enumerated options and a recommendation, and 74 is the measurement again. The lesson is the one this file keeps recording from the other direction: a walk-down is only honest if the work it claims to have removed is actually gone."
|
|
149
|
+
},
|
|
136
150
|
{
|
|
137
151
|
"at": "2026-08-19",
|
|
138
152
|
"active_roadmaps": 33,
|
|
139
153
|
"later_roadmaps": 50,
|
|
140
154
|
"open_blockers": 74,
|
|
141
155
|
"why": "RE-MEASURED AT MERGE, not carried over from either side, because both sides moved -- the same reason the row above states, and the second time in one day that this file has had to say it. This branch parks road-to-run-continuation-observation to later/ (-1 active, +1 later); the base it merged had itself moved to 34/49/74. Carrying this branch's earlier 32/50/70 forward would have described neither tree. open_blockers: 74 is the base's number, untouched, and that it is untouched is the check that this is a park and not a burial: the metric spans active AND later/ precisely so parking cannot print a free tightening over a blocker nobody resolved, and three-phase-contract-run is still open and still counted. Parked because every open item is gated on an external trigger this estate cannot supply: step 0.1 needs a process-full run over a roadmap carrying execution.mode: autonomous with open steps in three or more phases, and measured 2026-08-19 exactly three active roadmaps carried that mode while neither of the other two had open steps in three phases. process-full terminated on this roadmap as blocked-preflight, which is the mechanism agreeing with the disposition. The number walks back the moment it is un-parked. The unreconciled -1 this branch's earlier row recorded (commit 7d5114dbd walked open_blockers 71 -> 70 with no history row) is left where it is: the base has since re-measured to 74, so that gap is now historical rather than live, and inventing a reconstruction here would be a second unmeasured row."
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"at": "2026-08-19",
|
|
159
|
+
"active_roadmaps": 33,
|
|
160
|
+
"later_roadmaps": 50,
|
|
161
|
+
"open_blockers": 74,
|
|
162
|
+
"why": "RE-MEASURED AT MERGE. Both sides had moved: this branch's rows above were measured against 34/49/74, and the base it merged had parked a roadmap to later/ (33/50). Carrying either side's number forward would have described neither tree, so the values here are read off the merged filesystem. open_blockers stays 74, and the reason it stays is CHECKED rather than assumed - a net zero is the shape a walk-down hides in, which is what the row two above records going wrong on this same branch. Verified against origin/main: 4 open before, 4 open after, and the SETS differ. Resolved: partition-requires-global-layer (option (c), on a measurement that eliminated (a)) and overlap-check-binding-surface (converged council verdict). Opened: warn-path-unreachable-without-version-marker (a finding against completed Phase 3 work) and partition-current-layer-undecidable (Phase 2's second halt, which R2 review caught being carried as prose). Two out, two in - not one error cancelling another."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"at": "2026-08-20",
|
|
166
|
+
"active_roadmaps": 31,
|
|
167
|
+
"later_roadmaps": 52,
|
|
168
|
+
"open_blockers": 74,
|
|
169
|
+
"why": "RAISED by 2 later roadmaps and WALKED DOWN by 2 active ones, one transfer: road-to-carrier-layer-convergence and road-to-surface-consolidation are parked to later/. Total estate is unchanged at 83, and open_blockers is unchanged at 74 -- which is the check that this is a park and not a burial, since that metric spans active AND later/ precisely so parking cannot print a free tightening over a blocker nobody resolved. All three blockers involved (b-convergence-machine, repo-admin-and-usage, benchmark-spend) stay open and stay counted. Both roadmaps were parked because every open item is gated outside the roadmap, which is the repository's own active-vs-later test: carrier's two remaining steps are both in Phase 3 behind a Class 3 maintainer-machine measurement, and surface-consolidation's one remaining step is a utilization sweep gated on a window that elapses ~2026-08-26 AND on usage evidence accumulating over it. `/roadmap:process-full` terminates on both at blocked-preflight with zero runnable open steps, so leaving them active would make the estate advertise work the command is required to refuse. This empties the ACTIVE AUTONOMOUS estate to zero, intentionally and as of 2026-08-19. The consequence is recorded at the three-phase-contract-run blocker of later/road-to-run-continuation-observation rather than smoothed over: its criterion is now CURRENTLY unreachable from the estate, which is not the same as impossible, and it is not weakened to match. AI council 2026-08-19, 2/2 convergent (anthropic/claude-sonnet-4-5 + openai/codex-default, two rounds, blind peer review), which also made a visible parked-work inventory the condition of the disposition -- the same change adds one to the generated dashboard."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"at": "2026-08-20",
|
|
173
|
+
"active_roadmaps": 31,
|
|
174
|
+
"later_roadmaps": 52,
|
|
175
|
+
"open_blockers": 74,
|
|
176
|
+
"why": "RE-MEASURED AT THE SECOND MERGE of this branch, same reason as the row above and worth the repetition: both sides had moved again. This branch measured against 33/50/74; the base parked two further roadmaps to later/ (31/52). Values read off the merged filesystem, not carried from either side. open_blockers stays 74 for the second time in a row, and for the second time that is CHECKED rather than assumed - a net zero is the shape a walk-down hides in, which is what the row three above records going wrong on this same branch. Verified against origin/main at 7be25cf07: 4 open before, 4 open after, and the SETS differ. Out: partition-requires-global-layer, overlap-check-binding-surface. In: warn-path-unreachable-without-version-marker, partition-current-layer-undecidable. Two out, two in - not one error cancelling another. That the identical net-zero has now appeared twice across two independent merges is corroboration, not a reason to stop checking it."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"at": "2026-08-20",
|
|
180
|
+
"active_roadmaps": 32,
|
|
181
|
+
"later_roadmaps": 52,
|
|
182
|
+
"open_blockers": 74,
|
|
183
|
+
"why": "Raised 31 -> 32 for road-to-hook-state-followups.md, which carries the items PR #1458 saw and deliberately did not fix: two consumers reading paths nothing writes, the API shape the two lock primitives need before they converge, and 11 local test reds across 6 files that CI never reports and nobody owned. It is charged rather than offset because the offsets all cost more: no active roadmap sits at zero open steps, parking in later/ is what this register calls burial, and the only terminable candidates belong to two concurrent sessions. The roadmap also carries estate_offset_exempt with the same reasoning, so the exception is reviewable on both sides rather than being a number that moved."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"at": "2026-08-20",
|
|
187
|
+
"active_roadmaps": 33,
|
|
188
|
+
"later_roadmaps": 52,
|
|
189
|
+
"open_blockers": 74,
|
|
190
|
+
"why": "RAISED by 1 active roadmap, and open_blockers WALKED BACK DOWN to the measurement after the three entries it briefly added were removed, and the direction is stated plainly because this ratchet exists to make exactly this visible. All four come from one change: road-to-session-closeout, which files the residue of a read of the 50 most recent sessions on this checkout plus a maintainer-supplied review of the 14.5.0 -> HEAD window. The estate grew because eleven measured findings had nowhere to live, not because scope was added \u2014 among them a release line whose tag never reached origin while the trunk declares it, template placeholders merged into two CHANGELOG sections of which one is already published, a security-marked hook reader still working by accident after its sibling was fixed, 165 local gates no workflow runs with two of them red on the trunk right now, and 346 worktrees against zero open pull requests. The three blockers are the decisions this roadmap must not take on the maintainer's behalf: the release-line disposition, the safe-set removal (a Hard-Floor bulk deletion), and the shape of the injection scanner's read contract. NOT offset deliberately: the only offset available would be archiving or parking an unrelated roadmap to buy room, which bundles an unreviewed disposition into a triage PR, and later/ is what this register's own metric note calls burial. The roadmap carries estate_offset_exempt with that reason. later_roadmaps is unchanged at 52 \u2014 the check that distinguishes a real addition from work relocated into later/. The walk back down is underwritten by the roadmap's own shape: Phase 7 resolves two of the three blockers and its acceptance criteria are phrased on residual state rather than on approval, precisely because its archived ancestor passed its criteria while the count it existed to reduce grew 249 -> 346. AMENDED the same day, and the amendment is the point: the roadmap first carried three `### blocker:` entries and this file recorded 77. The maintainer then instructed that it ship with none and that the three decisions be taken by the AI council instead. They were \u2014 2026-08-20, two seats plus a blind third round, $0.0370 \u2014 so the entries became steps carrying verdicts rather than questions carrying owners, and open_blockers returned to the measured 74. Walked down rather than left at 77 because this gate fails on an un-walked TIGHTENING as well, and a baseline above the tree is headroom a later change can spend with nothing objecting. What the council did NOT do, and the roadmap says so at the item: lift the Hard Floor on the worktree bulk deletion. That deletion is still a human-initiated action confirmed in the turn it runs; what the verdict removed was the indefinite wait, not the confirmation."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"at": "2026-08-20",
|
|
194
|
+
"active_roadmaps": 32,
|
|
195
|
+
"later_roadmaps": 52,
|
|
196
|
+
"open_blockers": 70,
|
|
197
|
+
"why": "RE-MEASURED AT MERGE, not carried from either side, because both sides moved -- and the two axes moved for different reasons, which is why carrying either number forward would have described neither tree. This branch measured against 32/74 and walked to 31/70; the base it merged (road-to-session-closeout, PR #1459) had itself added a roadmap and re-anchored to 33/74. Values here are read off the merged filesystem: active 32, later 52, open_blockers 70.\n\nactive 33 -> 32 is the NET of two real moves in opposite directions, not a no-op: the base added one active roadmap, this branch disposed of one by completion. road-to-single-delivery closed all 21 steps with count_deferred 0 and the archival sweep moved it in the same change that finished it. later_roadmaps unchanged at 52 is what distinguishes that completion from a park.\n\nopen_blockers 74 -> 70: FOUR resolved on this branch, each with its decision and its verification at the blocker itself. partition-current-layer-undecidable -- option (a), operator decision on a 2/2 council round, plus two measurements that decided it: the 5.85 s cost figure argued against content comparison was a shell artefact worth 61 ms in Node, and version equality was measurably insufficient at 153 project-only skills under an identical version string. compact-survival-of-package-only-rules -- option (a), 2/2 convergent, shipped and verified: four rules now load unconditionally, census re-anchored with its reason. host-skill-suppression-capability -- recorded null, and broader than the question asked: claudeMdExcludes had no observable effect on the skill catalogue OR on the instruction file it is documented for in Claude Code 2.1.237, with a control probe proving the same settings file IS read. warn-path-unreachable-without-version-marker -- option (b): the overlap count now prints on DRIFT rather than only on the unreachable WARN; a live run shows 290/290/110.\n\nNothing was deferred to [~] to reach the count, which is the shape a false drawdown takes: count_deferred was 0 at closure and all four resolutions are in the archived file. Two of the four were reported human-only earlier the same day under ADR-235; ADR-237 supersedes that reading (capability before role) and they closed on evidence this run produced -- so this walk-down is also the first measurement of that ADR's effect on the estate. Caught by CI rather than preflight: the estate ratchet is a CI-only gate."
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"at": "2026-08-20",
|
|
201
|
+
"active_roadmaps": 33,
|
|
202
|
+
"later_roadmaps": 52,
|
|
203
|
+
"open_blockers": 74,
|
|
204
|
+
"why": "NET ZERO on every metric, and the shape is the point: road-to-agent-velocity was added and CLOSED in the same change, so it arrives and leaves without the estate carrying it. Recorded as 33 rather than as a raise-then-walk-down pair because a baseline that briefly reads 34 is headroom a later change could spend. The roadmap was: road-to-agent-velocity carries ZERO blockers, so open_blockers is unchanged at 74 and later_roadmaps at 52 \u2014 the pair of numbers that distinguishes a real addition from work relocated or from a question parked as an owner-blocker. The roadmap files six defects measured in one instrumented session whose task was 'create one roadmap and open a PR': it cost 140 tool calls, of which roughly 30 (21 percent) were corrections of the agent's own errors rather than analysis or work. The defects are a security guard that blocks legitimate commands (reproduced: any '-n' flag after a git invocation in the same shell string is read as --no-verify, so 'git status; grep -n foo' is refused), four roadmap authoring conventions learnable only by failing a gate, four ergonomic defects in the council CLI that cost six calls for one run, a hand-written CI waiter whose exit condition reported a settle that had not happened, a text edit anchored on a heading that also appeared as a quotation, and a memory store of 369 files behind an 87-line topic index \u2014 nine of the eleven error classes were ALREADY documented there and all nine were read after the failure. The estate grew because six measured defects had nowhere to live, not because scope was added. NOT offset deliberately: the only offset available would be archiving or parking an unrelated roadmap to buy room, which bundles an unreviewed disposition into a defect-fixing PR. The roadmap carries estate_offset_exempt with that reason, and every one of its steps is agent-executable, so it walks back down by being finished rather than by being decided. CLOSED in the same change: all 22 steps done, two of them cancelled with the source quoted as the reason, and the file archived by the sweep. The estate is back where it started, which is the disposition this ratchet exists to reward \u2014 the walk-down is the work being finished rather than a park. RE-ANCHORED AT MERGE: this entry recorded 33/52/74 against the tree it was written on. The base moved underneath it \u2014 PR #1459 added a roadmap and the trunk then disposed of others \u2014 so the merged filesystem measures 32/52/70 and `baseline` above carries that, read off the merged tree rather than carried from either side. Both same-day entries are kept because they describe different changes: the row above is the base's, this one is this branch's, and collapsing them would erase which change moved which number."
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"at": "2026-08-20",
|
|
208
|
+
"active_roadmaps": 32,
|
|
209
|
+
"later_roadmaps": 52,
|
|
210
|
+
"open_blockers": 68,
|
|
211
|
+
"why": "open_blockers 70 -> 68: the two Phase-4 blockers of road-to-inbox-harvest-2026-08-b-ci-economy resolved on the autonomous drain run, both with outcome state TRANSFERRED rather than discharged. required-check-set-change and merge-queue-enablement moved to agents/roadmaps/stubs/road-to-main-protection-ruleset-changes.md under the AI council disposition B (2/2, anthropic + openai), whose categorical Rule 3 assigns every repository-administration change to a human: such work may only be transferred, never recorded as decided-and-done.\n\nRead this walk-down honestly. Two blockers left the ratchet's numerator and NOTHING changed in the repository -- ruleset 17749383 still requires exactly one check (Sync + Generate Tools Consistency), carries no merge_queue entry, and merge_group still appears zero times across .github/, all three read live on 2026-08-20. The metric counts open blocker ENTRIES, so a transfer to a stub lowers it by construction; the stub carries each original Resolved-when criterion verbatim, the complete list of dependent steps moved, and a named re-entry producer with a probe pinned to those three readings, so the movement stays detectable rather than dissolving into the count.\n\nactive_roadmaps unchanged at 32 and later_roadmaps unchanged at 52 is deliberate and is what separates this from a disposal: the source roadmap reached 18/18 with count_deferred 0 and was NOT archived, because archiving was out of scope for the run that closed it. It stays in the active tree, which is why roadmap:progress-check exits 1 on it and why the active count did not move."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"at": "2026-08-20",
|
|
215
|
+
"active_roadmaps": 26,
|
|
216
|
+
"later_roadmaps": 52,
|
|
217
|
+
"open_blockers": 68,
|
|
218
|
+
"why": "active_roadmaps 32 -> 26: six completed roadmaps that had been sitting unarchived on the trunk were archived by the regen that now does it. They were complete (open==0, deferred==0, no open blocker) and OUTSIDE every later branch's history, so the branch-scoped `--changed-only` PR-gate could never find them again -- each dashboard regen just reprinted the warning. `agent-config roadmap:progress` and `task roadmap-progress` now pass `--archive` and run the sweep with `--all` before rendering.\n\nRead this walk-down for what it is: a bookkeeping correction, not a drawdown. No work was terminated and no scope was cut -- these six were already finished, and the number was wrong by six for as long as the warning went unactioned. The honest drawdown signal is unchanged by it."
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"at": "2026-08-20",
|
|
222
|
+
"active_roadmaps": 32,
|
|
223
|
+
"later_roadmaps": 52,
|
|
224
|
+
"open_blockers": 69,
|
|
225
|
+
"why": "WALK DOWN on open_blockers only, 70 -> 69, earned in the change that closed road-to-estate-drawdown's b-consolidated-decision-sheet. The consolidated decision sheet was answered in full (option (a), AI council) and that closed exactly ONE blocker, which is the finding rather than a disappointment: of the 21 user-owned blockers on the sheet, 12 are dispositioned transferred because a signature, a repository, a host session, a human rating or an authority grant cannot be produced by recording an answer, and the two agent-executable classes (0 and 1) hold zero blockers between them. Active and later/ are unchanged at 32/52 -- no roadmap was added, archived or parked, so one_in_one_out has nothing to offset. Walked here rather than left as headroom because a tightening that is not re-registered becomes a ceiling nobody is held to, and this gate fails rather than warns on that state by design."
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"at": "2026-08-20",
|
|
229
|
+
"active_roadmaps": 32,
|
|
230
|
+
"later_roadmaps": 52,
|
|
231
|
+
"open_blockers": 67,
|
|
232
|
+
"why": "MERGE RECONCILIATION, not a third walk-down. The two entries above are independent walk-downs of different work that landed on the same day: 70 -> 68 for the two Phase-4 blockers of road-to-inbox-harvest-2026-08-b-ci-economy, and 70 -> 69 for road-to-estate-drawdown's b-consolidated-decision-sheet. Both are real and neither corrects the other, so both rows are kept and the baseline is the composition: 70 - 2 - 1 = 67, which is what check_estate_count measures on the merged tree. Recorded because a reader meeting rows that say 68 and 69 above a baseline of 67 would otherwise read a raise. Taking either side of the merge conflict alone would have left an un-walked tightening, which this gate fails on by design; no baseline was raised."
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"at": "2026-08-20",
|
|
236
|
+
"active_roadmaps": 26,
|
|
237
|
+
"later_roadmaps": 52,
|
|
238
|
+
"open_blockers": 67,
|
|
239
|
+
"why": "MERGE RECONCILIATION on the active dimension, mirroring the open_blockers reconciliation directly above. Three independent walk-downs landed the same day and none corrects another: active 32 -> 26 (six completed roadmaps archived by the regen that now archives instead of warning), and the two blocker walk-downs whose composition the entry above records as 67. All rows are kept and the baseline is the composition, 26 / 52 / 67, which is what check_estate_count measures on the merged tree.\n\nStated plainly because a reader meeting a row that says 68 above a baseline of 67 would otherwise read a raise: my own row's open_blockers figure was correct when it was written and was superseded by the merge, not by a change of mine. Taking either side of the conflict alone would have left an un-walked tightening, which this gate fails on by design; no baseline was raised."
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"at": "2026-08-20",
|
|
243
|
+
"active_roadmaps": 25,
|
|
244
|
+
"later_roadmaps": 52,
|
|
245
|
+
"open_blockers": 65,
|
|
246
|
+
"why": "WALKED DOWN by 1 active and 2 blockers: road-to-gate-autonomy reached zero open steps and archived, and the two blockers it carried open \u2014 b-gate-budget-preauth on option (a) and b-delegate-gate-maintainer-profile on option (b), both against the council record \u2014 moved to RESOLVED in this change. Its third blocker, b-estate-prose-pass-from-1-3, was already resolved on 2026-08-17 and is not part of the delta. later_roadmaps is UNCHANGED at 52, which is the check that says this is a closure and not a park: nothing was relocated to buy the number, and the one item the roadmap could not finish went to a STUB with its own named probe (stubs/road-to-gate-preauth-authorization.md) rather than to later/, so the open work is still counted somewhere a reader can find it. The archive move was performed by `task roadmap-progress` itself rather than by hand \u2014 this is the first walk-down taken under the --archive default that PR #1493 put on the regen, so the number and the file move come from the same run."
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"at": "2026-08-20",
|
|
250
|
+
"active_roadmaps": 25,
|
|
251
|
+
"later_roadmaps": 52,
|
|
252
|
+
"open_blockers": 64,
|
|
253
|
+
"why": "WALKED DOWN by 1 blocker and nothing else. road-to-solution-minimalism disposed of phase3-harness-deltas-9-10, which was open on the trunk: the council verdict (drain-blocker-dispositions-a, option A \u2014 re-scope, narrowed) found the entry was converting *large* into *unavailable* and had held five steps for four days on that conversion. Delta #9 is done and the remainder transferred to stubs/road-to-solution-minimalism-full-tier-run.md with a named producer and a probe, so the section was removed rather than re-annotated to a fresh blocker \u2014 the open work is counted in the stub, not vanished. active_roadmaps is UNCHANGED at 25 and this is the honest part: the roadmap does NOT archive, because one acceptance step (all quality gates pass) is still open, and that step was left open rather than flipped to make the number move. later_roadmaps unchanged at 52 \u2014 nothing was parked. The roadmap's other blocker, benchmark-spend-authorization, was already resolved on the trunk and is not part of this delta; it was checked before this entry was written, because attributing a pre-existing drawdown to this change is how a ratchet silently loosens."
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"at": "2026-08-20",
|
|
257
|
+
"active_roadmaps": 32,
|
|
258
|
+
"later_roadmaps": 52,
|
|
259
|
+
"open_blockers": 68,
|
|
260
|
+
"why": "WALK-DOWN, earned rather than banked: open_blockers 70 to 68 because road-to-org-telemetry resolved both of its blockers in one drain run. sink-choice and dpo-signoff are both disposition B, outcome transferred, per the council record drain-blocker-dispositions-a.md, with successors stubs/road-to-org-telemetry-sink.md and stubs/road-to-org-telemetry-enablement.md. active_roadmaps is unchanged at 32 and later_roadmaps at 52, which is the pair that distinguishes a real resolution from work relocated into the estate: the two stubs live under stubs/, which neither counter walks, and that is the same treatment every earlier drain-run transfer received. The parent roadmap is NOT archived in this change, by instruction, so the active count does not move even though every one of its 30 boxes is now terminal - 21 done and 9 transferred. Walked in the change that earned it rather than left as headroom, because a baseline of 70 over a measurement of 68 is two blockers a later change could add without any gate objecting. The sibling ratchet lint_roadmap_blockers:decidability moved for the same reason and is walked in the same commit."
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"at": "2026-08-20",
|
|
264
|
+
"active_roadmaps": 32,
|
|
265
|
+
"later_roadmaps": 52,
|
|
266
|
+
"open_blockers": 66,
|
|
267
|
+
"why": "open_blockers 68 -> 66, RE-ANCHORED AT MERGE. This branch resolved two blockers by transfer (sink-choice, dpo-signoff), which lowers the count by construction: the blocker leaves the active estate and reappears as a stub gate this metric does not scan. Nothing in the repository earned the drop - no question was answered and no work finished. The baseline was MEASURED against the merged tree rather than taken from either side: main had independently walked 70 -> 68 for two genuinely resolved Phase-4 blockers, this branch walked 70 -> 68 for its own two transfers, and 66 = 70 - 2 - 2 is what the merged tree actually reads. Taking one side would have claimed a number that describes no tree. Both sides' history entries are preserved; none was collapsed. For whoever merges next: main is moving fast and this file collides the same way each time. The correct resolution is to keep every history entry from both sides and re-measure the baseline against the merged tree - never to adopt one side's number."
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"at": "2026-08-20",
|
|
271
|
+
"active_roadmaps": 24,
|
|
272
|
+
"later_roadmaps": 52,
|
|
273
|
+
"open_blockers": 62,
|
|
274
|
+
"why": "MERGE RECONCILIATION plus the walk-down this branch earned, stated as one entry because the arithmetic only makes sense together. The history array itself was conflicted: the trunk had moved four entries ahead while this branch carried two of its own, so main's file was taken as the base (authoritative trunk baseline and order) and the branch's two entries appended rather than dropped \u2014 append-only means both sides survive. Those two entries quote 70 -> 68 -> 66 against a trunk that has since measured 64, so their NUMBERS are superseded and only their reasons still stand; that is why this entry re-states the delta instead of trusting them. open_blockers 64 -> 62 is verified against the diff, not against that prose: sink-choice and dpo-signoff are both open on origin/main and both resolved on this branch. active_roadmaps 25 -> 24: road-to-org-telemetry reached zero open steps and the regen archived it, migrating its one inbound reference. This entry was written before the regen ran and said the roadmap would NOT archive; the number is corrected here rather than by appending a second entry, because one change earns one entry and two would read as two independent walk-downs and later_roadmaps unchanged at 52 \u2014 nothing parked, nothing relocated."
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"at": "2026-08-20",
|
|
278
|
+
"active_roadmaps": 32,
|
|
279
|
+
"later_roadmaps": 52,
|
|
280
|
+
"open_blockers": 69,
|
|
281
|
+
"why": "One blocker closed, and the -1 is the whole change to this file: road-to-subagent-lifecycle-integrity's raw-capture-needs-host-env moved to Status resolved with outcome state transferred, its criterion carried verbatim to stubs/road-to-subagent-payload-capture.md under council disposition B. active_roadmaps and later_roadmaps are unchanged because a stub under stubs/ registers with neither this gate nor the dashboard, which is the point of the drain-run transfer shape: the work leaves the active estate without a roadmap being archived as if it were achieved. Walked here rather than banked because the gate reported the tightening un-walked and a baseline above the measurement is headroom a later change can spend with nothing objecting. Worth recording for WHY the number moved at all, because the first attempt did not move it: Status was written as transferred, matching the outcome-state vocabulary of the stubs README, and lint_roadmap_blockers recognises exactly one closed token (Status: resolved, at :193) while treating every other word as still open. So the entry read closed to a human and open to every gate, and this ratchet correctly reported +0. The two fields are different: Status carries the token the tooling reads, the outcome state lives in the resolution prose, in the stub, and in the stubs README table, which is what the two sibling drain-run transfers of the same day already do."
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"at": "2026-08-21",
|
|
285
|
+
"active_roadmaps": 24,
|
|
286
|
+
"later_roadmaps": 52,
|
|
287
|
+
"open_blockers": 61,
|
|
288
|
+
"why": "WALKED DOWN by 1 blocker: road-to-subagent-lifecycle-integrity resolved raw-capture-needs-host-env, which is open on origin/main and resolved here \u2014 checked against the diff rather than taken from the branch's own prose. The item that could not be finished went to stubs/road-to-subagent-payload-capture.md with its own probe, so the open work is counted in the stub rather than dropped. active_roadmaps unchanged at 24: the roadmap keeps open steps and the regen did not archive it. later_roadmaps unchanged at 52 \u2014 nothing parked. The history array was conflicted at merge (trunk ahead, branch carrying its own entries); main was taken as the base and the branch entries appended, because the array is append-only and a dropped entry is a lost reason."
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"at": "2026-08-20",
|
|
292
|
+
"active_roadmaps": 24,
|
|
293
|
+
"later_roadmaps": 52,
|
|
294
|
+
"open_blockers": 64,
|
|
295
|
+
"why": "WALKED DOWN by 1 active roadmap and nothing else. road-to-session-closeout was closed against explicit outcome states and archived by `roadmap:progress`, which now performs the archival itself rather than warning. Measured on the merged tree AFTER the archival, not on a branch: active_roadmaps 24, later_roadmaps 52, open_blockers 64. No blocker moved -- that file shipped with none by maintainer instruction, its three decisions having been taken by the council instead, so there was never an entry here to dispose of. The lower measurement is the new ceiling, not headroom: the gate refused a silent tightening and asked for exactly this edit in the change that earned it. Honest note on what the archival means, because a count cannot carry it: 35 of that roadmap's 54 lines are TRANSFERRED to stubs/road-to-session-closeout-gated.md with named producers and probes, not done. The estate is one file smaller; the work is not one file's worth smaller."
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"at": "2026-08-21",
|
|
299
|
+
"active_roadmaps": 23,
|
|
300
|
+
"later_roadmaps": 52,
|
|
301
|
+
"open_blockers": 61,
|
|
302
|
+
"why": "WALKED DOWN by 1 active and nothing else: road-to-session-closeout is at agents/roadmaps/ on origin/main and at agents/roadmaps/archive/ on this branch, so the archival is this change's own work \u2014 confirmed with git ls-tree against both refs rather than inferred from the regen output, which also reported the unrelated org-telemetry move arriving from the trunk. open_blockers unchanged at 61 and later_roadmaps unchanged at 52: nothing was parked and no open decision was relocated to make the active count fall."
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"at": "2026-08-21",
|
|
306
|
+
"active_roadmaps": 23,
|
|
307
|
+
"later_roadmaps": 52,
|
|
308
|
+
"open_blockers": 59,
|
|
309
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-distillation-followups merged origin/main during the autonomous roadmap-drain run; the trunk had moved (sibling drain PRs archiving roadmaps and resolving blockers in parallel), so neither side's numbers described the merged tree. These values are what `check_estate_count` MEASURED after the merge: {'active_roadmaps': 23, 'later_roadmaps': 52, 'open_blockers': 59}, from {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 61}. No part of the drop is attributed to this branch, deliberately: its own earned share is recorded in its roadmap and its PR body, and crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. Walked DOWN only \u2014 this entry never raises a number, and a lower measurement is the new ceiling."
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"at": "2026-08-21",
|
|
313
|
+
"active_roadmaps": 22,
|
|
314
|
+
"later_roadmaps": 52,
|
|
315
|
+
"open_blockers": 59,
|
|
316
|
+
"why": "WALKED DOWN by 1 active and 2 blockers, all earned by this change and each checked against origin/main rather than read off the branch's prose. road-to-distillation-followups is archived by this branch (present under agents/roadmaps/ on main, added under agents/roadmaps/archive/ here) and its two blockers, router-head-retrofit-instrument and first-contract-true-analysis-run, are open on main and resolved here. later_roadmaps is UNCHANGED at 52, which is the check that this is a closure and not a park: the item the roadmap could not finish went to stubs/road-to-first-reference-analysis-run.md with its own probe, so the open work stays counted in the stub rather than being relocated into later/ to make a number fall."
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"at": "2026-08-20",
|
|
320
|
+
"active_roadmaps": 31,
|
|
321
|
+
"later_roadmaps": 53,
|
|
322
|
+
"open_blockers": 70,
|
|
323
|
+
"why": "active_roadmaps 32 -> 31 and later_roadmaps 52 -> 53 in the same change: one file moved from the active tree into later/. This is a DISPOSITION change, not growth on one side and a free tightening on the other, and both halves are recorded together because the ratchet gates the two metrics separately and has no cross-metric offset - so an un-parked file can never be parked without an entry like this one, which would make the active tree a one-way door. road-to-kernel-question-triangle is parked whole: nothing executed, nothing deleted, the drafted one-line amendment preserved verbatim. It is parked rather than blocked because all three of its steps are maintainer acts end to end - a write to a locked kernel rule that block-kernel-rule-writes refuses at tool-call time, self-modification of the kernel's own ask-policy surface, and a >= 24 h soak window, which is elapsed time rather than a capability. Its resume probe is grep -c 'Band-4 scope' src/rules/ask-when-uncertain.md returning non-zero, measured 0 on the park date. open_blockers is unchanged at 70 because its one blocker was open before the move and is open after it - deliberately not closed, since marking it resolved would assert an act that has not happened. That unchanged pair is what distinguishes a disposition change from a burial. NOTE for whoever merges second: two sibling drain branches raise later_roadmaps for their own parks on the same day. All are legitimate and the merge is additive - keeping one side would silently drop a park."
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"at": "2026-08-21",
|
|
327
|
+
"active_roadmaps": 21,
|
|
328
|
+
"later_roadmaps": 53,
|
|
329
|
+
"open_blockers": 59,
|
|
330
|
+
"why": "A PARK, recorded in both directions rather than netted to zero: road-to-kernel-question-triangle moves from agents/roadmaps/ to agents/roadmaps/later/, so active_roadmaps 22 -> 21 is WALKED DOWN and later_roadmaps 52 -> 53 is RAISED by the same file. The raise is taken rather than hidden because this ratchet's own history says parking is not closing, and a drawdown that moved a file into later/ and reported only the lower active count is the burial the metric exists to expose. It qualifies as a park rather than a drop on the later/ definition: the file keeps its open steps and carries a testable resume condition \u2014 'Resume when src/rules/ask-when-uncertain.md carries the band-4 qualifier' \u2014 which is an existence-and-content predicate over a named file rather than a vague trigger. open_blockers unchanged at 59: no blocker was opened, closed, or relocated by this change."
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"at": "2026-08-20",
|
|
334
|
+
"active_roadmaps": 32,
|
|
335
|
+
"later_roadmaps": 53,
|
|
336
|
+
"open_blockers": 70,
|
|
337
|
+
"why": "later_roadmaps 52 -> 53, and it is an ACCOUNTING change rather than estate growth. road-to-conformance-round7-followup shipped as status: draft, which collect() excludes, so the file existed on disk and was counted by neither metric. Parking it in later/ is what makes it visible for the first time: active_roadmaps is unchanged at 32 because a draft was never in that count, and later_roadmaps rises by one because the parked table does count it. Nothing was added to the estate by this change and nothing was buried by it - the opposite, a file that no metric watched is now on the parked table with its resume trigger rendered. Recorded rather than offset because the ratchet gates the two metrics separately and has no cross-metric offset; without this entry a draft could never be parked, which would make draft a permanent hiding place and exactly the burial the estate-drawdown quality anchor exists to prevent. open_blockers is unchanged at 70: the roadmap's one blocker was open before the move and is open after it, which is the pair of numbers that distinguishes a disposition change from a real addition."
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"at": "2026-08-21",
|
|
341
|
+
"active_roadmaps": 21,
|
|
342
|
+
"later_roadmaps": 54,
|
|
343
|
+
"open_blockers": 59,
|
|
344
|
+
"why": "A PARK with the draft asymmetry, recorded rather than netted: road-to-conformance-round7-followup moves from agents/roadmaps/ to agents/roadmaps/later/, so later_roadmaps 53 -> 54 is RAISED, and active_roadmaps stays at 21 because the file carried status: draft on the trunk and collect() therefore never counted it as active. That is the same asymmetry this ratchet's own history records from the blocker side \u2014 a draft's numbers only become visible when the file is parked \u2014 and it is stated here so the +1 with no matching -1 does not read as drift. It qualifies as a park rather than a drop: the file keeps its open steps and carries a stated Resume-when condition. The condition names the maintainer stating a position, which is a human trigger rather than a probeable predicate, so it is honestly weaker than an existence check and is called out here rather than dressed up. open_blockers unchanged at 59."
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"at": "2026-08-20",
|
|
348
|
+
"active_roadmaps": 32,
|
|
349
|
+
"later_roadmaps": 52,
|
|
350
|
+
"open_blockers": 67,
|
|
351
|
+
"why": "open_blockers walks 70 -> 69; active_roadmaps and later_roadmaps unchanged. NOTHING IN THE REPOSITORY CHANGED to earn this: no blocker was answered, no question was decided, and no work was finished. The single -1 is a re-encoding. road-to-scale-history-bench-run's manual-rubric-rater blocker was closed by council disposition B (outcome `transferred`, framework agents/evidence/council/drain-blocker-dispositions-b.md) and first written as `Status: transferred`, which reads as closed to a human and as OPEN to every gate -- lint_roadmap_blockers:193 matches exactly /^-\\s*\\*\\*Status:\\*\\*\\s*resolved/im and blocker_is_resolved in update_roadmap_progress applies the same /^resolved\\b/ test, so the entry was counted in open_blockers while a reader saw it as done. Corrected to `Status: resolved` with the outcome state `transferred` kept in the resolution prose, the stub and the stubs README row: the Status token answers 'does this still block THIS roadmap' -- resolved, by the transfer -- and the outcome state answers 'was the result achieved' -- no. The blind PRIMARY rubric rating is unmade rather than negative and now lives in agents/roadmaps/stubs/road-to-scale-history-primary-rating.md with three named producers, each carrying a probe measured FAILING on the transfer date. WHY A TRANSFER LOWERS THIS NUMBER BY CONSTRUCTION, not as headroom: a transferred blocker leaves the active estate's blocker count and reappears as a stub gate, which this metric does not scan -- so the drawdown is real for what the metric measures (blockers gating active roadmaps) and is not a claim that less work is outstanding. Walked down in the same change that earned it, per this file's own rule that a lower measurement is the new ceiling. A sibling transfer of the same day (road-to-subagent-lifecycle-integrity) hit the identical encoding trap and corrected the same way; recorded here so the third one does not re-derive it. RE-ANCHORED AT MERGE: this entry was written as 70 -> 69 against the tree it was authored on. The base moved underneath it -- origin/main landed the two resolved Phase-4 blockers of road-to-inbox-harvest-2026-08-b-ci-economy (70 -> 68) while this branch was open -- so the merged filesystem measures 67 and `baseline` above carries that, read off the merged tree rather than carried from either side. Both same-day entries are kept: the row above is the base's walk, this one is this branch's, and collapsing them would erase which change moved which number. The -1 attributable here is still exactly one re-encoded blocker and still earns nothing; the -2 is not this branch's."
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"at": "2026-08-21",
|
|
355
|
+
"active_roadmaps": 21,
|
|
356
|
+
"later_roadmaps": 54,
|
|
357
|
+
"open_blockers": 58,
|
|
358
|
+
"why": "WALKED DOWN by 1 blocker: road-to-scale-history-bench-run resolved manual-rubric-rater, which is open on origin/main and resolved here \u2014 the roadmap's other two blockers (benchmark-spend-authorization, codex-family-auth) were already resolved on the trunk and are excluded from the delta, checked per blocker rather than by counting status lines. active_roadmaps stays 21: the roadmap keeps open steps and the regen did not archive it. later_roadmaps stays 54: nothing parked. The part the blocker could not carry went to stubs/road-to-scale-history-primary-rating.md with its own probe, so the open work remains counted in the stub."
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"at": "2026-08-21",
|
|
362
|
+
"active_roadmaps": 24,
|
|
363
|
+
"later_roadmaps": 52,
|
|
364
|
+
"open_blockers": 60,
|
|
365
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-skill-description-measurement merged origin/main during the autonomous roadmap-drain run; the trunk had moved (sibling drain PRs archiving roadmaps and resolving blockers in parallel), so neither side's numbers described the merged tree. These values are what `check_estate_count` MEASURED after the merge: {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 60}, from {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 61}. No part of the drop is attributed to this branch, deliberately: its own earned share is recorded in its roadmap and its PR body, and crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. Walked DOWN only \u2014 this entry never raises a number, and a lower measurement is the new ceiling."
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"at": "2026-08-21",
|
|
369
|
+
"active_roadmaps": 21,
|
|
370
|
+
"later_roadmaps": 54,
|
|
371
|
+
"open_blockers": 57,
|
|
372
|
+
"why": "WALKED DOWN by 1 blocker: human-gated-live-trigger-eval is open on origin/main and closed here on council disposition B with the outcome state transferred. The token matters and is worth stating: the Status line reads 'resolved -- transferred', and it is the leading 'resolved' that every gate keys on, so the count moves while the prose carries the real outcome. The transferred work is not lost \u2014 it sits in stubs/road-to-live-trigger-eval.md with its own probe, which is why later_roadmaps stays 54 and nothing was parked. active_roadmaps stays 21: the roadmap keeps open steps and the regen did not archive it."
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"at": "2026-08-21",
|
|
376
|
+
"active_roadmaps": 23,
|
|
377
|
+
"later_roadmaps": 52,
|
|
378
|
+
"open_blockers": 58,
|
|
379
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-frontend-skill-application merged origin/main during the autonomous roadmap-drain run; the trunk had moved (sibling drain PRs archiving roadmaps and resolving blockers in parallel), so neither side's numbers described the merged tree. These values are what `check_estate_count` MEASURED after the merge: {'active_roadmaps': 23, 'later_roadmaps': 52, 'open_blockers': 58}, from {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 61}. No part of the drop is attributed to this branch, deliberately: its own earned share is recorded in its roadmap and its PR body, and crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. Walked DOWN only \u2014 this entry never raises a number, and a lower measurement is the new ceiling."
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"at": "2026-08-21",
|
|
383
|
+
"active_roadmaps": 20,
|
|
384
|
+
"later_roadmaps": 54,
|
|
385
|
+
"open_blockers": 54,
|
|
386
|
+
"why": "WALKED DOWN by 1 active and 3 blockers, all earned here and each checked against origin/main per blocker rather than by counting status lines. road-to-frontend-skill-application archived (under agents/roadmaps/ on main, under archive/ here). Its three blockers open on the trunk are now closed with distinct outcomes, which the Status prose keeps and the count cannot: ui-session-capture-window is 'resolved -- transferred' with two named destinations that carry the obligation, ui-corpus-has-no-ui is 'resolved -- narrowed' with the premise refuted and the session floor honestly 4 short, and enforcement-evidence is 'resolved -- satisfied' on a condition that explicitly admits an explicit no-change. The roadmap's fourth blocker, consultation-rate-instrument, was already resolved on the trunk and is excluded. later_roadmaps unchanged at 54: this is a closure, nothing was parked to buy the number."
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"at": "2026-08-21",
|
|
390
|
+
"active_roadmaps": 23,
|
|
391
|
+
"later_roadmaps": 52,
|
|
392
|
+
"open_blockers": 60,
|
|
393
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-inbox-harvest-2026-08-c-evidence-lifecycle merged origin/main during the autonomous roadmap-drain run; the trunk had moved (sibling drain PRs archiving roadmaps and resolving blockers in parallel), so neither side's numbers described the merged tree. These values are what `check_estate_count` MEASURED after the merge: {'active_roadmaps': 23, 'later_roadmaps': 52, 'open_blockers': 60}, from {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 61}. No part of the drop is attributed to this branch, deliberately: its own earned share is recorded in its roadmap and its PR body, and crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. Walked DOWN only \u2014 this entry never raises a number, and a lower measurement is the new ceiling."
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"at": "2026-08-21",
|
|
397
|
+
"active_roadmaps": 19,
|
|
398
|
+
"later_roadmaps": 54,
|
|
399
|
+
"open_blockers": 53,
|
|
400
|
+
"why": "WALKED DOWN by 1 active and 1 blocker, both this change's own and both checked against origin/main. road-to-inbox-harvest-2026-08-c-evidence-lifecycle is archived (under agents/roadmaps/ on main, under archive/ here) and its single blocker evidence-compaction-approval, open on the trunk, is resolved on option (a): no compaction. Worth noting because it looks like a non-event and is not one \u2014 a decision NOT to act closes the blocker exactly as a change would, and the count moves for that reason rather than because work happened. later_roadmaps unchanged at 54 and no stub was created: nothing was parked or relocated."
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"at": "2026-08-21",
|
|
404
|
+
"active_roadmaps": 23,
|
|
405
|
+
"later_roadmaps": 52,
|
|
406
|
+
"open_blockers": 59,
|
|
407
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-ui-track-integrity-followup merged origin/main during the autonomous roadmap-drain run; the trunk had moved (sibling drain PRs archiving roadmaps and resolving blockers in parallel), so neither side's numbers described the merged tree. These values are what `check_estate_count` MEASURED after the merge: {'active_roadmaps': 23, 'later_roadmaps': 52, 'open_blockers': 59}, from {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 61}. No part of the drop is attributed to this branch, deliberately: its own earned share is recorded in its roadmap and its PR body, and crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. Walked DOWN only \u2014 this entry never raises a number, and a lower measurement is the new ceiling."
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"at": "2026-08-21",
|
|
411
|
+
"active_roadmaps": 18,
|
|
412
|
+
"later_roadmaps": 54,
|
|
413
|
+
"open_blockers": 51,
|
|
414
|
+
"why": "WALKED DOWN by 1 active and 2 blockers, and the SHAPE of this one deserves stating rather than being buried in a number. road-to-ui-track-integrity-followup archived (under agents/roadmaps/ on main, under archive/ here). Its two blockers, measurement-a-no-per-arm-builder-tier and measurement-b-no-renderable-lane-pair, are open on the trunk and closed here as 'resolved -- abandoned'. That is a DROP, not completed work: the leading resolved token is what every gate reads, so the count falls by two while the prose records that the two measurements were given up rather than taken. Flagged for the maintainer in the drain-run summary rather than presented as progress. later_roadmaps unchanged at 54: nothing was parked, and nothing was moved into a stub either, which is exactly why abandoned is the honest word here."
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"at": "2026-08-21",
|
|
418
|
+
"active_roadmaps": 23,
|
|
419
|
+
"later_roadmaps": 52,
|
|
420
|
+
"open_blockers": 60,
|
|
421
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-subagent-value-realization-followup merged origin/main during the autonomous roadmap-drain run; the trunk had moved (sibling drain PRs archiving roadmaps and resolving blockers in parallel), so neither side's numbers described the merged tree. These values are what `check_estate_count` MEASURED after the merge: {'active_roadmaps': 23, 'later_roadmaps': 52, 'open_blockers': 60}, from {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 61}. No part of the drop is attributed to this branch, deliberately: its own earned share is recorded in its roadmap and its PR body, and crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. Walked DOWN only \u2014 this entry never raises a number, and a lower measurement is the new ceiling."
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"at": "2026-08-21",
|
|
425
|
+
"active_roadmaps": 17,
|
|
426
|
+
"later_roadmaps": 54,
|
|
427
|
+
"open_blockers": 50,
|
|
428
|
+
"why": "WALKED DOWN by 1 active and 1 blocker. road-to-subagent-value-realization-followup archived (under agents/roadmaps/ on main, under archive/ here) and its single blocker telemetry-sample-size, open on the trunk, is closed here as 'resolved -- transferred' on disposition B. Transferred and not completed: the sample size was never reached, the obligation moved to a named destination, and the leading resolved token is what the gates read. later_roadmaps unchanged at 54, so the destination is a stub rather than a park -- the open work stays counted where a probe can find it instead of being relocated into later/ to move this number."
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"at": "2026-08-20",
|
|
432
|
+
"active_roadmaps": 23,
|
|
433
|
+
"later_roadmaps": 52,
|
|
434
|
+
"open_blockers": 60,
|
|
435
|
+
"why": "WALKED DOWN by 1 active and 2 blockers, and the drop is EARNED rather than bookkeeping. road-to-cost-parity-1-rule-payload-diet reached zero open steps and archived, and the two blockers it carried open were both disposed against the council record (agents/evidence/council/drain-blocker-dispositions-a.md, disposition B, outcome transferred): skill-activation-window was MERGED with human-gated-live-trigger-eval into the one shared live-trigger-eval stub the pre-registration owner had already written, and utilization-sweep-window moved behind road-to-surface-consolidation Phase 3's scheduled sweep with a named producer and a detection probe. Both read Status: resolved because that is the only token lint_roadmap_blockers accepts as closed; each carries its real outcome state on its own field, so a resolved token is not readable as a satisfied criterion. NOTHING IN THE REPOSITORY GOT BETTER TO EARN THE ACTIVE DROP: the roadmap archived at 13 satisfied / 14 transferred / 23 abandoned of 50, its Goal paragraph delivered nothing, and its one carried-through step (3.5c) closed by STOPPING its own phase on a measurement. The estate is one roadmap smaller because a plan was honestly closed, not because the maintained surface shrank. RE-BASED ON MERGE with origin/main, 2026-08-21. This entry was authored against a measurement of 24 active / 62 open_blockers. The trunk moved in parallel and archived further roadmaps and resolved further blockers of its own, so neither side's number describes the merged tree; the gate MEASURED the merged tree at 23 / 60 and those are the values recorded here. The arithmetic THIS branch earned is unchanged and is the only part it may claim: -1 active (road-to-cost-parity-1-rule-payload-diet archived at zero open steps) and -2 open_blockers (skill-activation-window merged with an existing duplicate, utilization-sweep-window transferred to a named producer). The remaining -1 / -0 in this delta came from the trunk and is banked rather than attributed, because crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. The history array was also conflicted at this merge: main's file was taken as the authoritative base and order, and this branch's single entry appended rather than either side's numbers adopted."
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"at": "2026-08-21",
|
|
439
|
+
"active_roadmaps": 16,
|
|
440
|
+
"later_roadmaps": 54,
|
|
441
|
+
"open_blockers": 48,
|
|
442
|
+
"why": "WALKED DOWN by 1 active and 2 blockers. road-to-cost-parity-1-rule-payload-diet archived (under agents/roadmaps/ on main, under archive/ here). Two of its three blockers, skill-activation-window and utilization-sweep-window, are open on the trunk and resolved here; the third, consolidation-breaking-change-permission, was already resolved on the trunk and is excluded -- checked per blocker rather than by counting status lines, which is the step that keeps a pre-existing closure from being banked as this change's drawdown. later_roadmaps unchanged at 54: a closure, nothing parked."
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"at": "2026-08-21",
|
|
446
|
+
"active_roadmaps": 23,
|
|
447
|
+
"later_roadmaps": 52,
|
|
448
|
+
"open_blockers": 60,
|
|
449
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-council-blind-review merged origin/main during the autonomous roadmap-drain run; the trunk had moved (sibling drain PRs archiving roadmaps and resolving blockers in parallel), so neither side's numbers described the merged tree. These values are what `check_estate_count` MEASURED after the merge: {'active_roadmaps': 23, 'later_roadmaps': 52, 'open_blockers': 60}, from {'active_roadmaps': 24, 'later_roadmaps': 52, 'open_blockers': 61}. No part of the drop is attributed to this branch, deliberately: its own earned share is recorded in its roadmap and its PR body, and crediting a parallel session's drawdown to this change is exactly how a ratchet loosens without anyone noticing. Walked DOWN only \u2014 this entry never raises a number, and a lower measurement is the new ceiling."
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"at": "2026-08-21",
|
|
453
|
+
"active_roadmaps": 15,
|
|
454
|
+
"later_roadmaps": 54,
|
|
455
|
+
"open_blockers": 47,
|
|
456
|
+
"why": "WALKED DOWN by 1 active and 1 blocker. road-to-council-blind-review archived (under agents/roadmaps/ on main, under archive/ here) and its single blocker maintainer-blind-ratings, open on the trunk, is closed here as 'resolved -- transferred'. The destination is stubs/road-to-council-blind-ratings.md, created in this same change, which is what makes the transfer legitimate rather than a disposal: the obligation names a maintainer rating pass, so it could not be completed by an agent, and it is now carried by a stub with its own probe instead of sitting open on an archived roadmap. later_roadmaps unchanged at 54 -- transferred to a stub, not parked into later/."
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"at": "2026-08-21",
|
|
460
|
+
"active_roadmaps": 15,
|
|
461
|
+
"later_roadmaps": 55,
|
|
462
|
+
"open_blockers": 47,
|
|
463
|
+
"why": "A PARK with the draft asymmetry, recorded in the direction it actually moves: road-to-plan-gates-measurement goes from agents/roadmaps/ to agents/roadmaps/later/, so later_roadmaps 54 -> 55 is RAISED, and active_roadmaps stays 15 because the file carried status: draft on the trunk and collect() never counted it as active. The raise is taken rather than netted because parking is not closing. It qualifies as a park: the file keeps its open steps and its resume condition is an existence predicate over a named file, agents/evidence/metrics/gate-metrics.jsonl, which a probe can decide -- stronger than the maintainer-statement triggers some of the other parks in this run carry. open_blockers unchanged at 47."
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"at": "2026-08-20",
|
|
467
|
+
"active_roadmaps": 24,
|
|
468
|
+
"later_roadmaps": 52,
|
|
469
|
+
"open_blockers": 64,
|
|
470
|
+
"why": "WALKED DOWN by 1 active roadmap and nothing else. road-to-ci-native-release-first-run archived: 2 of its 8 items were satisfied on live evidence and 6 transferred to stubs/road-to-ci-native-release-live-label-path.md with a named producer (matze4u, admin verified) and per-item probes measured at transfer. open_blockers is UNCHANGED at 64 and that is deliberate: the roadmap had no blocker section, and none was filed to leave a note, because a new blocker entry would have reddened this same ratchet in the opposite direction while recording nothing a stub row does not already carry. later_roadmaps unchanged at 52 - nothing was parked; the residual work is release-gated, not deferred, so it belongs in stubs/ rather than later/. The transferred work is counted in the stub, not vanished: the label path has never fired (0 non-skipped release.yml runs on pull_request across 300 scanned), so what moved is verification that needs a Hard-Floor act, and the drawdown is the roadmap terminating rather than its goal being reached."
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"at": "2026-08-21",
|
|
474
|
+
"active_roadmaps": 14,
|
|
475
|
+
"later_roadmaps": 55,
|
|
476
|
+
"open_blockers": 47,
|
|
477
|
+
"why": "WALKED DOWN by 1 active and nothing else: road-to-ci-native-release-first-run is archived by this branch (present under agents/roadmaps/ on main, added under agents/roadmaps/archive/ here). open_blockers is UNCHANGED at 47, which is the check that says this closure bought nothing by relocating an open decision -- the roadmap carried no blocker that moved, and the part it could not finish went to stubs/road-to-ci-native-release-live-label-path.md with its own probe. later_roadmaps unchanged at 55: a stub is not a park, so the open work stays counted where a probe can decide it rather than in later/."
|
|
142
478
|
}
|
|
143
479
|
],
|
|
144
480
|
"target": {
|