@event4u/agent-config 14.6.0 → 14.8.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 +255 -145
- 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/evals/git-pr-merge.json +13 -0
- package/dist/agent-src/commands/evals/roadmap.json +17 -1
- package/dist/agent-src/commands/pr/create.md +14 -2
- package/dist/agent-src/commands/pr/merge.md +379 -0
- package/dist/agent-src/commands/roadmap/process-full.md +272 -32
- package/dist/agent-src/commands/roadmap.md +1 -1
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +46 -36
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +37 -2
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +95 -2
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +289 -106
- package/dist/agent-src/rules/artifact-drafting-protocol.md +5 -1
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/decision-revisit-gate.md +67 -32
- 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 +20 -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 +26 -7
- package/dist/agent-src/scripts/dashboard_mode.ts +212 -0
- 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 +296 -53
- package/dist/agent-src/skills/adr-create/SKILL.md +124 -5
- 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/decision-record/SKILL.md +61 -3
- package/dist/agent-src/skills/decision-review/SKILL.md +65 -0
- package/dist/agent-src/skills/merge-conflicts/SKILL.md +26 -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/security/SKILL.md +8 -0
- package/dist/agent-src/skills/security-audit/SKILL.md +12 -1
- 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 +65 -4
- 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 +2 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/chunk-2GNWGMAL.js +172 -0
- package/dist/cli-delegate/{chunk-P6LQDIWK.js → chunk-7PRE6ZV2.js} +338 -0
- package/dist/cli-delegate/{chunk-BKO2AZ7Z.js → chunk-B2ERU2VA.js} +1 -1
- package/dist/cli-delegate/chunk-E4XIZDIB.js +402 -0
- package/dist/cli-delegate/{chunk-3UCJWMMP.js → chunk-EEJUMCDZ.js} +16 -16
- package/dist/cli-delegate/{chunk-NXFWFAYV.js → chunk-G23AT6GD.js} +1 -0
- package/dist/cli-delegate/{chunk-XURJ4AQC.js → chunk-H4VIVD4C.js} +385 -284
- package/dist/cli-delegate/chunk-I3EIN2YG.js +36 -0
- package/dist/cli-delegate/{chunk-RLN73PR5.js → chunk-LPPWO5CE.js} +12 -8
- package/dist/cli-delegate/chunk-MWRD5YOH.js +100 -0
- package/dist/cli-delegate/{chunk-UEZ7D35A.js → chunk-N7CDDGI3.js} +4 -23
- package/dist/cli-delegate/{chunk-63WSP6YZ.js → chunk-PMEKGDED.js} +74 -167
- 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_adr_effective.js +1162 -0
- package/dist/cli-delegate/cmd_conformance.js +466 -716
- package/dist/cli-delegate/cmd_converge.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +10 -10
- package/dist/cli-delegate/cmd_explain.js +1 -1
- package/dist/cli-delegate/cmd_export.js +10 -9
- package/dist/cli-delegate/cmd_handoff.js +10 -9
- package/dist/cli-delegate/cmd_memory_get.js +2 -1
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +5 -5
- package/dist/cli-delegate/cmd_prune.js +11 -10
- package/dist/cli-delegate/cmd_route_audit.js +6 -5
- package/dist/cli-delegate/cmd_route_explain.js +3 -3
- package/dist/cli-delegate/cmd_session_recycle.js +840 -30
- package/dist/cli-delegate/cmd_settings_get.js +3 -3
- package/dist/cli-delegate/cmd_settings_migrate.js +10 -9
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +11 -10
- package/dist/cli-delegate/cmd_uninstall.js +13 -11
- package/dist/cli-delegate/cmd_update.js +4 -4
- package/dist/cli-delegate/cmd_upgrade.js +4 -4
- package/dist/cli-delegate/cmd_validate.js +11 -10
- package/dist/cli-delegate/cmd_versions.js +3 -3
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +111 -37
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +15 -12
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +11 -8
- package/dist/hooks/dispatch.js +3165 -2192
- package/dist/install/claudePathsPlan.js +187 -0
- package/dist/install/claudePathsPlan.js.map +1 -0
- package/dist/install/globalRuleLayers.js +169 -0
- package/dist/install/globalRuleLayers.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 +432 -0
- package/dist/install/partitionEligibility.js.map +1 -0
- package/dist/install/ruleLayerPartition.js +157 -0
- package/dist/install/ruleLayerPartition.js.map +1 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1863 -1234
- 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/_lib/prune_empty_dirs.js +85 -0
- package/dist/scripts/_lib/prune_empty_dirs.js.map +1 -0
- package/dist/scripts/condense.js +63 -251
- 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/artifact-drafting-protocol-mechanics.md +45 -1
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +26 -0
- package/docs/guidelines/agent-infra/false-green.md +47 -1
- 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 +26 -7
- package/src/agent-src/scripts/dashboard_mode.ts +212 -0
- 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 +296 -53
- 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 +39 -0
- package/src/config/estate-count-budget.json +612 -3
- package/src/config/evaluator-budgets.json +3 -3
- package/src/config/gate-coverage.yml +220 -12
- package/src/config/gate-violation-baselines.json +73 -63
- package/src/config/gitignore-block.txt +15 -2
- package/src/config/hook-latency-budget.json +5 -0
- package/src/config/rule-activation-census.json +14 -6
- package/src/config/rule-stub-ceilings.json +34 -7
- package/src/install/claudePathsPlan.ts +196 -0
- package/src/install/globalRuleLayers.ts +197 -0
- package/src/install/hostLayerFingerprint.ts +145 -0
- package/src/install/partitionEligibility.ts +502 -0
- package/src/install/ruleLayerPartition.ts +212 -0
- package/src/scripts/_cli/cmd_adr_effective.ts +484 -0
- package/src/scripts/_cli/cmd_session_recycle.ts +9 -1
- package/src/scripts/_dispatch.bash +17 -1
- package/src/scripts/_lib/ac_heading.ts +30 -0
- package/src/scripts/_lib/adr_frontmatter.test.ts +365 -0
- package/src/scripts/_lib/adr_frontmatter.ts +459 -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 +49 -9
- package/src/scripts/_lib/installed_lock.ts +50 -5
- package/src/scripts/_lib/layer_overlap_notice.ts +11 -2
- package/src/scripts/_lib/md_section.ts +129 -0
- package/src/scripts/_lib/prune_empty_dirs.ts +80 -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/adr/evidence_census.ts +899 -0
- package/src/scripts/adr/regenerate_index.ts +12 -32
- package/src/scripts/adr_cite_check.ts +540 -39
- package/src/scripts/ai_council/cli_help.ts +55 -0
- package/src/scripts/audit_adr_coverage.ts +103 -17
- package/src/scripts/before_complete_hook.ts +153 -28
- package/src/scripts/bench_ab_v2_complexity.ts +27 -7
- package/src/scripts/bench_hook_latency.ts +204 -0
- package/src/scripts/build_archive_index.ts +34 -0
- package/src/scripts/check_adr_frontmatter.ts +574 -39
- package/src/scripts/check_hook_bundle_content.ts +219 -0
- package/src/scripts/check_new_adr_evidence.ts +529 -0
- package/src/scripts/check_references.ts +78 -0
- package/src/scripts/check_release_published.ts +32 -11
- package/src/scripts/check_rule_layer_partition.ts +531 -0
- package/src/scripts/check_single_delivery.ts +194 -17
- package/src/scripts/check_standing_rule_delivery.ts +8 -2
- package/src/scripts/ci_settle.ts +170 -0
- package/src/scripts/condense.ts +79 -259
- package/src/scripts/council_cli.ts +3 -3
- package/src/scripts/dispatch_r2_reviewer.ts +6 -14
- package/src/scripts/external_sources_denylist.json +4 -1
- 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 +21 -1
- package/src/scripts/hooks/concern_registry.ts +4 -0
- package/src/scripts/hooks/dispatch_hook.ts +154 -187
- package/src/scripts/hooks/dispatch_issues.ts +38 -19
- package/src/scripts/hooks/fallback_yaml.ts +66 -0
- package/src/scripts/hooks/host_semantics.ts +21 -0
- package/src/scripts/hooks/injection_budget.ts +13 -3
- package/src/scripts/hooks/py_json_dumps.ts +103 -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 +870 -21
- package/src/scripts/hooks/stdin_failure_policy.ts +96 -0
- 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/injection_scan_hook.ts +137 -5
- 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_hook_manifest.ts +49 -0
- package/src/scripts/lint_plan_risk_register.ts +4 -3
- package/src/scripts/lint_provenance_vocabulary.ts +472 -4
- 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/routing_doctor.ts +5 -1
- 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 +170 -20
- 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-PPQO4NGR.js → chunk-6RJA2F5A.js} +3 -3
- package/dist/cli-delegate/{chunk-RYNADUFG.js → chunk-LWTYTX6F.js} +0 -0
- package/dist/cli-delegate/{chunk-FBKL6JWT.js → chunk-MMSGVZKV.js} +3 -3
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
]
|
|
17
17
|
},
|
|
18
18
|
"baseline": {
|
|
19
|
-
"active_roadmaps":
|
|
20
|
-
"later_roadmaps":
|
|
21
|
-
"open_blockers":
|
|
19
|
+
"active_roadmaps": 3,
|
|
20
|
+
"later_roadmaps": 55,
|
|
21
|
+
"open_blockers": 26
|
|
22
22
|
},
|
|
23
23
|
"baseline_history": [
|
|
24
24
|
{
|
|
@@ -133,12 +133,621 @@
|
|
|
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/."
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"at": "2026-08-21",
|
|
481
|
+
"active_roadmaps": 23,
|
|
482
|
+
"later_roadmaps": 52,
|
|
483
|
+
"open_blockers": 60,
|
|
484
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-orchestration-scope-decision 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."
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"at": "2026-08-21",
|
|
488
|
+
"active_roadmaps": 13,
|
|
489
|
+
"later_roadmaps": 55,
|
|
490
|
+
"open_blockers": 46,
|
|
491
|
+
"why": "WALKED DOWN by 1 active and 1 blocker. road-to-orchestration-scope-decision archived (under agents/roadmaps/ on main, under archive/ here) and its single blocker real-orchestration-usage, open on the trunk, is closed here as 'resolved -- transferred' on disposition B, with the obligation carried by stubs/road-to-task-completion-observability.md created in this same change. Transferred rather than completed: the blocker wanted evidence of real orchestration usage, which no change-set can manufacture, so the honest close is a stub with a probe rather than a claim that the evidence arrived. later_roadmaps unchanged at 55 -- a stub is not a park."
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"at": "2026-08-21",
|
|
495
|
+
"active_roadmaps": 22,
|
|
496
|
+
"later_roadmaps": 52,
|
|
497
|
+
"open_blockers": 60,
|
|
498
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-skill-ecosystem-gate-integrity 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': 22, 'later_roadmaps': 52, 'open_blockers': 60}, from {'active_roadmaps': 23, '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."
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"at": "2026-08-21",
|
|
502
|
+
"active_roadmaps": 12,
|
|
503
|
+
"later_roadmaps": 55,
|
|
504
|
+
"open_blockers": 45,
|
|
505
|
+
"why": "WALKED DOWN by 1 active and 1 blocker. road-to-skill-ecosystem-gate-integrity archived (under agents/roadmaps/ on main, under archive/ here) and its single blocker kernel-cross-link-soak, open on the trunk, is closed here as 'resolved -- transferred, not done' -- the branch's own wording, which is the honest one: a soak needs elapsed time, so no change-set can finish it. The obligation is carried by stubs/road-to-kernel-cross-link-soak.md created in this same change. later_roadmaps unchanged at 55: a stub is not a park, and the soak stays counted where a probe can decide it."
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"at": "2026-08-21",
|
|
509
|
+
"active_roadmaps": 23,
|
|
510
|
+
"later_roadmaps": 52,
|
|
511
|
+
"open_blockers": 59,
|
|
512
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-context-fidelity 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."
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"at": "2026-08-21",
|
|
516
|
+
"active_roadmaps": 11,
|
|
517
|
+
"later_roadmaps": 55,
|
|
518
|
+
"open_blockers": 43,
|
|
519
|
+
"why": "WALKED DOWN by 1 active and 2 blockers. road-to-context-fidelity archived (under agents/roadmaps/ on main, under archive/ here). Two of its three blockers are open on the trunk and closed here on council dispositions dated 2026-08-20: compaction-census-session and prominence-gate-skills-corpus. The third, memory-sweep-instrument, was already resolved on the trunk by a 2026-08-19 council and is excluded from the delta -- the kind of pre-existing closure that would otherwise be banked as this change's drawdown. later_roadmaps unchanged at 55: the part that could not be finished went to stubs/road-to-compaction-survival-census.md with its own probe, so the open work stays counted rather than parked."
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"at": "2026-08-20",
|
|
523
|
+
"active_roadmaps": 23,
|
|
524
|
+
"later_roadmaps": 52,
|
|
525
|
+
"open_blockers": 60,
|
|
526
|
+
"why": "WALKED DOWN by 2 blockers, and NOTHING IN THE REPOSITORY EARNED THE DROP - a transfer lowers this number by construction, which is the one case where a falling measurement is not progress. The drain run that closed road-to-rule-coherence-followup resolved its two entries (default-flip-release-gate, bench-spend-and-methodology) under the council's B and D dispositions: the shipped-default flip and the human-judged A/B run both left for stubs/road-to-discipline-default-flip.md with verbatim criteria, complete moved-step lists, a named producer and probes measured at transfer. The work is not done and is not gone; it is counted in the stub instead of here, exactly as the 2026-08-20 phase3-harness-deltas-9-10 entry above records for its own transfer. Written as `resolved` because that is the ONLY closed token lint_roadmap_blockers reads - `transferred` scans as open to every gate - so the outcome state lives in the resolution prose, the stub and the stubs/README row rather than in the status token. Anyone reading this series as a drawdown curve should discount these 2 the way they discount the parking entries: the estate got smaller, the obligation did not. Re-measured over the merged tree after merging origin/main, not carried over from before the merge. Active roadmaps also fall 25 -> 24 in the same change, and that half IS earned in the ordinary way: road-to-rule-coherence-followup reached zero open steps and `agent-config roadmap:progress` archived it. The two halves of this entry are therefore different kinds of movement and are recorded separately on purpose - the roadmap genuinely left the active tree, while the 2 blockers only changed which file counts them. RE-BASED ON MERGE with origin/main, 2026-08-21. Authored against a different base; the trunk moved in parallel, so neither side's number describes the merged tree and the gate MEASURED it at 23 active / 60 open_blockers. What THIS branch earned is -1 active (road-to-rule-coherence-followup reached 0 open and was archived by the roadmap:progress sweep) and -2 open_blockers (both of its entries closed, each with outcome state transferred rather than satisfied). The blocker half of that is a RELOCATION, not a discharge: the criteria moved into stubs/road-to-discipline-default-flip.md and stubs/road-to-declared-protocol-cap.md, and the metric counts entries, so it falls whether or not a line of the transferred work exists. Any remaining delta came from the trunk and is banked rather than attributed."
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
"at": "2026-08-21",
|
|
530
|
+
"active_roadmaps": 10,
|
|
531
|
+
"later_roadmaps": 55,
|
|
532
|
+
"open_blockers": 41,
|
|
533
|
+
"why": "WALKED DOWN by 1 active and 2 blockers. road-to-rule-coherence-followup archived (under agents/roadmaps/ on main, under archive/ here) and both of its blockers, default-flip-release-gate and bench-spend-and-methodology, are open on origin/main and resolved here -- verified per blocker against the trunk. later_roadmaps unchanged at 55, and that is the load-bearing part of this entry: the two items the roadmap could not finish went to TWO stubs created in this same change, stubs/road-to-declared-protocol-cap.md and stubs/road-to-discipline-default-flip.md, each with its own probe. Nothing was parked into later/ and nothing was dropped, so the -2 is a relocation into probe-carrying stubs rather than work completed."
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"at": "2026-08-21",
|
|
537
|
+
"active_roadmaps": 9,
|
|
538
|
+
"later_roadmaps": 55,
|
|
539
|
+
"open_blockers": 41,
|
|
540
|
+
"why": "RE-MEASURED after a SECOND merge of origin/main, not a second drawdown. The trunk moved while this branch waited for CI (PR #1507 landed and walked open_blockers to 41 itself), so the entry this branch wrote earlier -- active 11 -> 10, blockers 43 -> 41 -- was measured against a tree that no longer exists. Against the merged tree the only delta still owned by this branch is active_roadmaps 10 -> 9, the archival of road-to-rule-coherence-followup. open_blockers is left at 41 rather than claimed again: its two closures are already recorded, once, in the earlier entry, and re-counting them here is exactly how a ratchet double-books a single piece of work. later_roadmaps unchanged at 55."
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
"at": "2026-08-20",
|
|
544
|
+
"active_roadmaps": 32,
|
|
545
|
+
"later_roadmaps": 52,
|
|
546
|
+
"open_blockers": 65,
|
|
547
|
+
"why": "open_blockers 70 -> 65 by the road-to-always-on-orchestration drain: all five of that roadmap's entries were RESOLVED in one change \u2014 four transferred to probe-keyed stubs under council disposition B (2026-08-20, anthropic + openai, quorum 2/2) and one satisfied by shipping the cross-vendor direction policy the criterion asked for. active_roadmaps and later_roadmaps are unchanged at 32 and 52: the roadmap stays in the active tree because this run was instructed not to archive it, and the four stubs land under agents/roadmaps/stubs/, which collect() does not count. So this is a pure blocker drawdown with no estate movement behind it. Worth recording honestly: FOUR of the five closures are transfers, not achievements \u2014 the work moved to a stub because this repository cannot produce the evidence it needs (an unset experimental host flag, an unverified live Stop-slot delivery, an unverified transport soak, and a main-vs-subagent identity upstream closed NOT_PLANNED). The blocker count fell by five; the amount of unfinished work fell by one. A future reader comparing this metric against progress should read \u00a7 Outcome in that roadmap, which states the same thing at length."
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"at": "2026-08-21",
|
|
551
|
+
"active_roadmaps": 8,
|
|
552
|
+
"later_roadmaps": 55,
|
|
553
|
+
"open_blockers": 36,
|
|
554
|
+
"why": "WALKED DOWN by 1 active and 5 blockers -- the largest single drawdown of this drain, so the composition matters. road-to-always-on-orchestration archived (under agents/roadmaps/ on main, under archive/ here). All five of its blockers are open on origin/main and closed here, and FOUR of the five are 'resolved -- transferred', each to a stub created in this same change: gate-council-auto-dispatch, point-of-action-carrier, f4-full-stop-block and team-telemetry-behind-flag. Only ONE, cross-vendor-worker-slices, is 'resolved -- satisfied', i.e. actually finished. So this -5 is mostly relocation into probe-carrying stubs rather than completed work, and reading it as five closed problems would be wrong. later_roadmaps unchanged at 55: stubs, not parks."
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"at": "2026-08-20",
|
|
558
|
+
"active_roadmaps": 23,
|
|
559
|
+
"later_roadmaps": 52,
|
|
560
|
+
"open_blockers": 60,
|
|
561
|
+
"why": "open_blockers 64 -> 62: the two blockers of road-to-user-out-of-the-loop resolved on the autonomous drain run. autonomy-defaults-sheet closed SATISFIED (AI council disposition D -- all four reversible policy values named and implemented or recorded at the site that carries them); kernel-soak-window closed TRANSFERRED (disposition B -- only the ask-when-uncertain arm crosses the locked-kernel boundary, and it moved to agents/roadmaps/stubs/road-to-batch-elicitation-kernel-delta.md). Both under the 2/2 council record agents/evidence/council/drain-blocker-dispositions-a.md.\n\nRead the two halves of this walk-down differently, because they are not the same kind of movement. autonomy-defaults-sheet is a real discharge: the four values are decided and three of them are implemented in the tree (roadmap-process-loop 3a splits the wrapper row so /roadmap:next preselects phase-checkpoints; roadmap-execution-contract 2a ships late_artifacts with halt as the default; 2b plus the roadmap-progress-sync delta ship deferred_policy with both exits). The fourth, the lane cap of 2, is recorded rather than implemented -- lanes are staged behind ten clean serial set runs, measured 0 today and unobtainable until a set entry point exists.\n\nkernel-soak-window is the other kind, and it lowers this number by construction while NOTHING in the repository earned the drop. src/rules/ask-when-uncertain.md is byte-identical to its state before the run; it is row 2 of the locked nine in docs/contracts/kernel-membership.md section 4; block-kernel-rule-writes remains bound blocking with fail_closed: true at hook_manifest.yaml:924; and authorization records for the batch-elicitation delta number ZERO, read live on 2026-08-20. The metric counts open blocker ENTRIES, so a transfer to a stub lowers it whether or not a single line of the transferred work exists. The stub carries the original criterion verbatim, the complete list of dependent steps moved, and a named re-entry producer (the kernel-rule maintainer) with a two-conjunct probe pinned to those readings -- a recorded authorization plus the >= 24 h kernel-rule-edits soak completing without rollback -- so the movement stays detectable instead of 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 drained roadmap reached 44/44 with count_deferred 0, and archival is not this run's to perform by hand: it happens deterministically in the PR that completes it, via the archive sweep. Until then the file stays in the active tree, which is why the active count did not move.\n\nRE-BASED on merge with origin/main, 2026-08-20. This entry was authored against a baseline of 68 and walked to 66. main moved in parallel -- it archived roadmaps (active_roadmaps 32 -> 25) and resolved blockers of its own (open_blockers 68 -> 64) -- so neither side's number describes the merged tree. The merged tree was MEASURED by the gate at 62, and the arithmetic for this change is unchanged at -2: the same two blockers of road-to-user-out-of-the-loop, from whatever base the trunk had reached. later_roadmaps is carried from main untouched, because this change parked nothing.\n\nactive_roadmaps 25 -> 24, and this one is a REAL disposal rather than a relocation: road-to-user-out-of-the-loop reached 44/44 with count_deferred 0 and was archived to agents/roadmaps/archive/ by `agent-config roadmap:progress` itself -- the auto-archive that landed on main in PR #1493, not a hand `git mv`. The earlier draft of this entry said the active count did not move because archival was out of this run's scope; that was true of the run and false of the tooling, and the sentence is corrected rather than deleted so the reason for the difference stays readable. Inbound links from the two new stubs were re-depthed to ../archive/ in the same change, because the archival sweep does not re-depth moved links. RE-BASED AGAIN at the final merge with origin/main, 2026-08-21, and the earlier re-base note above is kept rather than rewritten so the sequence stays readable. The gate MEASURED the merged tree at 23 active / 60 open_blockers and those are the recorded values. This branch's own arithmetic is unchanged: -1 active (road-to-user-out-of-the-loop archived at 44/44, count_deferred 0) and -2 open_blockers, of which autonomy-defaults-sheet is a real discharge and kernel-soak-window is a transfer that lowers the count while nothing in the repository earned the drop -- src/rules/ask-when-uncertain.md is byte-identical to its pre-run state, it is row 2 of the locked nine, block-kernel-rule-writes stays bound blocking with fail_closed: true at hook_manifest.yaml:924, and authorization records for the transferred delta number ZERO. Any further movement in these numbers came from the trunk in parallel and is banked, not attributed."
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
"at": "2026-08-21",
|
|
565
|
+
"active_roadmaps": 7,
|
|
566
|
+
"later_roadmaps": 55,
|
|
567
|
+
"open_blockers": 34,
|
|
568
|
+
"why": "WALKED DOWN by 1 active and 2 blockers. road-to-user-out-of-the-loop archived (under agents/roadmaps/ on main, under archive/ here) and both of its blockers, kernel-soak-window and autonomy-defaults-sheet, are open on origin/main and resolved here -- verified per blocker against the trunk. The two items the roadmap could not finish went to stubs created in this same change, stubs/road-to-batch-elicitation-kernel-delta.md and stubs/road-to-roadmap-set-front-doors.md, each with its own probe, which is why later_roadmaps stays 55: relocation into probe-carrying stubs, not a park and not a drop."
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"at": "2026-08-20",
|
|
572
|
+
"active_roadmaps": 24,
|
|
573
|
+
"later_roadmaps": 52,
|
|
574
|
+
"open_blockers": 63,
|
|
575
|
+
"why": "LOWERED by 1 on active_roadmaps (25 -> 24) and 1 on open_blockers (64 -> 63), and NOTHING IN THE REPOSITORY EARNED THE DROP. road-to-gated-reach-followup reached zero open steps and zero deferred items and was archived, and its `legacy` blocker was resolved -- but resolved with outcome state `transferred`, not `satisfied`: the condition it named (a human installing yt-dlp plus a JavaScript runtime) did not clear. It moved to stubs/road-to-youtube-channel-exercise.md behind a named producer (the host owner) and a two-part probe measured on the transfer date. Nine of the roadmap's fifteen lines went with it; the six that had no dependency on the absent backend were completed in place. So the estate is one roadmap and one blocker smaller while the underlying capability is exactly as unmeasured as before, and that is the honest reading of these two numbers. Walked down anyway, for the reason the 2026-08-19 entry gives from the other side: a baseline left above a lower measurement is headroom a later change can spend with no gate objecting, and the count half compares the live tree against this file irrespective of the diff, so leaving it high would hand free growth to whoever comes next. later_roadmaps is unchanged at 52, which is the check that distinguishes a terminal disposition from a park -- a stub under stubs/ is explicitly not counted as estate by this metric's own not_gated note, so the honest caveat is that this drawdown moves work into a surface the ratchet cannot see. Recorded here rather than left implicit, because a reader comparing only the numbers would read a transfer as a completion."
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"at": "2026-08-21",
|
|
579
|
+
"active_roadmaps": 23,
|
|
580
|
+
"later_roadmaps": 52,
|
|
581
|
+
"open_blockers": 60,
|
|
582
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-gated-reach-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."
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"at": "2026-08-21",
|
|
586
|
+
"active_roadmaps": 6,
|
|
587
|
+
"later_roadmaps": 55,
|
|
588
|
+
"open_blockers": 33,
|
|
589
|
+
"why": "WALKED DOWN by 1 active and 1 blocker, and the blocker half took real digging rather than a status-line count -- the driver reported ZERO open-to-resolved transitions, which is true and misleading. active_roadmaps 7 -> 6 is the archival of road-to-gated-reach-followup. open_blockers 34 -> 33 comes from a LEGACY marker: on origin/main that file carries '> Blocked until yt-dlp and a JavaScript runtime are installed by a human', which the parser counts as one open blocker via its legacy Blocked-until form, and this branch converts it into a structured '### blocker: legacy' entry with Status resolved and Owner user. So no status line changed from open to resolved; a legacy note became a structured, closed one. The obligation itself is preserved in stubs/road-to-youtube-channel-exercise.md, which is why later_roadmaps stays 55."
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"at": "2026-08-21",
|
|
593
|
+
"active_roadmaps": 23,
|
|
594
|
+
"later_roadmaps": 52,
|
|
595
|
+
"open_blockers": 61,
|
|
596
|
+
"why": "WALK-DOWN, earned by one archival and nothing else, RE-MEASURED AT MERGE. road-to-solution-minimalism reached 0 open / 0 deferred / 0 open blockers and `roadmap:progress` archived it, so active_roadmaps measures 23 against a trunk ceiling of 24. The one point is a real termination, not an accounting move: nothing was parked, re-classified `draft`, or split, and later_roadmaps is unchanged at 52. Its residue did move to a stub (the ~30 oracles and the full-tier run, transferred 2026-08-20 in PR #1480), but that transfer was counted then and this entry adds nothing for it. RECONCILIATION: this entry first read open_blockers 62, measured against d0fad2ccd before origin/main moved 11 commits ahead; the trunk has since measured 61, so that NUMBER is superseded and only the active_roadmaps claim it carried still stands. The baseline above was re-measured against the merged tree rather than taken from either side, and every history entry from both sides is retained -- main's 38 in main's order, plus this one. A lower measurement is the new ceiling, never headroom to spend later."
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"at": "2026-08-21",
|
|
600
|
+
"active_roadmaps": 22,
|
|
601
|
+
"later_roadmaps": 52,
|
|
602
|
+
"open_blockers": 61,
|
|
603
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-solution-minimalism 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': 22, 'later_roadmaps': 52, 'open_blockers': 61}, from {'active_roadmaps': 23, '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."
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"at": "2026-08-21",
|
|
607
|
+
"active_roadmaps": 5,
|
|
608
|
+
"later_roadmaps": 55,
|
|
609
|
+
"open_blockers": 33,
|
|
610
|
+
"why": "WALKED DOWN by 1 active and nothing else: road-to-solution-minimalism is archived by this branch (under agents/roadmaps/ on main, under agents/roadmaps/archive/ here). This is the roadmap PR #1480 left open earlier in this same drain on exactly one acceptance step -- all quality gates pass -- which was deliberately NOT flipped then because a green CI run is what closes it, not an agent's assertion. That step is closed here and the archive follows. open_blockers unchanged at 33: its blockers were already resolved before this change, so nothing is claimed twice. later_roadmaps unchanged at 55."
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"at": "2026-08-21",
|
|
614
|
+
"active_roadmaps": 6,
|
|
615
|
+
"later_roadmaps": 55,
|
|
616
|
+
"open_blockers": 34,
|
|
617
|
+
"why": "Raised by one for `merge-authority` in road-to-drain-commands. The blocker is not deferred work: it records that activating a `--merge` flag lowers a recorded safety floor (ADR-237 s4 excludes merging and says no invocation extends it), which docs the decision-revisit-gate reserves to the owner. Three independent reviews reached that same verdict before the blocker was written - the AI council, the committed road-to-gate-preauth-authorization stub, and the runtime classifier, which refused this branch's own attempt to edit the prohibition out of the canonical loop. Writing it as a blocker is what keeps the estate honest here: the alternative was to ship the flag active with an amendment the agent authored for itself, which would have left the count unchanged and the floor lowered. Also raised active_roadmaps 10 -> 11 for the same file. It ships 27 of its 29 steps closed in the change that adds it, and stays active only because that one owner decision is outstanding; its frontmatter carries the matching estate_offset_exempt line rather than parking an unrelated roadmap to balance the books. Rebased onto main's drawdown during the merge: main lowered active_roadmaps to 10 and open_blockers to 43 while this branch was open, so the +1 for this roadmap is applied to THAT floor (11 / 44) rather than to the 11 / 43 this branch started from. Taking our own higher numbers would have silently undone someone else's drawdown, which is the one thing a ratchet must never let a merge do."
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"at": "2026-08-21",
|
|
621
|
+
"active_roadmaps": 7,
|
|
622
|
+
"later_roadmaps": 55,
|
|
623
|
+
"open_blockers": 36,
|
|
624
|
+
"why": "REBASED ONTO THE TRUNK'S WALK-DOWN (FIFTH time on this branch -- main moved five times across the review rounds, twice while CI was running on this branch). Re-measured from the tree: with main's file in place `check_estate_count` reported `active_roadmaps 7 (baseline 6, +1)` and `open_blockers 36 (baseline 34, +2)`, which is exactly this branch's contribution. main's lineage is kept whole (85 history entries, baseline 6/55/34) and only that delta rides on top, giving 7/55/36.\n\nFive identical resolutions is worth naming as a PATTERN rather than five accidents: the trunk is being drained continuously, a CI cycle here takes about twenty minutes, and main moved 45 commits during the last one. The drain's own run summary records the same shape from the other side -- 'the merge-authorization window is shorter than a drain takes'. So this conflict is structural for any branch that is not merged within one CI cycle, and the resolution is mechanical each time: take main's lineage, re-measure the delta, never carry the numbers. The one time they were carried, the entry shipped a `why` naming 12 -> 13 while its own field read 10.\n\nThe +2 open blockers are both on road-to-evidence-based-adr-governance and both are maintainer decisions put in front of the maintainer rather than drift: `owner-autonomy-batch` (three Hard-Floor rulings the source instruction did not authorize) and `authority-coupling-decision` (whether an independently validated evidence grade may ever reduce authorization burden -- deferred on a unanimous two-seat council ruling that fusing evidence metadata with authority is the design's central defect, because the party assigning the grade would also be the party gaining authority from it AND would be self-classifying the transition as reversible-internal). The active_roadmaps side is covered by the roadmap's own estate_offset_exempt, which records why no one-in-one-out offset is taken: the other active roadmaps belong to other sessions, and this ledger's own 67 -> 69 entry names 'closing someone else's work to buy the number back' as the incentive the ratchet must never create. 7 and 36 are the measured trunk-plus-this-change values and are now the numbers that must walk down."
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"at": "2026-08-21",
|
|
628
|
+
"active_roadmaps": 23,
|
|
629
|
+
"later_roadmaps": 52,
|
|
630
|
+
"open_blockers": 61,
|
|
631
|
+
"why": "WALKED DOWN by 1 active roadmap: road-to-estate-drawdown archived, all eight steps terminal. EARNED vs BANKED, because the trunk moved under this branch and the split matters: this change earned the ENTIRE -1 on active_roadmaps and NONE of the movement on the other two. When this branch fast-forwarded to 52cfb4bb8 the tree measured exactly 24/52/61, i.e. already at the baseline the trunk had just set, so open_blockers 62->61 was the previous entry's drawdown and not this one's. later_roadmaps unchanged at 52 -- nothing was parked. open_blockers unchanged at 61 and that is the honest number even though this change closed a roadmap: its single blocker b-consolidated-decision-sheet was ALREADY resolved on the trunk by PR #1492, so archiving the file removed no open record from the count. ACCOUNTING WARNING, recorded rather than absorbed: two of the five closures were TRANSFERS into agents/roadmaps/stubs/, which neither metric counts -- steps 2.1 and 2.2 plus AC-2 went to road-to-estate-triage-remaining-batches.md, and the draft-status ratchet hole went to road-to-draft-status-ratchet-boundary.md. So a reader must not read -1 active as -1 unit of work: the stub carries a probe measured at 71 untriaged files, and 71 files of scope left the counted estate by being renamed rather than by being done. That is exactly the accounting move this history array exists to make visible."
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
"at": "2026-08-21",
|
|
635
|
+
"active_roadmaps": 22,
|
|
636
|
+
"later_roadmaps": 52,
|
|
637
|
+
"open_blockers": 61,
|
|
638
|
+
"why": "MERGE RESOLUTION, and the number is MEASURED on the merged tree rather than taken from either side. Both sides of this conflict had independently walked active_roadmaps to 23 and BOTH were right about their own tree: the trunk archived road-to-session-closeout, this branch archived road-to-estate-drawdown. Adopting either 23 would have silently banked one archival and lost the other, which is why this array is resolved by union and the baseline by re-measurement. EARNED vs BANKED on the -2 from 24: exactly HALF is this branch's. This change earned the road-to-estate-drawdown archival; the road-to-session-closeout archival arrived from origin/main in the same merge and is banked, not earned. later_roadmaps 52 and open_blockers 61 are unchanged by both sides. baseline_history: 39 entries on this branch + 2 trunk-only entries = 41 before this one; every entry from both sides is kept, because a dropped entry is a lost reason and the array is append-only. The stubs accounting warning from this branch's previous entry still stands and is not restated: two closures were transfers into agents/roadmaps/stubs/, which neither metric counts, so 71 files of triage scope left the counted estate by being renamed rather than finished."
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
"at": "2026-08-21",
|
|
642
|
+
"active_roadmaps": 6,
|
|
643
|
+
"later_roadmaps": 55,
|
|
644
|
+
"open_blockers": 36,
|
|
645
|
+
"why": "WALKED DOWN by 1 active and nothing else: road-to-estate-drawdown is archived by this branch (under agents/roadmaps/ on main, under agents/roadmaps/archive/ here). Fitting, since it is the roadmap this ratchet was registered to serve. open_blockers unchanged at 36 and later_roadmaps unchanged at 55, which together are the check that nothing was bought by relocating an open decision: the two items the roadmap could not finish went to stubs created in this same change (road-to-draft-status-ratchet-boundary, road-to-estate-triage-remaining-batches), each with its own probe, and a stub is not a park."
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"at": "2026-08-21",
|
|
649
|
+
"active_roadmaps": 23,
|
|
650
|
+
"later_roadmaps": 52,
|
|
651
|
+
"open_blockers": 61,
|
|
652
|
+
"why": "active_roadmaps 24 -> 23 and open_blockers 62 -> 61, both walked down by the close of road-to-standing-context-40k. NOTHING IN THE REPOSITORY EARNED EITHER DROP, and the two are one accounting event rather than two: the roadmap left the active tree for archive/ and its one blocker (b-rules-efficiency-signal) left the active estate with it, reappearing as an item in stubs/road-to-instructions-loaded-observer.md that this metric does not scan. No question was answered and no work finished -- the roadmap closed with outcome state `transferred`, five of its nine lines moved to two stubs and one sibling roadmap, and the registered 40k destination is not reached. The blocker's own Correction B had already concluded it was a transfer under the framework's rule 4; PR #1484 held the `Status: open` token only because the roadmap was still active, so writing `resolved` here applies a recorded disposition rather than making a new one. later_roadmaps is unchanged at 52 on purpose: the council explicitly rejected parking this roadmap in later/, on the ground that its four open lines shared no producer and three unrelated resume triggers in one parked file is the ownerless queue the framework warns against. For whoever merges next: main is moving fast and this file collides the same way every time. Keep every history entry from both sides and RE-MEASURE the baseline against the merged tree -- never adopt one side's number. Measured on this branch against d0fad2ccd."
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"at": "2026-08-21",
|
|
656
|
+
"active_roadmaps": 23,
|
|
657
|
+
"later_roadmaps": 52,
|
|
658
|
+
"open_blockers": 60,
|
|
659
|
+
"why": "MERGE RECONCILIATION, and the number is MEASURED against the merged tree rather than taken from either side. Both sides walked open_blockers 62 -> 61 for a different blocker: origin/main for road-to-subagent-lifecycle-integrity's raw-capture-needs-host-env, this branch for road-to-standing-context-40k's b-rules-efficiency-signal. Neither number describes the merged tree, which reads 60 = 62 - 1 - 1. Adopting one side's 61 would have claimed a count no tree has, and would have left a -1 drawdown for the next PR to fail on. active_roadmaps stays 23: this branch's archival is the only one in the merge. NOTHING IN THE REPOSITORY EARNED THE DROP on either side -- both blockers left the active estate by transfer to a stub this metric does not scan. Every history entry from both sides is preserved; none was collapsed. For whoever merges next: keep every entry and RE-MEASURE; never adopt one side's number."
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
"at": "2026-08-21",
|
|
663
|
+
"active_roadmaps": 22,
|
|
664
|
+
"later_roadmaps": 52,
|
|
665
|
+
"open_blockers": 60,
|
|
666
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-standing-context-40k 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': 22, 'later_roadmaps': 52, 'open_blockers': 60}, from {'active_roadmaps': 23, '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."
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
"at": "2026-08-21",
|
|
670
|
+
"active_roadmaps": 5,
|
|
671
|
+
"later_roadmaps": 55,
|
|
672
|
+
"open_blockers": 35,
|
|
673
|
+
"why": "WALKED DOWN by 1 active and 1 blocker. road-to-standing-context-40k is archived by this branch (under agents/roadmaps/ on main, under agents/roadmaps/archive/ here) and its single blocker b-rules-efficiency-signal, open on origin/main, is resolved here -- checked against the trunk rather than read off the branch's prose. later_roadmaps unchanged at 55: the two items it could not finish went to stubs created in this same change (road-to-instructions-loaded-observer, road-to-standing-rule-delivery-per-machine), each with its own probe, so the open work stays counted where a probe can decide it instead of being parked."
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"at": "2026-08-22",
|
|
677
|
+
"active_roadmaps": 5,
|
|
678
|
+
"later_roadmaps": 55,
|
|
679
|
+
"open_blockers": 35,
|
|
680
|
+
"why": "REBASED ONTO THE TRUNK'S LINEAGE, then re-measured -- main moved from 66b3dc993 to c298a6aba while this branch was being built (PR #1505, drain/road-to-estate-drawdown, landed in that window). main's history is kept whole (89 entries, baseline 6/55/36) and only this branch's delta rides on top, per ADR-239-no-union-merge-for-ratchet-baselines: take main's lineage, re-measure from the tree, never carry the numbers forward.\n\nThis branch's contribution is -1 active and -1 open blocker, both earned by closing `road-to-drain-commands` (37 done / 2 cancelled / 0 open / 0 deferred) and archiving it. The blocker decrement is `merge-authority` moving to Status: resolved -- closed as NOT AUTHORIZED IN THIS ROADMAP by a 2-of-2 convergent AI-council pass (2026-08-22), which is a real disposition rather than a dropped item: steps 4.4 and 4.7 are `[-]` cancelled, `--merge` is REMOVED from `/roadmap:process-full` rather than left inert so an archived roadmap leaves no latent executable authority behind a documented switch, and ADR-239 gains a dated Disposition section with an explicit non-rejection clause plus the reopening condition (owner approval AND a target-bound, head-SHA-bound, tamper-resistant, agent-unwritable, kill-switch-subject authorization).\n\nNo offset is taken and none is due: this change disposes of one roadmap and creates none. 5 and 35 are the measured trunk-plus-this-change values and are now the numbers that must walk down."
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
"at": "2026-08-21",
|
|
684
|
+
"active_roadmaps": 4,
|
|
685
|
+
"later_roadmaps": 55,
|
|
686
|
+
"open_blockers": 34,
|
|
687
|
+
"why": "WALKED DOWN by 1 active and 1 blocker. road-to-drain-commands is archived by this branch (under agents/roadmaps/ on main, under agents/roadmaps/archive/ here) and its single blocker merge-authority, open on origin/main, is resolved here -- checked against the trunk rather than taken from the branch's prose. Worth a note given what this run is: merge-authority is the blocker about who may press merge, and it is closed in the same run whose every merge needed a fresh human authorization. later_roadmaps unchanged at 55 and nothing was parked."
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
"at": "2026-08-20",
|
|
691
|
+
"active_roadmaps": 25,
|
|
692
|
+
"later_roadmaps": 52,
|
|
693
|
+
"open_blockers": 59,
|
|
694
|
+
"why": "open_blockers 65 -> 59: all SIX open blockers of road-to-per-turn-hook-economy resolved on the autonomous drain run, every one under AI-council disposition D (decide now; 2/2 quorum, anthropic + openai; record agents/evidence/council/drain-blocker-dispositions-b.md). Four of the six were SPLIT verdicts and each dissent is recorded at its blocker and inline at the step it touches. The trunk recorded the same six answers independently via road-to-estate-drawdown's consolidated decision sheet, and the merge kept both records: the sheet's `Answer: ACCEPTED` line states the choice, this branch's `Resolution` paragraph states what shipped for it. They agree because they read the same council record.\\n\\nRead the -6 honestly, because it hides three different kinds of movement. FOUR were discharged by shipped code: b-stdin-read-failure-policy (a failed payload read now DENIES on a block-capable slot carrying a fail-closed blocking concern, where it previously allowed silently), b-injection-scan-unwrap-security (output contract written first, then the unwrap narrowed against 14 fixtures; restoring the pre-fix extraction fails 11 of them), b-payload-read-parse-dominates (a read-and-exit bench cell that produced the number the roadmap had been assuming: ~70 percent of the large-payload delta is the dispatcher's own read plus parse, 69 and 74 percent over two rounds at --runs 50), and b-stop-async-split-prerequisites' P3 (three state files made safe under concurrent dispatch; pre-fix survival measured against 8 real processes at 3 of 96 log lines, 3 of 24 increments, 1 of 8 rollups). ONE is a decline with no code by design (b-guard-tool-partition, option (c): the zero-dispatch goal is abandoned, the Phase 4 measurement and the in-process tools: filter retained). ONE is a decision to NOT set a number for one release (b-per-turn-composite-bar, option (b)): the composite row stays observe-only and now carries its arming procedure and precondition, so there is still no ceiling on the per-turn cost and that is deliberate rather than forgotten.\\n\\nactive_roadmaps unchanged at 25 and later_roadmaps unchanged at 52, and both are load-bearing rather than incidental. The parent was NOT archived (out of scope for this run) even though its count_open reached 0, so it stays in the active tree. And its three Phase-0 steps were TRANSFERRED rather than cancelled -- to agents/roadmaps/stubs/road-to-per-turn-hook-economy-host-repro.md, which sits under stubs/ and is therefore counted by neither metric. That is the honest shape of a capability-gated transfer: it moves no number, which is exactly why the stub carries the three criteria verbatim, the complete moved list, and a named producer (the reporter of the original slowdown, on their own machine at the version installed when they reported it) with three probes measured on the transfer date as the wrong-machine control -- AGENT_CONFIG_HOOKS_ISOLATED unset, installed 14.6.0, and zero turn-end-gate refusal records against a schema that carries no refusal counter at all."
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
"at": "2026-08-20",
|
|
698
|
+
"active_roadmaps": 25,
|
|
699
|
+
"later_roadmaps": 52,
|
|
700
|
+
"open_blockers": 58,
|
|
701
|
+
"why": "open_blockers 64 -> 58, RE-ANCHORED AT MERGE. Measured at the merged tree rather than taken from either side: main had walked to 64 for its own closures while this branch walked to 59 for the six per-turn-hook-economy decisions, and 58 is what the merged tree actually reads. Adopting one side's number would have claimed a figure describing no tree. Every history entry from both sides is preserved; none was collapsed. The -6 on this branch mixes three kinds of movement and is not six pieces of finished work: four blockers were discharged by shipped code, one was a decline (the guard-tool partition, where the decision is that nothing ships), and one was a decision NOT to set a number (the composite bar, marked observe-only for a release). The transfer of steps 0.1-0.3 moves NO metric at all, because agents/roadmaps/stubs/ is counted by neither active_roadmaps nor open_blockers. Also worth recording rather than deduplicating: the trunk reached the SAME six decisions independently through road-to-estate-drawdown's consolidated decision sheet, because both read the same council record. The merge kept both, so each blocker now carries the sheet's choice and this branch's account of what shipped for it."
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
"at": "2026-08-21",
|
|
705
|
+
"active_roadmaps": 24,
|
|
706
|
+
"later_roadmaps": 52,
|
|
707
|
+
"open_blockers": 55,
|
|
708
|
+
"why": "RE-MEASURED AT MERGE, not argued. Branch drain/road-to-per-turn-hook-economy 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': 55}, 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."
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"at": "2026-08-21",
|
|
712
|
+
"active_roadmaps": 23,
|
|
713
|
+
"later_roadmaps": 52,
|
|
714
|
+
"open_blockers": 55,
|
|
715
|
+
"why": "WALKED DOWN by 6 blockers, all on road-to-per-turn-hook-economy and each verified open on origin/main and resolved on this branch rather than taken from the branch's prose: b-per-turn-composite-bar, b-stdin-read-failure-policy, b-guard-tool-partition, b-payload-read-parse-dominates, b-injection-scan-unwrap-security, b-stop-async-split-prerequisites. Two further blockers on the same roadmap (b-payload-mis-nested-readers, b-concern-load-taxes-every-slot) were already resolved on the trunk and are deliberately excluded from the delta. active_roadmaps stays 23 and later_roadmaps 52 on purpose: the roadmap reaches 11/11 done but carries 2 unresolved [~] deferred items, so Iron Law 3 refuses the archive and the regen correctly left it in the active tree. One of those items (4.2) states in its own text that the bar is the maintainer's to pre-register, so resolving them is not an agent call and they were NOT flipped to make the count fall."
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
"at": "2026-08-21",
|
|
719
|
+
"active_roadmaps": 4,
|
|
720
|
+
"later_roadmaps": 55,
|
|
721
|
+
"open_blockers": 28,
|
|
722
|
+
"why": "WALKED DOWN by 6 blockers, all on road-to-per-turn-hook-economy and each verified open on origin/main and resolved here: b-per-turn-composite-bar, b-stdin-read-failure-policy, b-guard-tool-partition, b-payload-read-parse-dominates, b-injection-scan-unwrap-security, b-stop-async-split-prerequisites. Two further blockers on the same roadmap were already resolved on the trunk and are excluded. active_roadmaps stays 4 ON PURPOSE and this is the honest half: the roadmap reaches 11/11 done but carries 2 unresolved [~] items, so Iron Law 3 refuses the archive and the regen left it in the active tree. Item 4.2 states in its own text that the bar is the maintainer's to pre-register, so those boxes were NOT flipped to let the file archive itself. later_roadmaps unchanged at 55."
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"at": "2026-08-22",
|
|
726
|
+
"active_roadmaps": 4,
|
|
727
|
+
"later_roadmaps": 55,
|
|
728
|
+
"open_blockers": 26,
|
|
729
|
+
"why": "REBASED ONTO THE TRUNK'S LINEAGE (third time on this branch -- main moved through PR #1517, then #1495 and #1523 while this branch was open). main's history is kept whole (100 entries, baseline 4/55/28) and only this branch's delta rides on top, per ADR-239-no-union-merge-for-ratchet-baselines: take main's lineage, re-measure from the tree, never carry the numbers forward.\n\nThis branch's contribution is -2 open blockers, both on road-to-evidence-based-adr-governance: `owner-autonomy-batch` and `authority-coupling-decision`, resolved on a 2-of-2 convergent AI-council pass. Each is closed as `AUTHORITY UNAVAILABLE -- FLOOR PRESERVED` rather than `RE-AFFIRMED (no)` -- the first records an operational act a council may take, the second would assert a policy rejection no owner made. `commit-policy.md:37` and ADR-005 section 1 both remain operative and grade-derived authority stays disabled; the three owner-reserved policy questions are transferred to agents/roadmaps/stubs/road-to-owner-authority-decisions.md with per-question reopening conditions.\n\nactive_roadmaps is unchanged and that is deliberate: the roadmap is NOT archived, because 13 steps remain genuinely open (2.4, 3.4, 4.3, 4.4 and the acceptance criteria). Archiving it to buy the number down would be the silent-green this ledger's own 67 -> 69 entry names as the incentive the ratchet must never create."
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
"at": "2026-08-22",
|
|
733
|
+
"active_roadmaps": 3,
|
|
734
|
+
"later_roadmaps": 55,
|
|
735
|
+
"open_blockers": 28,
|
|
736
|
+
"why": "REBASED ONTO THE TRUNK'S LINEAGE (second time on this branch -- main moved through #1517, then #1495 and #1523, while this branch waited on review). main's history is kept whole and only this branch's delta rides on top, per ADR-239-no-union-merge-for-ratchet-baselines: take main's lineage, re-measure from the tree, never carry the numbers forward.\n\nThis branch's contribution is -1 active, earned by closing `road-to-condensed-link-repair` (6 done / 1 cancelled-as-null / 0 open / 0 deferred) and archiving it. open_blockers is unchanged: this roadmap carried none.\n\nThe cancelled item is AC-2, closed as an HONEST NULL rather than weakened -- it required both links to resolve in `src/` AND in the projection, and `docs/` exists in neither tree, so no implementation satisfies it. Replacement criterion AC-2R was approved by the same 2-of-2 AI-council ruling and is met. AC-3 was held deferred until workflow run 32546466190 proved the newly wired `check-condensed-paths` step ran green remotely -- closed on the observed run, not on the wiring.\n\nNo offset taken and none due: one roadmap disposed, none created."
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
"at": "2026-08-21",
|
|
740
|
+
"active_roadmaps": 3,
|
|
741
|
+
"later_roadmaps": 55,
|
|
742
|
+
"open_blockers": 26,
|
|
743
|
+
"why": "WALKED DOWN by 1 active and nothing else: road-to-condensed-link-repair is archived by this branch (under agents/roadmaps/ on main, under agents/roadmaps/archive/ here). open_blockers unchanged at 26 and later_roadmaps unchanged at 55 \u2014 nothing was parked and no blocker moved, so the drawdown is the archival alone and is not padded with a closure this change did not earn."
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
"at": "2026-08-22",
|
|
747
|
+
"active_roadmaps": 4,
|
|
748
|
+
"later_roadmaps": 55,
|
|
749
|
+
"open_blockers": 26,
|
|
750
|
+
"why": "NET ZERO, and the number is MEASURED against the merged tree rather than carried from either side. road-to-single-rule-layer was authored AND archived in this same change, so it never joins the active estate: it opened at 7 on this branch's base, origin/main independently walked the floor to 4 active and 28 open blockers while this branch was being built, and the merged tree measures both because the roadmap this branch added is in archive/. Re-anchored at the second merge per ADR-239: main's lineage is kept whole (100 entries) and only this branch's delta rides on top, measured from the tree rather than carried from either side. An earlier revision of this entry recorded 'GREW by 1 active' and was true only between the roadmap landing and its closure hours later \u2014 leaving it would have raised a floor nothing in the tree justifies, which is the silent-give-back this ratchet exists to refuse. What the change did to the estate is nothing; what it did to the repository is close a live ADR-236 regression on four of five hosts."
|
|
142
751
|
}
|
|
143
752
|
],
|
|
144
753
|
"target": {
|