@event4u/agent-config 14.20.0 → 14.22.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +441 -0
- package/CREDITS.md +37 -0
- package/README.md +1 -1
- package/agents/templates/.ai-council.yml.example +10 -0
- package/dist/agent-src/commands/analyze/inbox.md +381 -6
- package/dist/agent-src/commands/analyze/{reference-repo.md → repo.md} +251 -34
- package/dist/agent-src/commands/analyze/roadmap-repos.md +129 -0
- package/dist/agent-src/commands/analyze.md +12 -7
- package/dist/agent-src/commands/feature/plan.md +55 -16
- package/dist/agent-src/commands/feature/refactor.md +8 -3
- package/dist/agent-src/commands/humanize.md +48 -4
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +69 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +5 -5
- package/dist/agent-src/contexts/execution/contract-decision-sheet.md +22 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +4 -1
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +35 -2
- package/dist/agent-src/contexts/execution/terminal-states.md +4 -1
- package/dist/agent-src/rules/evaluator-independence.md +4 -4
- package/dist/agent-src/rules/external-code-graph-interop.md +19 -14
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/rules/token-efficiency.md +26 -3
- package/dist/agent-src/scripts/_cli_entry.ts +51 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +14 -23
- package/dist/agent-src/scripts/roadmap_gates.ts +4 -20
- package/dist/agent-src/scripts/roadmap_set_step.ts +5 -2
- package/dist/agent-src/scripts/stubs_due.ts +4 -18
- package/dist/agent-src/scripts/update_roadmap_progress.ts +7 -24
- package/dist/agent-src/skills/code-intelligence/SKILL.md +25 -0
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +27 -11
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +17 -0
- package/dist/agent-src/skills/technical-specification/SKILL.md +4 -0
- package/dist/agent-src/templates/agent-settings.md +0 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/features.md +5 -0
- package/dist/agent-src/templates/roadmaps.md +15 -0
- package/dist/cli-delegate/_cli_entry.js +8 -0
- package/dist/cli-delegate/_lib/pin_resolver.js +170 -0
- package/dist/cli-delegate/archival_sweep.js +8 -0
- package/dist/cli-delegate/archive_completed_roadmaps.js +494 -0
- package/dist/cli-delegate/check_update_banner.js +923 -0
- package/dist/cli-delegate/{chunk-KPBWFOPZ.js → chunk-2FTMENJL.js} +194 -37
- package/dist/cli-delegate/{chunk-PI2GU3DP.js → chunk-2TAQ2K4V.js} +4 -1
- package/dist/cli-delegate/chunk-5EK5WQN6.js +28 -0
- package/dist/cli-delegate/chunk-7XGD2OEU.js +96 -0
- package/dist/cli-delegate/{chunk-C6IPZRDA.js → chunk-BIXEDQPZ.js} +7 -1
- package/dist/cli-delegate/chunk-DBH4AHDK.js +155 -0
- package/dist/cli-delegate/{chunk-NUMQHLS5.js → chunk-J3RFNKG4.js} +21 -2
- package/dist/cli-delegate/chunk-JO25G5H7.js +20 -0
- package/dist/cli-delegate/chunk-LTYVIY76.js +7961 -0
- package/dist/cli-delegate/chunk-QAJS5YWY.js +999 -0
- package/dist/cli-delegate/{chunk-ZVBOHSVF.js → chunk-TGIPZBCW.js} +1 -1
- package/dist/cli-delegate/{chunk-YS6XTLEK.js → chunk-TYSY33MD.js} +56 -6
- package/dist/cli-delegate/chunk-ULET4BYS.js +328 -0
- package/dist/cli-delegate/chunk-YDQSHTD7.js +187 -0
- package/dist/cli-delegate/chunk-YWVXLR44.js +48 -0
- package/dist/cli-delegate/chunk-ZZQBUHFK.js +273 -0
- package/dist/cli-delegate/cmd_conformance.js +19 -5
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +2 -2
- package/dist/cli-delegate/cmd_handoff.js +27 -3
- package/dist/cli-delegate/cmd_prune.js +2 -2
- package/dist/cli-delegate/cmd_session_recycle.js +2 -2
- package/dist/cli-delegate/cmd_settings_migrate.js +2 -2
- package/dist/cli-delegate/cmd_sync.js +2 -2
- package/dist/cli-delegate/cmd_uninstall.js +2 -2
- package/dist/cli-delegate/cmd_validate.js +2 -2
- package/dist/cli-delegate/dashboard_mode.js +16 -0
- package/dist/cli-delegate/gate_budget.js +24 -0
- package/dist/cli-delegate/gate_execute.js +25 -0
- package/dist/cli-delegate/guarded_baseline.js +18 -0
- package/dist/cli-delegate/resume_probe.js +22 -0
- package/dist/cli-delegate/roadmap_gates.js +638 -0
- package/dist/cli-delegate/roadmap_set_step.js +173 -0
- package/dist/cli-delegate/stub_queue.js +47 -0
- package/dist/cli-delegate/stubs_due.js +38 -0
- package/dist/cli-delegate/ticket_bundles.js +59 -0
- package/dist/cli-delegate/update_roadmap_progress.js +60 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +60 -29
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +7 -6
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +6 -5
- package/dist/hooks/dispatch.js +1522 -1008
- package/dist/install/claudeLayerCarriage.js +237 -0
- package/dist/install/claudePathsPlan.js +79 -0
- package/dist/install/hostLayerFingerprint.js +1 -1
- package/dist/install/install.mjs +10 -1
- package/dist/install/partitionEligibility.js +231 -117
- package/dist/install/ruleLayerPartition.js +10 -7
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +39376 -38902
- package/dist/scripts/ai_council/content_ceiling.js +63 -0
- package/dist/scripts/ai_council/seat_policy.js +106 -0
- package/dist/scripts/ai_council/transport_resolver.js +21 -0
- package/dist/scripts/condense.js +32 -25
- package/docs/MIGRATION.md +49 -1
- package/docs/contracts/settings-classes.md +1 -1
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +73 -0
- package/llms.txt +14 -14
- package/package.json +7 -4
- package/src/agent-src/scripts/_cli_entry.ts +51 -0
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +14 -23
- package/src/agent-src/scripts/roadmap_gates.ts +4 -20
- package/src/agent-src/scripts/roadmap_set_step.ts +5 -2
- package/src/agent-src/scripts/stubs_due.ts +4 -18
- package/src/agent-src/scripts/update_roadmap_progress.ts +7 -24
- package/src/config/continuity-surface.json +509 -0
- package/src/config/estate-count-budget.json +1 -1
- package/src/config/gate-coverage.yml +29 -8
- package/src/config/gate-violation-baselines.json +8 -8
- package/src/config/gitignore-block.txt +19 -0
- package/src/config/host-injection-effect.json +73 -0
- package/src/config/packed-binary-manifest.json +33 -0
- package/src/config/preamble-payload-budget.json +112 -105
- package/src/config/publish-surface.json +4 -2
- package/src/config/release-gate-locality.yml +4 -3
- package/src/install/claudeLayerCarriage.ts +273 -0
- package/src/install/claudePathsPlan.ts +76 -0
- package/src/install/hostLayerFingerprint.ts +1 -1
- package/src/install/partitionEligibility.ts +261 -127
- package/src/install/ruleLayerPartition.ts +19 -23
- package/src/scripts/_dispatch.bash +77 -27
- package/src/scripts/_lib/auto_dispatch.ts +2 -2
- package/src/scripts/_lib/blocked_by_marker.ts +189 -0
- package/src/scripts/_lib/catalogue_layer_parity.ts +146 -0
- package/src/scripts/_lib/continuity_surface.ts +296 -0
- package/src/scripts/_lib/corpus_manifest.ts +26 -9
- package/src/scripts/_lib/hook_settings.ts +1 -1
- package/src/scripts/_lib/host_capability.ts +38 -1
- package/src/scripts/_lib/injection_effect.ts +151 -0
- package/src/scripts/_lib/layer_overlap_notice.ts +50 -6
- package/src/scripts/_lib/packed_binary_predicate.ts +225 -0
- package/src/scripts/_lib/pin_resolver.ts +13 -0
- package/src/scripts/_lib/regression_neighbourhood.ts +1 -1
- package/src/scripts/_lib/release_highlights.ts +19 -211
- package/src/scripts/_lib/release_material.ts +27 -77
- package/src/scripts/_lib/retired_status.ts +74 -0
- package/src/scripts/_lib/skill_catalogue.ts +156 -21
- package/src/scripts/_lib/structured_ask.ts +117 -0
- package/src/scripts/_lib/subagent_capsule.ts +117 -8
- package/src/scripts/_lib/tty_prompt.ts +76 -0
- package/src/scripts/ai_council/api_transport.ts +168 -0
- package/src/scripts/ai_council/clients.ts +58 -63
- package/src/scripts/ai_council/config.ts +13 -0
- package/src/scripts/ai_council/content_ceiling.ts +79 -0
- package/src/scripts/ai_council/deliberation_metrics.ts +353 -0
- package/src/scripts/ai_council/jury_aggregate.ts +178 -0
- package/src/scripts/ai_council/prompts.ts +9 -0
- package/src/scripts/ai_council/seat_policy.ts +137 -0
- package/src/scripts/ai_council/status_surface.ts +79 -0
- package/src/scripts/ai_council/synthesis_disagreement.ts +206 -0
- package/src/scripts/ai_council/transport_resolver.ts +59 -1
- package/src/scripts/ai_tells_rules.ts +446 -5
- package/src/scripts/ask_block_census.ts +499 -0
- package/src/scripts/bench_humanizer_eval.ts +264 -40
- package/src/scripts/bench_prose_tells_fp.ts +198 -0
- package/src/scripts/capture_skill_catalogue.ts +24 -11
- package/src/scripts/check_branch_work_committed.ts +234 -0
- package/src/scripts/check_candidate_lines.ts +499 -0
- package/src/scripts/check_continuity_surface.ts +475 -0
- package/src/scripts/check_dependency_floors.ts +13 -6
- package/src/scripts/check_estate_count.ts +40 -79
- package/src/scripts/check_pack_size.ts +263 -24
- package/src/scripts/check_release_highlights.ts +0 -157
- package/src/scripts/check_roadmap_trackable.ts +19 -16
- package/src/scripts/check_rule_layer_partition.ts +54 -34
- package/src/scripts/check_single_delivery.ts +97 -31
- package/src/scripts/check_update_banner.ts +13 -0
- package/src/scripts/code_graph/build.ts +138 -15
- package/src/scripts/code_graph/cli.ts +76 -8
- package/src/scripts/code_graph/extract.ts +11 -0
- package/src/scripts/code_graph/grammar_probe.ts +43 -0
- package/src/scripts/code_graph/loader.ts +88 -14
- package/src/scripts/code_graph/query.ts +121 -11
- package/src/scripts/code_graph/resolution_tiers.ts +238 -0
- package/src/scripts/code_graph/sqlite_store.ts +247 -6
- package/src/scripts/code_graph/types.ts +66 -1
- package/src/scripts/code_graph/validate.ts +23 -0
- package/src/scripts/condense.ts +34 -22
- package/src/scripts/corpus_manifest.ts +5 -5
- package/src/scripts/council_cli.ts +29 -39
- package/src/scripts/count_intent_disagreement.ts +426 -0
- package/src/scripts/detect_ai_tells.ts +142 -20
- package/src/scripts/handoff_context_hook.ts +79 -0
- package/src/scripts/harvest_reference_tokens.ts +698 -0
- package/src/scripts/hook_effect_doctor.ts +82 -1
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +94 -12
- package/src/scripts/hooks/chain_nudge_hook.ts +282 -0
- package/src/scripts/hooks/code_graph_context_hook.ts +212 -0
- package/src/scripts/hooks/concern_registry.ts +6 -2
- package/src/scripts/hooks/delegation_nudge_hook.ts +45 -1
- package/src/scripts/hooks/host_semantics.ts +1 -1
- package/src/scripts/hooks/one_question_per_ask_hook.ts +191 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +2 -2
- package/src/scripts/hooks/rule_inject_hook.ts +1 -1
- package/src/scripts/hooks/skill_route_hook.ts +11 -4
- package/src/scripts/inbox_source_census.ts +322 -0
- package/src/scripts/install-hooks.sh +134 -0
- package/src/scripts/{lint_carrier_integrity.ts → lint_deferral_integrity.ts} +60 -214
- package/src/scripts/lint_plan_risk_register.ts +13 -17
- package/src/scripts/lint_roadmap_blockers.ts +51 -1
- package/src/scripts/mcp_server/suggest_skill.ts +72 -0
- package/src/scripts/mcp_server/tools.ts +2 -56
- package/src/scripts/media/lib/adapter-contract.md +7 -2
- package/src/scripts/media/lib/fixtures/flux/asset-0001.png +0 -0
- package/src/scripts/media/lib/fixtures/gemini-image/asset-0001.png +0 -0
- package/src/scripts/media/lib/fixtures/ideogram/asset-0001.png +0 -0
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/probe_unblocked_ask.ts +135 -2
- package/src/scripts/rdp_candidates_delta.ts +276 -0
- package/src/scripts/rdp_quality_eval.ts +217 -19
- package/src/scripts/release.ts +26 -71
- package/src/scripts/release_drill.ts +6 -10
- package/src/scripts/release_env.ts +1 -0
- package/src/scripts/release_mix_taxonomy.json +3 -2
- package/src/scripts/release_publication.ts +34 -29
- package/src/scripts/report_host_injection_effect.ts +189 -0
- package/src/scripts/report_layer_overlap.ts +41 -0
- package/src/scripts/report_skill_menu_census.ts +341 -0
- package/src/scripts/self_review_gate.ts +409 -15
- package/src/scripts/skill_tools/score_skill_relevance.ts +70 -6
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +37 -3
- package/src/vendor/grammars/README.md +61 -0
- package/src/vendor/grammars/tree-sitter-javascript.wasm +0 -0
- package/src/vendor/grammars/tree-sitter-php.wasm +0 -0
- package/src/vendor/grammars/tree-sitter-typescript.wasm +0 -0
- package/src/scripts/_lib/carrier_status.ts +0 -118
- package/src/scripts/_lib/estate_carrier_cases.ts +0 -72
- package/src/scripts/hooks/code_graph_nudge_hook.ts +0 -191
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Behavioural continuity-surface inventory. See src/scripts/_lib/continuity_surface.ts for the contract and src/scripts/check_continuity_surface.ts for the gate. Rows are validated against the tree on every run: every `locus` must resolve, and every persisted-state leaf under agents/runtime/state/ that any source file names must appear here with a disposition. Retiring a surface means DELETING its row \u2014 that is what makes a retirement measured rather than claimed.",
|
|
3
|
+
"axis_contract": {
|
|
4
|
+
"public_continuity_commands": "A public CLI verb or slash command that a normal user must invoke for continuity to happen. An optional affordance is excluded WITH its reason, never silently.",
|
|
5
|
+
"session_resume_pickers": "An interactive surface that asks a human to choose which prior session to resume.",
|
|
6
|
+
"persistent_continuity_artefacts": "Persisted state written for later session recovery, verification, or context restoration \u2014 whether or not it is labelled continuity. Corpus discovered behaviourally from agents/runtime/state/, never from the word.",
|
|
7
|
+
"continuity_schemas": "A distinct schema definition for a record a successor session reads to restore state.",
|
|
8
|
+
"normal_path_manual_actions": "A manual step a normal user must take on the normal path for continuity to work."
|
|
9
|
+
},
|
|
10
|
+
"targets": {
|
|
11
|
+
"public_continuity_commands": 0,
|
|
12
|
+
"session_resume_pickers": 0,
|
|
13
|
+
"persistent_continuity_artefacts": 1,
|
|
14
|
+
"continuity_schemas": 1,
|
|
15
|
+
"normal_path_manual_actions": 0
|
|
16
|
+
},
|
|
17
|
+
"rows": [
|
|
18
|
+
{
|
|
19
|
+
"id": "schema:capsule",
|
|
20
|
+
"axis": "continuity_schemas",
|
|
21
|
+
"disposition": "counted",
|
|
22
|
+
"locus": "src/scripts/_lib/subagent_capsule.ts:112",
|
|
23
|
+
"reason": "The one continuity-record schema: version 4, variant-discriminated, accepting v3 and v4. A recorded lock governs it \u2014 one schema, variant-discriminated, no new format, adding fields or variants but never repurposing or removing one. This is the surviving `1`."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "schema:context-observation",
|
|
27
|
+
"axis": "continuity_schemas",
|
|
28
|
+
"disposition": "excluded",
|
|
29
|
+
"locus": "src/scripts/_lib/context_observation.ts:55",
|
|
30
|
+
"reason": "A recorded probe of external context (the fingerprint a checkpoint may carry). An input to a record, never a record."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "schema:run-checkpoint",
|
|
34
|
+
"axis": "continuity_schemas",
|
|
35
|
+
"disposition": "excluded",
|
|
36
|
+
"locus": "src/scripts/_lib/run_checkpoint.ts:45",
|
|
37
|
+
"reason": "Run-integrity evidence, excluded on the same recorded D2 ruling that excludes the `checkpoints/` artefact: different key (run id), different consumer (`run:supervise`), different failure semantics (an integrity alarm, not a degraded resume)."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "schema:session-eol-state",
|
|
41
|
+
"axis": "continuity_schemas",
|
|
42
|
+
"disposition": "excluded",
|
|
43
|
+
"locus": "src/scripts/_lib/session_eol.ts:55",
|
|
44
|
+
"reason": "The writer`s own bookkeeping, not a record a successor reads. It holds counters and advisory stamps used across Stops within one session; nothing restores a session from it."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "manual:run-session-recycle-before-clear",
|
|
48
|
+
"axis": "normal_path_manual_actions",
|
|
49
|
+
"disposition": "counted",
|
|
50
|
+
"locus": "src/scripts/hooks/session_eol_hook.ts:258",
|
|
51
|
+
"reason": "The advisory the stop slot injects past the recycle threshold instructs a human to run `agent-config session:recycle`, wait for the absolute path it prints, and only then `/clear`. That is a manual action on the normal path, and it exists precisely because no automatic writer does. It is what step 3.1 removes the need for."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": ".dispatcher",
|
|
55
|
+
"axis": "persistent_continuity_artefacts",
|
|
56
|
+
"disposition": "excluded",
|
|
57
|
+
"locus": "src/scripts/hooks/cline-dispatcher.sh:77",
|
|
58
|
+
"reason": "The cline dispatcher marker file. Host wiring, not session state."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": ".dispatcher.lock",
|
|
62
|
+
"axis": "persistent_continuity_artefacts",
|
|
63
|
+
"disposition": "excluded",
|
|
64
|
+
"locus": "src/scripts/context_hygiene_hook.ts:36",
|
|
65
|
+
"reason": "A concurrency lock for the dispatcher. Held within one invocation."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "ai-video-telemetry.jsonl",
|
|
69
|
+
"axis": "persistent_continuity_artefacts",
|
|
70
|
+
"disposition": "excluded",
|
|
71
|
+
"locus": "src/scripts/media/lib/telemetry.sh:7",
|
|
72
|
+
"reason": "Media-pipeline telemetry. A different subsystem entirely."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "audit",
|
|
76
|
+
"axis": "persistent_continuity_artefacts",
|
|
77
|
+
"disposition": "excluded",
|
|
78
|
+
"locus": "src/scripts/_lib/activation_receipt_producer.ts:322",
|
|
79
|
+
"reason": "The append-only orchestration audit log. Telemetry and cost reporting; no restore path reads it."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "chain-nudge.json",
|
|
83
|
+
"axis": "persistent_continuity_artefacts",
|
|
84
|
+
"disposition": "excluded",
|
|
85
|
+
"locus": "src/scripts/hooks/chain_nudge_hook.ts:190",
|
|
86
|
+
"reason": "Once-per-session nudge latch."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "checkpoints",
|
|
90
|
+
"axis": "persistent_continuity_artefacts",
|
|
91
|
+
"disposition": "excluded",
|
|
92
|
+
"locus": "src/scripts/_lib/headless_invocation.ts:48",
|
|
93
|
+
"reason": "Run-integrity evidence, not conversational state. THE KEEP/RETIRE QUESTION IS ANSWERED HERE, IN WRITING, and the answer is KEEP \u2014 which is what roadmap step 4.1's third verify clause asks for, recorded at the point where the count is computed rather than in a document nobody opens. The AI council of 2026-09-07 (D2) ruled it: a run checkpoint is keyed by RUN id, consumed by `run:supervise` and `latestCheckpointFor`, and a disagreement there is an integrity alarm; a continuity record is keyed by SESSION, consumed by resume, and a gap there is a degraded resume. Different lifecycle, consumer, key and failure semantics, so one concern owning both would be \"a lifecycle subsystem wearing a continuity name\". Excluded from the continuity axis on that ruling \u2014 and this is the exclusion the same council named as the gaming vector for position 3, which is exactly why it is printed on every run instead of living inside a predicate."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "code-graph-context.json",
|
|
97
|
+
"axis": "persistent_continuity_artefacts",
|
|
98
|
+
"disposition": "excluded",
|
|
99
|
+
"locus": "src/scripts/hooks/code_graph_context_hook.ts:90",
|
|
100
|
+
"reason": "Code-intelligence context state for the code-graph hook. A derived cache over the source tree, rebuildable from it, and read within the session that wrote it \u2014 it restores no conversation and no run."
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "code-graph-refresh.lock",
|
|
104
|
+
"axis": "persistent_continuity_artefacts",
|
|
105
|
+
"disposition": "excluded",
|
|
106
|
+
"reason": "A concurrency lock guarding the code-graph refresh so two checkouts do not rebuild the index at once. Held for the duration of one refresh; it carries no state anyone reads afterwards.",
|
|
107
|
+
"locus": "src/scripts/install-hooks.sh:634"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "code-graph-v1.json",
|
|
111
|
+
"axis": "persistent_continuity_artefacts",
|
|
112
|
+
"disposition": "excluded",
|
|
113
|
+
"locus": "src/scripts/code_graph/cli.ts:28",
|
|
114
|
+
"reason": "A derived code-intelligence index. A cache of the source tree, rebuildable from it, and never session state."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "config-weakening.json",
|
|
118
|
+
"axis": "persistent_continuity_artefacts",
|
|
119
|
+
"disposition": "excluded",
|
|
120
|
+
"locus": "src/scripts/hooks/block_config_weakening.ts:211",
|
|
121
|
+
"reason": "Per-session allowlist-growth counters for the config-weakening guard."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "context-fill.json",
|
|
125
|
+
"axis": "persistent_continuity_artefacts",
|
|
126
|
+
"disposition": "counted",
|
|
127
|
+
"locus": "src/scripts/hooks/session_eol_hook.ts:31",
|
|
128
|
+
"reason": "Machine-readable fill level plus threshold state, overwritten every Stop. Written for later verification of whether the session crossed the recycle threshold. AUTHORISED FOR RETIREMENT and NOT RETIRED \u2014 the authorisation (AI council 2026-09-08 D1, resting on producer/no-consumer evidence) was obtained on incomplete facts. There is no consumer in code, but `agents/roadmaps/later/road-to-cost-parity-2-state-aware-dispatch.md` is a live parked roadmap whose open steps 1.1 and 1.4c read this file as a planned input, and 1.4c is specifically about bounding its staleness. The same council's own qualification anticipated this: \"no consumer in the tree\" proves no in-repository consumer, and a planned consumer inside the tree is a stronger objection than an external one because it is checkable. Retiring it is a decision for that roadmap's owner, not a side effect of this one. Blocker: `context-fill-retirement-has-a-parked-consumer`."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": "context-hygiene.json",
|
|
132
|
+
"axis": "persistent_continuity_artefacts",
|
|
133
|
+
"disposition": "excluded",
|
|
134
|
+
"locus": "src/scripts/_cli/cmd_analyze_session.ts:15",
|
|
135
|
+
"reason": "Turn and loop counters for the context-hygiene carrier. Read within a session to decide whether to warn; never read by a successor."
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "council-probes.json",
|
|
139
|
+
"axis": "persistent_continuity_artefacts",
|
|
140
|
+
"disposition": "excluded",
|
|
141
|
+
"locus": "src/scripts/ai_council/probe_store.ts:52",
|
|
142
|
+
"reason": "Council seat availability probe cache. Provider state."
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "decisions",
|
|
146
|
+
"axis": "persistent_continuity_artefacts",
|
|
147
|
+
"disposition": "excluded",
|
|
148
|
+
"locus": "src/scripts/_dispatch.bash:1302",
|
|
149
|
+
"reason": "Decision memos written during a run and rendered by `run:supervise`. A record of what was decided, not state a successor resumes from."
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "design-pass-hook.json",
|
|
153
|
+
"axis": "persistent_continuity_artefacts",
|
|
154
|
+
"disposition": "excluded",
|
|
155
|
+
"locus": "src/scripts/hooks/design_pass_hook.ts:66",
|
|
156
|
+
"reason": "Design-pass hook latch."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "design-slop-hook.json",
|
|
160
|
+
"axis": "persistent_continuity_artefacts",
|
|
161
|
+
"disposition": "excluded",
|
|
162
|
+
"locus": "src/scripts/hooks/design_slop_hook.ts:18",
|
|
163
|
+
"reason": "Design-slop hook latch."
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"id": "discovery-graph-v1.json",
|
|
167
|
+
"axis": "persistent_continuity_artefacts",
|
|
168
|
+
"disposition": "excluded",
|
|
169
|
+
"locus": "src/scripts/complexity_report.ts:223",
|
|
170
|
+
"reason": "A derived artefact-relation cache. Rebuildable from the tree."
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"id": "dispatch-issues.jsonl",
|
|
174
|
+
"axis": "persistent_continuity_artefacts",
|
|
175
|
+
"disposition": "excluded",
|
|
176
|
+
"locus": "src/scripts/hooks/dispatch_issues.ts:12",
|
|
177
|
+
"reason": "Dispatcher self-diagnostics. Read by `hooks_doctor`."
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"id": "edit-shape",
|
|
181
|
+
"axis": "persistent_continuity_artefacts",
|
|
182
|
+
"disposition": "excluded",
|
|
183
|
+
"locus": "src/scripts/hooks/edit_shape_hook.ts:46",
|
|
184
|
+
"reason": "Edit-shape hook per-file state, scoped to one session."
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"id": "end-review-nudge",
|
|
188
|
+
"axis": "persistent_continuity_artefacts",
|
|
189
|
+
"disposition": "excluded",
|
|
190
|
+
"locus": "src/scripts/hooks/end_review_nudge_hook.ts:138",
|
|
191
|
+
"reason": "Once-per-session nudge latch."
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "gate-budget-ledger.jsonl",
|
|
195
|
+
"axis": "persistent_continuity_artefacts",
|
|
196
|
+
"disposition": "excluded",
|
|
197
|
+
"locus": "src/server/schemas/settings.ts:208",
|
|
198
|
+
"reason": "Gate-budget accounting. CI cost bookkeeping."
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"id": "handoff-context.md",
|
|
202
|
+
"axis": "persistent_continuity_artefacts",
|
|
203
|
+
"disposition": "counted",
|
|
204
|
+
"locus": "src/scripts/_cli/cmd_handoff.ts:9",
|
|
205
|
+
"reason": "A second, prose-shaped session handoff written by `agent-config handoff` and injected once at the next `session_start`. Same job as the record, different format and different lifecycle \u2014 a competing mental model, which is what the count exists to expose."
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"id": "hot-context.md",
|
|
209
|
+
"axis": "persistent_continuity_artefacts",
|
|
210
|
+
"disposition": "counted",
|
|
211
|
+
"locus": "src/scripts/hot_context_hook.ts:11",
|
|
212
|
+
"reason": "A working-memory cache rebuilt on stop/session_end/pre_compact and restored at session_start. Persisted state written for context restoration, so the behavioural rule counts it whatever it is called."
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "injection-census.jsonl",
|
|
216
|
+
"axis": "persistent_continuity_artefacts",
|
|
217
|
+
"disposition": "excluded",
|
|
218
|
+
"locus": "src/scripts/bench_hook_injection.ts:42",
|
|
219
|
+
"reason": "Hook-injection benchmark output. Measurement, not state."
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"id": "injection-turn",
|
|
223
|
+
"axis": "persistent_continuity_artefacts",
|
|
224
|
+
"disposition": "excluded",
|
|
225
|
+
"locus": "src/scripts/hooks/injection_budget.ts:349",
|
|
226
|
+
"reason": "Per-turn injection budget accounting. Lives and dies inside one turn."
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"id": "interruptions.jsonl",
|
|
230
|
+
"axis": "persistent_continuity_artefacts",
|
|
231
|
+
"disposition": "excluded",
|
|
232
|
+
"locus": "src/scripts/hooks/interruption_ledger_hook.ts:6",
|
|
233
|
+
"reason": "An interruption ledger for reporting. Analysis input, never a restore source."
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"id": "memory-index-v1.sqlite3",
|
|
237
|
+
"axis": "persistent_continuity_artefacts",
|
|
238
|
+
"disposition": "excluded",
|
|
239
|
+
"locus": "src/scripts/_lib/memory_fts_index.ts:36",
|
|
240
|
+
"reason": "The memory full-text index. A derived cache over `agents/memory/`, rebuildable, and not session state."
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"id": "onboarding-gate.json",
|
|
244
|
+
"axis": "persistent_continuity_artefacts",
|
|
245
|
+
"disposition": "excluded",
|
|
246
|
+
"locus": "src/scripts/onboarding_gate_hook.ts:13",
|
|
247
|
+
"reason": "Onboarding latch. Same class as the disclosure latch."
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "probe-throttle",
|
|
251
|
+
"axis": "persistent_continuity_artefacts",
|
|
252
|
+
"disposition": "excluded",
|
|
253
|
+
"locus": "src/scripts/hooks/probe_throttle.ts:9",
|
|
254
|
+
"reason": "Generic probe throttling stamps."
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"id": "quota-parked",
|
|
258
|
+
"axis": "persistent_continuity_artefacts",
|
|
259
|
+
"disposition": "excluded",
|
|
260
|
+
"locus": "src/scripts/_lib/quota_parked.ts:38",
|
|
261
|
+
"reason": "Council seat quota parking. Provider state, unrelated to session recovery."
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"id": "recycle-envelope.json",
|
|
265
|
+
"axis": "persistent_continuity_artefacts",
|
|
266
|
+
"disposition": "counted",
|
|
267
|
+
"locus": "src/scripts/_cli/cmd_session_recycle.ts:9",
|
|
268
|
+
"reason": "The continuity record itself: written by `session:recycle`, resolved per session by `resolveContinuityRecord`, consumed once at `session_start` by the handoff-context concern. This is the artefact the whole roadmap is collapsing the others INTO \u2014 the surviving `1`."
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"id": "render",
|
|
272
|
+
"axis": "persistent_continuity_artefacts",
|
|
273
|
+
"disposition": "excluded",
|
|
274
|
+
"locus": "src/scripts/_dispatch.bash:77",
|
|
275
|
+
"reason": "Scratch render output for the UI surfaces."
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"id": "reread-guard",
|
|
279
|
+
"axis": "persistent_continuity_artefacts",
|
|
280
|
+
"disposition": "excluded",
|
|
281
|
+
"locus": "src/scripts/hooks/reread_guard_hook.ts:21",
|
|
282
|
+
"reason": "Per-file re-read guard stamps, scoped to one session and never restored into another."
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"id": "review-axis",
|
|
286
|
+
"axis": "persistent_continuity_artefacts",
|
|
287
|
+
"disposition": "excluded",
|
|
288
|
+
"locus": "src/scripts/review_axis_report.ts:209",
|
|
289
|
+
"reason": "Review-axis report state. Analysis output."
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"id": "routing-telemetry.jsonl",
|
|
293
|
+
"axis": "persistent_continuity_artefacts",
|
|
294
|
+
"disposition": "excluded",
|
|
295
|
+
"locus": "src/scripts/_cli/cmd_route_audit.ts:48",
|
|
296
|
+
"reason": "Router match telemetry for `route:audit`. Opt-in measurement."
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"id": "rule-inject",
|
|
300
|
+
"axis": "persistent_continuity_artefacts",
|
|
301
|
+
"disposition": "excluded",
|
|
302
|
+
"locus": "src/scripts/hooks/rule_inject_hook.ts:124",
|
|
303
|
+
"reason": "Rule-injection dedupe state, scoped to one session."
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"id": "rule-trips.json",
|
|
307
|
+
"axis": "persistent_continuity_artefacts",
|
|
308
|
+
"disposition": "excluded",
|
|
309
|
+
"locus": "src/scripts/_cli/cmd_route_audit.ts:17",
|
|
310
|
+
"reason": "Rule-trip counters for `route:audit`. Measurement."
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"id": "run-continuation.jsonl",
|
|
314
|
+
"axis": "persistent_continuity_artefacts",
|
|
315
|
+
"disposition": "excluded",
|
|
316
|
+
"locus": "src/scripts/hooks/run_continuation_hook.ts:41",
|
|
317
|
+
"reason": "An append-only event ledger for the stop-slot continuation gate. It records what the gate decided, and nothing reads it to restore a session."
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"id": "session-eol",
|
|
321
|
+
"axis": "persistent_continuity_artefacts",
|
|
322
|
+
"disposition": "counted",
|
|
323
|
+
"locus": "src/scripts/_cli/handoff_sessions.ts:102",
|
|
324
|
+
"reason": "Per-session end-of-life counters plus the advisory stamps. Persisted for VERIFICATION across Stops (the \"advised, but no envelope exists\" counter-check) and read by `handoff_sessions.ts` to populate the resume picker, so it is in scope under the behavioural rule even though it restores nothing itself."
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"id": "skill-tiers.json",
|
|
328
|
+
"axis": "persistent_continuity_artefacts",
|
|
329
|
+
"disposition": "excluded",
|
|
330
|
+
"locus": "src/scripts/_lib/mcp_bridge.ts:319",
|
|
331
|
+
"reason": "Computed skill tiers. A derived cache over `src/skills/`."
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"id": "source-first-gate.json",
|
|
335
|
+
"axis": "persistent_continuity_artefacts",
|
|
336
|
+
"disposition": "excluded",
|
|
337
|
+
"locus": "src/scripts/hooks/source_first_gate_hook.ts:95",
|
|
338
|
+
"reason": "Source-first gate latch state."
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"id": "source-first-gate.jsonl",
|
|
342
|
+
"axis": "persistent_continuity_artefacts",
|
|
343
|
+
"disposition": "excluded",
|
|
344
|
+
"locus": "src/scripts/hooks/source_first_gate_hook.ts:93",
|
|
345
|
+
"reason": "Source-first gate event ledger."
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"id": "subagent-ledger",
|
|
349
|
+
"axis": "persistent_continuity_artefacts",
|
|
350
|
+
"disposition": "excluded",
|
|
351
|
+
"locus": "src/scripts/_lib/host_capability.ts:219",
|
|
352
|
+
"reason": "Subagent return envelopes. Worker-generation lifecycle, explicitly a different subject from main-session continuity \u2014 the parent roadmap named the two-envelope vocabulary collision and kept them distinct."
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"id": "suggestion-latch.json",
|
|
356
|
+
"axis": "persistent_continuity_artefacts",
|
|
357
|
+
"disposition": "excluded",
|
|
358
|
+
"locus": "src/scripts/hooks/suggestion_capture_hook.ts:58",
|
|
359
|
+
"reason": "Once-per-session suggestion latch."
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"id": "supervise-relaunches.json",
|
|
363
|
+
"axis": "persistent_continuity_artefacts",
|
|
364
|
+
"disposition": "excluded",
|
|
365
|
+
"locus": "src/scripts/interruption_report.ts:264",
|
|
366
|
+
"reason": "Relaunch counters for the supervisor. Run-lifecycle bookkeeping under the run-integrity exclusion above."
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"id": "surface-probe.json",
|
|
370
|
+
"axis": "persistent_continuity_artefacts",
|
|
371
|
+
"disposition": "excluded",
|
|
372
|
+
"locus": "src/scripts/surface_probe_hook.ts:15",
|
|
373
|
+
"reason": "Surface-probe throttle state."
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"id": "team-review-gate.json",
|
|
377
|
+
"axis": "persistent_continuity_artefacts",
|
|
378
|
+
"disposition": "excluded",
|
|
379
|
+
"locus": "src/scripts/ai_team/review_gate.ts:102",
|
|
380
|
+
"reason": "Team review-gate latch, consumed within the session that set it."
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"id": "telemetry-disclosure.json",
|
|
384
|
+
"axis": "persistent_continuity_artefacts",
|
|
385
|
+
"disposition": "excluded",
|
|
386
|
+
"locus": "src/scripts/telemetry_disclosure_hook.ts:26",
|
|
387
|
+
"reason": "A once-per-project disclosure latch. It records that a notice was shown, which is consent bookkeeping rather than context."
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"id": "test-results.json",
|
|
391
|
+
"axis": "persistent_continuity_artefacts",
|
|
392
|
+
"disposition": "excluded",
|
|
393
|
+
"locus": "src/scripts/_lib/test_red_state.ts:2",
|
|
394
|
+
"reason": "Last test-run red state, read by the verification gates within a run."
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"id": "tool-result-census.jsonl",
|
|
398
|
+
"axis": "persistent_continuity_artefacts",
|
|
399
|
+
"disposition": "excluded",
|
|
400
|
+
"locus": "src/scripts/hooks/tool_result_bytes_hook.ts:92",
|
|
401
|
+
"reason": "Tool-result byte census. Measurement output."
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"id": "turn-end-gate",
|
|
405
|
+
"axis": "persistent_continuity_artefacts",
|
|
406
|
+
"disposition": "excluded",
|
|
407
|
+
"locus": "src/scripts/_lib/turn_end_refusals.ts:73",
|
|
408
|
+
"reason": "Refusal records for the turn-end quality gate. Consumed by the gate and by `hooks_doctor`, not by a successor session."
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"id": "ui-audit.json",
|
|
412
|
+
"axis": "persistent_continuity_artefacts",
|
|
413
|
+
"disposition": "excluded",
|
|
414
|
+
"locus": "src/scripts/_dispatch.bash:74",
|
|
415
|
+
"reason": "UI audit output. Analysis result."
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"id": "ui-route-nudge.json",
|
|
419
|
+
"axis": "persistent_continuity_artefacts",
|
|
420
|
+
"disposition": "excluded",
|
|
421
|
+
"locus": "src/scripts/hooks/ui_route_nudge_hook.ts:174",
|
|
422
|
+
"reason": "Once-per-session nudge latch."
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"id": "unattended-budget.json",
|
|
426
|
+
"axis": "persistent_continuity_artefacts",
|
|
427
|
+
"disposition": "excluded",
|
|
428
|
+
"locus": "src/scripts/_lib/unattended_guard.ts:45",
|
|
429
|
+
"reason": "Unattended-run budget accounting."
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"id": "unattended-jobs.json",
|
|
433
|
+
"axis": "persistent_continuity_artefacts",
|
|
434
|
+
"disposition": "excluded",
|
|
435
|
+
"locus": "src/scripts/_lib/unattended_guard.ts:46",
|
|
436
|
+
"reason": "Unattended job records."
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
"id": "verify-before-complete.json",
|
|
440
|
+
"axis": "persistent_continuity_artefacts",
|
|
441
|
+
"disposition": "excluded",
|
|
442
|
+
"locus": "src/scripts/_lib/envelope_grounding.ts:130",
|
|
443
|
+
"reason": "Verification-gate state, consumed within the run that wrote it."
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"id": "work",
|
|
447
|
+
"axis": "persistent_continuity_artefacts",
|
|
448
|
+
"disposition": "excluded",
|
|
449
|
+
"locus": "src/scripts/explain_run.ts:725",
|
|
450
|
+
"reason": "Work-engine decision traces under `work/<id>/`. Per-run explainability output consumed by `explain_run`, not a restore source."
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
"id": "x.json",
|
|
454
|
+
"axis": "persistent_continuity_artefacts",
|
|
455
|
+
"disposition": "excluded",
|
|
456
|
+
"locus": "src/scripts/check_prefix_stable_mutation.ts:268",
|
|
457
|
+
"reason": "Not a surface: a string literal inside `check_prefix_stable_mutation`s own fixture, which the discovery walk sees because it scans source text. Listed rather than filtered out, because a filter is where a real leaf would eventually hide."
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"id": "verb:chat-history:checkpoint",
|
|
461
|
+
"axis": "public_continuity_commands",
|
|
462
|
+
"disposition": "excluded",
|
|
463
|
+
"locus": "src/cli/registry.ts:113",
|
|
464
|
+
"reason": "Also capture, and out of scope on the same ground. What step 4.1b targets is the colliding NAME, not the capability: the verb dispatches to `chat_history.ts hook-append --event phase` and has four live producers in generated git hooks."
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"id": "verb:chat-history:hook",
|
|
468
|
+
"axis": "public_continuity_commands",
|
|
469
|
+
"disposition": "excluded",
|
|
470
|
+
"locus": "src/cli/registry.ts:112",
|
|
471
|
+
"reason": "Chat-history CAPTURE, which the parent roadmap places out of scope by decision: it is the only cross-host transcript source and has no substitute on hosts with no native transcript."
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"id": "verb:handoff",
|
|
475
|
+
"axis": "public_continuity_commands",
|
|
476
|
+
"disposition": "excluded",
|
|
477
|
+
"locus": "src/cli/registry.ts:62",
|
|
478
|
+
"reason": "An OPTIONAL affordance, not a required step. The parent roadmap`s blocker resolution of 2026-09-06 explicitly preserved `handoff` and `/agent-handoff` as the surviving verb and command, and its goal states the target as \"no continuity-specific command is REQUIRED\" rather than none existing. Excluded on that wording \u2014 and the tension is recorded rather than hidden: read as a bare count of existing public commands, the parent`s target of 0 is unreachable while its own resolution keeps this verb alive."
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"id": "verb:session:recycle",
|
|
482
|
+
"axis": "public_continuity_commands",
|
|
483
|
+
"disposition": "counted",
|
|
484
|
+
"locus": "src/cli/registry.ts:73",
|
|
485
|
+
"reason": "REQUIRED on the normal path today: it is the only writer of the continuity record in the tree, so continuity does not happen unless a human runs it. That is what makes it a continuity command rather than an affordance, and it is on the owner-authorised retirement set of 2026-09-06."
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"id": "command:chat-history",
|
|
489
|
+
"axis": "session_resume_pickers",
|
|
490
|
+
"disposition": "excluded",
|
|
491
|
+
"locus": "src/domains/meta/chat-history/command.md:3",
|
|
492
|
+
"reason": "The orchestrator shell that routes to the import picker; it presents no picker of its own. Counting both would double-count one surface. It is retired together with the picker it routes to, so the row disappears with it."
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"id": "picker:agent-handoff",
|
|
496
|
+
"axis": "session_resume_pickers",
|
|
497
|
+
"disposition": "counted",
|
|
498
|
+
"locus": "src/domains/meta/agent-handoff/command.md:41",
|
|
499
|
+
"reason": "A numbered-options block asking a human which prior session to resume. It is a picker by construction, and the parent`s target of 0 pickers is in tension with its preservation of this command \u2014 recorded here so the tension is visible in the count rather than argued away."
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"id": "picker:chat-history-import",
|
|
503
|
+
"axis": "session_resume_pickers",
|
|
504
|
+
"disposition": "counted",
|
|
505
|
+
"locus": "src/domains/meta/chat-history/import/command.md:77",
|
|
506
|
+
"reason": "A numbered-table session picker plus a resume offer \u2014 a second, competing answer to \"which prior session do I continue from\". On the owner-authorised retirement set of 2026-09-06."
|
|
507
|
+
}
|
|
508
|
+
]
|
|
509
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"review_by": "2027-08-18",
|
|
8
8
|
"metric": {
|
|
9
9
|
"basis": "src/scripts/check_estate_count.ts. The live side uses collect() from update_roadmap_progress — the same parser the dashboard is generated from, imported rather than re-implemented. The floor side runs the SAME functions over a scratch copy of the base ref's agents/roadmaps/, materialised by _lib/base_tree.ts (git ls-tree + git cat-file --batch; `git archive` cannot be used here because .gitattributes carries `/agents export-ignore` and would yield an empty, silently-zero tree). SKILL METRICS (added 2026-08-24): _lib/skill_estate.ts walks src/skills/*/SKILL.md under the SAME root, so the floor side measures the base ref's own skill tree with the same function. That needs a SECOND materialised subtree — materialiseSubtree takes one prefix — and the two are independent on purpose: a base ref with no src/skills (an old tag, a shallow clone) drops the skill metrics and leaves the roadmap metrics ratcheting.",
|
|
10
|
-
"active_roadmaps": "roadmap candidates at the top level of agents/roadmaps/ that are not drafts, as collect() counts them
|
|
10
|
+
"active_roadmaps": "roadmap candidates at the top level of agents/roadmaps/ that are not drafts, as collect() counts them. EQUAL to the dashboard header's 'N open roadmaps'. It used to add back the candidates collect() dropped for declaring status: carrier, so that FLIPPING a roadmap to that status was count-neutral: the flip measured 3 -> 2 with the gate printing 'estate within its ratchet', because a count below the floor is a drawdown and free; the floor is measured at the base ref, so the lowered number became the next floor and any roadmap could be laundered out of the count by adding one word. ADR-262 (2026-09-08) deleted status: carrier, so there is no flip to neutralise, no add-back, and no divergence from the header left. Drafts stay excluded on both sides, unchanged, and a draft flip has the same laundering shape — it is tolerated because a draft may be deleted freely, which is the property the deleted status did not have.",
|
|
11
11
|
"later_roadmaps": "roadmap-shaped *.md files under agents/roadmaps/later/ — the same is_roadmap_candidate name filter the active side uses, so later/README.md is not counted. Counted from the filesystem because parked roadmaps sit outside collect()'s corpus by design; they are estate all the same, and a drawdown that moved everything into later/ and called the number down would be the burial T1's quality anchor exists to prevent.",
|
|
12
12
|
"open_blockers": "blockers whose Status does not start with `resolved`, summed over the active and later corpora.",
|
|
13
13
|
"floor": "the same three metrics measured at the base ref (origin/main, else the merge commit's first parent). No base ref resolves -> no floor -> the gate FAILS rather than skipping: a shrink-only gate with no floor passes every possible tree. `--base <ref>` is the explicit escape.",
|
|
@@ -52,14 +52,18 @@
|
|
|
52
52
|
# of them.
|
|
53
53
|
# canary optional mutation recipe (Phase 7) — see CANARY below
|
|
54
54
|
#
|
|
55
|
-
# COVERAGE — THE HONEST DENOMINATOR (re-measured 2026-08
|
|
55
|
+
# COVERAGE — THE HONEST DENOMINATOR (re-measured 2026-09-08)
|
|
56
56
|
# ----------------------------------------------------------
|
|
57
|
-
#
|
|
57
|
+
# 322 `lint_*` / `check_*` / `audit_*` scripts live under `src/scripts/`
|
|
58
58
|
# (the count is computed, not asserted — `check_gate_coverage.count_gate_scripts`,
|
|
59
|
-
# re-run on the tree carrying these rows
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
59
|
+
# re-run on the tree carrying these rows. Re-measured 2026-09-08 from the 306
|
|
60
|
+
# recorded on 2026-08-28: the tree had drifted to 321 without the header moving,
|
|
61
|
+
# which is 15 — exactly the drift tolerance in
|
|
62
|
+
# `check_gate_coverage.test.ts` § states an honest denominator — so the next
|
|
63
|
+
# single addition was always going to red it. `check_candidate_lines` from
|
|
64
|
+
# `road-to-candidate-moves-floor` was that addition. The number is re-measured
|
|
65
|
+
# rather than the tolerance widened: a stated population that nobody re-measures
|
|
66
|
+
# is the un-asserted count this whole manifest exists to refuse.)
|
|
63
67
|
# **78 of them emit the machine-readable `scanned: <N>` line under their
|
|
64
68
|
# CI-identical argv, and 75 of those 78 are listed below.** The manifest is
|
|
65
69
|
# complete for every gate that can carry a floor, covering ~25 % of the population.
|
|
@@ -487,14 +491,14 @@ gates:
|
|
|
487
491
|
corpus: "every agents/roadmaps/*.md, counted as FILES rather than as declarations. THE FLOOR WAS RETIRED ON 2026-08-30 AND REPLACED WITH AN ENUMERATION ASSERTION IN THE LINTER ITSELF (AI council, anthropic + openai, convergent on option b). It sat at 5 over a population under deliberate drawdown to ZERO, so it went red the day the drain succeeded — 6 active roadmaps to 4 in one afternoon — and the only available move was lowering the number again, a treadmill ending at a floor of 0, which is no floor. What guards the scope now is `lint_consolidation_lineage` refusing outright when a declared root is missing, is not a directory, or cannot be enumerated; that check lives in the PRODUCTION linter rather than here on purpose, because an independent existsSync in this gate would observe a directory without proving the linter enumerated it. Honest limit, named rather than implied: it catches a missing or renamed root, not a glob narrowed to match nothing, not enumeration in the wrong working directory, and not roadmaps moved into nested directories the walk no longer traverses. Today none of them carries a `consolidates:` field, so the finding count is legitimately zero while the scanned count is not — that split is the point: a declaration-count floor would be a zero-check wearing a ratchet's name, and would go green the moment the scan root moved. The floor sits at 5 rather than near the present 12 because the active estate is under deliberate drawdown (one-in-one-out plus an explicit drain), so a falling count is expected work rather than a collapse; below 5 the estate would be smaller than any point in its recorded history. NO CANARY, deliberately: the council decision that admitted this gate (2026-08-27, 2/2 convergent, E1=b/E2=report) fixed it in REPORT mode, so it exits 0 on findings by design and a planted violation could not turn it red. Its ability to go red is proven instead by `--self-test`, which the same decision required: six declaration spellings must parse identically, all four finding types must fire, and a complete folder must stay silent."
|
|
488
492
|
status: enforced
|
|
489
493
|
no_canary_reason: "A report-mode gate cannot be turned red by a planted file. The council decision that admitted this gate (2026-08-27, 2/2 convergent, E1=b/E2=report) fixed it in report mode deliberately: the four measured failures come from a high-noise drafting context and do not establish precision on the tracked estate, so blocking is earned by tracked-scope evidence rather than assumed. A canary here would either be planted and ignored (proving nothing) or force `--strict` into CI, which would decide E2 by wiring instead of by evidence. The negative control is `--self-test` instead, required by the same decision and stronger than a single planted file: six declaration spellings must parse to an identical parent set, all four finding types must fire, and a complete folder must stay silent — the third arm being what stops a checker that returned every code unconditionally from passing the second. Revisit together with E2: when the tracked half is promoted to blocking, it owes a canary."
|
|
490
|
-
- id:
|
|
494
|
+
- id: lint_deferral_integrity
|
|
491
495
|
argv: []
|
|
492
496
|
min_scanned: 600
|
|
493
497
|
corpus: "every roadmap file under agents/roadmaps/archive/ and agents/roadmaps/skipped/ — 656 at the time of writing, and the count only rises because archival is one-way. The floor sits at 600 rather than near 656 because a reading below it means the walk lost a directory, not that roadmaps were un-archived. The walk direction is the design: a `[~]` carry is validated once, when the parent is archived, by a sweep that then never looks at the pair again, so the receiver can be deleted afterwards with nothing going red. Starting from the archived parent — which names its destination by slug and which nothing rewrites — makes whole-file deletion detectable on the first pass, with no registry to maintain. TWO CLASSES, and the split decides the tier: `broken-destination` (deleted, renamed, re-parented, skipped, or archived with open steps) is a HARD failure at zero with no baseline, because every member had a recorded home and lost it; `unannotated` (a bare `[~]` with no annotation at all) is ratcheted at 243 in gate-violation-baselines.json, all of it predating the annotation contract by up to three months."
|
|
494
498
|
status: enforced
|
|
495
499
|
canary:
|
|
496
500
|
class: contract-violation
|
|
497
|
-
path: agents/roadmaps/archive/zz-canary-
|
|
501
|
+
path: agents/roadmaps/archive/zz-canary-deferral-integrity.md
|
|
498
502
|
content: |
|
|
499
503
|
---
|
|
500
504
|
complexity: bounded
|
|
@@ -1295,6 +1299,23 @@ gates:
|
|
|
1295
1299
|
or if a drop to 0 is ever traced to a scanner defect rather than to an
|
|
1296
1300
|
empty corpus.
|
|
1297
1301
|
|
|
1302
|
+
- id: check_continuity_surface
|
|
1303
|
+
argv: []
|
|
1304
|
+
min_scanned: 40
|
|
1305
|
+
corpus: "the rows of src/config/continuity-surface.json PLUS every distinct persisted-state leaf under agents/runtime/state/ that any source file under src/scripts, src/agent-src/scripts, src/cli, src/shared, src/server or src/install names (70 rows + 58 discovered leaves = 128 at introduction). The floor is 40 rather than ~120 because the roadmap this gate serves is SUBTRACTIVE by design: rows are meant to disappear as surfaces are retired, and a floor set near the live number would red on the very drawdown the gate exists to encourage. It is still far above a collapse — the discovery walking a moved root reads 0, and a taxonomy that dropped to a handful of hand-picked rows would trip it."
|
|
1306
|
+
status: enforced
|
|
1307
|
+
no_canary_reason: >-
|
|
1308
|
+
the negative control is the gate's own --self-test, run in CI: 7 cases, 4
|
|
1309
|
+
rejecting, covering every failure class in BOTH directions — an
|
|
1310
|
+
undisposed persisted-state leaf, a row whose locus no longer resolves, a
|
|
1311
|
+
counted axis above the base-ref floor, and a row with no reason of
|
|
1312
|
+
substance, against three accepting cases including the shipped inventory
|
|
1313
|
+
over the shipped tree. It builds throwaway repositories rather than
|
|
1314
|
+
touching this one. A planted canary here would mean committing a real
|
|
1315
|
+
undisposed state path into src/ and removing it again, and a forgotten one
|
|
1316
|
+
is precisely the defect this gate exists to catch — the same argument
|
|
1317
|
+
check_gate_reachability records for itself one row below.
|
|
1318
|
+
|
|
1298
1319
|
- id: check_gate_reachability
|
|
1299
1320
|
script: src/scripts/check_gate_reachability.ts
|
|
1300
1321
|
min_scanned: 10
|