@event4u/agent-config 14.7.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.
Files changed (138) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +245 -388
  3. package/README.md +1 -1
  4. package/dist/agent-src/commands/evals/git-pr-merge.json +13 -0
  5. package/dist/agent-src/commands/evals/roadmap.json +17 -1
  6. package/dist/agent-src/commands/pr/create.md +14 -2
  7. package/dist/agent-src/commands/pr/merge.md +379 -0
  8. package/dist/agent-src/commands/roadmap/process-full.md +157 -3
  9. package/dist/agent-src/commands/roadmap.md +1 -1
  10. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +46 -36
  11. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +37 -2
  12. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +64 -2
  13. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +154 -2
  14. package/dist/agent-src/rules/artifact-drafting-protocol.md +5 -1
  15. package/dist/agent-src/rules/decision-revisit-gate.md +65 -33
  16. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  17. package/dist/agent-src/rules/roadmap-progress-sync.md +19 -0
  18. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  19. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +7 -4
  20. package/dist/agent-src/scripts/dashboard_mode.ts +212 -0
  21. package/dist/agent-src/scripts/update_roadmap_progress.ts +47 -48
  22. package/dist/agent-src/skills/adr-create/SKILL.md +124 -5
  23. package/dist/agent-src/skills/decision-record/SKILL.md +61 -3
  24. package/dist/agent-src/skills/decision-review/SKILL.md +65 -0
  25. package/dist/agent-src/skills/merge-conflicts/SKILL.md +26 -0
  26. package/dist/agent-src/skills/security/SKILL.md +8 -0
  27. package/dist/agent-src/skills/security-audit/SKILL.md +12 -1
  28. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  29. package/dist/agent-src/templates/roadmaps.md +20 -2
  30. package/dist/cli/registry.js +1 -0
  31. package/dist/cli/registry.js.map +1 -1
  32. package/dist/cli-delegate/{chunk-JZ4NR2TW.js → chunk-7PRE6ZV2.js} +1 -1
  33. package/dist/cli-delegate/{chunk-7F3VYSM2.js → chunk-EEJUMCDZ.js} +14 -14
  34. package/dist/cli-delegate/{chunk-74E3TKWV.js → chunk-H4VIVD4C.js} +5 -5
  35. package/dist/cli-delegate/chunk-I3EIN2YG.js +36 -0
  36. package/dist/cli-delegate/{chunk-4VR4ORQ6.js → chunk-LPPWO5CE.js} +4 -3
  37. package/dist/cli-delegate/{chunk-UEZ7D35A.js → chunk-N7CDDGI3.js} +4 -23
  38. package/dist/cli-delegate/cmd_adr_effective.js +1162 -0
  39. package/dist/cli-delegate/cmd_conformance.js +14 -14
  40. package/dist/cli-delegate/cmd_converge.js +3 -3
  41. package/dist/cli-delegate/cmd_doctor.js +7 -7
  42. package/dist/cli-delegate/cmd_export.js +6 -6
  43. package/dist/cli-delegate/cmd_handoff.js +7 -6
  44. package/dist/cli-delegate/cmd_memory_get.js +2 -1
  45. package/dist/cli-delegate/cmd_migrate.js +2 -2
  46. package/dist/cli-delegate/cmd_preflight.js +5 -5
  47. package/dist/cli-delegate/cmd_prune.js +6 -6
  48. package/dist/cli-delegate/cmd_route_audit.js +6 -5
  49. package/dist/cli-delegate/cmd_route_explain.js +3 -3
  50. package/dist/cli-delegate/cmd_session_recycle.js +3 -3
  51. package/dist/cli-delegate/cmd_settings_get.js +3 -3
  52. package/dist/cli-delegate/cmd_settings_migrate.js +6 -6
  53. package/dist/cli-delegate/cmd_sync.js +6 -6
  54. package/dist/cli-delegate/cmd_uninstall.js +6 -6
  55. package/dist/cli-delegate/cmd_update.js +3 -3
  56. package/dist/cli-delegate/cmd_upgrade.js +3 -3
  57. package/dist/cli-delegate/cmd_validate.js +6 -6
  58. package/dist/cli-delegate/cmd_versions.js +3 -3
  59. package/dist/discovery/deprecation-report.md +1 -1
  60. package/dist/discovery/discovery-manifest.json +53 -22
  61. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  62. package/dist/discovery/discovery-manifest.summary.md +3 -3
  63. package/dist/discovery/dormancy-report.md +1 -1
  64. package/dist/discovery/orphan-report.md +1 -1
  65. package/dist/discovery/packs.json +7 -6
  66. package/dist/discovery/trust-report.md +2 -2
  67. package/dist/discovery/workspaces.json +6 -5
  68. package/dist/hooks/dispatch.js +806 -681
  69. package/dist/install/globalRuleLayers.js +169 -0
  70. package/dist/install/globalRuleLayers.js.map +1 -0
  71. package/dist/install/partitionEligibility.js +156 -0
  72. package/dist/install/partitionEligibility.js.map +1 -1
  73. package/dist/install/ruleLayerPartition.js +157 -0
  74. package/dist/install/ruleLayerPartition.js.map +1 -0
  75. package/dist/mcp/registry-manifest.json +3 -3
  76. package/dist/mcp/server.json +2 -2
  77. package/dist/mcp/server.mjs +654 -578
  78. package/dist/scripts/_lib/prune_empty_dirs.js +85 -0
  79. package/dist/scripts/_lib/prune_empty_dirs.js.map +1 -0
  80. package/dist/scripts/condense.js +52 -89
  81. package/dist/scripts/condense.js.map +1 -1
  82. package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +45 -1
  83. package/docs/guidelines/agent-infra/false-green.md +47 -1
  84. package/package.json +1 -1
  85. package/src/agent-src/scripts/archive_completed_roadmaps.ts +7 -4
  86. package/src/agent-src/scripts/dashboard_mode.ts +212 -0
  87. package/src/agent-src/scripts/update_roadmap_progress.ts +47 -48
  88. package/src/config/ci-local-parity.yml +21 -0
  89. package/src/config/estate-count-budget.json +275 -2
  90. package/src/config/evaluator-budgets.json +3 -3
  91. package/src/config/gate-coverage.yml +220 -12
  92. package/src/config/gate-violation-baselines.json +73 -63
  93. package/src/config/gitignore-block.txt +15 -2
  94. package/src/config/hook-latency-budget.json +5 -0
  95. package/src/config/rule-stub-ceilings.json +17 -3
  96. package/src/install/globalRuleLayers.ts +197 -0
  97. package/src/install/partitionEligibility.ts +177 -0
  98. package/src/install/ruleLayerPartition.ts +212 -0
  99. package/src/scripts/_cli/cmd_adr_effective.ts +484 -0
  100. package/src/scripts/_dispatch.bash +11 -0
  101. package/src/scripts/_lib/adr_frontmatter.test.ts +365 -0
  102. package/src/scripts/_lib/adr_frontmatter.ts +459 -0
  103. package/src/scripts/_lib/envelope_grounding.ts +11 -1
  104. package/src/scripts/_lib/layer_overlap_notice.ts +11 -2
  105. package/src/scripts/_lib/prune_empty_dirs.ts +80 -0
  106. package/src/scripts/adr/evidence_census.ts +899 -0
  107. package/src/scripts/adr/regenerate_index.ts +12 -32
  108. package/src/scripts/adr_cite_check.ts +540 -39
  109. package/src/scripts/audit_adr_coverage.ts +103 -17
  110. package/src/scripts/bench_hook_latency.ts +204 -0
  111. package/src/scripts/build_archive_index.ts +34 -0
  112. package/src/scripts/check_adr_frontmatter.ts +574 -39
  113. package/src/scripts/check_hook_bundle_content.ts +219 -0
  114. package/src/scripts/check_new_adr_evidence.ts +529 -0
  115. package/src/scripts/check_references.ts +18 -0
  116. package/src/scripts/check_rule_layer_partition.ts +531 -0
  117. package/src/scripts/check_single_delivery.ts +137 -4
  118. package/src/scripts/check_standing_rule_delivery.ts +8 -2
  119. package/src/scripts/condense.ts +61 -91
  120. package/src/scripts/external_sources_denylist.json +4 -1
  121. package/src/scripts/hooks/block_unauthorized_git.ts +22 -2
  122. package/src/scripts/hooks/dispatch_hook.ts +154 -187
  123. package/src/scripts/hooks/dispatch_issues.ts +38 -19
  124. package/src/scripts/hooks/fallback_yaml.ts +66 -0
  125. package/src/scripts/hooks/host_semantics.ts +21 -0
  126. package/src/scripts/hooks/injection_budget.ts +13 -3
  127. package/src/scripts/hooks/py_json_dumps.ts +103 -0
  128. package/src/scripts/hooks/state_io.ts +88 -1
  129. package/src/scripts/hooks/stdin_failure_policy.ts +96 -0
  130. package/src/scripts/injection_scan_hook.ts +137 -5
  131. package/src/scripts/lint_hook_manifest.ts +49 -0
  132. package/src/scripts/lint_provenance_vocabulary.ts +472 -4
  133. package/src/scripts/routing_doctor.ts +5 -1
  134. package/src/scripts/sync_pr_branch.ts +163 -20
  135. package/dist/cli-delegate/{chunk-PPQO4NGR.js → chunk-6RJA2F5A.js} +3 -3
  136. package/dist/cli-delegate/{chunk-6EOCNQAM.js → chunk-E4XIZDIB.js} +0 -0
  137. package/dist/cli-delegate/{chunk-FBKL6JWT.js → chunk-MMSGVZKV.js} +3 -3
  138. package/dist/cli-delegate/{chunk-GJ5BVHXM.js → chunk-PMEKGDED.js} +3 -3
@@ -119,6 +119,21 @@ Write:
119
119
  law instead of a decision under current conditions; see
120
120
  [`decision-revisit-gate`](../../rules/decision-revisit-gate.md) for
121
121
  what happens when a later change is blocked by it without one.
122
+ It is an externally observable **condition**, never a cadence and never
123
+ permanence under a field name: `terminal`, `none`, "never" and "forever"
124
+ are invalid, and `unclassified` is legal only on an *existing* record
125
+ during the migration — never on the one you are locking now.
126
+ - **Evidence + assumptions, split explicitly.** Every load-bearing factual
127
+ claim in the rationale either points at a basis ref — `file:line`, a URL, a
128
+ `docs/CLAIMS.md` claim id, a benchmark id — or is **labelled an
129
+ assumption**. There is no third state. Cite nothing and the record grades
130
+ `E0`, which is honest and publishable; a confident grade over no citations
131
+ is not. **Agreement is not evidence:** the council converging, or two
132
+ models liking the same option, is `provenance: agentic` with
133
+ `agentic_mode: council` — sources and measurements raise the grade,
134
+ consensus does not. A human product call records `E0` plus
135
+ `authority_basis: owner_intent` rather than a faked grade. Vocabulary:
136
+ [`adr-layout § Provenance and evidence`](../../../docs/contracts/adr-layout.md).
122
137
 
123
138
  ### 5. Wire the supersession chain (if any)
124
139
 
@@ -129,9 +144,34 @@ If this decision overrides a prior ADR:
129
144
  not "we now think differently".
130
145
  - Hand off the `supersedes:` linkage to `adr-create`.
131
146
 
132
- ### 6. Hand off to file mechanics
147
+ ### 6. Admission gate — is this an ADR at all?
133
148
 
134
- Output the structured payload (below). The user — or
149
+ Classify **before** handing off. A locked choice earns an ADR only when it is
150
+ architecturally significant on at least one axis:
151
+
152
+ - **Hard or costly to reverse** — a one-way door: public API shape, DB schema,
153
+ wire format, published identifier, migration.
154
+ - **Broadly constraining** — it binds work outside the module that made it.
155
+ - **Crosses a governed surface** — consumer contract, API, security or privacy
156
+ floor, package structure.
157
+
158
+ None of the three → **no ADR**. The record still exists; it lands as a
159
+ decision note in `agents/decisions/`, a config value, a measurement record in
160
+ `docs/CLAIMS.md`, an experiment, or a roadmap item. Explicitly not ADRs: a
161
+ temporary numeric threshold · a benchmark value · a model mapping · one-off
162
+ release sequencing · a reversible local implementation detail.
163
+
164
+ **The reference case is in this tree.** ADR-002 encodes `25 000 → 26 000` and
165
+ a `4.0k` override ceiling as architecture law (`ADR-002:55`, `:62`), and
166
+ ADR-114 then had to add another override while recording that 7 of 9 kernel
167
+ rules already carry them (`ADR-114:74`). The *principle* — a kernel budget
168
+ exists, is measured, and is capped — is the ADR. The numbers belong in a
169
+ versioned budget contract with a regression gate, so a recalibration stops
170
+ needing an architecture supersession.
171
+
172
+ ### 7. Hand off to file mechanics
173
+
174
+ Gate passed → output the structured payload (below). The user — or
135
175
  `adr-create` — turns it into the file.
136
176
 
137
177
  ## Weighted-matrix mode (quantitative)
@@ -226,10 +266,22 @@ Consequences:
226
266
  - <becomes harder>
227
267
  ✗ <becomes impossible>
228
268
 
269
+ Assumptions:
270
+ ~ <load-bearing claim with no basis ref>
271
+
272
+ Evidence:
273
+ <basis ref> — file:line | URL | CLAIMS id | benchmark id (or: none — E0)
274
+
275
+ Provenance: human | agentic | mixed | unknown (agentic_mode: single | council | delegated)
276
+ Grade: E0 | E1 | E2 | E3 | E4 (authority_basis: evidence | owner_intent)
277
+
229
278
  Supersedes: <ADR-XYZ "title"> (if any)
230
279
  Trigger: <what changed> (if superseding)
280
+ Revisit-if: <observable condition>
281
+
282
+ Admission gate: ADR | decision note | config value | measurement | experiment | roadmap item
231
283
 
232
- Next: /adr-create with the payload above
284
+ Next: /adr-create with the payload above (only when the gate says ADR)
233
285
  ```
234
286
 
235
287
  ## Gotcha
@@ -240,6 +292,12 @@ Next: /adr-create with the payload above
240
292
  cons for the chosen option, you have not understood it yet.
241
293
  - A supersession with no "what changed in the world" is a vibe
242
294
  pivot. Reject and ask.
295
+ - An unlabelled guess is worse than a labelled one. A claim with no basis ref
296
+ and no assumption label reads as established fact to the next reader.
297
+ - "The council agreed" is a provenance fact, not an evidence grade. If the
298
+ only support is agreement, the grade is `E0` — write it.
299
+ - Writing an ADR for a threshold is how a recalibration becomes an
300
+ architecture supersession. Run the admission gate first.
243
301
 
244
302
  ## Do NOT
245
303
 
@@ -93,6 +93,31 @@ available at the time it was made**, not against the outcome alone.
93
93
  A decision can be correct given the information then and still need
94
94
  revision now.
95
95
 
96
+ **Read the record's axes in this order** — each step can end the review, so
97
+ running them out of order pays for the expensive ones first:
98
+
99
+ 1. **Effective state** — status, `superseded_by`, amendments, whether the
100
+ `review_trigger` fired. `superseded`/`deprecated` is not a live lock at all.
101
+ 2. **`provenance`** (+ `agentic_mode`) — who decided; descriptive only.
102
+ 3. **`evidence.strength`** — E0–E4, claim-relative, not a count of sources.
103
+ 4. **`evidence.discovery`** — on E0, `incomplete` means *nobody looked*: a
104
+ discovery failure, not an evidence failure. Search before treating the
105
+ absence as established, or the grade measures the review, not the decision.
106
+ 5. **Current evidence** — what tree, measurements and sources say *today*.
107
+ 6. **Reversibility** — of the transition you propose, not of the original
108
+ decision. The routing unit is the transition, never the document.
109
+ 7. **Reserved dimensions** — `protected_dimensions`, `reopen_policy` (absent →
110
+ `unclassified`, which is not `owner`).
111
+
112
+ Then price the reopen record from the grade × provenance burden table in
113
+ [`adr-layout § The reopen record`](../../../docs/contracts/adr-layout.md) —
114
+ cheap for an `E0`/`E1` agentic snapshot, *surfaced* rather than obeyed or
115
+ overturned for `E0`/`E1` human, the standard five fields at `E2`, and those
116
+ fields plus engaging the original evidence **in kind** at `E3`/`E4`. Read the
117
+ table; do not reconstruct it from memory. The axes are defined by
118
+ [`adr-layout § Provenance and evidence`](../../../docs/contracts/adr-layout.md),
119
+ not here.
120
+
96
121
  ### 4. Verdict
97
122
 
98
123
  One of three:
@@ -298,6 +323,40 @@ in the rule; the lock catalog, fire steps, and failure modes live here.
298
323
  Identical ceremony for a typo-level amendment would cost more than asking
299
324
  the owner and the mechanism would die of its own weight.
300
325
 
326
+ ### The grade prices the record, never the authority
327
+
328
+ ```
329
+ AN EVIDENCE GRADE IS A MEASUREMENT, NOT A PERMISSION.
330
+ IT PRICES THE REOPEN RECORD AND THE REVIEW PRIORITY. IT CONFERS NO AUTHORITY.
331
+ A LOW GRADE NEVER LETS AN AGENT SUPERSEDE A RECORD ON ITS OWN.
332
+ ```
333
+
334
+ Nothing in the burden table changes **who** may act: venue comes from the
335
+ discriminator, the trust boundaries the transition touches, and the
336
+ owner-reserved rows — never from the grade.
337
+
338
+ The coupling was proposed and refused: two council seats independently named it
339
+ the design's central defect, because the party assigning the grade would also
340
+ be the party gaining authority from it, and would additionally be
341
+ self-classifying its own transition as `reversible-internal` — itself an
342
+ authority-bearing classification. Calling the result "provisional" changes
343
+ neither the trust boundary nor the blast radius. Whether an *independently
344
+ validated* grade may ever reduce the authorization burden is owner-reserved and
345
+ open: do not answer it here — it is the `authority-coupling-decision` blocker in
346
+ `road-to-evidence-based-adr-governance`, and
347
+ [`adr-layout § The reopen record`](../../../docs/contracts/adr-layout.md) closes
348
+ on the same point.
349
+
350
+ Two consequences that are easy to get backwards:
351
+
352
+ - **An ADR's historical decision-maker does not determine its reopen venue.** A
353
+ record decided by a council does not need a council to reopen it; a record
354
+ decided by one agent is not thereby an agent's to overturn.
355
+ - **A low-evidence record may state a decision; it does not establish that the
356
+ alternatives remain invalid.** *"We chose B because we had to choose"* is
357
+ legitimate and publishable — but never grounds for *"A is forbidden, the ADR
358
+ says B"*, which needs evidence the record never carried.
359
+
301
360
  ### When NOT to fire
302
361
 
303
362
  - The blocked change has no real benefit — the gate is not a lever to
@@ -324,6 +383,12 @@ in the rule; the lock catalog, fire steps, and failure modes live here.
324
383
  value-over-budget clause.
325
384
  - Silently dropping a good idea because "we already decided this" —
326
385
  the canonical failure the gate exists to stop.
386
+ - Reading a low `evidence.strength` as permission to supersede — the grade
387
+ prices the record, it never moves the venue.
388
+ - Treating `discovery: incomplete` as established absence: that grades the
389
+ review, not the decision.
390
+ - Citing a low-evidence ADR as proof its rejected alternatives are still
391
+ invalid. It records a choice, not a refutation.
327
392
 
328
393
  ## See also
329
394
 
@@ -25,6 +25,32 @@ Use this skill when:
25
25
 
26
26
  ## Procedure: Resolve merge conflicts
27
27
 
28
+ ### 0. Classify before resolving — and never start in the GitHub web editor
29
+
30
+ A `CONFLICTING` PR is not a signal to open the web editor. **The web editor
31
+ cannot tell generated from authored**, so it presents a mechanical regeneration
32
+ and a real human decision as the same three-way merge — which is how a generated
33
+ file gets hand-merged into a state matching neither branch.
34
+
35
+ So classify locally first, before resolving anything. Sort every conflicted path
36
+ into three classes, because the correct resolution differs per class and only one
37
+ of them is a judgement call:
38
+
39
+ | Class | What it is | Resolution |
40
+ |---|---|---|
41
+ | **generated** | a build output, an index, a compiled manifest — anything a generator writes from a source in the tree | re-run the generator. **Never mix hunks**, and note that a *clean* auto-merge of a generated file is still wrong: it can produce a file matching neither branch |
42
+ | **remeasured** | a baseline, budget, or ratchet number a CI gate compares against | re-run the measurement on the merged tree and record what it says. Two branches legitimately measured two different trees, so there is no side to take — and picking one is how a ratchet silently loosens |
43
+ | **authored** | prose, source, config a human wrote | a human decision — read both sides. This is what the rest of this skill is about |
44
+
45
+ Getting the class wrong is the expensive direction: hand-merging a generated
46
+ file, or picking a side on a measured one, both produce a plausible-looking file
47
+ that no branch ever had. If the project ships a tool that does this
48
+ classification, run it before touching the conflict; where it does not, the
49
+ three-way sort above is still the first step.
50
+
51
+ This is a checklist item, not a gate — nothing enforces it
52
+ (road-to-merge-hotspot-drawdown 4.3).
53
+
28
54
  ### 1. Understand the situation
29
55
 
30
56
  Before touching any conflict:
@@ -62,6 +62,14 @@ Focus on: attack surface, trusting user input, authorization gaps.
62
62
  → For PHP / Laravel specifics (auth helpers, mass assignment, Blade escaping, CSRF middleware): see guideline `docs/guidelines/php/security.md`.
63
63
  → For other stacks, follow the framework's hardening guide and the carve-outs above.
64
64
 
65
+ ### Crypto, password storage, certificates — route, do not guess
66
+
67
+ This skill carries no cryptographic parameter, key size, work factor, cipher
68
+ suite, or TLS version floor: such a value is authoritative-looking long after it stops
69
+ being true. Take it from <https://cheatsheetseries.owasp.org/> at the moment you
70
+ need it — never from memory, never from this file. Rationale and reopening
71
+ condition: [ADR-238](../../../docs/decisions/ADR-238-security-content-routes-to-external-authority.md).
72
+
65
73
  ### Validate
66
74
 
67
75
  - Verify all user input is validated at the boundary via the framework's primitive — never trust raw request data.
@@ -120,6 +120,17 @@ Worked example (fail-open): `if (!$gate->check($user)) { … }` wrapped in a
120
120
  grants access. Finding shape: Category *Insecure defaults*, Evidence the
121
121
  catch block `file:line`, Fix *fail closed — rethrow or deny on gate error*.
122
122
 
123
+ ### 3b. Out of scope — route, do not guess
124
+
125
+ The table above names vulnerability **classes**, which are stable. This package
126
+ carries no cryptographic parameter, key size, work factor, cipher suite, or TLS
127
+ version floor: a value copied here reads authoritative long after it stops being
128
+ true. Report the finding, route the fix to
129
+ <https://cheatsheetseries.owasp.org/> — Cryptographic Storage, Transport Layer
130
+ Security, Password Storage, XML External Entity Prevention — and never name a
131
+ value from memory. Rationale and reopening condition:
132
+ [ADR-238](../../../docs/decisions/ADR-238-security-content-routes-to-external-authority.md).
133
+
123
134
  ### 4. Framework-specific checks
124
135
 
125
136
  → Laravel-specific checks: see [`laravel`](../laravel/SKILL.md) § Security audit checks.
@@ -178,4 +189,4 @@ reaches it"). An audit that rejects nothing has usually skipped the gate.
178
189
 
179
190
  ## See also
180
191
 
181
- - [`docs/threat-model.md`](../../docs/threat-model.md) — package attack surface and trust boundary documentation.
192
+ - [`docs/threat-model.md`](../../../docs/threat-model.md) — package attack surface and trust boundary documentation.
@@ -39,7 +39,7 @@ schema_version: 1
39
39
  # CI guard: a release bump of `package.json` must update this value
40
40
  # in lockstep — see scripts/check_template_pin_drift.ts (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "14.7.0"
42
+ agent_config_version: "14.8.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -108,8 +108,8 @@ that was never a judgement call.
108
108
  - `interactive` — every gate fires as authored by its owning rule.
109
109
  **Not what an absent field means.** When the field is absent the mode is
110
110
  DERIVED from the invocation form (`roadmap-process-loop § 3a`):
111
- `process-full` and `/roadmap:next` derive `autonomous`, `process-phase`
112
- derives `phase-checkpoints`, `process-step` runs without a contract. The
111
+ `process-full` derives `autonomous`; `/roadmap:next` and `process-phase`
112
+ derive `phase-checkpoints`; `process-step` runs without a contract. The
113
113
  contract screen is still shown once and still carries "run interactive
114
114
  instead", so declaring nothing costs a keystroke, never control.
115
115
  - `phase-checkpoints` — the run halts at each phase boundary with a
@@ -129,6 +129,24 @@ that was never a judgement call.
129
129
  lint. Follow-up roadmaps (rule 17) inherit the parent's mode as the
130
130
  *suggested* option during creation but the question is always asked
131
131
  again.
132
+
133
+ **Companion field, same block — `depends:`.** Optional, and only
134
+ meaningful for a set run:
135
+
136
+ ```yaml
137
+ depends: [road-to-other-thing] # slugs, not paths
138
+ ```
139
+
140
+ A declared edge is authoritative and is never overridden by the
141
+ file-overlap heuristic the set contract also computes
142
+ ([`roadmap-process-loop § 3d`](../contexts/execution/roadmap-process-loop.md)).
143
+ The union of declared and inferred edges feeds exactly two decisions —
144
+ the order members run in, and whether two members may share a lane —
145
+ and nothing else. Declaring an edge that is not real costs serial
146
+ execution; missing a real one costs a collision, so the heuristic
147
+ resolves toward serial and a declaration is the cheap way to be right.
148
+ Absent means no declared dependency, never “independent”: the overlap
149
+ heuristic still runs.
132
150
  19. **Source-derived roadmaps carry a gap-table + provenance; internally
133
151
  originated roadmaps carry neither.** This rule fires **only** when a
134
152
  roadmap originates from an external input (a suggestion, a competitive
@@ -64,6 +64,7 @@ export const REGISTRY = [
64
64
  { name: 'roadmap:archive', disposition: 'delegate', synopsis: 'Archive completed roadmaps (PR-gate sweep).' },
65
65
  { name: 'gates', disposition: 'delegate', synopsis: 'Open decisions that need you, as actions — owner-filtered roadmap blockers; --all, --json, --reply, --pending (staged requires_confirmation actions).' },
66
66
  { name: 'capabilities:index', disposition: 'delegate', synopsis: 'Regenerate CAPABILITIES.yaml (the package coverage index); --check for CI.' },
67
+ { name: 'adr:effective', disposition: 'delegate', synopsis: "Effective state of one ADR: status, Decision verbatim, clauses its own amendments superseded, active amendments, axes, trigger state. Authorizes nothing." },
67
68
  { name: 'affected', disposition: 'delegate', synopsis: 'Artefacts related to <artefact> via the discovery relation-graph (BFS).' },
68
69
  { name: 'graph-explain', disposition: 'delegate', synopsis: 'Seed on a <concept>, expand 2 hops over the discovery relation-graph with a node budget.' },
69
70
  { name: 'benchmark', disposition: 'delegate', synopsis: 'Report context-token reduction vs the full always-loaded projection.' },
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import {
8
8
  prune_stale_session_states,
9
9
  session_state_file,
10
10
  update_json_under_lock
11
- } from "./chunk-6EOCNQAM.js";
11
+ } from "./chunk-E4XIZDIB.js";
12
12
 
13
13
  // src/scripts/_lib/secret_detector.ts
14
14
  var ENTROPY_MIN_TOKEN_LENGTH = 20;
@@ -10,6 +10,11 @@ import {
10
10
  claude_plugin_snapshot_version,
11
11
  codex_plugin_identity
12
12
  } from "./chunk-FTAISGDQ.js";
13
+ import {
14
+ DEFAULT_GITATTRIBUTES,
15
+ SECTION_HEADER,
16
+ _is_source_repo
17
+ } from "./chunk-M2DPGFZ4.js";
13
18
  import {
14
19
  DEFAULT_PROJECTS_ROOT,
15
20
  aggregateByBucket,
@@ -21,15 +26,10 @@ import {
21
26
  projectStoreSlug,
22
27
  scanTranscripts,
23
28
  weightedInputUnits
24
- } from "./chunk-FBKL6JWT.js";
29
+ } from "./chunk-MMSGVZKV.js";
25
30
  import {
26
31
  git_common_dir
27
- } from "./chunk-6EOCNQAM.js";
28
- import {
29
- DEFAULT_GITATTRIBUTES,
30
- SECTION_HEADER,
31
- _is_source_repo
32
- } from "./chunk-M2DPGFZ4.js";
32
+ } from "./chunk-E4XIZDIB.js";
33
33
  import {
34
34
  DEFAULT_DEPLOY_ROOTS,
35
35
  MANAGED_SIGNATURE,
@@ -38,7 +38,7 @@ import {
38
38
  global_deploy_inventory_exports,
39
39
  manifest_path,
40
40
  read_manifest
41
- } from "./chunk-GJ5BVHXM.js";
41
+ } from "./chunk-PMEKGDED.js";
42
42
  import {
43
43
  read_lockfile
44
44
  } from "./chunk-T7L2QK3K.js";
@@ -47,6 +47,12 @@ import {
47
47
  excludedRuleBasenames,
48
48
  ruleScopeFromSettings
49
49
  } from "./chunk-G23AT6GD.js";
50
+ import {
51
+ require_dist
52
+ } from "./chunk-OY53J6II.js";
53
+ import {
54
+ resolvePackageRoot
55
+ } from "./chunk-MCJYCQPF.js";
50
56
  import {
51
57
  PROJECT_ROOT_ENV,
52
58
  ProjectRootError,
@@ -59,12 +65,6 @@ import {
59
65
  event4u_root,
60
66
  resolve_with_fallback
61
67
  } from "./chunk-NDJLNC6Q.js";
62
- import {
63
- require_dist
64
- } from "./chunk-OY53J6II.js";
65
- import {
66
- resolvePackageRoot
67
- } from "./chunk-MCJYCQPF.js";
68
68
  import {
69
69
  __export,
70
70
  __toESM
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-YM4GZDJG.js";
6
6
  import {
7
7
  main
8
- } from "./chunk-PPQO4NGR.js";
8
+ } from "./chunk-6RJA2F5A.js";
9
9
  import {
10
10
  RULE_SOURCE_REL
11
11
  } from "./chunk-B2ERU2VA.js";
@@ -24,7 +24,7 @@ import {
24
24
  save_inventory,
25
25
  upsert_tool,
26
26
  write_manifest
27
- } from "./chunk-GJ5BVHXM.js";
27
+ } from "./chunk-PMEKGDED.js";
28
28
  import {
29
29
  check_version,
30
30
  classify_mismatch,
@@ -46,6 +46,9 @@ import {
46
46
  ruleFileArrives,
47
47
  ruleScopeFromSettings
48
48
  } from "./chunk-G23AT6GD.js";
49
+ import {
50
+ require_dist
51
+ } from "./chunk-OY53J6II.js";
49
52
  import {
50
53
  find_project_root_with_anchor,
51
54
  load_agent_settings
@@ -56,9 +59,6 @@ import {
56
59
  migrate_legacy_namespace,
57
60
  write_target
58
61
  } from "./chunk-NDJLNC6Q.js";
59
- import {
60
- require_dist
61
- } from "./chunk-OY53J6II.js";
62
62
  import {
63
63
  __toESM
64
64
  } from "./chunk-J55WI3RR.js";
@@ -0,0 +1,36 @@
1
+ import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
+
3
+ // src/scripts/_lib/scan_scope.ts
4
+ import process from "node:process";
5
+ var DeadScopeError = class extends Error {
6
+ gate;
7
+ constructor(gate, message) {
8
+ super(message);
9
+ this.name = "DeadScopeError";
10
+ this.gate = gate;
11
+ }
12
+ };
13
+ function assertScanned(opts) {
14
+ if (opts.scanned > 0) {
15
+ return;
16
+ }
17
+ if (opts.allowEmpty !== void 0 && opts.allowEmpty.trim() !== "") {
18
+ return;
19
+ }
20
+ const roots = opts.roots.length > 0 ? opts.roots.join(", ") : "(no root declared)";
21
+ throw new DeadScopeError(
22
+ opts.gate,
23
+ `${opts.gate}: scanned 0 ${opts.units} under ${roots} \u2014 the scan scope is dead or the root moved. A gate that read nothing has not passed. Repoint the root (prefer the shared resolver in _lib/agent_src.ts), or declare a justified \`allowEmpty\` reason if an empty corpus is genuinely expected.`
24
+ );
25
+ }
26
+ function reportScanned(opts, write = process.stdout.write.bind(process.stdout)) {
27
+ assertScanned(opts);
28
+ write(`scanned: ${String(opts.scanned)}
29
+ `);
30
+ }
31
+
32
+ export {
33
+ DeadScopeError,
34
+ assertScanned,
35
+ reportScanned
36
+ };
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
3
  statePathFor
4
- } from "./chunk-JZ4NR2TW.js";
4
+ } from "./chunk-7PRE6ZV2.js";
5
5
  import {
6
6
  git_common_dir
7
- } from "./chunk-6EOCNQAM.js";
7
+ } from "./chunk-E4XIZDIB.js";
8
8
 
9
9
  // src/scripts/_lib/envelope_grounding.ts
10
10
  import { execFileSync } from "node:child_process";
@@ -92,7 +92,8 @@ function readLastVerify(root, session_id) {
92
92
  const command = typeof rec["command"] === "string" ? rec["command"] : null;
93
93
  if (!command) return null;
94
94
  const at = typeof rec["at"] === "string" ? rec["at"] : "unknown time";
95
- return `${command} @ ${at} (no exit status is recorded anywhere)`.slice(0, MAX_FIELD_CHARS);
95
+ const flat = `${command} @ ${at} (no exit status is recorded anywhere)`.replace(/\s+/g, " ").trim();
96
+ return flat.slice(0, MAX_FIELD_CHARS);
96
97
  } catch {
97
98
  return null;
98
99
  }
@@ -1,4 +1,8 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
+ import {
3
+ DeadScopeError,
4
+ assertScanned
5
+ } from "./chunk-I3EIN2YG.js";
2
6
  import {
3
7
  require_dist
4
8
  } from "./chunk-OY53J6II.js";
@@ -458,29 +462,6 @@ function _pyJsonScalarAscii(value) {
458
462
  return _pyJsonScalar(value);
459
463
  }
460
464
 
461
- // src/scripts/_lib/scan_scope.ts
462
- var DeadScopeError = class extends Error {
463
- gate;
464
- constructor(gate, message) {
465
- super(message);
466
- this.name = "DeadScopeError";
467
- this.gate = gate;
468
- }
469
- };
470
- function assertScanned(opts) {
471
- if (opts.scanned > 0) {
472
- return;
473
- }
474
- if (opts.allowEmpty !== void 0 && opts.allowEmpty.trim() !== "") {
475
- return;
476
- }
477
- const roots = opts.roots.length > 0 ? opts.roots.join(", ") : "(no root declared)";
478
- throw new DeadScopeError(
479
- opts.gate,
480
- `${opts.gate}: scanned 0 ${opts.units} under ${roots} \u2014 the scan scope is dead or the root moved. A gate that read nothing has not passed. Repoint the root (prefer the shared resolver in _lib/agent_src.ts), or declare a justified \`allowEmpty\` reason if an empty corpus is genuinely expected.`
481
- );
482
- }
483
-
484
465
  // src/scripts/lint_hidden_unicode.ts
485
466
  var CHECK = "hidden-unicode";
486
467
  var _BIDI = /* @__PURE__ */ new Set([