@event4u/agent-config 16.2.0 → 16.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +89 -237
- package/README.md +14 -12
- package/dist/agent-src/commands/analyze/inbox.md +1 -1
- package/dist/agent-src/commands/analyze/roadmap-repos.md +1 -1
- package/dist/agent-src/commands/bug/fix.md +17 -2
- package/dist/agent-src/commands/feature/plan.md +1 -1
- package/dist/agent-src/commands/feature/roadmap.md +1 -1
- package/dist/agent-src/commands/fix/ci.md +1 -1
- package/dist/agent-src/commands/implement-ticket.md +1 -1
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +1 -1
- package/dist/agent-src/commands/roadmap/materialize.md +1 -1
- package/dist/agent-src/commands/roadmap/process-full.md +4 -4
- package/dist/agent-src/commands/roadmap/resolve-blockers.md +361 -0
- package/dist/agent-src/commands/roadmap/triage-parked.md +325 -0
- package/dist/agent-src/commands/roadmap.md +18 -4
- package/dist/agent-src/commands/tests/create.md +17 -3
- package/dist/agent-src/commands/tests/execute.md +22 -5
- package/dist/agent-src/contexts/authority/decision-revisit-gate-enforcement.md +43 -0
- package/dist/agent-src/contexts/communication/rules-auto/design-fidelity-enforcement.md +24 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +6 -6
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +32 -2
- package/dist/agent-src/contexts/execution/session-canary-enforcement-history.md +67 -0
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +101 -7
- package/dist/agent-src/rules/active-remediation.md +1 -1
- package/dist/agent-src/rules/autonomous-execution.md +1 -0
- package/dist/agent-src/rules/broken-access-control.md +1 -0
- package/dist/agent-src/rules/command-suggestion-policy.md +1 -0
- package/dist/agent-src/rules/context-hygiene.md +1 -1
- package/dist/agent-src/rules/decision-revisit-gate.md +16 -33
- package/dist/agent-src/rules/design-fidelity.md +13 -16
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -0
- package/dist/agent-src/rules/domain-safety-disclaimer.md +1 -0
- package/dist/agent-src/rules/domain-safety-pii.md +1 -0
- package/dist/agent-src/rules/domain-safety-retention.md +1 -0
- package/dist/agent-src/rules/engineering-safety-floor.md +1 -0
- package/dist/agent-src/rules/evaluator-independence.md +3 -2
- package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -0
- package/dist/agent-src/rules/finance-safety-floor.md +1 -0
- package/dist/agent-src/rules/git-history-discipline.md +1 -0
- package/dist/agent-src/rules/image-likeness-and-rights.md +1 -0
- package/dist/agent-src/rules/legal-safety-floor.md +3 -2
- package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -0
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -0
- package/dist/agent-src/rules/media-governance-routing.md +14 -17
- package/dist/agent-src/rules/persona-governance.md +2 -2
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +1 -1
- package/dist/agent-src/rules/question-not-instruction.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/runtime-safety.md +1 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +3 -2
- package/dist/agent-src/rules/session-canary.md +8 -62
- package/dist/agent-src/rules/settings-ask-protocol.md +1 -0
- package/dist/agent-src/rules/source-confidentiality.md +1 -0
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -0
- package/dist/agent-src/rules/tool-safety.md +1 -0
- package/dist/agent-src/rules/untrusted-input-defense.md +1 -0
- package/dist/agent-src/rules/user-interrupt-priority.md +1 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/dist/agent-src/scripts/deferral_carry.ts +339 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/dist/agent-src/skills/api-design/data/manifest.json +2 -2
- package/dist/agent-src/skills/api-testing/SKILL.md +17 -0
- package/dist/agent-src/skills/code-intelligence/SKILL.md +14 -2
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +2 -2
- package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
- package/dist/agent-src/skills/iconography/SKILL.md +1 -1
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +2 -2
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +11 -1
- package/dist/agent-src/skills/quality-tools/references/go-tools.md +76 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +104 -0
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -1
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +3 -3
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +7 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +17 -0
- package/dist/agent-src/skills/test-performance/SKILL.md +19 -1
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +2 -2
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/dist/cli/registry.js +1 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +92 -12
- package/dist/cli-delegate/check_update_banner.js +12 -1
- package/dist/cli-delegate/chunk-523HCFYO.js +90 -0
- package/dist/cli-delegate/{chunk-M2DPGFZ4.js → chunk-6V6TA25H.js} +22 -152
- package/dist/cli-delegate/chunk-7IQE3D5S.js +191 -0
- package/dist/cli-delegate/{chunk-6KFEC3G7.js → chunk-CQWX336L.js} +1 -1
- package/dist/cli-delegate/chunk-DEIV7XP7.js +108 -0
- package/dist/cli-delegate/chunk-EEHDXSYD.js +2040 -0
- package/dist/cli-delegate/{chunk-P6ZHP5W2.js → chunk-GKE7ZVFA.js} +4 -4
- package/dist/cli-delegate/chunk-JQOM7TTM.js +1201 -0
- package/dist/cli-delegate/{chunk-IGD6ERX6.js → chunk-JQVYKIZA.js} +10 -0
- package/dist/cli-delegate/{chunk-FC75PGJE.js → chunk-JY2I2DXV.js} +12 -1
- package/dist/cli-delegate/chunk-KB5FZ655.js +208 -0
- package/dist/cli-delegate/{chunk-7RQP4UDH.js → chunk-KR6EM23A.js} +235 -1455
- package/dist/cli-delegate/{chunk-LTYVIY76.js → chunk-LIYTLH6O.js} +1 -1
- package/dist/cli-delegate/{chunk-YJ72UIAK.js → chunk-NQ7WT43P.js} +1186 -244
- package/dist/cli-delegate/chunk-NXEILF2K.js +2160 -0
- package/dist/cli-delegate/{chunk-5R7HOLAF.js → chunk-NYX3L2PZ.js} +1 -1
- package/dist/cli-delegate/{chunk-4E2W63DA.js → chunk-OKJUIAPS.js} +62 -1
- package/dist/cli-delegate/{chunk-QAJS5YWY.js → chunk-PHD7OOLE.js} +2 -1
- package/dist/cli-delegate/{chunk-RGNIWTEA.js → chunk-QLDHIPWR.js} +1 -1
- package/dist/cli-delegate/{chunk-7XGBX6ZH.js → chunk-RQNNW7IF.js} +1314 -560
- package/dist/cli-delegate/{chunk-4XFP2Y3E.js → chunk-S4UMZNES.js} +1 -1
- package/dist/cli-delegate/{chunk-6KM6ORRY.js → chunk-S4YWNRKO.js} +24 -8
- package/dist/cli-delegate/{chunk-FP36SWJD.js → chunk-TRI6DQZ6.js} +2781 -340
- package/dist/cli-delegate/chunk-ULQRUR23.js +208 -0
- package/dist/cli-delegate/{chunk-NUHLI2RX.js → chunk-YCU3TIXH.js} +2 -0
- package/dist/cli-delegate/chunk-ZBZV2G5R.js +210 -0
- package/dist/cli-delegate/{chunk-WGXTVKCQ.js → chunk-ZUZKZYCN.js} +5 -3
- package/dist/cli-delegate/cmd_analyze_session.js +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +1 -1
- package/dist/cli-delegate/cmd_conformance.js +1167 -234
- package/dist/cli-delegate/cmd_doctor.js +13 -6
- package/dist/cli-delegate/cmd_doctor_neighbours.js +23 -0
- package/dist/cli-delegate/cmd_explain.js +5 -5
- package/dist/cli-delegate/cmd_export.js +11 -8
- package/dist/cli-delegate/cmd_fleet.js +3 -3
- package/dist/cli-delegate/cmd_handoff.js +10 -7
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +3 -1
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +3 -3
- package/dist/cli-delegate/cmd_preflight.js +6 -6
- package/dist/cli-delegate/cmd_prune.js +11 -8
- package/dist/cli-delegate/cmd_refresh.js +2 -1
- package/dist/cli-delegate/cmd_route_audit.js +8 -6
- package/dist/cli-delegate/cmd_route_explain.js +4 -4
- package/dist/cli-delegate/cmd_session_recycle.js +4 -3
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +11 -8
- package/dist/cli-delegate/cmd_settings_set.js +4 -4
- package/dist/cli-delegate/cmd_sync.js +11 -8
- package/dist/cli-delegate/cmd_uninstall.js +11 -8
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +3 -2
- package/dist/cli-delegate/cmd_validate.js +11 -8
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/deferral_carry.js +16 -0
- package/dist/cli-delegate/gate_execute.js +2 -2
- package/dist/cli-delegate/roadmap_gates.js +5 -5
- package/dist/cli-delegate/update_roadmap_progress.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +127 -75
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +7 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +6 -4
- package/dist/hooks/dispatch.js +5357 -6656
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/install/claudePathsPlan.js +47 -6
- package/dist/install/claudeRuleRewrite.js +7 -0
- package/dist/install/emit_host_rules_cli.js +39 -36
- package/dist/install/globalRuleScope.js +87 -0
- package/dist/install/host_rule_ownership.js +160 -0
- package/dist/install/install.mjs +2080 -1024
- package/dist/install/installThinLayer.js +261 -0
- package/dist/install/installedRuleLinks.js +176 -0
- package/dist/install/wizard-plan.js +24 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +31965 -27154
- package/dist/scripts/_lib/agent_settings.js +11 -0
- package/dist/scripts/_lib/claude_settings_hooks.js +10 -8
- package/dist/scripts/_lib/installed_layer.js +378 -0
- package/dist/scripts/_lib/lean_projection_mode.js +218 -15
- package/dist/scripts/_lib/rule_consequence_class.js +45 -0
- package/dist/scripts/_lib/rule_injection.js +67 -10
- package/dist/scripts/_lib/rule_law_section.js +122 -0
- package/dist/scripts/_lib/thin_rules.js +458 -0
- package/dist/scripts/_lib/windsurf_render.js +60 -0
- package/dist/scripts/condense.js +14 -26
- package/dist/scripts/project_thin_rules.js +14 -294
- package/dist/server/schemas/settings.js +6 -0
- package/dist/shared/skillRanking.js +74 -13
- package/docs/contracts/settings-classes.md +7 -5
- package/package.json +1 -1
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/src/agent-src/scripts/deferral_carry.ts +339 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/src/config/agent-settings.template.yml +62 -22
- package/src/config/continuity-surface.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +96 -3
- package/src/config/gate-violation-baselines.json +17 -9
- package/src/config/hook-bundle-budget.json +25 -0
- package/src/config/hook-token-budget.json +6 -1
- package/src/config/host-instruction-limits.json +33 -0
- package/src/config/routing-coverage-seed.json +24 -3
- package/src/config/rule-activation-census.json +7 -3
- package/src/config/rule-consequence-class.json +161 -0
- package/src/config/rule-law-ceilings.json +99 -0
- package/src/install/claudePathsPlan.ts +46 -4
- package/src/install/claudeRuleRewrite.ts +10 -1
- package/src/install/emit_host_rules_cli.ts +43 -34
- package/src/install/globalRuleScope.ts +109 -0
- package/src/install/host_rule_ownership.ts +170 -0
- package/src/install/installThinLayer.ts +312 -0
- package/src/install/installedRuleLinks.ts +220 -0
- package/src/install/wizard-plan.ts +24 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -71
- package/src/scripts/_cli/cmd_doctor_neighbours.ts +293 -0
- package/src/scripts/_dispatch.bash +16 -2
- package/src/scripts/_lib/agent_settings.ts +11 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +10 -8
- package/src/scripts/_lib/estate_offsets.ts +241 -0
- package/src/scripts/_lib/exemption_shape.ts +143 -0
- package/src/scripts/_lib/fnv.ts +23 -0
- package/src/scripts/_lib/foreign_scan.ts +106 -0
- package/src/scripts/_lib/gitignore_block.ts +314 -0
- package/src/scripts/_lib/global_deploy_inventory.ts +32 -0
- package/src/scripts/_lib/graph_feeder_record.ts +214 -0
- package/src/scripts/_lib/hook_settings.ts +73 -0
- package/src/scripts/_lib/host_capability.ts +40 -19
- package/src/scripts/_lib/host_hook_merge.ts +165 -0
- package/src/scripts/_lib/installed_layer.ts +538 -0
- package/src/scripts/_lib/json_merge.ts +82 -0
- package/src/scripts/_lib/json_pointers.ts +93 -11
- package/src/scripts/_lib/lean_projection_mode.ts +275 -15
- package/src/scripts/_lib/machine_wake.ts +16 -3
- package/src/scripts/_lib/neighbour_census.ts +760 -0
- package/src/scripts/_lib/neighbour_scan.ts +122 -0
- package/src/scripts/_lib/neighbour_tool_use.ts +189 -0
- package/src/scripts/_lib/prompt_shape.ts +46 -0
- package/src/scripts/_lib/release_migration_gate.ts +19 -3
- package/src/scripts/_lib/reserved_name_sweep.ts +73 -0
- package/src/scripts/_lib/review_coverage.ts +134 -0
- package/src/scripts/_lib/rule_consequence_class.ts +71 -0
- package/src/scripts/_lib/rule_injection.ts +130 -10
- package/src/scripts/_lib/rule_law_section.ts +147 -0
- package/src/scripts/_lib/rule_layer_overlap.ts +58 -0
- package/src/scripts/_lib/skill_origin.ts +254 -0
- package/src/scripts/_lib/structured_ask.ts +64 -21
- package/src/scripts/_lib/thin_rules.ts +540 -0
- package/src/scripts/_lib/touched_file_quality.ts +434 -0
- package/src/scripts/_lib/turn_end_refusals.ts +77 -2
- package/src/scripts/_lib/windsurf_render.ts +63 -0
- package/src/scripts/ai_council/cli_call_budget.ts +13 -5
- package/src/scripts/ai_council/clients.ts +26 -57
- package/src/scripts/ai_council/config.ts +1 -1
- package/src/scripts/ai_council/vendor_defaults.ts +45 -0
- package/src/scripts/audit_skill_overlap.ts +261 -0
- package/src/scripts/before_complete_hook.ts +243 -12
- package/src/scripts/bench_touched_file_quality.ts +238 -0
- package/src/scripts/check_enforcement_matrix.ts +377 -20
- package/src/scripts/check_estate_count.ts +130 -153
- package/src/scripts/check_finding_dispositions.ts +116 -4
- package/src/scripts/check_hook_bundle_composition.ts +370 -0
- package/src/scripts/check_kernel_edit_ratified.ts +49 -11
- package/src/scripts/check_memory.ts +7 -1
- package/src/scripts/check_release_highlights.ts +10 -0
- package/src/scripts/check_release_pr_shape.ts +38 -15
- package/src/scripts/check_standing_rule_delivery.ts +33 -13
- package/src/scripts/check_verify_expectation_delta.ts +521 -0
- package/src/scripts/code_graph/detect.ts +127 -7
- package/src/scripts/code_graph/foreign.ts +194 -0
- package/src/scripts/code_graph/query.ts +217 -4
- package/src/scripts/code_graph/types.ts +26 -2
- package/src/scripts/code_graph/validate.ts +3 -1
- package/src/scripts/code_graph/verbs.ts +103 -0
- package/src/scripts/compile_hook_manifest.ts +33 -1
- package/src/scripts/condense.ts +14 -27
- package/src/scripts/estate_exemption_shape.ts +202 -0
- package/src/scripts/generate_host_cost_table.ts +1 -1
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +150 -9
- package/src/scripts/hooks/block_config_weakening.ts +67 -2
- package/src/scripts/hooks/block_plumbing_writes.ts +29 -1
- package/src/scripts/hooks/code_graph_context_hook.ts +252 -23
- package/src/scripts/hooks/concern_failure_policy.ts +280 -0
- package/src/scripts/hooks/dispatch_hook.ts +52 -52
- package/src/scripts/hooks/exit_codes.ts +2 -1
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.ts +19 -1
- package/src/scripts/hooks/one_question_per_ask_hook.ts +41 -25
- package/src/scripts/hooks/payload_stub.ts +10 -1
- package/src/scripts/hooks/rule_inject_hook.ts +757 -63
- package/src/scripts/hooks/table_fingerprint.ts +21 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +64 -8
- package/src/scripts/hooks/turn_end_gate_hook.ts +84 -0
- package/src/scripts/hooks_status.ts +112 -0
- package/src/scripts/injection_scan_hook.ts +7 -0
- package/src/scripts/install.ts +72 -185
- package/src/scripts/installed_layer_report.ts +103 -0
- package/src/scripts/language_mirror_hook.ts +15 -6
- package/src/scripts/learning_sidecar.ts +119 -8
- package/src/scripts/lint_hook_manifest.ts +53 -0
- package/src/scripts/lint_major_migration_sections.ts +156 -26
- package/src/scripts/lint_pack_boundaries.ts +63 -5
- package/src/scripts/lint_rule_law_section.ts +517 -0
- package/src/scripts/lint_workflow_security.ts +161 -5
- package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -0
- package/src/scripts/mcp_server/graph_tools.ts +72 -3
- package/src/scripts/measure_routing_signal.ts +54 -16
- package/src/scripts/measure_skill_ranker_baseline.ts +216 -8
- package/src/scripts/memory_learn_hook.ts +91 -6
- package/src/scripts/model_rule_injection.ts +52 -5
- package/src/scripts/project_thin_rules.ts +34 -327
- package/src/scripts/report_evidence_temperature.ts +657 -0
- package/src/scripts/report_installed_rule_links.ts +157 -0
- package/src/scripts/report_label_agreement.ts +233 -0
- package/src/scripts/report_obligation_mechanism.ts +230 -0
- package/src/scripts/report_single_token_triggers.ts +277 -0
- package/src/scripts/report_skill_ranker_confusion.ts +442 -0
- package/src/scripts/report_standing_payload_by_host.ts +188 -15
- package/src/scripts/report_verification_record_coverage.ts +306 -0
- package/src/scripts/rule_activation_census.ts +5 -2
- package/src/scripts/rule_trigger_eval.ts +9 -9
- package/src/scripts/schemas/review-findings.schema.json +3 -2
- package/src/scripts/schemas/rule.schema.json +5 -0
- package/src/scripts/self_review_gate.ts +62 -7
- package/src/scripts/skill_tools/score_skill_relevance.ts +290 -25
- package/src/scripts/sweep_skill_ranker_signals.ts +129 -0
- package/src/scripts/sync_gitignore.ts +29 -235
- package/src/scripts/trigger_eval_grandfather.json +0 -5
- package/src/server/schemas/settings.ts +10 -0
- package/src/shared/skillRanking.ts +117 -11
- package/dist/cli-delegate/chunk-JNMVLWLR.js +0 -4457
- package/dist/cli-delegate/chunk-YDPILCOL.js +0 -152
|
@@ -35,6 +35,28 @@
|
|
|
35
35
|
# eight new concerns spread across eight events violate it zero times.
|
|
36
36
|
#
|
|
37
37
|
# `decision: rejected` is a first-class row. A recorded refusal is the point.
|
|
38
|
+
#
|
|
39
|
+
# `effect:` — what a concern DELIVERS to a turn, from a closed set. Read by the
|
|
40
|
+
# neighbour census (`agent-config doctor neighbours`), which has to say what
|
|
41
|
+
# sharing an event with another package's hook entry actually risks.
|
|
42
|
+
#
|
|
43
|
+
# The axis is OBSERVABLE DELIVERY, never primary purpose. An independent review
|
|
44
|
+
# found the distinction load-bearing: a shadow concern whose purpose is
|
|
45
|
+
# verification but which emits nothing and never blocks delivers a RECORD, so it
|
|
46
|
+
# is `telemetry`. Classify by what a turn can tell happened.
|
|
47
|
+
#
|
|
48
|
+
# permission can REFUSE the thing it fires on. Equivalent to
|
|
49
|
+
# `severity: blocking`, and `lint_hook_manifest` enforces the
|
|
50
|
+
# equivalence in both directions. "Can refuse" is the whole
|
|
51
|
+
# definition — it is not "decides authorization", so a gate that
|
|
52
|
+
# refuses on a quality threshold is `permission` too.
|
|
53
|
+
# context puts text in front of the model
|
|
54
|
+
# verification checks a claim or a shape and REPORTS what it found
|
|
55
|
+
# telemetry records state, a ledger, a counter
|
|
56
|
+
# memory reads or writes the memory layer
|
|
57
|
+
# notification tells the human something and changes nothing else
|
|
58
|
+
# formatting reshapes a command or a generated file
|
|
59
|
+
#
|
|
38
60
|
schema_version: 1
|
|
39
61
|
|
|
40
62
|
concerns:
|
|
@@ -43,6 +65,7 @@ concerns:
|
|
|
43
65
|
args: [hook-dispatch]
|
|
44
66
|
fail_closed: false
|
|
45
67
|
severity: advisory
|
|
68
|
+
effect: telemetry
|
|
46
69
|
needs_payload_bodies: [result]
|
|
47
70
|
# Restore persisted memory session index (road-to-memory-retrieval-economy
|
|
48
71
|
# P5). session_start only: the dispatcher forwards the returned `context`
|
|
@@ -56,6 +79,7 @@ concerns:
|
|
|
56
79
|
args: []
|
|
57
80
|
fail_closed: false
|
|
58
81
|
severity: advisory
|
|
82
|
+
effect: memory
|
|
59
83
|
# One-shot handoff injection (road-to-agent-handoff-resume Phase 3).
|
|
60
84
|
# session_start only: if `agent-config handoff` wrote
|
|
61
85
|
# agents/runtime/state/handoff-context.md, inject it as spotlighted DATA
|
|
@@ -67,6 +91,7 @@ concerns:
|
|
|
67
91
|
args: []
|
|
68
92
|
fail_closed: false
|
|
69
93
|
severity: advisory
|
|
94
|
+
effect: context
|
|
70
95
|
# Debounced since road-to-per-turn-hook-economy step 3.1 (D-3). It used to
|
|
71
96
|
# re-shell the dashboard regenerator through tsx on EVERY roadmap write — a
|
|
72
97
|
# cold tsx start per write, in exactly the roadmap-heavy workflow this repo
|
|
@@ -90,17 +115,20 @@ concerns:
|
|
|
90
115
|
args: []
|
|
91
116
|
fail_closed: false
|
|
92
117
|
severity: advisory
|
|
118
|
+
effect: formatting
|
|
93
119
|
needs_payload_bodies: [input]
|
|
94
120
|
onboarding-gate:
|
|
95
121
|
script: src/scripts/onboarding_gate_hook.ts
|
|
96
122
|
args: []
|
|
97
123
|
fail_closed: false
|
|
98
124
|
severity: advisory
|
|
125
|
+
effect: notification
|
|
99
126
|
context-hygiene:
|
|
100
127
|
script: src/scripts/context_hygiene_hook.ts
|
|
101
128
|
args: []
|
|
102
129
|
fail_closed: false
|
|
103
130
|
severity: advisory
|
|
131
|
+
effect: telemetry
|
|
104
132
|
# Phase 5 — Tier-1 hook for the verify-before-complete rule. Records
|
|
105
133
|
# observable evidence of verification commands (tests, quality tools,
|
|
106
134
|
# builds) into agents/state/verify-before-complete/<digest>.json — ONE FILE
|
|
@@ -120,6 +148,7 @@ concerns:
|
|
|
120
148
|
args: []
|
|
121
149
|
fail_closed: false
|
|
122
150
|
severity: advisory
|
|
151
|
+
effect: verification
|
|
123
152
|
needs_payload_bodies: [input, result]
|
|
124
153
|
# Phase 5 — Tier-1 hook for the minimal-safe-diff rule. Counts unique
|
|
125
154
|
# files touched per turn into agents/runtime/state/minimal-safe-diff.json and
|
|
@@ -139,12 +168,14 @@ concerns:
|
|
|
139
168
|
args: []
|
|
140
169
|
fail_closed: false
|
|
141
170
|
severity: advisory
|
|
171
|
+
effect: verification
|
|
142
172
|
needs_payload_bodies: [input]
|
|
143
173
|
minimal-safe-diff:
|
|
144
174
|
script: src/scripts/minimal_safe_diff_hook.ts
|
|
145
175
|
args: []
|
|
146
176
|
fail_closed: false
|
|
147
177
|
severity: advisory
|
|
178
|
+
effect: verification
|
|
148
179
|
needs_payload_bodies: [input]
|
|
149
180
|
# road-to-security-pillar.md P3.2 — PostToolUse prompt-injection scanner.
|
|
150
181
|
# Warn-in-context (exit 2), never blocks. Default-OFF: no-ops unless
|
|
@@ -170,6 +201,7 @@ concerns:
|
|
|
170
201
|
args: []
|
|
171
202
|
fail_closed: false
|
|
172
203
|
severity: advisory
|
|
204
|
+
effect: verification
|
|
173
205
|
needs_payload_bodies: [input, result]
|
|
174
206
|
# road-to-security-hardening Phase 3 — PreToolUse guard turning the
|
|
175
207
|
# git-history-discipline Iron Law into a deterministic gate. Blocks
|
|
@@ -183,6 +215,7 @@ concerns:
|
|
|
183
215
|
args: []
|
|
184
216
|
fail_closed: true
|
|
185
217
|
severity: blocking
|
|
218
|
+
effect: permission
|
|
186
219
|
needs_payload_bodies: [input]
|
|
187
220
|
# road-to-ai-employee-borrowings Phase 1 — kernel immutability Layer 1.
|
|
188
221
|
# PreToolUse guard: DENIES Write/Edit/NotebookEdit (and cross-platform
|
|
@@ -200,6 +233,7 @@ concerns:
|
|
|
200
233
|
args: []
|
|
201
234
|
fail_closed: true
|
|
202
235
|
severity: blocking
|
|
236
|
+
effect: permission
|
|
203
237
|
needs_payload_bodies: [input]
|
|
204
238
|
# road-to-a-kernel-that-guards-its-plumbing 1.2 — the build-output half of
|
|
205
239
|
# "one mechanism per file class". PreToolUse guard: DENIES Write/Edit/
|
|
@@ -221,6 +255,7 @@ concerns:
|
|
|
221
255
|
args: []
|
|
222
256
|
fail_closed: true
|
|
223
257
|
severity: blocking
|
|
258
|
+
effect: permission
|
|
224
259
|
needs_payload_bodies: [input]
|
|
225
260
|
# road-to-asked-not-parked Phase 5.1 — one question per structured-ask call.
|
|
226
261
|
# PreToolUse guard: DENIES a call to a host's native question picker whose
|
|
@@ -250,6 +285,7 @@ concerns:
|
|
|
250
285
|
args: []
|
|
251
286
|
fail_closed: false
|
|
252
287
|
severity: blocking
|
|
288
|
+
effect: permission
|
|
253
289
|
tools: [AskUserQuestion, AskQuestion, UserQuestion, ask_user_question, ask_question, user_question]
|
|
254
290
|
needs_payload_bodies: [input]
|
|
255
291
|
# road-to-source-silence Phase 4.2 — the write-time half of source
|
|
@@ -272,6 +308,7 @@ concerns:
|
|
|
272
308
|
args: []
|
|
273
309
|
fail_closed: false
|
|
274
310
|
severity: blocking
|
|
311
|
+
effect: permission
|
|
275
312
|
needs_payload_bodies: [input]
|
|
276
313
|
# road-to-renewal-leverage Phase 2 — "fix the code, not the config".
|
|
277
314
|
# PreToolUse guard over the recorded allowlist-growth antipattern
|
|
@@ -288,6 +325,7 @@ concerns:
|
|
|
288
325
|
args: []
|
|
289
326
|
fail_closed: false
|
|
290
327
|
severity: blocking
|
|
328
|
+
effect: permission
|
|
291
329
|
needs_payload_bodies: [input]
|
|
292
330
|
# token-saving Phase 3 — PreToolUse RTK-wrap nudge. DETERMINISTIC: keys off a
|
|
293
331
|
# live `which rtk` probe (not the self-reported flag). When rtk is installed
|
|
@@ -302,6 +340,7 @@ concerns:
|
|
|
302
340
|
args: []
|
|
303
341
|
fail_closed: false
|
|
304
342
|
severity: advisory
|
|
343
|
+
effect: formatting
|
|
305
344
|
needs_payload_bodies: [input]
|
|
306
345
|
# road-to-anti-slop-detector Phase 3 — OPTIONAL PreToolUse anti-slop nudge.
|
|
307
346
|
# Runs the lint_design_slop registry against about-to-be-written UI content
|
|
@@ -315,6 +354,7 @@ concerns:
|
|
|
315
354
|
args: []
|
|
316
355
|
fail_closed: false
|
|
317
356
|
severity: advisory
|
|
357
|
+
effect: verification
|
|
318
358
|
needs_payload_bodies: [input]
|
|
319
359
|
# road-to-frontend-power E1.1 / E1.2 / E1.3 — the DELIVERY carrier the 0.0 %
|
|
320
360
|
# UI-write measurement never had. One script on two slots:
|
|
@@ -341,6 +381,7 @@ concerns:
|
|
|
341
381
|
args: []
|
|
342
382
|
fail_closed: false
|
|
343
383
|
severity: advisory
|
|
384
|
+
effect: notification
|
|
344
385
|
needs_payload_bodies: [input]
|
|
345
386
|
# `advisory`, and the code MATCHES the declaration rather than the prose.
|
|
346
387
|
#
|
|
@@ -366,6 +407,7 @@ concerns:
|
|
|
366
407
|
args: ['--slot', 'stop']
|
|
367
408
|
fail_closed: false
|
|
368
409
|
severity: advisory
|
|
410
|
+
effect: notification
|
|
369
411
|
# road-to-frontend-skill-application Phase 4 — OPTIONAL PreToolUse UI-route
|
|
370
412
|
# nudge. On a Write/Edit to a UI surface with no design consultation latched
|
|
371
413
|
# this session, WARNS (exit 2) naming the route; a read or search touching a
|
|
@@ -381,6 +423,7 @@ concerns:
|
|
|
381
423
|
args: []
|
|
382
424
|
fail_closed: false
|
|
383
425
|
severity: advisory
|
|
426
|
+
effect: notification
|
|
384
427
|
needs_payload_bodies: [input]
|
|
385
428
|
# road-to-a-graph-that-is-shipped 1.2 — PreToolUse code-graph CONTEXT line,
|
|
386
429
|
# replacing the ADR-124 Phase 4 nudge concern, whose hook was deleted in the
|
|
@@ -437,6 +480,7 @@ concerns:
|
|
|
437
480
|
args: []
|
|
438
481
|
fail_closed: false
|
|
439
482
|
severity: advisory
|
|
483
|
+
effect: telemetry
|
|
440
484
|
# road-to-autonomous-auto-mode — the carrier for `token-efficiency` § One
|
|
441
485
|
# command per Bash call. That rule is `type: auto`, so its triggers match the
|
|
442
486
|
# PROMPT, and no prompt announces that the next tool call will be chained;
|
|
@@ -483,20 +527,31 @@ concerns:
|
|
|
483
527
|
args: []
|
|
484
528
|
fail_closed: false
|
|
485
529
|
severity: advisory
|
|
530
|
+
effect: notification
|
|
486
531
|
needs_payload_bodies: [input]
|
|
487
532
|
code-graph-context:
|
|
488
533
|
script: src/scripts/hooks/code_graph_context_hook.ts
|
|
489
534
|
args: []
|
|
490
535
|
fail_closed: false
|
|
491
536
|
severity: advisory
|
|
537
|
+
effect: context
|
|
492
538
|
# Per-concern tool filter — the dispatcher skips this concern in-process on
|
|
493
539
|
# any other tool. See `_concern_matches_tool` in hooks/dispatch_hook.ts for
|
|
494
540
|
# the semantics (absent = every event, "*" = the same, non-tool events are
|
|
495
541
|
# never filtered) and for why the filter is NOT a host `matcher`.
|
|
496
542
|
#
|
|
497
543
|
# This set is not a guess: the hook's entire branch surface is
|
|
498
|
-
# `name === 'Grep' || name === 'Glob'
|
|
499
|
-
# (code_graph_context_hook.ts), and a test pins the
|
|
544
|
+
# `name === 'Grep' || name === 'Glob'`, `name === 'Read'` and
|
|
545
|
+
# `name === 'Bash'` (code_graph_context_hook.ts), and a test pins the
|
|
546
|
+
# manifest list against it.
|
|
547
|
+
#
|
|
548
|
+
# `Bash` is the ONE host-named tool declared here, and the caveat the
|
|
549
|
+
# blocking-guard paragraph below raises applies to it: on a host that calls
|
|
550
|
+
# the shell `launch-process` or `BashTool` this concern will not see it. That
|
|
551
|
+
# is a missed advisory line, not a disabled guard — the trade the paragraph
|
|
552
|
+
# below refuses for a security hook is the right one for a context line, and
|
|
553
|
+
# the alternative (dropping the filter) would dispatch this concern on every
|
|
554
|
+
# tool call in the session.
|
|
500
555
|
#
|
|
501
556
|
# Deliberately NOT declared on the four blocking PreToolUse guards
|
|
502
557
|
# (block-no-verify, block-kernel-rule-writes, block-plumbing-writes,
|
|
@@ -508,7 +563,7 @@ concerns:
|
|
|
508
563
|
# re-read `tool_name` and return early; paying one dispatch to keep a guard
|
|
509
564
|
# correct is the right trade, and the cheap filter is reserved for advisory
|
|
510
565
|
# concerns whose set is provable from their own source.
|
|
511
|
-
tools: [Grep, Glob, Read]
|
|
566
|
+
tools: [Grep, Glob, Read, Bash]
|
|
512
567
|
needs_payload_bodies: [input]
|
|
513
568
|
# road-to-reachable-code-memory Phase 4 — session_end learning-sidecar
|
|
514
569
|
# aggregation. Joins the EXISTING session_end concern set (no new platform
|
|
@@ -524,6 +579,7 @@ concerns:
|
|
|
524
579
|
args: []
|
|
525
580
|
fail_closed: false
|
|
526
581
|
severity: advisory
|
|
582
|
+
effect: memory
|
|
527
583
|
# Phase 2 of road-to-hooks-actually-fire-in-consumers — session_start
|
|
528
584
|
# gate that surfaces the marketplace-install-but-unscaffolded shape.
|
|
529
585
|
# Writes .augment/.first-run-action-needed.md + one stderr line so
|
|
@@ -534,6 +590,7 @@ concerns:
|
|
|
534
590
|
args: []
|
|
535
591
|
fail_closed: false
|
|
536
592
|
severity: advisory
|
|
593
|
+
effect: notification
|
|
537
594
|
# session-profile-activation Phase 1 — emits a one-line staleness notice
|
|
538
595
|
# when a new session starts with a `runtime.active_packs` overlay carried
|
|
539
596
|
# over from a previous session. Never resets (option a, explicit
|
|
@@ -543,6 +600,7 @@ concerns:
|
|
|
543
600
|
args: []
|
|
544
601
|
fail_closed: false
|
|
545
602
|
severity: advisory
|
|
603
|
+
effect: notification
|
|
546
604
|
# Defense-in-depth twin of the update-command wrapper refresh
|
|
547
605
|
# (cmd_upgrade / cmd_refresh). On session_start, re-stamps a stale
|
|
548
606
|
# project-local ./agent-config wrapper from the canonical template so
|
|
@@ -553,6 +611,7 @@ concerns:
|
|
|
553
611
|
args: []
|
|
554
612
|
fail_closed: false
|
|
555
613
|
severity: advisory
|
|
614
|
+
effect: notification
|
|
556
615
|
# road-to-install-path-convergence Phase 4 — duplicate-surface probe.
|
|
557
616
|
# Reads src/config/surface-matrix.yml, existence-checks declared duplicate
|
|
558
617
|
# classes, nudges ONCE per day (state: agents/runtime/state/
|
|
@@ -563,6 +622,7 @@ concerns:
|
|
|
563
622
|
args: []
|
|
564
623
|
fail_closed: false
|
|
565
624
|
severity: advisory
|
|
625
|
+
effect: telemetry
|
|
566
626
|
# road-to-team-mode Phase 4 — managed Review-Gate circuit breaker.
|
|
567
627
|
# Runs AFTER the plugin's own Stop gate: reads the persisted gate job
|
|
568
628
|
# record, counts consecutive BLOCK verdicts per session, injects the
|
|
@@ -575,6 +635,7 @@ concerns:
|
|
|
575
635
|
args: []
|
|
576
636
|
fail_closed: false
|
|
577
637
|
severity: advisory
|
|
638
|
+
effect: verification
|
|
578
639
|
# Reply-shape backstop for the direct-answers rule (reply-close): a PR
|
|
579
640
|
# created THIS turn must end the reply as the literal last raw URL. This
|
|
580
641
|
# PostToolUse hook fires right after a PR *create* (gh pr create, or a
|
|
@@ -587,6 +648,7 @@ concerns:
|
|
|
587
648
|
args: []
|
|
588
649
|
fail_closed: false
|
|
589
650
|
severity: advisory
|
|
651
|
+
effect: notification
|
|
590
652
|
needs_payload_bodies: [input, result]
|
|
591
653
|
# Push-settle reminder — the second half of "a push closes its own loop".
|
|
592
654
|
# The pre-push hook answers "is this push safe to make"; nothing answered "is
|
|
@@ -602,6 +664,7 @@ concerns:
|
|
|
602
664
|
args: []
|
|
603
665
|
fail_closed: false
|
|
604
666
|
severity: advisory
|
|
667
|
+
effect: verification
|
|
605
668
|
needs_payload_bodies: [input, result]
|
|
606
669
|
# Language-mirror pin — carries the ONE fact the transcript cannot express:
|
|
607
670
|
# which language the human actually typed. 47 skill/slash-command bodies were
|
|
@@ -615,6 +678,7 @@ concerns:
|
|
|
615
678
|
args: []
|
|
616
679
|
fail_closed: false
|
|
617
680
|
severity: advisory
|
|
681
|
+
effect: context
|
|
618
682
|
# Git-authorization ledger — records which git ops the user's OWN WORDS
|
|
619
683
|
# authorize this turn. Writes state only; never blocks.
|
|
620
684
|
git-authorization:
|
|
@@ -622,6 +686,7 @@ concerns:
|
|
|
622
686
|
args: []
|
|
623
687
|
fail_closed: false
|
|
624
688
|
severity: advisory
|
|
689
|
+
effect: verification
|
|
625
690
|
# The blocking half was REMOVED by owner decision on 2026-09-04 (ADR-254).
|
|
626
691
|
# It refused authorizations the owner had in fact given: a guardrail sentence
|
|
627
692
|
# inside an authorization ("never merge empty PRs") read as a withdrawal and
|
|
@@ -653,6 +718,7 @@ concerns:
|
|
|
653
718
|
args: []
|
|
654
719
|
fail_closed: false
|
|
655
720
|
severity: blocking
|
|
721
|
+
effect: permission
|
|
656
722
|
needs_payload_bodies: [input]
|
|
657
723
|
# Canary injection — deterministic carrier for the
|
|
658
724
|
# session-canary rule (greet-by-name at task start + reply-close markers
|
|
@@ -675,6 +741,7 @@ concerns:
|
|
|
675
741
|
args: []
|
|
676
742
|
fail_closed: false
|
|
677
743
|
severity: advisory
|
|
744
|
+
effect: context
|
|
678
745
|
# Council-availability fact. Carries whether a council is configured and from
|
|
679
746
|
# where, because the always-loaded layer refers to the council conditionally
|
|
680
747
|
# and never says how to check. Measured 2026-08-08: an agent announced "kein
|
|
@@ -687,6 +754,7 @@ concerns:
|
|
|
687
754
|
args: []
|
|
688
755
|
fail_closed: false
|
|
689
756
|
severity: advisory
|
|
757
|
+
effect: verification
|
|
690
758
|
# Org-telemetry disclosure (road-to-org-telemetry Phase 3.2; ADR-233 § D5).
|
|
691
759
|
# `org-pack` is the only consent class in this suite granted by somebody
|
|
692
760
|
# OTHER than the person it binds — an org administrator, once, for every
|
|
@@ -700,6 +768,7 @@ concerns:
|
|
|
700
768
|
args: []
|
|
701
769
|
fail_closed: false
|
|
702
770
|
severity: advisory
|
|
771
|
+
effect: notification
|
|
703
772
|
# road-to-org-telemetry Phase 2 (step 2.1) — session-end Class-A flush.
|
|
704
773
|
# Checks whether the outbound spool has bytes and, if so, spawns a DETACHED
|
|
705
774
|
# sender and returns. It makes no network call in the session's own process,
|
|
@@ -728,6 +797,7 @@ concerns:
|
|
|
728
797
|
args: []
|
|
729
798
|
fail_closed: false
|
|
730
799
|
severity: advisory
|
|
800
|
+
effect: telemetry
|
|
731
801
|
# Self-repair intake (road-to-self-repair Phase 1). Two slots, one queue:
|
|
732
802
|
# user_prompt_submit opens a record when the user states the agent worked
|
|
733
803
|
# wrongly and injects the open-queue line; stop runs the deterministic
|
|
@@ -739,6 +809,7 @@ concerns:
|
|
|
739
809
|
args: []
|
|
740
810
|
fail_closed: false
|
|
741
811
|
severity: advisory
|
|
812
|
+
effect: telemetry
|
|
742
813
|
# Shared per-session register (road-to-parallel-session-coordination) — writes
|
|
743
814
|
# this session into <git-common-dir>/agent-sessions/<session_id>.json so every
|
|
744
815
|
# other worktree of the repo can see it, and on session_start injects the live
|
|
@@ -772,6 +843,7 @@ concerns:
|
|
|
772
843
|
args: []
|
|
773
844
|
fail_closed: false
|
|
774
845
|
severity: advisory
|
|
846
|
+
effect: telemetry
|
|
775
847
|
# road-to-orchestrator-discipline-carriers Phase 3 (F6) — deterministic
|
|
776
848
|
# PostToolUse orchestration-telemetry capture. Fires only on an Agent/Task
|
|
777
849
|
# tool-use completion (the two observed subagent-dispatch tool names) and
|
|
@@ -784,6 +856,7 @@ concerns:
|
|
|
784
856
|
args: []
|
|
785
857
|
fail_closed: false
|
|
786
858
|
severity: advisory
|
|
859
|
+
effect: telemetry
|
|
787
860
|
tools: [Agent, Task]
|
|
788
861
|
needs_payload_bodies: [input, result]
|
|
789
862
|
# road-to-org-telemetry Phase 1 (step 1.2) — Class-A usage capture. Fires
|
|
@@ -827,6 +900,7 @@ concerns:
|
|
|
827
900
|
args: []
|
|
828
901
|
fail_closed: false
|
|
829
902
|
severity: advisory
|
|
903
|
+
effect: telemetry
|
|
830
904
|
# Provable from the hook's own source: the only branch surface is
|
|
831
905
|
# `extractToolName(payload) !== SKILL_TOOL_NAME`.
|
|
832
906
|
tools: [Skill]
|
|
@@ -873,6 +947,7 @@ concerns:
|
|
|
873
947
|
args: []
|
|
874
948
|
fail_closed: false
|
|
875
949
|
severity: advisory
|
|
950
|
+
effect: notification
|
|
876
951
|
nudge_rank: 1
|
|
877
952
|
# road-to-inbox-harvest-2026-08-d-runtime-skill-routing Phase 2 — binds the
|
|
878
953
|
# deterministic task→skill ranker, which had shipped with ZERO production
|
|
@@ -896,6 +971,7 @@ concerns:
|
|
|
896
971
|
args: []
|
|
897
972
|
fail_closed: false
|
|
898
973
|
severity: advisory
|
|
974
|
+
effect: context
|
|
899
975
|
nudge_rank: 2
|
|
900
976
|
# road-to-trigger-delivered-rule-bodies Phase 1 — the DELIVERY twin of
|
|
901
977
|
# `skill-route` above: same two slots, opposite payload policy. `skill-route`
|
|
@@ -934,6 +1010,7 @@ concerns:
|
|
|
934
1010
|
args: []
|
|
935
1011
|
fail_closed: false
|
|
936
1012
|
severity: advisory
|
|
1013
|
+
effect: context
|
|
937
1014
|
needs_payload_bodies: [input]
|
|
938
1015
|
# road-to-orchestrator-discipline-carriers Phase 5 (F4-lite) — end-review
|
|
939
1016
|
# nudge. Fires ONLY when the session mutated tracked+untracked, non-doc
|
|
@@ -961,11 +1038,13 @@ concerns:
|
|
|
961
1038
|
args: []
|
|
962
1039
|
fail_closed: false
|
|
963
1040
|
severity: advisory
|
|
1041
|
+
effect: verification
|
|
964
1042
|
end-review-nudge:
|
|
965
1043
|
script: src/scripts/hooks/end_review_nudge_hook.ts
|
|
966
1044
|
args: []
|
|
967
1045
|
fail_closed: false
|
|
968
1046
|
severity: advisory
|
|
1047
|
+
effect: notification
|
|
969
1048
|
# road-to-stop-gate-honesty step 3.1 — skipped on a refusal RETRY.
|
|
970
1049
|
# ARGUMENT, per concern as that step requires: the F2 fire gate is a
|
|
971
1050
|
# once-per-session marker, and this concern's own header records that a
|
|
@@ -1006,6 +1085,7 @@ concerns:
|
|
|
1006
1085
|
args: []
|
|
1007
1086
|
fail_closed: false
|
|
1008
1087
|
severity: advisory
|
|
1088
|
+
effect: telemetry
|
|
1009
1089
|
# road-to-conformance-round5 Phase 3 — the FIRST concern that can refuse a
|
|
1010
1090
|
# turn-END. Round 5 measured the reason: both blocking carriers reached zero
|
|
1011
1091
|
# violations, neither advisory carrier did, and 19 language violations
|
|
@@ -1029,16 +1109,34 @@ concerns:
|
|
|
1029
1109
|
# detector's own trigger conditions, which is the same shape `delegation-nudge`
|
|
1030
1110
|
# uses — no signal, no output. `hooks.turn_end_gate.*` is in REMOVED_KEYS.
|
|
1031
1111
|
#
|
|
1032
|
-
# fail_closed: FALSE
|
|
1033
|
-
#
|
|
1034
|
-
#
|
|
1035
|
-
#
|
|
1036
|
-
#
|
|
1112
|
+
# fail_closed: FALSE — and read what that flag still DOES before changing it.
|
|
1113
|
+
# Since the dispatcher resolves rc >= 3 by SEVERITY it no longer decides the
|
|
1114
|
+
# crash branch at all; it decides the stdin-read-failure deny
|
|
1115
|
+
# (`stdin_failure_policy._is_fail_closed_blocking`), and nothing else. An
|
|
1116
|
+
# independent review named the old wording a reviewer trap: an operator
|
|
1117
|
+
# reading "fail_closed: false — a crash must let the turn END" would believe
|
|
1118
|
+
# they were configuring crash behaviour, and flipping it would change the
|
|
1119
|
+
# read-failure deny instead. The REASON it was set false is still true —
|
|
1120
|
+
# failing closed on a turn-end gate does not degrade the session, it wedges
|
|
1121
|
+
# it — but the flag is no longer what delivers it.
|
|
1122
|
+
#
|
|
1123
|
+
# What answers it now lives in the dispatcher, which is the only layer that
|
|
1124
|
+
# can: a blocking `stop` concern spends its refusal ONCE, and on the retry the
|
|
1125
|
+
# host marks (`stop_hook_active`) a crash falls back to fail-open and the turn
|
|
1126
|
+
# ends. The hook's own two re-entrancy layers cannot do this job — both run
|
|
1127
|
+
# INSIDE `main()`, so a crash never reaches them.
|
|
1128
|
+
#
|
|
1129
|
+
# The trade is deliberate: one refused Stop buys a guard that no longer
|
|
1130
|
+
# permits every turn end precisely when it is broken, and the second Stop
|
|
1131
|
+
# releases. Re-entrancy inside the hook stays what it was (`stop_hook_active`;
|
|
1132
|
+
# a marker keyed on the last USER message, never the reply) — see the hook's
|
|
1133
|
+
# file header.
|
|
1037
1134
|
turn-end-gate:
|
|
1038
1135
|
script: src/scripts/hooks/turn_end_gate_hook.ts
|
|
1039
1136
|
args: []
|
|
1040
1137
|
fail_closed: false
|
|
1041
1138
|
severity: blocking
|
|
1139
|
+
effect: permission
|
|
1042
1140
|
# Comment-discipline advisory — the write-time half of
|
|
1043
1141
|
# `lint_code_comments`. Scans the TEXT JUST WRITTEN (Write ->
|
|
1044
1142
|
# tool_input.content, Edit -> tool_input.new_string), never the file on
|
|
@@ -1059,6 +1157,7 @@ concerns:
|
|
|
1059
1157
|
args: []
|
|
1060
1158
|
fail_closed: false
|
|
1061
1159
|
severity: advisory
|
|
1160
|
+
effect: verification
|
|
1062
1161
|
tools: [Write, Edit]
|
|
1063
1162
|
needs_payload_bodies: [input]
|
|
1064
1163
|
# road-to-token-economy-cache Phase 5.1/5.2 — edit-shape advisory. Fires
|
|
@@ -1076,6 +1175,7 @@ concerns:
|
|
|
1076
1175
|
args: []
|
|
1077
1176
|
fail_closed: false
|
|
1078
1177
|
severity: advisory
|
|
1178
|
+
effect: verification
|
|
1079
1179
|
# Provable from the hook's own source: the only branch surface is
|
|
1080
1180
|
# `toolName !== 'Write'` — same cheap-filter discipline as
|
|
1081
1181
|
# `orchestration-record`'s [Agent, Task].
|
|
@@ -1097,6 +1197,7 @@ concerns:
|
|
|
1097
1197
|
args: []
|
|
1098
1198
|
fail_closed: false
|
|
1099
1199
|
severity: advisory
|
|
1200
|
+
effect: verification
|
|
1100
1201
|
# Provable from the hook's own source: READ_TOOLS ∪ WRITE_TOOLS.
|
|
1101
1202
|
tools: [Read, Edit, Write]
|
|
1102
1203
|
needs_payload_bodies: [input]
|
|
@@ -1131,6 +1232,7 @@ concerns:
|
|
|
1131
1232
|
args: []
|
|
1132
1233
|
fail_closed: false
|
|
1133
1234
|
severity: advisory
|
|
1235
|
+
effect: memory
|
|
1134
1236
|
# Provable from the hook's own source: the union of the `tools` sets on
|
|
1135
1237
|
# RECALL_RULES — COMMAND_TOOLS (rules 1 and 4) ∪ EDIT_TOOLS (rules 2, 3).
|
|
1136
1238
|
tools: [Bash, Edit, Write, MultiEdit, str-replace-editor, save-file, launch-process]
|
|
@@ -1154,6 +1256,7 @@ concerns:
|
|
|
1154
1256
|
args: []
|
|
1155
1257
|
fail_closed: false
|
|
1156
1258
|
severity: advisory
|
|
1259
|
+
effect: notification
|
|
1157
1260
|
# road-to-long-horizon-execution Phase 1 (H-1) — the stop slot's first
|
|
1158
1261
|
# WORK-REMAINING concern. No-op unless this session claimed a roadmap
|
|
1159
1262
|
# (`sessions:claim`) whose frontmatter says `execution.mode: autonomous`;
|
|
@@ -1166,6 +1269,12 @@ concerns:
|
|
|
1166
1269
|
# always. Events: agents/runtime/state/run-continuation.jsonl. Kill switch:
|
|
1167
1270
|
# AGENT_CONFIG_NO_RUN_CONTINUATION=1. fail_closed: false — the only block
|
|
1168
1271
|
# it ever emits is the one carrying its own continuation text.
|
|
1272
|
+
# fail_closed: false — and as for `turn-end-gate` above, the dispatcher now
|
|
1273
|
+
# resolves rc >= 3 by SEVERITY rather than by this flag, so a crash here
|
|
1274
|
+
# refuses the first Stop and releases on the retry. What the flag still
|
|
1275
|
+
# decides is the stdin-read-failure deny, not crash behaviour; changing it
|
|
1276
|
+
# changes that and nothing else. The only block this concern DECIDES to emit
|
|
1277
|
+
# is still the one carrying its own continuation text.
|
|
1169
1278
|
run-continuation:
|
|
1170
1279
|
script: src/scripts/hooks/run_continuation_hook.ts
|
|
1171
1280
|
args: []
|
|
@@ -1179,6 +1288,7 @@ concerns:
|
|
|
1179
1288
|
# mechanism was inert on the one verified host. `turn-end-gate` above sits
|
|
1180
1289
|
# on the same slot and declares `blocking` for exactly this reason.
|
|
1181
1290
|
severity: blocking
|
|
1291
|
+
effect: permission
|
|
1182
1292
|
# road-to-user-out-of-the-loop Phase 0 Step 1 — the interruption ledger.
|
|
1183
1293
|
# Every Stop, classifies whether the turn that just ended put a synchronous
|
|
1184
1294
|
# contact to the user and appends one `{run_id, turn, kind, class, roadmap}`
|
|
@@ -1204,6 +1314,7 @@ concerns:
|
|
|
1204
1314
|
args: []
|
|
1205
1315
|
fail_closed: false
|
|
1206
1316
|
severity: advisory
|
|
1317
|
+
effect: telemetry
|
|
1207
1318
|
# road-to-stop-gate-honesty step 3.1 — skipped on a refusal RETRY, and this
|
|
1208
1319
|
# is the flag with the real saving.
|
|
1209
1320
|
# ARGUMENT, per concern: `alreadyRecorded(ledgerPath, run_id, turn)` dedupes
|
|
@@ -1237,6 +1348,7 @@ concerns:
|
|
|
1237
1348
|
args: []
|
|
1238
1349
|
fail_closed: false
|
|
1239
1350
|
severity: advisory
|
|
1351
|
+
effect: telemetry
|
|
1240
1352
|
# road-to-inbox-harvest-2026-08-d-context-ledger Phase 1 Step 1.1 — the
|
|
1241
1353
|
# tool-result byte counter. `hook-token-budget.json` registers the gap it
|
|
1242
1354
|
# closes in its own words: bytes-into-context from tool RESULTS are
|
|
@@ -1261,6 +1373,7 @@ concerns:
|
|
|
1261
1373
|
args: []
|
|
1262
1374
|
fail_closed: false
|
|
1263
1375
|
severity: advisory
|
|
1376
|
+
effect: telemetry
|
|
1264
1377
|
# road-to-subagent-lifecycle-integrity Phase 3 Step 1 — spawn guard, SHADOW
|
|
1265
1378
|
# ONLY, per docs/contracts/concern-activation-policy.md. On every Agent/Task
|
|
1266
1379
|
# call it appends one `spawn_guard_shadow` line recording what a guard WOULD
|
|
@@ -1281,6 +1394,7 @@ concerns:
|
|
|
1281
1394
|
args: []
|
|
1282
1395
|
fail_closed: false
|
|
1283
1396
|
severity: advisory
|
|
1397
|
+
effect: telemetry
|
|
1284
1398
|
tools: [Agent, Task]
|
|
1285
1399
|
# road-to-source-first-frontend Phase 3 Steps 1-2 — source-first gate, SHADOW
|
|
1286
1400
|
# ONLY, per docs/contracts/concern-activation-policy.md. On every
|
|
@@ -1305,11 +1419,15 @@ concerns:
|
|
|
1305
1419
|
# to advisory is pre-registered in the hook header.
|
|
1306
1420
|
#
|
|
1307
1421
|
# Never blocks, never warns: exit 0 on every path. fail_closed: false.
|
|
1422
|
+
# `effect: telemetry`, not `verification`, and the script's own header is why:
|
|
1423
|
+
# "it emits nothing to the model and it never blocks". A shadow concern
|
|
1424
|
+
# records what a gate WOULD have said; recording is what it delivers.
|
|
1308
1425
|
source-first-gate:
|
|
1309
1426
|
script: src/scripts/hooks/source_first_gate_hook.ts
|
|
1310
1427
|
args: []
|
|
1311
1428
|
fail_closed: false
|
|
1312
1429
|
severity: advisory
|
|
1430
|
+
effect: telemetry
|
|
1313
1431
|
needs_payload_bodies: [input]
|
|
1314
1432
|
# road-to-runtime-event-journal Phase 1 step 1.4 — the journal's hook binding
|
|
1315
1433
|
# (AI council 2026-08-28, decision 3). `_lib/runtime_journal.ts` shipped bound
|
|
@@ -1353,6 +1471,7 @@ concerns:
|
|
|
1353
1471
|
args: []
|
|
1354
1472
|
fail_closed: false
|
|
1355
1473
|
severity: advisory
|
|
1474
|
+
effect: telemetry
|
|
1356
1475
|
|
|
1357
1476
|
# Role axis (road-to-token-economy-dispatch Phase 2). The dispatcher reads
|
|
1358
1477
|
# AGENT_CONFIG_SESSION_ROLE (resolved via _lib/session_role.ts — set ONLY by
|
|
@@ -1429,7 +1548,17 @@ platforms:
|
|
|
1429
1548
|
|
|
1430
1549
|
claude:
|
|
1431
1550
|
ask: native
|
|
1432
|
-
session_start: [chat-history, hot-context, handoff-context, session-canary, council-availability, telemetry-disclosure, first-run-gate, onboarding-gate, verify-before-complete, minimal-safe-diff, profile-staleness, wrapper-freshness, surface-probe, session-register, review-baseline, journal-record]
|
|
1551
|
+
session_start: [chat-history, hot-context, handoff-context, session-canary, council-availability, telemetry-disclosure, first-run-gate, onboarding-gate, verify-before-complete, minimal-safe-diff, profile-staleness, wrapper-freshness, surface-probe, session-register, review-baseline, journal-record, rule-inject]
|
|
1552
|
+
# `rule-inject` is bound here for ONE source: `compact`
|
|
1553
|
+
# (road-to-a-rule-carrier-that-works-outside-the-repo step 1.6). The concern
|
|
1554
|
+
# returns before reading anything on `startup`, `resume`, `clear` and
|
|
1555
|
+
# `fork`, so this binding costs a function call per session on every other
|
|
1556
|
+
# source. It exists because `pre_compact` can only re-ARM delivery — it
|
|
1557
|
+
# cannot deliver, since the host is about to discard the context it would
|
|
1558
|
+
# emit into. The law sections of the pre-compaction seen-set are sent here
|
|
1559
|
+
# instead, under the same 8,000-character budget, which is the half the
|
|
1560
|
+
# concern's own header used to end at: a rule whose trigger does not recur
|
|
1561
|
+
# was not restored at all.
|
|
1433
1562
|
session_end: [chat-history, memory-learn, session-register, roadmap-progress, telemetry-flush, journal-record]
|
|
1434
1563
|
stop: [chat-history, verify-before-complete, team-review-gate, end-review-nudge, obligation-settle, turn-end-gate, self-repair, session-register, session-eol, interruption-ledger, roadmap-progress, design-pass-stop, suggestion-capture, journal-record, run-continuation]
|
|
1435
1564
|
user_prompt_submit: [chat-history, verify-before-complete, minimal-safe-diff, language-mirror, delegation-nudge, skill-route, git-authorization, session-canary, self-repair, session-register, rule-inject, suggestion-capture, journal-record]
|
|
@@ -1608,6 +1737,18 @@ native_event_aliases:
|
|
|
1608
1737
|
Stop: stop
|
|
1609
1738
|
UserPromptSubmit: user_prompt_submit
|
|
1610
1739
|
PostToolUse: post_tool_use
|
|
1740
|
+
# A FAILING tool call does not fire `PostToolUse` at all — it fires
|
|
1741
|
+
# `PostToolUseFailure`, which until now was bound to nothing, so the
|
|
1742
|
+
# verification recorder never saw a red command and `verification_runs`
|
|
1743
|
+
# could only ever hold passes. Observed on 2.1.286, three one-shot sessions,
|
|
1744
|
+
# exactly one of the two events per call — not inferred from the event list.
|
|
1745
|
+
# Lowered onto the SAME canonical slot rather than given a canonical event
|
|
1746
|
+
# of its own: one slot, one concern list, no change to the event vocabulary.
|
|
1747
|
+
# Deliberately claude-only. Cowork is Claude Code underneath and the rows
|
|
1748
|
+
# below duplicate this vocabulary, but this pair was measured on claude and
|
|
1749
|
+
# on no other host, and an alias row asserting a host behaviour nobody
|
|
1750
|
+
# observed is the defect class this suite keeps finding in its own tables.
|
|
1751
|
+
PostToolUseFailure: post_tool_use
|
|
1611
1752
|
PreToolUse: pre_tool_use
|
|
1612
1753
|
PreCompact: pre_compact
|
|
1613
1754
|
# road-to-subagent-lifecycle-integrity Phase 1 Step 1. Both tokens were
|