@event4u/agent-config 9.24.0 → 9.26.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 +136 -0
- package/README.md +1 -1
- package/dist/agent-src/commands/analyze/conformance.md +182 -0
- package/dist/agent-src/commands/analyze/inbox.md +33 -2
- package/dist/agent-src/commands/review/changes.md +6 -5
- package/dist/agent-src/commands/roadmap/next.md +194 -0
- package/dist/agent-src/commands/roadmap.md +12 -4
- package/dist/agent-src/contexts/execution/subagent-routing.md +4 -1
- package/dist/agent-src/rules/decision-revisit-gate.md +2 -0
- package/dist/agent-src/rules/delegation-policy.md +3 -2
- package/dist/agent-src/rules/design-fidelity.md +17 -1
- package/dist/agent-src/rules/design-review-after-ui-write.md +116 -0
- package/dist/agent-src/rules/evaluator-independence.md +111 -0
- package/dist/agent-src/rules/session-canary.md +15 -1
- package/dist/agent-src/rules/settings-ask-protocol.md +176 -0
- package/dist/agent-src/rules/token-budget-discipline.md +6 -3
- package/dist/agent-src/rules/ui-audit-gate.md +3 -0
- package/dist/agent-src/rules/user-interaction.md +23 -0
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +1 -1
- package/dist/agent-src/skills/recursive-verification/SKILL.md +13 -0
- package/dist/agent-src/skills/rule-writing/SKILL.md +45 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +114 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/cli/registry.js +1 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/cmd_route_audit.js +4 -1
- package/dist/cli-delegate/cmd_route_explain.js +4 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +146 -28
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +16 -11
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +12 -7
- package/dist/hooks/dispatch.js +1501 -511
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/router.json +1 -1
- package/dist/server/nicknameResolver.js +116 -0
- package/dist/server/nicknameResolver.js.map +1 -0
- package/dist/server/routes/ping.js +29 -11
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/shared/interactiveContext.js +73 -0
- package/dist/shared/interactiveContext.js.map +1 -0
- package/dist/shared/nicknamePrefill.js +59 -0
- package/dist/shared/nicknamePrefill.js.map +1 -0
- package/dist/shared/settingsAsks.js +128 -0
- package/dist/shared/settingsAsks.js.map +1 -0
- package/dist/shared/settingsConsent.js +93 -0
- package/dist/shared/settingsConsent.js.map +1 -0
- package/package.json +1 -1
- package/src/config/agents-paths.yml +15 -0
- package/src/config/evaluator-budgets.json +68 -68
- package/src/config/gate-coverage.yml +131 -5
- package/src/config/gate-violation-baselines.json +11 -0
- package/src/scripts/_cli/cmd_route_audit.ts +4 -1
- package/src/scripts/_cli/cmd_route_explain.ts +9 -1
- package/src/scripts/_dispatch.bash +12 -0
- package/src/scripts/ai-video/stitch.sh +27 -9
- package/src/scripts/before_complete_hook.ts +146 -5
- package/src/scripts/bench_ab_v2_run.ts +272 -16
- package/src/scripts/bench_ab_v2_stats.ts +156 -3
- package/src/scripts/check_completion_review.ts +80 -3
- package/src/scripts/check_corpus_staleness.ts +692 -0
- package/src/scripts/check_depth_budget.ts +295 -0
- package/src/scripts/check_gate_coverage.ts +67 -0
- package/src/scripts/check_hook_bundle_freshness.ts +183 -0
- package/src/scripts/conformance_scan.ts +422 -0
- package/src/scripts/dispatch_r2_reviewer.ts +31 -2
- package/src/scripts/git_authorization_hook.ts +328 -0
- package/src/scripts/hook_manifest.yaml +69 -9
- package/src/scripts/hooks/block_no_verify.ts +3 -1
- package/src/scripts/hooks/block_unauthorized_git.ts +371 -0
- package/src/scripts/hooks/concern_registry.ts +8 -0
- package/src/scripts/hooks/design_slop_hook.ts +13 -1
- package/src/scripts/hooks/dispatch_hook.ts +97 -2
- package/src/scripts/hooks/evidence_independence.ts +368 -0
- package/src/scripts/language_mirror_hook.ts +456 -0
- package/src/scripts/lint_abstraction_thresholds.ts +41 -8
- package/src/scripts/lint_agents_layout.ts +2 -0
- package/src/scripts/lint_decision_impact.ts +246 -0
- package/src/scripts/lint_example_fences.ts +609 -0
- package/src/scripts/lint_hook_manifest.ts +29 -0
- package/src/scripts/lint_rule_interactions.ts +90 -0
- package/src/scripts/lint_rule_migration_ledger.ts +480 -0
- package/src/scripts/lint_skill_descriptions.ts +86 -2
- package/src/scripts/memory_learn_hook.ts +109 -6
- package/src/scripts/pr_url_reminder_hook.ts +17 -2
- package/src/scripts/release.ts +38 -1
- package/src/scripts/schemas/review-findings.schema.json +99 -0
- package/src/scripts/schemas/rule.schema.json +10 -0
- package/src/shared/interactiveContext.ts +98 -0
- package/src/shared/nicknamePrefill.ts +96 -0
- package/src/shared/settingsAsks.ts +176 -0
- package/src/shared/settingsConsent.ts +136 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Bootstrap shim for the event4u agent-config suite. This plugin ships ONLY the dispatcher hooks plus one install-pointer skill — ALL content (skills, rules, commands) is installed via `npx -y @event4u/agent-config init`, which writes the file projection AND registers the same hooks in ~/.claude/settings.json. DEPRECATED as a content channel; kept so the marketplace listing stays discoverable and existing installs keep working hooks.",
|
|
9
|
-
"version": "9.
|
|
9
|
+
"version": "9.26.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/CHANGELOG.md
CHANGED
|
@@ -303,6 +303,142 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
303
303
|
> that forces a new era split (`# Era: 9.24.x`, etc.) — see
|
|
304
304
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
305
305
|
|
|
306
|
+
## [9.26.0](https://github.com/event4u-app/agent-config/compare/9.25.0...9.26.0) (2026-08-07)
|
|
307
|
+
|
|
308
|
+
### Release highlights
|
|
309
|
+
|
|
310
|
+
<!-- Curated head: fill before merge, keep it under 10 lines, and leave `_none_` where it is genuinely the answer. The generated log below is unchanged. -->
|
|
311
|
+
- **Behaviour changes:** _auto-derived, rewrite before merge:_ rule/schema diffs, breaking commits or removed public surface in 17c3716, 27e6649, f352c7a, 8fdcc7b, 581dfa0, a396442 +1 more.
|
|
312
|
+
- **Default changes + migration:** _auto-derived, rewrite before merge:_ commits naming a default, migration or migrate in 3bae006.
|
|
313
|
+
- **Security and correctness:** _none_
|
|
314
|
+
- **Honest nulls:** _auto-derived, rewrite before merge:_ commits carrying an honest-null marker in cefcd37.
|
|
315
|
+
- **Known limitations:** _none_
|
|
316
|
+
|
|
317
|
+
### Features
|
|
318
|
+
|
|
319
|
+
* **memory:** gate the session-end learning hook on the recorded consent ([79a6aa8](https://github.com/event4u-app/agent-config/commit/79a6aa892f2d772254ef91c0b19cb93007da2d70))
|
|
320
|
+
* **settings:** resolve the nickname prefill through the documented chain ([e98a7cb](https://github.com/event4u-app/agent-config/commit/e98a7cba5cc76ccd62ab7b84be4b2a2b749d96e5))
|
|
321
|
+
* **bench:** price the cost axis per token bucket in the v2 report ([b234b3e](https://github.com/event4u-app/agent-config/commit/b234b3e7076d401f9201610545528097e84490f2))
|
|
322
|
+
* **bench:** preserve per-trial workspaces and add a real no-network selftest ([12df43b](https://github.com/event4u-app/agent-config/commit/12df43bc6e1ac2be87e62128accc00d1296db991))
|
|
323
|
+
* **bench:** add the package-ladder and bare-principle arms ([c3f1c31](https://github.com/event4u-app/agent-config/commit/c3f1c316c270aa166ed3164165a02c083345319c))
|
|
324
|
+
* **gates:** assert every authored skill REACHES the Claude tree, not just that it parses ([c42b1ad](https://github.com/event4u-app/agent-config/commit/c42b1adb2afb237d45182a59af705ef64eb4fe66))
|
|
325
|
+
* **settings:** make the provenance stamp decide something, and condense the rule ([27e6649](https://github.com/event4u-app/agent-config/commit/27e664999a8894e1b146a556fa114daee3511676))
|
|
326
|
+
* **settings:** normalise the just-in-time settings ask and compute its budget ([f352c7a](https://github.com/event4u-app/agent-config/commit/f352c7aea72beab330f1abd625041f7bcb46df3a))
|
|
327
|
+
* **language-mirror:** fall back to the system locale on a terse first prompt ([784ee64](https://github.com/event4u-app/agent-config/commit/784ee64307086a28e9657b0a0ae5ae2fac94309a))
|
|
328
|
+
* **gates:** fail the pre-push chain when the running hook bundle predates its sources ([a829a7c](https://github.com/event4u-app/agent-config/commit/a829a7cb50fac0fe02fc4af80c7083a890312913))
|
|
329
|
+
* **review:** one findings schema both tracks validate against ([581dfa0](https://github.com/event4u-app/agent-config/commit/581dfa079ee333edcba920b464a19c11542db4c8))
|
|
330
|
+
* **review:** make prompt provenance and author-vs-reviewer checkable ([cefcd37](https://github.com/event4u-app/agent-config/commit/cefcd37ae8a4b0ee5e42ee0514e9b09399f98870))
|
|
331
|
+
* **gate:** enforce the corpus refresh cadence and open the CSVs nobody opened ([c946769](https://github.com/event4u-app/agent-config/commit/c9467697823b5a0b82d8f3e4b4d34c8bd8fe813f))
|
|
332
|
+
* **rules:** close the write side of the UI loop ([a396442](https://github.com/event4u-app/agent-config/commit/a396442da455b6e02afddacc87c462f80b198499))
|
|
333
|
+
* **hooks:** per-concern tools: filter, applied by the dispatcher ([28a8f96](https://github.com/event4u-app/agent-config/commit/28a8f96ee413083e3f451f1bf49b5588483ae9aa))
|
|
334
|
+
* **gate:** ratchet gate_self_test adoption as a shrink-only non-adopter count ([99e3656](https://github.com/event4u-app/agent-config/commit/99e36560c208904510bc0525122ad2549d697bea))
|
|
335
|
+
* **agents:** create agents/proposals — the directory seven artefacts pointed at ([64717a9](https://github.com/event4u-app/agent-config/commit/64717a96680cc70d3de7c4dd9a853d92952fbb53))
|
|
336
|
+
* **design:** route a capability URL and a design-system dir to design-fidelity ([85b1562](https://github.com/event4u-app/agent-config/commit/85b1562c193f9eaf6ed63f8692f79e0b9d2eda3f))
|
|
337
|
+
* **commands:** add /roadmap:next — screen, select, then ship a roadmap ([459211c](https://github.com/event4u-app/agent-config/commit/459211cadcc7682f26c8b081ac6c87c2a4712e46))
|
|
338
|
+
|
|
339
|
+
### Bug Fixes
|
|
340
|
+
|
|
341
|
+
* **release:** stop masking every push failure as a moved remote ref ([47faa19](https://github.com/event4u-app/agent-config/commit/47faa19e080bbe27c3cd8dfeb0bee67a10acfbf8))
|
|
342
|
+
* **settings:** retract an overclaim and take the fork off the request path ([2139b17](https://github.com/event4u-app/agent-config/commit/2139b174c8e4afad3f7294bfc196ad0e79801cec))
|
|
343
|
+
* **settings:** close the R2 review findings on the prefill and the pins ([fe35e63](https://github.com/event4u-app/agent-config/commit/fe35e63702661f34e55345c5c4fa7e2cd6b34fa4))
|
|
344
|
+
* **tests:** narrow the ARMS lookup for noUncheckedIndexedAccess ([3b3e1b1](https://github.com/event4u-app/agent-config/commit/3b3e1b14ee8bb588004410d901835d35649b2544))
|
|
345
|
+
* **roadmaps:** make solution-minimalism report its own spend gate ([3d9ceef](https://github.com/event4u-app/agent-config/commit/3d9ceef6153ed6df35292bf74d9a48b1e83dd982))
|
|
346
|
+
* **cli:** both routing commands were dead through the shipped binary ([c2b38e2](https://github.com/event4u-app/agent-config/commit/c2b38e2263e9b27401ea38bb2782b0d7532c4527))
|
|
347
|
+
* **gates:** emit the freshness verdict via stdout, not console.log ([fa06eea](https://github.com/event4u-app/agent-config/commit/fa06eea18620e671f3c09ac877cb094c6022c0aa))
|
|
348
|
+
* **hooks:** design-slop read the tool fields where the dispatcher does not put them ([3ca190f](https://github.com/event4u-app/agent-config/commit/3ca190f0b2364c785f791dc106086209d86f1983))
|
|
349
|
+
* **ci:** close the five surfaces this change reds, one of them a real gate gap ([c7c25ff](https://github.com/event4u-app/agent-config/commit/c7c25ffc1eac8f8b73776c5655f35af42f9eb9f7))
|
|
350
|
+
* **conformance:** round 2 — the shipped gates did not fire, and four reasons were wrong ([8fdcc7b](https://github.com/event4u-app/agent-config/commit/8fdcc7b9d2de7c3239af7e809e86933e41cf44e2))
|
|
351
|
+
* **gate:** close the word-form count hole in lint_abstraction_thresholds ([d5c294c](https://github.com/event4u-app/agent-config/commit/d5c294c4cf547696bf452a385ea0935b191283cd))
|
|
352
|
+
* **video:** refuse --crossfade instead of silently delivering a hard cut ([6eea400](https://github.com/event4u-app/agent-config/commit/6eea4000146d1de2c8de703e046aa8072e9e4d96))
|
|
353
|
+
* **ci:** close the two count-and-fixture surfaces a new sub-command reds ([f8d9566](https://github.com/event4u-app/agent-config/commit/f8d9566ca568c45c18cb2ec62d72492eaecf7570))
|
|
354
|
+
|
|
355
|
+
### Reverts
|
|
356
|
+
|
|
357
|
+
* **gates:** drop the skill-completeness check — its premise is false and it blocks the release ([5473a92](https://github.com/event4u-app/agent-config/commit/5473a925e13989fc6ba382145ab20c485dae2995))
|
|
358
|
+
|
|
359
|
+
### Documentation
|
|
360
|
+
|
|
361
|
+
* **roadmap:** reopen step 4.2 — the prefill shipped, the ask did not ([5fb6c05](https://github.com/event4u-app/agent-config/commit/5fb6c053a587440749af0b6d29b37c00fc1c03d1))
|
|
362
|
+
* **roadmap:** close Phases 4 and 5 from evidence, re-encode the blocked steps ([2c70288](https://github.com/event4u-app/agent-config/commit/2c70288e372254be0cd0a23acfdd76f3b1318cb1))
|
|
363
|
+
* **bench:** add the ab-v2 reproduce path and the Phase-3 pre-registration ([bb0ad48](https://github.com/event4u-app/agent-config/commit/bb0ad480deddf4ee3739d80d795a6c8546de9ffc))
|
|
364
|
+
* cancel P1.2 on measurement, close the P2.1 null-scope check ([81fce51](https://github.com/event4u-app/agent-config/commit/81fce5189b88b9d64051cbf9d58e4322a783ca57))
|
|
365
|
+
* **roadmap:** close P1.3 and P5.3 with their measured departures ([1c101db](https://github.com/event4u-app/agent-config/commit/1c101db9a045cc0b298927ef3d8d2622e8ec6625))
|
|
366
|
+
* **roadmap:** close the four verified-fix steps of the inbox harvest ([b0cd2f4](https://github.com/event4u-app/agent-config/commit/b0cd2f4773b0f9a97135ecc5ff2432e0ae2513ab))
|
|
367
|
+
|
|
368
|
+
### Refactoring
|
|
369
|
+
|
|
370
|
+
* **settings:** point the four bespoke ask sites at the shared protocol ([17c3716](https://github.com/event4u-app/agent-config/commit/17c371647eddc5945dbbcc03e1cb2e698c63cf55))
|
|
371
|
+
|
|
372
|
+
### Tests
|
|
373
|
+
|
|
374
|
+
* **settings:** pin the ask-shaped settings migration ([3bae006](https://github.com/event4u-app/agent-config/commit/3bae00676daa7ae0e8c195fd2b6e00a2a25c60bb))
|
|
375
|
+
|
|
376
|
+
### Chores
|
|
377
|
+
|
|
378
|
+
* **ci:** retrigger pull_request event delivery ([a20088f](https://github.com/event4u-app/agent-config/commit/a20088f328d533827fac1de60273a3f206aceef1))
|
|
379
|
+
* **roadmaps:** record the cost endpoint against the Endpoints step ([a3585ad](https://github.com/event4u-app/agent-config/commit/a3585ad7152b64fbe250ea294d242ab5a86a693b))
|
|
380
|
+
* **roadmaps:** close the thresholds step, record the reproducibility residue ([39a93d3](https://github.com/event4u-app/agent-config/commit/39a93d33a3e69b132f643fe97380e2a7804d1acb))
|
|
381
|
+
* **reports:** refresh the originality report round 2 left stale ([a65f929](https://github.com/event4u-app/agent-config/commit/a65f92939bae5b170a3cf58464579ccf774c5a9e))
|
|
382
|
+
* regenerate router.json after the trunk merge ([0af3e84](https://github.com/event4u-app/agent-config/commit/0af3e8425106ccc395be79f66faacc3f8b45a5b1))
|
|
383
|
+
* regenerate router.json and the routed-rule count for the new rule ([f262b83](https://github.com/event4u-app/agent-config/commit/f262b83fdba6b71905b03333fd93f657ae0905a3))
|
|
384
|
+
* regenerate the tool trees and indices for the new rule ([2788940](https://github.com/event4u-app/agent-config/commit/2788940cc55326e125c2000ad3cf0e90fe2b5c51))
|
|
385
|
+
* **router:** regenerate router.json for the two new design-fidelity triggers ([20aee52](https://github.com/event4u-app/agent-config/commit/20aee52cb1d440d77ec4b9e712164addfd0a83de))
|
|
386
|
+
|
|
387
|
+
### Other
|
|
388
|
+
|
|
389
|
+
* **settings:** record the R2 findings, and announce the Iron Law 3 recurrence ([63e2f09](https://github.com/event4u-app/agent-config/commit/63e2f094c57c77ec18ecf4cf449e7682597be29f))
|
|
390
|
+
|
|
391
|
+
Tests: 11643 (+200 since 9.25.0)
|
|
392
|
+
|
|
393
|
+
## [9.25.0](https://github.com/event4u-app/agent-config/compare/9.24.0...9.25.0) (2026-08-06)
|
|
394
|
+
|
|
395
|
+
### Release highlights
|
|
396
|
+
|
|
397
|
+
<!-- Curated head: fill before merge, keep it under 10 lines, and leave `_none_` where it is genuinely the answer. The generated log below is unchanged. -->
|
|
398
|
+
- **Behaviour changes:** _auto-derived, rewrite before merge:_ rule/schema diffs, breaking commits or removed public surface in 5d653e2, 00018c4, 20bb411, cb0917d, 7641291.
|
|
399
|
+
- **Default changes + migration:** _auto-derived, rewrite before merge:_ commits naming a default, migration or migrate in bd45f62, 11a699c.
|
|
400
|
+
- **Security and correctness:** _none_
|
|
401
|
+
- **Honest nulls:** _auto-derived, rewrite before merge:_ commits carrying an honest-null marker in 5d653e2, 20bb411.
|
|
402
|
+
- **Known limitations:** _none_
|
|
403
|
+
|
|
404
|
+
### Features
|
|
405
|
+
|
|
406
|
+
* **commands:** add /analyze:conformance, and clear the six red CI checks ([5d653e2](https://github.com/event4u-app/agent-config/commit/5d653e2ecfa1b697c7c44a94087d0248debea3d9))
|
|
407
|
+
* **cli:** add conformance:behavior — replay transcripts through the shipped gates ([7c7a9dc](https://github.com/event4u-app/agent-config/commit/7c7a9dc10d83245b7507cbcef348e52901968c45))
|
|
408
|
+
* **hooks:** gate the language pin, git authorization and evaluator independence ([582a9f3](https://github.com/event4u-app/agent-config/commit/582a9f37b97d3cb1f6474963fea576349f6b0b5d))
|
|
409
|
+
* **authoring:** a decision-impact class, and four conventions Phase 2 owed ([7641291](https://github.com/event4u-app/agent-config/commit/7641291866dac3c24deaf4cea1827a6c24d63edb))
|
|
410
|
+
* **ledger:** record what the rule-body migration kept, folded, and lost ([11a699c](https://github.com/event4u-app/agent-config/commit/11a699cda54c2eca55899af25435aee80a6b7f75))
|
|
411
|
+
* **skill-writing:** two conventions that travel with the artifact ([9120d0f](https://github.com/event4u-app/agent-config/commit/9120d0ffd1d8ea7140f9cc393e34c595dba29085))
|
|
412
|
+
* **interactions:** close the register over the set it claims to cover ([654837b](https://github.com/event4u-app/agent-config/commit/654837b1b8c3e33a43539d256bcd18592ade6621))
|
|
413
|
+
* **descriptions:** reject a description that argues against its siblings ([9889529](https://github.com/event4u-app/agent-config/commit/9889529bcb34e604fd2bedde3ab2abf98e3f6a40))
|
|
414
|
+
* **gates:** lint authored examples, and cap the on-demand depth layer ([c2c2d91](https://github.com/event4u-app/agent-config/commit/c2c2d917cede10eab64144ac9302857f6edd80b5))
|
|
415
|
+
|
|
416
|
+
### Bug Fixes
|
|
417
|
+
|
|
418
|
+
* **rules:** clear a lint regression and register the new rule in the router ([00018c4](https://github.com/event4u-app/agent-config/commit/00018c4315269467b856713ec056f2c61982ca33))
|
|
419
|
+
* **roadmap:** drop the duplicate un-archived copy ([532200a](https://github.com/event4u-app/agent-config/commit/532200ac94966a83df0a97e0c48e02e240d72c3f))
|
|
420
|
+
* **hooks:** stop counting vacuous verification as evidence ([7696e54](https://github.com/event4u-app/agent-config/commit/7696e5453b770d200e2925204cba4e08f323ca7b))
|
|
421
|
+
* **ci:** bump the gate-script population and regenerate the artefact index ([21a16f1](https://github.com/event4u-app/agent-config/commit/21a16f15a04c1c6b515832ddf56a951fce6b16d1))
|
|
422
|
+
* **schema:** insert decision_impact surgically instead of reserialising the file ([cb0917d](https://github.com/event4u-app/agent-config/commit/cb0917daca7080b2e5446473b6e420b854554d5e))
|
|
423
|
+
|
|
424
|
+
### Documentation
|
|
425
|
+
|
|
426
|
+
* **analyze-conformance:** adopt the checked-out-branch default from its sibling ([bd45f62](https://github.com/event4u-app/agent-config/commit/bd45f62e52edb86fd4e22cc8828a819a60788ae7))
|
|
427
|
+
* **analyze-inbox:** run in the checked-out branch; worktree only on request ([aaf29b4](https://github.com/event4u-app/agent-config/commit/aaf29b466e4df37236e32fd588077c83f51f5483))
|
|
428
|
+
* **roadmap:** record the conformance audit and close its roadmap ([1616c23](https://github.com/event4u-app/agent-config/commit/1616c236d4e47b0bc77af6521a2db23419760f75))
|
|
429
|
+
* **rules:** add evaluator-independence, and downgrade two enforcement claims ([20bb411](https://github.com/event4u-app/agent-config/commit/20bb4116d7d0a2dec198d4e08ade4371ff802b8a))
|
|
430
|
+
* **roadmap:** close and archive the authoring-discipline roadmap ([977ebd9](https://github.com/event4u-app/agent-config/commit/977ebd9a3771eaeb42b631cd9660bf4b16d0d1ae))
|
|
431
|
+
* **roadmap:** record the second execution pass and its three measured departures ([ec1acfb](https://github.com/event4u-app/agent-config/commit/ec1acfbfc5718a2197bdc9ca5cdcc091ba3a410c))
|
|
432
|
+
* **roadmap:** close Phase 4 steps 1-3 and 5, with what changed from the plan ([87d4bd2](https://github.com/event4u-app/agent-config/commit/87d4bd24e5f2b7f1e7429ba016e7d473aec00fa7))
|
|
433
|
+
|
|
434
|
+
### Chores
|
|
435
|
+
|
|
436
|
+
* **docs:** regenerate the artefact index for /analyze:conformance ([d1f8f25](https://github.com/event4u-app/agent-config/commit/d1f8f25105b8df849160b2b62e78a84f555d8222))
|
|
437
|
+
* **docs:** regenerate the artefact index for the new rule ([910555a](https://github.com/event4u-app/agent-config/commit/910555a46f5345352e8dd6a950a370ac53019fa1))
|
|
438
|
+
* **sync:** regenerate the projections for the two authoring skills ([44f037e](https://github.com/event4u-app/agent-config/commit/44f037efc1d92d07f6efed30ecb4cb612b2bb55a))
|
|
439
|
+
|
|
440
|
+
Tests: 11443 (+134 since 9.24.0)
|
|
441
|
+
|
|
306
442
|
## [9.24.0](https://github.com/event4u-app/agent-config/compare/9.23.0...9.24.0) (2026-08-06)
|
|
307
443
|
|
|
308
444
|
### Release highlights
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [](https://www.npmjs.com/package/@event4u/agent-config) [](https://glama.ai/mcp/servers/event4u-app/agent-config) [](https://mcptoplist.com/server/glama%2Fevent4u-app%2Fagent-config)
|
|
6
6
|
|
|
7
|
-
[](dist/agent-src/skills/) [](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](dist/agent-src/personas/advisors/)
|
|
8
8
|
|
|
9
9
|
**Try it in 30 seconds** — drop one read-only subagent into any repo and watch it gate "done": `@production-validator check this branch is actually done`. No wizard, no lock-in, nothing else installed — the [30-second wedge ↓](#quickstart) is the whole first step. Start at the proof, not the catalog: **[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/)**.
|
|
10
10
|
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: high
|
|
3
|
+
name: analyze-conformance
|
|
4
|
+
pack: analysis-workbench
|
|
5
|
+
tier: 2
|
|
6
|
+
visibility: internal
|
|
7
|
+
sub: conformance
|
|
8
|
+
cluster: analyze
|
|
9
|
+
skills: [roadmap-writing, decision-review, ai-council, subagent-orchestration]
|
|
10
|
+
description: Audit recent local sessions for rule violations — deterministic scan plus subagent passes over the transcripts, root-cause each class, and emit a roadmap that mechanises what is mechanisable.
|
|
11
|
+
argument-hint: "[--limit N] [--scan-only] [--no-council] [--no-roadmap] [--worktree]"
|
|
12
|
+
suggestion:
|
|
13
|
+
eligible: false
|
|
14
|
+
rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /analyze:conformance name; not independently suggested (surface-consolidation)."
|
|
15
|
+
workspaces:
|
|
16
|
+
- agent-config-maintainer
|
|
17
|
+
packs:
|
|
18
|
+
- meta
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# analyze-conformance
|
|
22
|
+
|
|
23
|
+
Answer one question about this agent, from evidence rather than impression:
|
|
24
|
+
**where did it not work the way its own rules require, and why?**
|
|
25
|
+
|
|
26
|
+
The sibling [`/analyze:inbox`](../inbox/command.md) turns somebody else's opinion
|
|
27
|
+
into a roadmap. This turns **the agent's own recorded behaviour** into one. The
|
|
28
|
+
input is not a document — it is the local transcript store, which is the only
|
|
29
|
+
place the agent's actual conduct is written down.
|
|
30
|
+
|
|
31
|
+
## Why this is not just a grep
|
|
32
|
+
|
|
33
|
+
The first version of this audit measured 303 language violations. The real
|
|
34
|
+
number was 626. The detector had inherited the very defect it was measuring:
|
|
35
|
+
it classified "the most recent user-role entry", and slash-command and skill
|
|
36
|
+
bodies arrive in the `user` role. It scored the worst session — 136 of 136
|
|
37
|
+
assistant turns in the wrong language — at **3**.
|
|
38
|
+
|
|
39
|
+
That is the shape of this whole job. A conformance audit is measuring a
|
|
40
|
+
measurement failure, so every instrument has to be checked against a case whose
|
|
41
|
+
answer is already known before its number is believed.
|
|
42
|
+
|
|
43
|
+
## Where the work happens — the checked-out branch, unless asked otherwise
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
RUN IN THE CURRENT BRANCH. NEVER CREATE A BRANCH, A WORKTREE, OR A PR
|
|
47
|
+
ON THIS COMMAND'S OWN AUTHORITY. A WORKTREE ONLY ON AN EXPLICIT ASK.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Same default and same reasoning as [`/analyze:inbox`](../inbox/command.md): the
|
|
51
|
+
roadmap and the findings land in the branch already checked out, as ordinary
|
|
52
|
+
uncommitted changes for the operator to review. This command authorizes
|
|
53
|
+
**analysis and authoring** — not a git shape
|
|
54
|
+
([`scope-control`](../../../../rules/scope-control.md) § Git operations).
|
|
55
|
+
|
|
56
|
+
An isolated worktree runs only when the invocation asks for one — `--worktree`,
|
|
57
|
+
or the operator saying so in the prompt. Then follow
|
|
58
|
+
[`using-git-worktrees`](../../../../skills/using-git-worktrees/SKILL.md),
|
|
59
|
+
including its seeding allow/deny list.
|
|
60
|
+
|
|
61
|
+
One difference from its sibling worth knowing: a **full** run of this command
|
|
62
|
+
(subagent fan-out plus council) is long enough that a worktree can genuinely
|
|
63
|
+
earn its price by keeping a multi-file diff off the current branch. It still
|
|
64
|
+
does not take one by itself — that is the operator's call, and `--worktree` is
|
|
65
|
+
how they make it.
|
|
66
|
+
|
|
67
|
+
## Procedure
|
|
68
|
+
|
|
69
|
+
### 1 — Scan (deterministic, always)
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
agent-config conformance:behavior --limit <N> --output conformance-report.json
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Replays the local transcript store through the four **mechanised** checks:
|
|
76
|
+
language pin, git authorization, vacuous evidence, evidence steering. Every
|
|
77
|
+
classifier is imported from the gate it measures, so the scan and the gate
|
|
78
|
+
cannot drift apart.
|
|
79
|
+
|
|
80
|
+
This is the floor, not the audit. It sees only what already has a gate — which
|
|
81
|
+
is exactly why it is trustworthy and exactly why it is not sufficient.
|
|
82
|
+
|
|
83
|
+
`--scan-only` stops here.
|
|
84
|
+
|
|
85
|
+
### 2 — Read the transcripts (subagent fan-out)
|
|
86
|
+
|
|
87
|
+
The scan cannot see a rule that has no gate: an ask handed over as a trailing
|
|
88
|
+
parenthetical, a completion claimed on the wrong evidence, a root cause named
|
|
89
|
+
and then not fixed. Those need reading.
|
|
90
|
+
|
|
91
|
+
- Build per-session digests (user turns + assistant prose, tool calls stripped)
|
|
92
|
+
so a session fits in a subagent's context.
|
|
93
|
+
- Group them into balanced batches by size, and dispatch **one subagent per
|
|
94
|
+
batch, in parallel**, each returning findings in a fixed shape:
|
|
95
|
+
rule · session · timestamp · **verbatim quote** · what happened · why
|
|
96
|
+
(hypothesis) · severity.
|
|
97
|
+
- A finding without a quote is discarded. The quote is what makes the finding
|
|
98
|
+
auditable by someone who was not in the session.
|
|
99
|
+
|
|
100
|
+
Highest-signal evidence, in order: a user turn correcting the agent; a user turn
|
|
101
|
+
expressing frustration; the agent's own retro sentence admitting a mistake. Any
|
|
102
|
+
of those three outranks a rule read in the abstract, because it is ground truth
|
|
103
|
+
about what actually cost the user something.
|
|
104
|
+
|
|
105
|
+
### 3 — Root-cause each class, then pick a mechanism
|
|
106
|
+
|
|
107
|
+
Group findings into classes and, for each, ask the only question that matters:
|
|
108
|
+
|
|
109
|
+
> The rule was in context, at full strength, when this happened. So what would
|
|
110
|
+
> a prose change buy?
|
|
111
|
+
|
|
112
|
+
Usually nothing. Choose exactly one per class:
|
|
113
|
+
|
|
114
|
+
| Choice | When |
|
|
115
|
+
|---|---|
|
|
116
|
+
| **Deterministic gate** | The failure is a state transition observable at a hook event (a git op, a claim of verification, a dispatch). Name the event and whether it warns or blocks. |
|
|
117
|
+
| **Context injection** | The context is genuinely missing a *fact*, not attention — the language pin is the worked example. |
|
|
118
|
+
| **Rule-text change** | The rule is wrong or its trigger is mis-stated, not merely unheeded. |
|
|
119
|
+
| **Nothing** | Accept the rate and **delete the claim that it is enforced.** |
|
|
120
|
+
|
|
121
|
+
Reach for a mechanism only where the failure mode was measured. A gate for a
|
|
122
|
+
class nobody was harmed by is the mechanism-without-a-failure-mode this repo
|
|
123
|
+
forbids.
|
|
124
|
+
|
|
125
|
+
### 4 — Council (unless `--no-council`)
|
|
126
|
+
|
|
127
|
+
Route the class list and the proposed mechanisms to the AI council. Ask it
|
|
128
|
+
directly for the strongest objection to your own plan, and ask which parts are
|
|
129
|
+
theatre. Record where you **depart** from its verdict and why — a council
|
|
130
|
+
recommendation adopted without a stated reason is not a review, it is cover.
|
|
131
|
+
|
|
132
|
+
### 5 — Roadmap (unless `--no-roadmap`)
|
|
133
|
+
|
|
134
|
+
Per [`roadmap-writing`](../../../../skills/roadmap-writing/SKILL.md). The
|
|
135
|
+
roadmap must carry:
|
|
136
|
+
|
|
137
|
+
- the measured numbers, with the method that produced them;
|
|
138
|
+
- any number that was **corrected during the audit**, published beside the
|
|
139
|
+
correction rather than silently replaced;
|
|
140
|
+
- one phase per mechanised class;
|
|
141
|
+
- a final phase of **honest downgrades** — every enforcement claim the audit
|
|
142
|
+
proved false;
|
|
143
|
+
- a table of classes deliberately **not** fixed, each with its reason.
|
|
144
|
+
|
|
145
|
+
### 6 — Validate the instruments before trusting them
|
|
146
|
+
|
|
147
|
+
Before the roadmap is believed, run every new detector and gate against:
|
|
148
|
+
|
|
149
|
+
- **the worst known case** — if it does not fire there, the instrument is wrong,
|
|
150
|
+
not the corpus;
|
|
151
|
+
- **this session's own behaviour** — the audit that produced this command found
|
|
152
|
+
its own evidence-steering gate flagging six of its own analysis subagents.
|
|
153
|
+
|
|
154
|
+
## Flags
|
|
155
|
+
|
|
156
|
+
| Flag | Effect |
|
|
157
|
+
|---|---|
|
|
158
|
+
| `--limit N` | How many recent sessions to read (default 30). |
|
|
159
|
+
| `--scan-only` | Step 1 only — the deterministic report, no subagents, no spend. |
|
|
160
|
+
| `--no-council` | Skip step 4. Record that it was skipped. |
|
|
161
|
+
| `--no-roadmap` | Findings only; no artefact authored. |
|
|
162
|
+
| `--worktree` | Opt into an isolated worktree. Off by default — see above. |
|
|
163
|
+
|
|
164
|
+
## Do NOT
|
|
165
|
+
|
|
166
|
+
- Trust a number this audit computed without validating the instrument (§ 6).
|
|
167
|
+
- Ship a stronger adjective as a fix for a rule that already failed at full
|
|
168
|
+
strength.
|
|
169
|
+
- Let the scan cover a class that has no gate — a report over un-mechanised
|
|
170
|
+
rules reads as enforcement and is not.
|
|
171
|
+
- Fold execution into this command. It audits and it plans; running the roadmap
|
|
172
|
+
is [`/roadmap:process-full`](../../../meta/roadmap/process-full/command.md) on
|
|
173
|
+
a later turn, per `scope-control` § Authoring vs. implementation.
|
|
174
|
+
|
|
175
|
+
## See also
|
|
176
|
+
|
|
177
|
+
- [`conformance:behavior`](../../../../scripts/conformance_scan.ts) — the
|
|
178
|
+
deterministic half, and the only part that runs without a model.
|
|
179
|
+
- [`/analyze:inbox`](../inbox/command.md) — same output shape, external input.
|
|
180
|
+
- [`evaluator-independence`](../../../../rules/evaluator-independence.md) —
|
|
181
|
+
binds step 2: this command dispatches evaluators, so its own prompts are
|
|
182
|
+
subject to it.
|
|
@@ -8,7 +8,7 @@ sub: inbox
|
|
|
8
8
|
cluster: analyze
|
|
9
9
|
skills: [learning-to-rule-or-skill, roadmap-writing, decision-review]
|
|
10
10
|
description: Analyze a dropped inbox artifact (review, prompt, spec, transcript) against the current tree, verify every claim it makes, map what survives onto this suite's artefact types, emit a roadmap each.
|
|
11
|
-
argument-hint: "[<file> | <dir>] [--triage-only] [--no-roadmap] [--keep-inbox]"
|
|
11
|
+
argument-hint: "[<file> | <dir>] [--triage-only] [--no-roadmap] [--keep-inbox] [--worktree]"
|
|
12
12
|
suggestion:
|
|
13
13
|
eligible: false
|
|
14
14
|
rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /analyze:inbox name; not independently suggested (surface-consolidation)."
|
|
@@ -40,7 +40,35 @@ still true.
|
|
|
40
40
|
|
|
41
41
|
Flags: `--triage-only` stops after Phase 2 (no deep analysis, no roadmap) ·
|
|
42
42
|
`--no-roadmap` analyses but emits findings instead of roadmaps ·
|
|
43
|
-
`--keep-inbox` skips the `tmp.old/` move (default is to move — see Phase 6)
|
|
43
|
+
`--keep-inbox` skips the `tmp.old/` move (default is to move — see Phase 6) ·
|
|
44
|
+
`--worktree` opts into an isolated worktree (see below; off by default).
|
|
45
|
+
|
|
46
|
+
## Where the work happens — the checked-out branch, unless asked otherwise
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
RUN IN THE CURRENT BRANCH. NEVER CREATE A BRANCH, A WORKTREE, OR A PR
|
|
50
|
+
ON THIS COMMAND'S OWN AUTHORITY. A WORKTREE ONLY ON AN EXPLICIT ASK.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Default: the branch already checked out. The roadmaps, the findings, and the
|
|
54
|
+
`agents/tmp.old/` move land there as ordinary uncommitted changes for the
|
|
55
|
+
operator to review. This command authorizes **analysis and authoring** — not a
|
|
56
|
+
git shape ([`scope-control`](../../../../rules/scope-control.md) § Git
|
|
57
|
+
operations: branch and worktree creation are permission-gated, spike and
|
|
58
|
+
throwaway branches included).
|
|
59
|
+
|
|
60
|
+
An isolated worktree runs only when the invocation asks for one — `--worktree`,
|
|
61
|
+
or the operator saying so in the prompt. Then follow
|
|
62
|
+
[`using-git-worktrees`](../../../../skills/using-git-worktrees/SKILL.md),
|
|
63
|
+
including its seeding allow/deny list.
|
|
64
|
+
|
|
65
|
+
Why the current branch is the right default here: this command is read-heavy and
|
|
66
|
+
its whole output is a few markdown files plus a rename. Nothing it writes is a
|
|
67
|
+
generated tree, so there is no build to isolate — while a worktree costs a fresh
|
|
68
|
+
`node_modules`, a copied `.augment`, and a family of stale-projection failures
|
|
69
|
+
that only exist because the checkout is a second one. Isolation earns its price
|
|
70
|
+
when a run churns generated output or must keep a large diff off the current
|
|
71
|
+
branch; an inbox triage does neither.
|
|
44
72
|
|
|
45
73
|
## The Iron Law
|
|
46
74
|
|
|
@@ -188,3 +216,6 @@ each one is and why it is spent, and let the user remove it.
|
|
|
188
216
|
execution authorization
|
|
189
217
|
([`scope-control`](../../../../rules/scope-control.md) § Authoring vs.
|
|
190
218
|
implementation).
|
|
219
|
+
- Spin up a branch, a worktree, or a PR because the run feels large. Scope is
|
|
220
|
+
the operator's call; without `--worktree` or an explicit ask, the work stays
|
|
221
|
+
in the checked-out branch.
|
|
@@ -136,11 +136,12 @@ Read `subagents.adversarial_council` from `.agent-settings.yml` (default
|
|
|
136
136
|
|
|
137
137
|
- `off` (default): skip silently.
|
|
138
138
|
- `ask`: when the diff is explicitly high-risk (security, tenant, migration,
|
|
139
|
-
public API), offer it
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
public API), offer it — in the shape
|
|
140
|
+
[`settings-ask-protocol`](../../../../rules/settings-ask-protocol.md) fixes,
|
|
141
|
+
which supplies the four slots, the one-question budget, and the storage line
|
|
142
|
+
(not persisted: `subagents.adversarial_council` is class C). What only this
|
|
143
|
+
command knows is *why now*: the diff is high-risk, and the offer is a paid
|
|
144
|
+
distinct-model red-team for finding coverage against the five internal judges.
|
|
144
145
|
- `on`: run it automatically on a high-risk diff.
|
|
145
146
|
|
|
146
147
|
When run, dispatch the
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: roadmap-next
|
|
4
|
+
pack: product-basic
|
|
5
|
+
tier: 2
|
|
6
|
+
visibility: internal
|
|
7
|
+
cluster: roadmap
|
|
8
|
+
sub: next
|
|
9
|
+
skills: [roadmap-management, agent-docs-writing, ai-council, subagent-orchestration, worktree-lifecycle, git-workflow]
|
|
10
|
+
description: Pick the next executable roadmap and carry it to a reviewable PR — live remote screen, five-disqualifier feasibility pass, council on the pick, process-full, chunked commits, PR, CI fix.
|
|
11
|
+
argument-hint: "[--worktree] [roadmap]"
|
|
12
|
+
suggestion:
|
|
13
|
+
eligible: false
|
|
14
|
+
rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /cluster:sub name; not independently suggested (surface-consolidation)."
|
|
15
|
+
workspaces:
|
|
16
|
+
- agent-config-maintainer
|
|
17
|
+
packs:
|
|
18
|
+
- meta
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# /roadmap:next
|
|
22
|
+
|
|
23
|
+
Selection + delivery scope of the [`/roadmap`](../roadmap.md) cluster.
|
|
24
|
+
The three `process-*` subs take a roadmap **as given** and vary the
|
|
25
|
+
scope inside it. `/roadmap:next` varies the **selection**: it screens
|
|
26
|
+
what is actually executable right now, picks one, pins the scope to
|
|
27
|
+
`full`, and carries the run to a PR that is ready for review.
|
|
28
|
+
|
|
29
|
+
One invocation = one roadmap = one branch = one PR.
|
|
30
|
+
|
|
31
|
+
## Instructions
|
|
32
|
+
|
|
33
|
+
### 1. Live remote screen — before any selection reasoning
|
|
34
|
+
|
|
35
|
+
Selection reads live state, never memory, a dashboard count, or an
|
|
36
|
+
earlier fetch (per [`direct-answers`](../../rules/direct-answers.md)
|
|
37
|
+
Iron Law 2 and [`roadmap-process-loop § 1`](../../contexts/execution/roadmap-process-loop.md#1-resolve-roadmap)).
|
|
38
|
+
Run as ONE block:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
git fetch origin --prune
|
|
42
|
+
git ls-tree --name-only origin/main agents/roadmaps/ # still active?
|
|
43
|
+
git ls-tree --name-only origin/main agents/roadmaps/archive/ # already closed?
|
|
44
|
+
gh pr list --state open --json number,title,headRefName # in flight?
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Excluded from the candidate set: `template.md`, `archive/`,
|
|
48
|
+
`skipped/`, `later/`, anything with `status: draft` whose promotion
|
|
49
|
+
trigger has not fired, and any roadmap whose slug matches an **open
|
|
50
|
+
PR's** branch — that one is taken.
|
|
51
|
+
|
|
52
|
+
A roadmap completes by an archive move **inside its merging PR**, so a
|
|
53
|
+
local checkout can show a closed roadmap as open. That is why this step
|
|
54
|
+
precedes the screen instead of following it.
|
|
55
|
+
|
|
56
|
+
### 2. Screen the survivors — five disqualifiers
|
|
57
|
+
|
|
58
|
+
For each candidate read its frontmatter, its open-step count, and every
|
|
59
|
+
`### blocker:` section. Disqualify on:
|
|
60
|
+
|
|
61
|
+
1. **A blocker whose resolution is a human ACTION** — install a secret,
|
|
62
|
+
click a repo setting, recruit a participant, approve spend, let a
|
|
63
|
+
date pass. Apply the action-vs-judgement split: a blocker that is a
|
|
64
|
+
**judgement call** (which option, whether to reopen a recorded
|
|
65
|
+
decision, is the evidence sufficient) is **not** a disqualifier — it
|
|
66
|
+
is council-resolvable in step 3.
|
|
67
|
+
2. **Spend** — paid bench or API runs, an npm publish, a public release.
|
|
68
|
+
3. **A date that must pass.**
|
|
69
|
+
4. **A kernel-rule edit** — [`scope-control`](../../rules/scope-control.md)
|
|
70
|
+
demands its own PR plus a ≥24 h soak, so it cannot close in this run
|
|
71
|
+
(kernel list: [`kernel-membership`](../../../docs/contracts/kernel-membership.md)).
|
|
72
|
+
5. **Phases gated on a spike verdict** that may return FINDING.
|
|
73
|
+
|
|
74
|
+
Also check the **family concurrency cap** (`lint_roadmap_family_cap`) —
|
|
75
|
+
adding a third `road-to-<family>-*` roadmap without archiving one reds
|
|
76
|
+
CI.
|
|
77
|
+
|
|
78
|
+
Partial disqualification is normal and does **not** drop a candidate:
|
|
79
|
+
record which phases the blocker actually blocks. A roadmap whose blocker
|
|
80
|
+
touches one deferred step still has a full working set.
|
|
81
|
+
|
|
82
|
+
Delegate the per-candidate reads to parallel subagents when more than
|
|
83
|
+
three candidates survive step 1 (per
|
|
84
|
+
[`delegation-policy`](../../rules/delegation-policy.md)); each returns
|
|
85
|
+
`{slug, open_steps, blockers[], disqualifiers[], blocked_phases[]}` and
|
|
86
|
+
nothing else.
|
|
87
|
+
|
|
88
|
+
### 3. Rank, then let the council settle a genuine tie
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
RANK BY DEFECT SEVERITY, NEVER BY PERCENT-DONE OR STEP COUNT.
|
|
92
|
+
A ROADMAP THAT REPAIRS A LIVE, USER-VISIBLE WRONGNESS OUTRANKS
|
|
93
|
+
ONE THAT MOVES MORE CHECKBOXES. PICKING BY CHECKBOX COUNT IS THE
|
|
94
|
+
GOODHART MOVE THIS PACKAGE'S OWN DISCIPLINE FORBIDS.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- **Exactly one survivor, or one that dominates** → take it, state the
|
|
98
|
+
one-line reason inline, proceed. Do not ask
|
|
99
|
+
([`no-cheap-questions`](../../rules/no-cheap-questions.md)).
|
|
100
|
+
- **Two or more with a real trade-off** → put the pick to the AI
|
|
101
|
+
council with the constraint set stated (survivors, open-step counts,
|
|
102
|
+
blocked phases, severity read) per
|
|
103
|
+
[`ai-council`](../../skills/ai-council/SKILL.md). Check the council's
|
|
104
|
+
decisive premise against the tree before adopting it — twice recorded,
|
|
105
|
+
the load-bearing claim was falsifiable in-repo.
|
|
106
|
+
- **Zero survivors** → emit the screen table (candidate · open steps ·
|
|
107
|
+
disqualifier) and stop. Suggest
|
|
108
|
+
[`/roadmap:create`](create.md) or a blocker the user can clear. Do
|
|
109
|
+
not manufacture a pick.
|
|
110
|
+
|
|
111
|
+
### 4. Workspace — branch by default, worktree on request
|
|
112
|
+
|
|
113
|
+
Default: a feature branch in the current checkout, named
|
|
114
|
+
`feat/<roadmap-slug>` per [`commit-conventions`](../../rules/commit-conventions.md).
|
|
115
|
+
Propose the name once and proceed; no naming menu.
|
|
116
|
+
|
|
117
|
+
`--worktree` — or the user saying "in a worktree" — routes through
|
|
118
|
+
[`/worktree:create`](../../worktree/create.md) in full, including its
|
|
119
|
+
[seeding allow/deny list](../../../skills/using-git-worktrees/SKILL.md#4b-seed-the-worktree--allow--deny-list).
|
|
120
|
+
Two entries decide whether the run's gate results mean anything:
|
|
121
|
+
dependencies are symlinked or installed **fully**, and
|
|
122
|
+
`.agent-settings.yml` is **never** copied — absent IS the CI shape.
|
|
123
|
+
|
|
124
|
+
### 5. Run it
|
|
125
|
+
|
|
126
|
+
Hand off to [`/roadmap:process-full`](process-full.md) and follow it
|
|
127
|
+
verbatim, including its Iron Law — full is full, and its five halt
|
|
128
|
+
conditions are the only stops. The execution contract from
|
|
129
|
+
[`roadmap-execution-contract`](../../contexts/execution/roadmap-execution-contract.md)
|
|
130
|
+
is derived once; the user's single Accept covers branch, chunked
|
|
131
|
+
commits, push to that branch, and the PR.
|
|
132
|
+
|
|
133
|
+
### 6. Deliver
|
|
134
|
+
|
|
135
|
+
Chunked commits (the agent picks the split — never ask how, per
|
|
136
|
+
[`commit-policy`](../../rules/commit-policy.md)), then
|
|
137
|
+
[`/create-pr`](../../git/pr/create.md): archival sweep, preflight,
|
|
138
|
+
push, PR opened **ready for review** (not draft).
|
|
139
|
+
|
|
140
|
+
### 7. CI — fix locally, honour the push gate
|
|
141
|
+
|
|
142
|
+
Follow [`/create-pr` § 4d](../../git/pr/create.md): wait for the
|
|
143
|
+
verdict in the background, never end the turn on "CI is running",
|
|
144
|
+
diagnose and fix in the working tree on red, within the N=3 budget per
|
|
145
|
+
[`autonomous-execution`](../../rules/autonomous-execution.md).
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
THE LOCAL FIX IS AUTONOMOUS. THE RE-PUSH IS NOT.
|
|
149
|
+
git push IS A HARD-FLOOR TRIGGER AND THE FLOOR REFUSES A STANDING
|
|
150
|
+
DIRECTIVE BY CONSTRUCTION. FIX, VERIFY, THEN SAY WHAT IS READY.
|
|
151
|
+
NEVER INVENT A PER-PR "STANDING MANDATE" WORKAROUND.
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
The cheapest CI-fix loop is the one that never fires: run `task
|
|
155
|
+
preflight` before the first push, which runs the same
|
|
156
|
+
`skill_linter --changed` gate CI does.
|
|
157
|
+
|
|
158
|
+
### 8. Report
|
|
159
|
+
|
|
160
|
+
Roadmap picked + the screen result that picked it · steps closed /
|
|
161
|
+
total · commits · PR URL as the literal last line (per
|
|
162
|
+
[`direct-answers`](../../rules/direct-answers.md) reply-close) · CI
|
|
163
|
+
verdict · anything left open with its reason.
|
|
164
|
+
|
|
165
|
+
## Iron Law — screened, never guessed
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
NEVER PICK A ROADMAP FROM MEMORY, A DASHBOARD COUNT, OR AN EARLIER SESSION.
|
|
169
|
+
THE THREE LIVE CHECKS RUN FIRST, EVERY INVOCATION.
|
|
170
|
+
A ROADMAP CLAIMED "IN FLIGHT", "MERGED", OR "DONE" WITHOUT A LIVE CHECK
|
|
171
|
+
AT THE MOMENT OF THE CLAIM IS AN UNVERIFIED CLAIM.
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Rules
|
|
175
|
+
|
|
176
|
+
- **One roadmap per invocation.** Never chain a second pick after the
|
|
177
|
+
first closes — the user re-invokes.
|
|
178
|
+
- **The screen is reported, not just used.** State which candidates were
|
|
179
|
+
disqualified and on what, so the pick is auditable.
|
|
180
|
+
- **A judgement-call blocker goes to the council, not to the user.**
|
|
181
|
+
A human-ACTION blocker goes to neither — it disqualifies.
|
|
182
|
+
- **No merge, ever.** The PR is opened for review; merging is
|
|
183
|
+
conversational ([`non-destructive-by-default`](../../rules/non-destructive-by-default.md)).
|
|
184
|
+
- All rules from [`/roadmap:process-full`](process-full.md#rules) apply
|
|
185
|
+
unchanged to the execution half.
|
|
186
|
+
|
|
187
|
+
## See also
|
|
188
|
+
|
|
189
|
+
- [`/roadmap`](../roadmap.md) — cluster orchestrator
|
|
190
|
+
- [`/roadmap:process-full`](process-full.md) — the execution half this wraps
|
|
191
|
+
- [`/roadmap:ai-council`](ai-council.md) — challenge a roadmap before running it
|
|
192
|
+
- [`/worktree:create`](../../worktree/create.md) — the `--worktree` path
|
|
193
|
+
- [`/create-pr`](../../git/pr/create.md) — delivery + the CI wait contract
|
|
194
|
+
- [`roadmap-process-loop`](../../contexts/execution/roadmap-process-loop.md) — canonical mechanics
|