@event4u/agent-config 9.26.0 → 9.28.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 (252) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/AGENTS.md +12 -11
  3. package/CHANGELOG.md +134 -207
  4. package/README.md +1 -1
  5. package/dist/agent-src/commands/analyze/conformance.md +43 -0
  6. package/dist/agent-src/commands/roadmap/next.md +65 -3
  7. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -3
  8. package/dist/agent-src/rules/active-remediation.md +2 -0
  9. package/dist/agent-src/rules/analysis-skill-routing.md +2 -0
  10. package/dist/agent-src/rules/architecture.md +2 -0
  11. package/dist/agent-src/rules/artifact-drafting-protocol.md +2 -0
  12. package/dist/agent-src/rules/artifact-engagement-recording.md +6 -1
  13. package/dist/agent-src/rules/augment-edit-discipline.md +2 -0
  14. package/dist/agent-src/rules/autonomous-execution.md +3 -1
  15. package/dist/agent-src/rules/brand-consistency.md +2 -0
  16. package/dist/agent-src/rules/brand-source-of-truth.md +35 -6
  17. package/dist/agent-src/rules/broken-access-control.md +2 -0
  18. package/dist/agent-src/rules/cli-output-handling.md +2 -0
  19. package/dist/agent-src/rules/code-comment-discipline.md +2 -0
  20. package/dist/agent-src/rules/code-provenance.md +2 -0
  21. package/dist/agent-src/rules/command-suggestion-policy.md +2 -0
  22. package/dist/agent-src/rules/commit-conventions.md +2 -0
  23. package/dist/agent-src/rules/communication-through-line.md +2 -0
  24. package/dist/agent-src/rules/content-quoting-floor.md +2 -0
  25. package/dist/agent-src/rules/context-hygiene.md +13 -1
  26. package/dist/agent-src/rules/copilot-routing.md +2 -0
  27. package/dist/agent-src/rules/council-availability.md +93 -0
  28. package/dist/agent-src/rules/cross-source-consistency.md +5 -0
  29. package/dist/agent-src/rules/decision-revisit-gate.md +2 -0
  30. package/dist/agent-src/rules/delegation-policy.md +31 -5
  31. package/dist/agent-src/rules/design-fidelity.md +5 -0
  32. package/dist/agent-src/rules/design-review-after-ui-write.md +4 -0
  33. package/dist/agent-src/rules/devcontainer-routing.md +2 -0
  34. package/dist/agent-src/rules/doc-screenshot-hygiene.md +2 -0
  35. package/dist/agent-src/rules/docker-commands.md +2 -0
  36. package/dist/agent-src/rules/domain-adoption-policy.md +2 -0
  37. package/dist/agent-src/rules/domain-safety-disclaimer.md +2 -0
  38. package/dist/agent-src/rules/domain-safety-pii.md +2 -0
  39. package/dist/agent-src/rules/domain-safety-retention.md +2 -0
  40. package/dist/agent-src/rules/downstream-changes.md +2 -0
  41. package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
  42. package/dist/agent-src/rules/evaluator-independence.md +14 -3
  43. package/dist/agent-src/rules/external-code-graph-interop.md +4 -1
  44. package/dist/agent-src/rules/external-reference-deep-dive.md +2 -0
  45. package/dist/agent-src/rules/fast-path-marker-visibility.md +2 -0
  46. package/dist/agent-src/rules/finance-safety-floor.md +3 -1
  47. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
  48. package/dist/agent-src/rules/git-history-discipline.md +3 -1
  49. package/dist/agent-src/rules/guidelines.md +2 -0
  50. package/dist/agent-src/rules/history-discipline.md +5 -1
  51. package/dist/agent-src/rules/icon-consistency.md +2 -0
  52. package/dist/agent-src/rules/image-likeness-and-rights.md +2 -0
  53. package/dist/agent-src/rules/improve-before-implement.md +2 -0
  54. package/dist/agent-src/rules/invite-challenge.md +2 -0
  55. package/dist/agent-src/rules/laravel-routing.md +2 -0
  56. package/dist/agent-src/rules/laravel-translations.md +2 -0
  57. package/dist/agent-src/rules/legal-safety-floor.md +3 -1
  58. package/dist/agent-src/rules/lethal-trifecta-guard.md +2 -0
  59. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +2 -0
  60. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +2 -0
  61. package/dist/agent-src/rules/markdown-safe-codeblocks.md +2 -0
  62. package/dist/agent-src/rules/media-governance-routing.md +2 -0
  63. package/dist/agent-src/rules/media-sync-ground-truth.md +2 -0
  64. package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
  65. package/dist/agent-src/rules/missing-tool-handling.md +2 -0
  66. package/dist/agent-src/rules/model-recommendation.md +2 -0
  67. package/dist/agent-src/rules/no-attribution-footers.md +2 -0
  68. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +2 -0
  69. package/dist/agent-src/rules/no-pr-progress-comments.md +5 -1
  70. package/dist/agent-src/rules/no-roadmap-references.md +2 -0
  71. package/dist/agent-src/rules/notes-first-reasoning.md +2 -0
  72. package/dist/agent-src/rules/onboarding-gate.md +5 -1
  73. package/dist/agent-src/rules/output-discipline.md +2 -0
  74. package/dist/agent-src/rules/package-ci-checks.md +2 -0
  75. package/dist/agent-src/rules/persona-governance.md +2 -0
  76. package/dist/agent-src/rules/php-coding.md +2 -0
  77. package/dist/agent-src/rules/prefer-enums-over-literals.md +2 -0
  78. package/dist/agent-src/rules/preservation-guard.md +2 -0
  79. package/dist/agent-src/rules/provider-lifecycle-discipline.md +2 -0
  80. package/dist/agent-src/rules/question-not-instruction.md +2 -0
  81. package/dist/agent-src/rules/reviewer-awareness.md +2 -0
  82. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -1
  83. package/dist/agent-src/rules/roadmap-progress-sync.md +2 -0
  84. package/dist/agent-src/rules/role-mode-adherence.md +3 -1
  85. package/dist/agent-src/rules/rule-type-governance.md +2 -0
  86. package/dist/agent-src/rules/runtime-safety.md +2 -0
  87. package/dist/agent-src/rules/scale-discipline.md +5 -1
  88. package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
  89. package/dist/agent-src/rules/security-sensitive-stop.md +2 -0
  90. package/dist/agent-src/rules/self-repair-loop.md +103 -0
  91. package/dist/agent-src/rules/senior-engineering-discipline.md +2 -0
  92. package/dist/agent-src/rules/session-canary.md +62 -19
  93. package/dist/agent-src/rules/settings-ask-protocol.md +4 -0
  94. package/dist/agent-src/rules/size-enforcement.md +2 -0
  95. package/dist/agent-src/rules/skill-improvement-trigger.md +2 -0
  96. package/dist/agent-src/rules/skill-quality.md +2 -0
  97. package/dist/agent-src/rules/slash-command-routing-policy.md +2 -0
  98. package/dist/agent-src/rules/source-confidentiality.md +2 -0
  99. package/dist/agent-src/rules/source-discovery-gate.md +2 -0
  100. package/dist/agent-src/rules/source-of-truth.md +2 -0
  101. package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -0
  102. package/dist/agent-src/rules/strategy-safety-floor.md +3 -1
  103. package/dist/agent-src/rules/symfony-routing.md +2 -0
  104. package/dist/agent-src/rules/think-before-action.md +2 -0
  105. package/dist/agent-src/rules/token-budget-discipline.md +5 -1
  106. package/dist/agent-src/rules/token-efficiency.md +2 -0
  107. package/dist/agent-src/rules/token-optimizer-maintenance.md +2 -0
  108. package/dist/agent-src/rules/tool-safety.md +7 -1
  109. package/dist/agent-src/rules/ui-audit-gate.md +4 -0
  110. package/dist/agent-src/rules/untrusted-input-defense.md +2 -0
  111. package/dist/agent-src/rules/upstream-proposal.md +2 -0
  112. package/dist/agent-src/rules/user-interaction.md +2 -0
  113. package/dist/agent-src/rules/user-interrupt-priority.md +2 -0
  114. package/dist/agent-src/skills/adversarial-review/SKILL.md +1 -1
  115. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  116. package/dist/agent-src/skills/performance-analysis/SKILL.md +1 -1
  117. package/dist/agent-src/skills/persona-improvement/SKILL.md +1 -1
  118. package/dist/agent-src/skills/project-analyzer/SKILL.md +1 -1
  119. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  120. package/dist/agent-src/skills/sequential-thinking/SKILL.md +1 -1
  121. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -1
  122. package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  123. package/dist/agent-src/templates/AGENTS.md +6 -10
  124. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  125. package/dist/cli/registry.js +9 -0
  126. package/dist/cli/registry.js.map +1 -1
  127. package/dist/cli-delegate/chunk-22GCIJ2O.js +270 -0
  128. package/dist/cli-delegate/{chunk-BSLUHV2F.js → chunk-2BE5I2MN.js} +156 -141
  129. package/dist/cli-delegate/{chunk-AIIUU73N.js → chunk-7OMQCH4V.js} +1 -1
  130. package/dist/cli-delegate/{chunk-HJ6DAJHR.js → chunk-GB2FSUEE.js} +57 -7
  131. package/dist/cli-delegate/{chunk-WR6GTRHJ.js → chunk-JXARCGVN.js} +3 -3
  132. package/dist/cli-delegate/{chunk-SJQMJI7M.js → chunk-PQSAQKHW.js} +467 -305
  133. package/dist/cli-delegate/chunk-REKCMYOU.js +2991 -0
  134. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  135. package/dist/cli-delegate/cmd_brand_status.js +134 -0
  136. package/dist/cli-delegate/cmd_conformance.js +7 -7
  137. package/dist/cli-delegate/cmd_converge.js +3 -3
  138. package/dist/cli-delegate/cmd_doctor.js +4 -4
  139. package/dist/cli-delegate/cmd_explain.js +80 -330
  140. package/dist/cli-delegate/cmd_export.js +5 -5
  141. package/dist/cli-delegate/cmd_fleet.js +3 -3
  142. package/dist/cli-delegate/cmd_handoff.js +2 -2
  143. package/dist/cli-delegate/cmd_mcp_available.js +433 -0
  144. package/dist/cli-delegate/cmd_migrate.js +3 -3
  145. package/dist/cli-delegate/cmd_packs_active.js +153 -0
  146. package/dist/cli-delegate/cmd_preflight.js +1 -1
  147. package/dist/cli-delegate/cmd_prune.js +5 -5
  148. package/dist/cli-delegate/cmd_route_audit.js +8 -8
  149. package/dist/cli-delegate/cmd_route_explain.js +4 -4
  150. package/dist/cli-delegate/cmd_settings_get.js +272 -0
  151. package/dist/cli-delegate/cmd_settings_migrate.js +5 -5
  152. package/dist/cli-delegate/cmd_settings_set.js +7 -2967
  153. package/dist/cli-delegate/cmd_sync.js +5 -5
  154. package/dist/cli-delegate/cmd_uninstall.js +5 -5
  155. package/dist/cli-delegate/cmd_update.js +4 -4
  156. package/dist/cli-delegate/cmd_upgrade.js +4 -4
  157. package/dist/cli-delegate/cmd_validate.js +5 -5
  158. package/dist/cli-delegate/cmd_versions.js +4 -4
  159. package/dist/discovery/deprecation-report.md +1 -1
  160. package/dist/discovery/discovery-manifest.json +184 -124
  161. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  162. package/dist/discovery/discovery-manifest.summary.md +3 -3
  163. package/dist/discovery/orphan-report.md +1 -1
  164. package/dist/discovery/packs.json +7 -5
  165. package/dist/discovery/trust-report.md +11 -11
  166. package/dist/discovery/workspaces.json +6 -4
  167. package/dist/hooks/dispatch.js +9080 -5701
  168. package/dist/install/install.mjs +698 -508
  169. package/dist/mcp/registry-manifest.json +3 -3
  170. package/dist/mcp/server.json +2 -2
  171. package/dist/mcp/server.mjs +698 -437
  172. package/dist/router.json +1 -1
  173. package/dist/scripts/_lib/agent_settings.js +80 -15
  174. package/dist/scripts/_lib/agent_settings.js.map +1 -1
  175. package/dist/scripts/condense.js +33 -2
  176. package/dist/scripts/condense.js.map +1 -1
  177. package/dist/server/io/yamlIO.js +85 -0
  178. package/dist/server/io/yamlIO.js.map +1 -1
  179. package/dist/server/routes/settings.js +1 -12
  180. package/dist/server/routes/settings.js.map +1 -1
  181. package/dist/server/routes/wizard.js +52 -2
  182. package/dist/server/routes/wizard.js.map +1 -1
  183. package/dist/shared/settingsCarveOut.js +118 -0
  184. package/dist/shared/settingsCarveOut.js.map +1 -0
  185. package/dist/shared/settingsSurface.js +7 -1
  186. package/dist/shared/settingsSurface.js.map +1 -1
  187. package/dist/ui/assets/index-DmR0mbk4.js.map +1 -1
  188. package/docs/contracts/settings-classes.md +29 -8
  189. package/docs/guidelines/agent-infra/memory-access.md +14 -3
  190. package/package.json +1 -1
  191. package/src/agent-src/templates/AGENTS.md +6 -10
  192. package/src/config/budgets.yml +29 -0
  193. package/src/config/evaluator-budgets.json +4 -4
  194. package/src/config/gate-coverage.yml +26 -0
  195. package/src/scripts/_cli/cmd_brand_status.ts +174 -0
  196. package/src/scripts/_cli/cmd_doctor.ts +6 -21
  197. package/src/scripts/_cli/cmd_mcp_available.ts +266 -0
  198. package/src/scripts/_cli/cmd_packs_active.ts +225 -0
  199. package/src/scripts/_cli/cmd_settings_get.ts +324 -0
  200. package/src/scripts/_dispatch.bash +75 -0
  201. package/src/scripts/_lib/agent_settings.ts +82 -16
  202. package/src/scripts/_lib/carrier_divergence.ts +135 -0
  203. package/src/scripts/_lib/git_common_dir.ts +128 -0
  204. package/src/scripts/_lib/host_capability.ts +84 -1
  205. package/src/scripts/_lib/obligation_frequency.ts +391 -0
  206. package/src/scripts/_lib/prompt_shape.ts +88 -0
  207. package/src/scripts/_lib/review_skipped_record.ts +102 -0
  208. package/src/scripts/_lib/rule_layer_overlap.ts +254 -0
  209. package/src/scripts/_lib/self_repair.ts +342 -0
  210. package/src/scripts/_lib/self_repair_store.ts +100 -0
  211. package/src/scripts/_lib/session_register.ts +361 -0
  212. package/src/scripts/_lib/transcript_entry.ts +80 -0
  213. package/src/scripts/check_branch_freshness.ts +255 -0
  214. package/src/scripts/check_council_config_location.ts +125 -1
  215. package/src/scripts/check_enforcement_coverage.ts +192 -7
  216. package/src/scripts/check_rule_projection_integrity.ts +364 -0
  217. package/src/scripts/check_standing_rule_delivery.ts +314 -0
  218. package/src/scripts/condense.ts +36 -2
  219. package/src/scripts/config/profiles.ts +13 -3
  220. package/src/scripts/conformance_scan.ts +307 -24
  221. package/src/scripts/council_availability_hook.ts +188 -0
  222. package/src/scripts/council_cli.ts +126 -7
  223. package/src/scripts/generate_settings_reference.ts +232 -0
  224. package/src/scripts/hook_manifest.yaml +155 -33
  225. package/src/scripts/hooks/block_no_verify.ts +95 -3
  226. package/src/scripts/hooks/block_unauthorized_git.ts +217 -2
  227. package/src/scripts/hooks/concern_registry.ts +12 -0
  228. package/src/scripts/hooks/delegation_nudge_hook.ts +450 -0
  229. package/src/scripts/hooks/end_review_nudge_hook.ts +726 -0
  230. package/src/scripts/hooks/orchestration_record_hook.ts +342 -0
  231. package/src/scripts/install.ts +151 -0
  232. package/src/scripts/language_mirror_hook.ts +49 -6
  233. package/src/scripts/measure_scope_dedup.ts +19 -13
  234. package/src/scripts/onboarding_gate_hook.ts +40 -1
  235. package/src/scripts/orchestration_backfill.ts +354 -0
  236. package/src/scripts/orchestration_record.ts +4 -1
  237. package/src/scripts/preamble_byte_census.ts +9 -20
  238. package/src/scripts/release.ts +142 -36
  239. package/src/scripts/report_carrier_divergence.ts +364 -0
  240. package/src/scripts/report_skill_activation.ts +257 -0
  241. package/src/scripts/report_skill_obligation_violations.ts +579 -0
  242. package/src/scripts/routing_doctor.ts +77 -6
  243. package/src/scripts/schemas/rule.schema.json +5 -0
  244. package/src/scripts/self_repair_cli.ts +240 -0
  245. package/src/scripts/self_repair_hook.ts +241 -0
  246. package/src/scripts/session_canary_hook.ts +35 -3
  247. package/src/scripts/session_register_hook.ts +288 -0
  248. package/src/scripts/sessions_cli.ts +140 -0
  249. package/src/scripts/validate_frontmatter.ts +68 -0
  250. package/src/server/io/yamlIO.ts +87 -0
  251. package/src/shared/settingsCarveOut.ts +143 -0
  252. package/src/shared/settingsSurface.ts +7 -1
@@ -11,6 +11,8 @@ routes_to:
11
11
  - "skill:devcontainer"
12
12
  workspaces: [agent-config-maintainer, engineering]
13
13
  packs: [meta]
14
+ # obligation: line 20
15
+ obligation_frequency: "none"
14
16
  ---
15
17
 
16
18
  # Devcontainer Routing
@@ -27,6 +27,8 @@ workspaces: [agent-config-maintainer, construction, engineering, finance, founde
27
27
  packs: [meta]
28
28
  collision_ok:
29
29
  "screenshot": "a screenshot shipping into docs is the PII/anonymization gate"
30
+ # obligation: line 49
31
+ obligation_frequency: "per-event"
30
32
  ---
31
33
 
32
34
  # Doc-Screenshot Hygiene
@@ -15,6 +15,8 @@ collision_ok:
15
15
  "artisan": "artisan runs inside the project container, never on the host"
16
16
  "composer": "composer runs inside the project container"
17
17
  "docker": "its own core subject"
18
+ # obligation: line 22
19
+ obligation_frequency: "per-edit"
18
20
  ---
19
21
 
20
22
  # Docker Commands
@@ -18,6 +18,8 @@ workspaces: [agent-config-maintainer]
18
18
  packs: [meta]
19
19
  collision_ok:
20
20
  "src/skills/": "a skill in a fresh vertical is exactly the domain-gate surface"
21
+ # obligation: line 38
22
+ obligation_frequency: "per-task"
21
23
  ---
22
24
 
23
25
  # Domain Adoption Policy
@@ -42,6 +42,8 @@ workspaces: [agent-config-maintainer, construction, engineering, finance, founde
42
42
  packs: [meta]
43
43
  collision_ok:
44
44
  "review this contract": "contract review is advisory-shaped — the not-legal-advice footer floor"
45
+ # obligation: line 52
46
+ obligation_frequency: "per-task"
45
47
  ---
46
48
 
47
49
  # Domain Safety — Advisory Disclaimer
@@ -42,6 +42,8 @@ applies_to_user_types:
42
42
  - "all"
43
43
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
44
44
  packs: [meta]
45
+ # obligation: line 52
46
+ obligation_frequency: "per-task"
45
47
  ---
46
48
 
47
49
  # Domain Safety — PII Redaction
@@ -27,6 +27,8 @@ applies_to_user_types:
27
27
  - "gtm"
28
28
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
29
29
  packs: [meta]
30
+ # obligation: line 47
31
+ obligation_frequency: "per-turn"
30
32
  ---
31
33
 
32
34
  # Domain Safety — Data Retention
@@ -11,6 +11,8 @@ triggers:
11
11
  self_contained: true
12
12
  workspaces: [engineering]
13
13
  packs: [engineering-base]
14
+ # obligation: line 30
15
+ obligation_frequency: "per-edit"
14
16
  ---
15
17
 
16
18
  # Downstream Changes
@@ -28,6 +28,8 @@ workspaces: [engineering]
28
28
  packs: [engineering-base]
29
29
  collision_ok:
30
30
  "migration": "a prod migration is a hard-floor evidence surface (rollback path, blast radius)"
31
+ # obligation: line 49
32
+ obligation_frequency: "per-commit"
31
33
  ---
32
34
 
33
35
  # Engineering Safety Floor
@@ -20,6 +20,12 @@ enforced_by:
20
20
  - "hook:evidence-independence"
21
21
  collision_ok:
22
22
  "honest null": "this rule asks how a recorded null was PRODUCED; decision-revisit-gate asks whether it may be REVISITED — different decision points on the same artefact"
23
+ # obligation: dispatching an evaluator is a tool call, and the guard is a pre_tool_use
24
+ # concern that reads that prompt — src/rules/evaluator-independence.md:81
25
+ obligation_frequency: "per-edit"
26
+ # frequency-override: line 70 states a per-turn clause ("one evaluation per turn"),
27
+ # but the guard counts it AT the dispatch, which is a tool call — a per-edit point
28
+ # carrier sees every dispatch, so it carries the per-turn cap too.
23
29
  ---
24
30
 
25
31
  # Evaluator Independence
@@ -85,11 +91,16 @@ pre-loaded verdict, and **blocks** a second *self-scoped* evaluation dispatch in
85
91
  the same turn; it **warns** on the first. It reads the prompt the agent is about
86
92
  to send, so items 1 and 4 above are mechanically enforced.
87
93
 
88
- Two limits, stated because round 2 measured them. The pre-loaded-verdict list is
94
+ Three limits, stated because they were measured. The pre-loaded-verdict list is
89
95
  a **phrase list**, so a paraphrase evades it — it catches recurrences of known
90
- steering wording, not steering as such. And the turn boundary is the
96
+ steering wording, not steering as such. The turn boundary is the
91
97
  authorization ledger's `detected_at` stamp, because the envelope carries no turn
92
- id; with no ledger yet, the counter falls back to session scope.
98
+ id; with no ledger yet, the counter falls back to session scope. And the slot
99
+ itself is not universal: `pre_tool_use` exists on **three** hosts — augment,
100
+ claude, cowork. On cursor, cline, windsurf, gemini and copilot this guard has
101
+ nowhere to bind, so items 1 and 4 join 2 and 3 as model-carried there. The
102
+ frequency join in `check_enforcement_coverage.ts` reports exactly that set, and
103
+ `agent-config hooks:status` answers it for the host you are on right now.
93
104
 
94
105
  Items 2 and 3 — an honestly chosen scope, and recording the prompt with the
95
106
  verdict — are **not** enforced by anything. A narrowed scope is not decidable
@@ -17,6 +17,8 @@ applies_to_user_types:
17
17
  self_contained: true
18
18
  workspaces: [engineering]
19
19
  packs: [meta]
20
+ # obligation: line 37
21
+ obligation_frequency: "per-turn"
20
22
  ---
21
23
 
22
24
  # External Code-Graph Interop
@@ -68,7 +70,8 @@ AND the repo contains a detectable index:
68
70
  routing skill: `agent-config code-graph detect|query|affected|path` over the
69
71
  native engine or a consumer-shipped index, grep as the stated fallback. On
70
72
  hook-capable hosts the PreToolUse `code-graph` nudge surfaces this once per
71
- session; on instruction-file hosts this rule is the surface.
73
+ session; on instruction-file hosts this rule is the surface. Which of the two
74
+ you are on is `agent-config hooks:status`, not a guess from the host name.
72
75
  - [`discovery_graph`](../scripts/discovery_graph.ts) — this suite's OWN artefact
73
76
  relation-graph (`affected`/`explain`); the external code-graph is the
74
77
  *source-code* analogue this rule defers to for code questions.
@@ -10,6 +10,8 @@ triggers:
10
10
  self_contained: true
11
11
  workspaces: [agent-config-maintainer, engineering]
12
12
  packs: [meta]
13
+ # obligation: line 20
14
+ obligation_frequency: "per-task"
13
15
  ---
14
16
 
15
17
  # external-reference-deep-dive
@@ -14,6 +14,8 @@ validator_ignore:
14
14
  self_contained: true
15
15
  workspaces: [agent-config-maintainer, engineering]
16
16
  packs: [meta]
17
+ # obligation: line 30
18
+ obligation_frequency: "per-turn"
17
19
  ---
18
20
 
19
21
  # Fast-Path Marker Visibility
@@ -33,13 +33,15 @@ packs: [finance-basic, finance-advanced]
33
33
  trust:
34
34
  level: advisory
35
35
  human_review_required: true
36
+ # obligation: line 53
37
+ obligation_frequency: "per-task"
36
38
  ---
37
39
  <!-- agent-config:human-review-banner -->
38
40
  > HUMAN REVIEW REQUIRED · trust: advisory · owner: unknown
39
41
 
40
42
  # Finance Safety Floor
41
43
 
42
- Domain safety floor for finance-pack artefacts (cash, runway, valuation, scenario, unit economics, forecasting). Auto-activates when `pack-finance-basic` or `pack-finance-advanced` is installed.
44
+ Domain safety floor for finance-pack artefacts (cash, runway, valuation, scenario, unit economics, forecasting). Auto-activates when `pack-finance-basic` or `pack-finance-advanced` is installed — `agent-config packs:active` says whether it is, and names the degraded case where zero packs load and this floor cannot activate at all.
43
45
 
44
46
  ## Iron Law — no final investment recommendation
45
47
 
@@ -43,6 +43,8 @@ collision_ok:
43
43
  "formrequest": "FormRequest named in a generic artifact is leakage — the lint surface"
44
44
  "phpstan": "phpstan named in a generic artifact is leakage — the lint surface"
45
45
  "rector": "rector named in a generic artifact is leakage — the lint surface"
46
+ # obligation: line 65
47
+ obligation_frequency: "per-edit"
46
48
  ---
47
49
 
48
50
  # framework-neutrality-in-generic-skills
@@ -23,6 +23,8 @@ workspaces: [engineering]
23
23
  packs: [engineering-base]
24
24
  enforced_by:
25
25
  - "hook:block-no-verify"
26
+ # obligation: line 35
27
+ obligation_frequency: "per-commit"
26
28
  ---
27
29
 
28
30
  # Git History Discipline
@@ -82,4 +84,4 @@ Trigger-set above activates this routing on demand, independent of the disciplin
82
84
  - [`commit-policy`](commit-policy.md) — commits are the user's call; rewriting them is a stronger version of the same restriction.
83
85
  - [`token-efficiency`](token-efficiency.md) — Iron Law on burning the user's tokens for cosmetic gain.
84
86
  - [`skill:git-workflow`](../skills/git-workflow/SKILL.md) — Safe Squash-After-Push protocol and Divergent-State Recovery decision tree.
85
- - `git … --no-verify` / `core.hooksPath` overrides — deterministically blocked by the `block-no-verify` PreToolUse guard (`src/scripts/hooks/block_no_verify.ts`, registered in `hook_manifest.yaml`).
87
+ - `git … --no-verify` / `core.hooksPath` overrides — deterministically blocked by the `block-no-verify` PreToolUse guard (`src/scripts/hooks/block_no_verify.ts`, registered in `hook_manifest.yaml`) **on the three hosts that have a `pre_tool_use` slot at all** — augment, claude, cowork. On cursor, cline, windsurf, gemini and copilot the guard has nowhere to bind, so on those hosts the Iron Laws above are model-carried and "deterministically blocked" is not a claim this rule can make. Surfaced by the frequency join in `check_enforcement_coverage.ts`, which reports the per-commit obligation as uncovered on exactly those platforms. To check the host you are on rather than trusting this sentence, run `agent-config hooks:status`.
@@ -9,6 +9,8 @@ triggers:
9
9
  - keyword: "convention"
10
10
  workspaces: [agent-config-maintainer, engineering]
11
11
  packs: [meta]
12
+ # obligation: line 16
13
+ obligation_frequency: "per-edit"
12
14
  ---
13
15
 
14
16
  # Guidelines
@@ -19,12 +19,16 @@ workspaces: [engineering]
19
19
  packs: [history-discipline]
20
20
  trust:
21
21
  level: professional
22
+ # obligation: line 35
23
+ obligation_frequency: "per-edit"
22
24
  ---
23
25
 
24
26
  # History Discipline
25
27
 
26
28
  Pack floor for the `history-discipline` pack (default-off; auto-activates
27
- when the pack is installed). Agents get history wrong in both directions:
29
+ when the pack is installed — `agent-config packs:active` says whether it is,
30
+ and names the degraded case where zero packs load and this floor cannot
31
+ activate at all). Agents get history wrong in both directions:
28
32
  missing entirely on data that needs it, or over-built as event sourcing
29
33
  where a row-level log suffices — and audit tables that themselves grow
30
34
  without bound.
@@ -16,6 +16,8 @@ applies_to_user_types:
16
16
  self_contained: true
17
17
  workspaces: [engineering]
18
18
  packs: [frontend-design]
19
+ # obligation: line 41
20
+ obligation_frequency: "per-edit"
19
21
  ---
20
22
 
21
23
  # Icon Consistency
@@ -22,6 +22,8 @@ collision_ok:
22
22
  "/image:": "rights/likeness gate on the image-generation surface"
23
23
  "likeness": "its own core subject — the rights gate"
24
24
  "scripts/ai-image/adapters/": "adapter edits touch the likeness-gated generation path"
25
+ # obligation: line 32
26
+ obligation_frequency: "per-event"
25
27
  ---
26
28
 
27
29
  # Image Likeness and Rights
@@ -20,6 +20,8 @@ collision_ok:
20
20
  "migration": "a migration is a significant behavioural change — the pre-implementation checks apply"
21
21
  "refactor": "refactor = significant change; the demand gate + three checks apply"
22
22
  "implement": "its own core trigger — pre-implementation validation"
23
+ # obligation: line 45
24
+ obligation_frequency: "per-task"
23
25
  ---
24
26
 
25
27
  # Improve Before Implement
@@ -12,6 +12,8 @@ triggers:
12
12
  self_contained: true
13
13
  workspaces: [agent-config-maintainer, engineering]
14
14
  packs: [meta]
15
+ # obligation: line 62
16
+ obligation_frequency: "per-task"
15
17
  ---
16
18
 
17
19
  # invite-challenge
@@ -20,6 +20,8 @@ collision_ok:
20
20
  "artisan": "artisan is a Laravel-flavoured PHP routing cue — load the laravel skill"
21
21
  "eloquent": "eloquent is a Laravel routing cue"
22
22
  "formrequest": "FormRequest is a Laravel routing cue"
23
+ # obligation: line 29
24
+ obligation_frequency: "none"
23
25
  ---
24
26
 
25
27
  # Laravel Routing
@@ -16,6 +16,8 @@ trust:
16
16
  install:
17
17
  default: false
18
18
  removable: true
19
+ # obligation: line 23
20
+ obligation_frequency: "per-edit"
19
21
  ---
20
22
 
21
23
  # Laravel Translations
@@ -31,13 +31,15 @@ trust:
31
31
  collision_ok:
32
32
  "controller": "'controller' is a GDPR role term (controller/processor) in the legal pack"
33
33
  "review this contract": "the legal-pack contract-review gate — both floors must fire"
34
+ # obligation: line 103
35
+ obligation_frequency: "per-task"
34
36
  ---
35
37
  <!-- agent-config:human-review-banner -->
36
38
  > HUMAN REVIEW REQUIRED · trust: advisory · owner: unknown
37
39
 
38
40
  # Legal Safety Floor
39
41
 
40
- Domain safety floor for the `legal-review-prep` pack (contract/NDA/DPA review, legal triage). Auto-activates when `pack-legal-review-prep` is installed. Sibling to `finance-safety-floor` / `strategy-safety-floor`. Every output is a **draft to PREPARE for attorney review**, never legal advice. Operating mechanics migrated to [`legal-practice-profile § Legal safety floor`](../skills/legal-practice-profile/SKILL.md) (per P4 of `road-to-kernel-and-router`) — the Iron Laws below stay here.
42
+ Domain safety floor for the `legal-review-prep` pack (contract/NDA/DPA review, legal triage). Auto-activates when `pack-legal-review-prep` is installed — `agent-config packs:active` says whether it is, and names the degraded case where zero packs load and this floor cannot activate at all. Sibling to `finance-safety-floor` / `strategy-safety-floor`. Every output is a **draft to PREPARE for attorney review**, never legal advice. Operating mechanics migrated to [`legal-practice-profile § Legal safety floor`](../skills/legal-practice-profile/SKILL.md) (per P4 of `road-to-kernel-and-router`) — the Iron Laws below stay here.
41
43
 
42
44
  ## Iron Law — no final legal call
43
45
 
@@ -20,6 +20,8 @@ enforced_by:
20
20
  collision_ok:
21
21
  "src/skills/": "skill authoring reviews tool grants and the egress leg"
22
22
  "src/agent-src/commands/": "command authoring reviews the three trifecta legs"
23
+ # obligation: line 60
24
+ obligation_frequency: "per-edit"
23
25
  ---
24
26
 
25
27
  # Lethal-Trifecta Guard
@@ -23,6 +23,8 @@ trust:
23
23
  confidence: medium
24
24
  install:
25
25
  removable: true
26
+ # obligation: line 30
27
+ obligation_frequency: "per-session"
26
28
  ---
27
29
 
28
30
  # Linked-Projects Onboarding Gate
@@ -10,6 +10,8 @@ triggers:
10
10
  self_contained: true
11
11
  workspaces: [agent-config-maintainer]
12
12
  packs: [meta]
13
+ # obligation: line 28
14
+ obligation_frequency: "per-edit"
13
15
  ---
14
16
 
15
17
  # Low-Impact Corpus — Privacy Floor
@@ -9,6 +9,8 @@ triggers:
9
9
  self_contained: true
10
10
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
11
11
  packs: [meta]
12
+ # obligation: line 23
13
+ obligation_frequency: "per-turn"
12
14
  ---
13
15
 
14
16
  # Markdown Safe Codeblocks
@@ -36,6 +36,8 @@ collision_ok:
36
36
  "/audio:": "routes the media policy layer for audio surfaces"
37
37
  "/video:": "routes the media policy layer for video surfaces"
38
38
  "likeness": "likeness prompts must load the policy layer before generation"
39
+ # obligation: line 46
40
+ obligation_frequency: "per-event"
39
41
  ---
40
42
 
41
43
  # Media Governance Routing
@@ -17,6 +17,8 @@ triggers:
17
17
  self_contained: true
18
18
  workspaces: [agent-config-maintainer, engineering, gtm]
19
19
  packs: [ai-video]
20
+ # obligation: line 31
21
+ obligation_frequency: "per-event"
20
22
  ---
21
23
 
22
24
  # Media Sync — Ground Truth Is the Audio
@@ -17,6 +17,8 @@ enforced_by:
17
17
  - "hook:minimal-safe-diff"
18
18
  collision_ok:
19
19
  "fix": "a fix is the smallest change that solves the stated problem"
20
+ # obligation: line 25
21
+ obligation_frequency: "per-edit"
20
22
  ---
21
23
 
22
24
  # Minimal Safe Diff
@@ -9,6 +9,8 @@ routes_to:
9
9
  - "guideline:agent-infra/missing-tool-handling"
10
10
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
11
11
  packs: [meta]
12
+ # obligation: line 16
13
+ obligation_frequency: "per-event"
12
14
  ---
13
15
 
14
16
  # Missing Tool Handling
@@ -13,6 +13,8 @@ routes_to:
13
13
  - "guideline:agent-infra/model-recommendation"
14
14
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
15
15
  packs: [meta]
16
+ # obligation: line 4
17
+ obligation_frequency: "per-task"
16
18
  ---
17
19
 
18
20
  # Model Recommendation
@@ -8,6 +8,8 @@ triggers:
8
8
  self_contained: true
9
9
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
10
10
  packs: [meta]
11
+ # obligation: line 18
12
+ obligation_frequency: "per-commit"
11
13
  ---
12
14
 
13
15
  # No Attribution Footers
@@ -17,6 +17,8 @@ triggers:
17
17
  self_contained: true
18
18
  workspaces: [agent-config-maintainer, engineering]
19
19
  packs: [meta]
20
+ # obligation: line 27
21
+ obligation_frequency: "per-commit"
20
22
  ---
21
23
 
22
24
  # No Decorative Emojis in Git Surfaces
@@ -10,6 +10,8 @@ triggers:
10
10
  self_contained: true
11
11
  workspaces: [agent-config-maintainer, engineering]
12
12
  packs: [meta]
13
+ # obligation: line 20
14
+ obligation_frequency: "per-commit"
13
15
  ---
14
16
 
15
17
  # No Unsolicited PR Progress Comments
@@ -23,7 +25,9 @@ EXCEPTION: USER-INVOKED FLOWS ALWAYS RUN.
23
25
  EXCEPTION: USER EXPLICITLY ASKED FOR IT THIS TURN.
24
26
  ```
25
27
 
26
- Reading `.agent-settings.yml`:
28
+ Reading `.agent-settings.yml` — the project layer of a cascade that starts
29
+ user-global, so "not set" means not set on any layer; `agent-config settings:get
30
+ personal.pr_progress_comments` reports the value and the file it came from:
27
31
 
28
32
  - Missing key / not set → treat as `false`.
29
33
  - `personal.pr_progress_comments: false` (default) → gate fires.
@@ -22,6 +22,8 @@ enforced_by:
22
22
  - "validator:src/scripts/check_council_references.ts"
23
23
  collision_ok:
24
24
  "agents/roadmaps/": "roadmap edits are where transient-ref links get written"
25
+ # obligation: line 47
26
+ obligation_frequency: "per-edit"
25
27
  ---
26
28
 
27
29
  # No Transient References from Stable Artifacts
@@ -17,6 +17,8 @@ workspaces: [agent-config-maintainer, engineering]
17
17
  packs: [meta]
18
18
  collision_ok:
19
19
  "debug": "debug hypotheses belong in the session notes file"
20
+ # obligation: line 35
21
+ obligation_frequency: "per-turn"
20
22
  ---
21
23
 
22
24
  # Notes-First Reasoning
@@ -11,12 +11,16 @@ workspaces: [agent-config-maintainer, construction, engineering, finance, founde
11
11
  packs: [meta]
12
12
  enforced_by:
13
13
  - "hook:onboarding-gate"
14
+ # obligation: line 18
15
+ obligation_frequency: "per-session"
14
16
  ---
15
17
 
16
18
  # Onboarding Gate
17
19
 
18
20
  **Iron Law.** First turn of a project: if `onboarding.onboarded` is
19
- false in `.agent-settings.yml`, instruct the developer to run
21
+ false in `.agent-settings.yml` — the project layer of a cascade that starts
22
+ user-global, so check it with `agent-config settings:get onboarding.onboarded`
23
+ rather than by opening one file — instruct the developer to run
20
24
  `agent-config setup` in their terminal before executing any other
21
25
  request. The wizard writes `onboarding.onboarded: true` on `Finish`,
22
26
  which silences this rule for subsequent turns.
@@ -12,6 +12,8 @@ workspaces: [engineering]
12
12
  packs: [engineering-base]
13
13
  enforced_by:
14
14
  - "validator:src/scripts/lint_output_slop.ts"
15
+ # obligation: line 22
16
+ obligation_frequency: "per-edit"
15
17
  ---
16
18
 
17
19
  # Output Discipline
@@ -10,6 +10,8 @@ routes_to:
10
10
  - "skill:lint-skills"
11
11
  workspaces: [agent-config-maintainer]
12
12
  packs: [meta]
13
+ # obligation: line 17
14
+ obligation_frequency: "per-commit"
13
15
  ---
14
16
 
15
17
  # Package Ci Checks
@@ -27,6 +27,8 @@ workspaces: [agent-config-maintainer]
27
27
  packs: [meta]
28
28
  enforced_by:
29
29
  - "validator:src/scripts/lint_persona_governance.ts"
30
+ # obligation: line 41
31
+ obligation_frequency: "per-edit"
30
32
  ---
31
33
 
32
34
  # Persona Governance
@@ -18,6 +18,8 @@ install:
18
18
  removable: true
19
19
  collision_ok:
20
20
  "phpstan": "phpstan findings are the PHP pattern floor's own quality surface"
21
+ # obligation: line 25
22
+ obligation_frequency: "per-edit"
21
23
  ---
22
24
 
23
25
  # Php Coding
@@ -15,6 +15,8 @@ packs: [engineering-base]
15
15
  collision_ok:
16
16
  "migration": "migrations add columns — multi-state fields should land as enums from the start"
17
17
  "category": "a category field is the canonical enum candidate"
18
+ # obligation: line 27
19
+ obligation_frequency: "per-edit"
18
20
  ---
19
21
 
20
22
  # Prefer Enums Over Literal Values
@@ -15,6 +15,8 @@ packs: [meta]
15
15
  enforced_by:
16
16
  - "validator:src/scripts/check_condensation.ts"
17
17
  - "validator:src/scripts/skill_linter.ts"
18
+ # obligation: line 22
19
+ obligation_frequency: "per-edit"
18
20
  ---
19
21
 
20
22
  # Preservation Guard
@@ -30,6 +30,8 @@ collision_ok:
30
30
  "/audio:": "provider-tier gate for audio providers"
31
31
  "/video:": "provider-tier gate for video providers"
32
32
  "scripts/ai-image/adapters/": "adapter edits are the lifecycle contract's surface"
33
+ # obligation: line 41
34
+ obligation_frequency: "per-event"
33
35
  ---
34
36
 
35
37
  # Provider Lifecycle Discipline
@@ -24,6 +24,8 @@ applies_to_user_types:
24
24
  self_contained: true
25
25
  workspaces: [engineering]
26
26
  packs: [meta]
27
+ # obligation: line 32
28
+ obligation_frequency: "per-turn"
27
29
  ---
28
30
 
29
31
  # Question Is Not an Instruction
@@ -13,6 +13,8 @@ routes_to:
13
13
  workspaces: [agent-config-maintainer, engineering]
14
14
  packs: [meta]
15
15
  roles: [reviewer]
16
+ # obligation: line 20
17
+ obligation_frequency: "per-commit"
16
18
  ---
17
19
 
18
20
  # Reviewer Awareness
@@ -30,6 +30,8 @@ packs: [meta]
30
30
  roles: [planner]
31
31
  collision_ok:
32
32
  "agents/roadmaps/": "roadmap steps must not schedule CI-shaped gates"
33
+ # obligation: line 41
34
+ obligation_frequency: "per-edit"
33
35
  ---
34
36
 
35
37
  # Roadmap CI-Steps Policy
@@ -43,7 +45,10 @@ AND EXECUTION MUST SKIP THEM INLINE WITH [-] AND A REASON.
43
45
  ```
44
46
 
45
47
  When autonomous local-CI runs are disabled in `.agent-settings.yml`
46
- (`quality.local_auto_run: false` — the shipped template default), every
48
+ (`quality.local_auto_run: false` — the shipped template default; that file is the
49
+ project layer of a cascade that starts user-global, and this key is one where an
50
+ ABSENT value resolves to `true` at its reader and therefore DISABLES this gate —
51
+ `agent-config settings:get quality.local_auto_run` reports both facts), every
47
52
  full-pipeline gate run during roadmap work is wasted wall-clock and
48
53
  tokens — the remote CI on the PR is the authoritative gate. Roadmaps must
49
54
  neither schedule nor execute those gates locally. New CI gates and
@@ -16,6 +16,8 @@ enforced_by:
16
16
  - "hook:roadmap-progress"
17
17
  collision_ok:
18
18
  "agents/roadmaps/": "any roadmap touch regenerates the dashboard, same response"
19
+ # obligation: line 26
20
+ obligation_frequency: "per-edit"
19
21
  ---
20
22
 
21
23
  # Roadmap Progress Sync
@@ -9,6 +9,8 @@ triggers:
9
9
  self_contained: true
10
10
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
11
11
  packs: [meta]
12
+ # obligation: line 23
13
+ obligation_frequency: "per-turn"
12
14
  ---
13
15
 
14
16
  # Role Mode Adherence
@@ -18,7 +20,7 @@ one of the six modes defined in
18
20
  [`role-contracts`](../docs/guidelines/agent-infra/role-contracts.md):
19
21
  `developer`, `reviewer`, `tester`, `po`, `incident`, `planner`.
20
22
 
21
- Read `roles.active_role` from `.agent-settings.yml` at session start. Empty / missing → rule is inert; do NOT guess a mode.
23
+ Read `roles.active_role` from `.agent-settings.yml` at session start — the project layer of a cascade that starts user-global, so use `agent-config settings:get roles.active_role`, which reports the value and the file it came from, rather than opening one file. Empty / missing → rule is inert; do NOT guess a mode.
22
24
 
23
25
  When active, every closing output MUST:
24
26
 
@@ -10,6 +10,8 @@ workspaces: [agent-config-maintainer]
10
10
  packs: [meta]
11
11
  collision_ok:
12
12
  "src/rules/": "the always-vs-auto choice fires on every rule edit"
13
+ # obligation: line 17
14
+ obligation_frequency: "per-edit"
13
15
  ---
14
16
 
15
17
  # Rule Type Governance