@event4u/agent-config 9.25.0 → 9.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +58 -143
- package/README.md +1 -1
- package/dist/agent-src/commands/analyze/conformance.md +21 -2
- package/dist/agent-src/commands/review/changes.md +6 -5
- package/dist/agent-src/commands/roadmap/next.md +256 -0
- package/dist/agent-src/commands/roadmap.md +12 -4
- package/dist/agent-src/contexts/execution/subagent-routing.md +4 -1
- package/dist/agent-src/rules/active-remediation.md +2 -0
- package/dist/agent-src/rules/analysis-skill-routing.md +2 -0
- package/dist/agent-src/rules/architecture.md +2 -0
- package/dist/agent-src/rules/artifact-drafting-protocol.md +2 -0
- package/dist/agent-src/rules/artifact-engagement-recording.md +2 -0
- package/dist/agent-src/rules/augment-edit-discipline.md +2 -0
- package/dist/agent-src/rules/autonomous-execution.md +2 -0
- package/dist/agent-src/rules/brand-consistency.md +2 -0
- package/dist/agent-src/rules/brand-source-of-truth.md +2 -0
- package/dist/agent-src/rules/broken-access-control.md +2 -0
- package/dist/agent-src/rules/cli-output-handling.md +2 -0
- package/dist/agent-src/rules/code-comment-discipline.md +2 -0
- package/dist/agent-src/rules/code-provenance.md +2 -0
- package/dist/agent-src/rules/command-suggestion-policy.md +2 -0
- package/dist/agent-src/rules/commit-conventions.md +2 -0
- package/dist/agent-src/rules/communication-through-line.md +2 -0
- package/dist/agent-src/rules/content-quoting-floor.md +2 -0
- package/dist/agent-src/rules/context-hygiene.md +10 -0
- package/dist/agent-src/rules/copilot-routing.md +2 -0
- package/dist/agent-src/rules/cross-source-consistency.md +2 -0
- package/dist/agent-src/rules/decision-revisit-gate.md +2 -0
- package/dist/agent-src/rules/delegation-policy.md +5 -2
- package/dist/agent-src/rules/design-fidelity.md +19 -1
- package/dist/agent-src/rules/design-review-after-ui-write.md +120 -0
- package/dist/agent-src/rules/devcontainer-routing.md +2 -0
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +2 -0
- package/dist/agent-src/rules/docker-commands.md +2 -0
- package/dist/agent-src/rules/domain-adoption-policy.md +2 -0
- package/dist/agent-src/rules/domain-safety-disclaimer.md +2 -0
- package/dist/agent-src/rules/domain-safety-pii.md +2 -0
- package/dist/agent-src/rules/domain-safety-retention.md +2 -0
- package/dist/agent-src/rules/downstream-changes.md +2 -0
- package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
- package/dist/agent-src/rules/evaluator-independence.md +19 -3
- package/dist/agent-src/rules/external-code-graph-interop.md +2 -0
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -0
- package/dist/agent-src/rules/fast-path-marker-visibility.md +2 -0
- package/dist/agent-src/rules/finance-safety-floor.md +2 -0
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
- package/dist/agent-src/rules/git-history-discipline.md +3 -1
- package/dist/agent-src/rules/guidelines.md +2 -0
- package/dist/agent-src/rules/history-discipline.md +2 -0
- package/dist/agent-src/rules/icon-consistency.md +2 -0
- package/dist/agent-src/rules/image-likeness-and-rights.md +2 -0
- package/dist/agent-src/rules/improve-before-implement.md +2 -0
- package/dist/agent-src/rules/invite-challenge.md +2 -0
- package/dist/agent-src/rules/laravel-routing.md +2 -0
- package/dist/agent-src/rules/laravel-translations.md +2 -0
- package/dist/agent-src/rules/legal-safety-floor.md +2 -0
- package/dist/agent-src/rules/lethal-trifecta-guard.md +2 -0
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +2 -0
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +2 -0
- package/dist/agent-src/rules/markdown-safe-codeblocks.md +2 -0
- package/dist/agent-src/rules/media-governance-routing.md +2 -0
- package/dist/agent-src/rules/media-sync-ground-truth.md +2 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
- package/dist/agent-src/rules/missing-tool-handling.md +2 -0
- package/dist/agent-src/rules/model-recommendation.md +2 -0
- package/dist/agent-src/rules/no-attribution-footers.md +2 -0
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +2 -0
- package/dist/agent-src/rules/no-pr-progress-comments.md +2 -0
- package/dist/agent-src/rules/no-roadmap-references.md +2 -0
- package/dist/agent-src/rules/notes-first-reasoning.md +2 -0
- package/dist/agent-src/rules/onboarding-gate.md +2 -0
- package/dist/agent-src/rules/output-discipline.md +2 -0
- package/dist/agent-src/rules/package-ci-checks.md +2 -0
- package/dist/agent-src/rules/persona-governance.md +2 -0
- package/dist/agent-src/rules/php-coding.md +2 -0
- package/dist/agent-src/rules/prefer-enums-over-literals.md +2 -0
- package/dist/agent-src/rules/preservation-guard.md +2 -0
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +2 -0
- package/dist/agent-src/rules/question-not-instruction.md +2 -0
- package/dist/agent-src/rules/reviewer-awareness.md +2 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +2 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +2 -0
- package/dist/agent-src/rules/role-mode-adherence.md +2 -0
- package/dist/agent-src/rules/rule-type-governance.md +2 -0
- package/dist/agent-src/rules/runtime-safety.md +2 -0
- package/dist/agent-src/rules/scale-discipline.md +2 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +2 -0
- package/dist/agent-src/rules/senior-engineering-discipline.md +2 -0
- package/dist/agent-src/rules/session-canary.md +63 -19
- package/dist/agent-src/rules/settings-ask-protocol.md +180 -0
- package/dist/agent-src/rules/size-enforcement.md +2 -0
- package/dist/agent-src/rules/skill-improvement-trigger.md +2 -0
- package/dist/agent-src/rules/skill-quality.md +2 -0
- package/dist/agent-src/rules/slash-command-routing-policy.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +2 -0
- package/dist/agent-src/rules/source-discovery-gate.md +2 -0
- package/dist/agent-src/rules/source-of-truth.md +2 -0
- package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -0
- package/dist/agent-src/rules/strategy-safety-floor.md +2 -0
- package/dist/agent-src/rules/symfony-routing.md +2 -0
- package/dist/agent-src/rules/think-before-action.md +2 -0
- package/dist/agent-src/rules/token-budget-discipline.md +8 -3
- package/dist/agent-src/rules/token-efficiency.md +2 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +2 -0
- package/dist/agent-src/rules/tool-safety.md +2 -0
- package/dist/agent-src/rules/ui-audit-gate.md +7 -0
- package/dist/agent-src/rules/untrusted-input-defense.md +2 -0
- package/dist/agent-src/rules/upstream-proposal.md +2 -0
- package/dist/agent-src/rules/user-interaction.md +5 -2
- package/dist/agent-src/rules/user-interrupt-priority.md +2 -0
- package/dist/agent-src/skills/recursive-verification/SKILL.md +13 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/cli/registry.js +2 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-SJQMJI7M.js → chunk-3KJIMFTB.js} +1 -1
- package/dist/cli-delegate/{chunk-BSLUHV2F.js → chunk-BCPIOAGV.js} +148 -133
- package/dist/cli-delegate/cmd_conformance.js +1 -1
- package/dist/cli-delegate/cmd_doctor.js +1 -1
- package/dist/cli-delegate/cmd_export.js +1 -1
- package/dist/cli-delegate/cmd_prune.js +1 -1
- package/dist/cli-delegate/cmd_route_audit.js +4 -1
- package/dist/cli-delegate/cmd_route_explain.js +4 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +1 -1
- package/dist/cli-delegate/cmd_uninstall.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +191 -120
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +11 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +9 -6
- package/dist/hooks/dispatch.js +1148 -349
- package/dist/install/install.mjs +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +571 -417
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +33 -2
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/io/yamlIO.js +85 -0
- package/dist/server/io/yamlIO.js.map +1 -1
- package/dist/server/nicknameResolver.js +116 -0
- package/dist/server/nicknameResolver.js.map +1 -0
- package/dist/server/routes/ping.js +29 -11
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +1 -12
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/wizard.js +52 -2
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/shared/interactiveContext.js +73 -0
- package/dist/shared/interactiveContext.js.map +1 -0
- package/dist/shared/nicknamePrefill.js +59 -0
- package/dist/shared/nicknamePrefill.js.map +1 -0
- package/dist/shared/settingsAsks.js +128 -0
- package/dist/shared/settingsAsks.js.map +1 -0
- package/dist/shared/settingsCarveOut.js +118 -0
- package/dist/shared/settingsCarveOut.js.map +1 -0
- package/dist/shared/settingsConsent.js +93 -0
- package/dist/shared/settingsConsent.js.map +1 -0
- package/dist/shared/settingsSurface.js +7 -1
- package/dist/shared/settingsSurface.js.map +1 -1
- package/dist/ui/assets/index-DmR0mbk4.js.map +1 -1
- package/package.json +1 -1
- package/src/config/agents-paths.yml +15 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +29 -1
- package/src/config/gate-violation-baselines.json +13 -7
- package/src/scripts/_cli/cmd_doctor.ts +6 -21
- package/src/scripts/_cli/cmd_route_audit.ts +4 -1
- package/src/scripts/_cli/cmd_route_explain.ts +9 -1
- package/src/scripts/_dispatch.bash +18 -0
- package/src/scripts/_lib/git_common_dir.ts +128 -0
- package/src/scripts/_lib/obligation_frequency.ts +391 -0
- package/src/scripts/_lib/session_register.ts +361 -0
- package/src/scripts/ai-video/stitch.sh +27 -9
- package/src/scripts/before_complete_hook.ts +23 -4
- package/src/scripts/bench_ab_v2_run.ts +272 -16
- package/src/scripts/bench_ab_v2_stats.ts +156 -3
- package/src/scripts/check_completion_review.ts +80 -3
- package/src/scripts/check_corpus_staleness.ts +692 -0
- package/src/scripts/check_enforcement_coverage.ts +192 -7
- package/src/scripts/check_gate_coverage.ts +67 -0
- package/src/scripts/check_hook_bundle_freshness.ts +183 -0
- package/src/scripts/check_rule_projection_integrity.ts +364 -0
- package/src/scripts/condense.ts +36 -2
- package/src/scripts/conformance_scan.ts +82 -17
- package/src/scripts/dispatch_r2_reviewer.ts +31 -2
- package/src/scripts/generate_settings_reference.ts +232 -0
- package/src/scripts/git_authorization_hook.ts +75 -10
- package/src/scripts/hook_manifest.yaml +87 -27
- package/src/scripts/hooks/block_no_verify.ts +59 -2
- package/src/scripts/hooks/block_unauthorized_git.ts +199 -16
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/design_slop_hook.ts +13 -1
- package/src/scripts/hooks/dispatch_hook.ts +97 -2
- package/src/scripts/hooks/evidence_independence.ts +40 -6
- package/src/scripts/language_mirror_hook.ts +256 -17
- package/src/scripts/lint_abstraction_thresholds.ts +41 -8
- package/src/scripts/lint_agents_layout.ts +2 -0
- package/src/scripts/lint_hook_manifest.ts +29 -0
- package/src/scripts/memory_learn_hook.ts +109 -6
- package/src/scripts/orchestration_backfill.ts +354 -0
- package/src/scripts/pr_url_reminder_hook.ts +17 -2
- package/src/scripts/release.ts +180 -37
- package/src/scripts/schemas/review-findings.schema.json +99 -0
- package/src/scripts/schemas/rule.schema.json +5 -0
- package/src/scripts/session_canary_hook.ts +35 -3
- package/src/scripts/session_register_hook.ts +288 -0
- package/src/scripts/sessions_cli.ts +140 -0
- package/src/scripts/validate_frontmatter.ts +68 -0
- package/src/server/io/yamlIO.ts +87 -0
- package/src/shared/interactiveContext.ts +98 -0
- package/src/shared/nicknamePrefill.ts +96 -0
- package/src/shared/settingsAsks.ts +176 -0
- package/src/shared/settingsCarveOut.ts +143 -0
- package/src/shared/settingsConsent.ts +136 -0
- package/src/shared/settingsSurface.ts +7 -1
|
@@ -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.
|
|
@@ -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
|
|
@@ -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
|
|
@@ -31,6 +31,8 @@ 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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -26,6 +26,8 @@ trust:
|
|
|
26
26
|
collision_ok:
|
|
27
27
|
"migration": "R-A6 migration-safety owns reversibility/index/retention rules"
|
|
28
28
|
"schema": "schema change routes the persistence pack floor (R-A6/R-A2)"
|
|
29
|
+
# obligation: line 41
|
|
30
|
+
obligation_frequency: "per-edit"
|
|
29
31
|
---
|
|
30
32
|
|
|
31
33
|
# Scale Discipline
|
|
@@ -25,6 +25,8 @@ collision_ok:
|
|
|
25
25
|
"implement": "implementation = the invisible-controls checklist"
|
|
26
26
|
"endpoint": "endpoint row of the surface-to-controls table"
|
|
27
27
|
"component": "component work = generalize + reuse duty"
|
|
28
|
+
# obligation: line 69
|
|
29
|
+
obligation_frequency: "per-edit"
|
|
28
30
|
---
|
|
29
31
|
|
|
30
32
|
# Senior Engineering Discipline
|
|
@@ -12,6 +12,13 @@ workspaces: [agent-config-maintainer, construction, engineering, finance, founde
|
|
|
12
12
|
packs: [meta]
|
|
13
13
|
enforced_by:
|
|
14
14
|
- "hook:session-canary"
|
|
15
|
+
# obligation: line 31
|
|
16
|
+
obligation_frequency: "per-task"
|
|
17
|
+
# frequency-override: the per-turn phrases in the body describe the CARRIER
|
|
18
|
+
# (a per-turn beat is the closest reachable cover for a per-task obligation),
|
|
19
|
+
# not the obligation itself, which is still the first reply of each new task.
|
|
20
|
+
collision_ok:
|
|
21
|
+
"canary_name": "this rule owns what the NAME does once set and which of the three layers already supplies it; settings-ask-protocol owns how it is asked for and where the answer goes"
|
|
15
22
|
---
|
|
16
23
|
|
|
17
24
|
# Session Canary
|
|
@@ -67,25 +74,62 @@ name it and suggest a fresh session or `/agent-handoff`, per
|
|
|
67
74
|
- The greeting never substitutes for substance — it prefixes the answer, it is
|
|
68
75
|
not the answer.
|
|
69
76
|
|
|
70
|
-
## Enforcement — per
|
|
71
|
-
|
|
72
|
-
> **Enforced by:** [`scripts/session_canary_hook.ts`](../../scripts/session_canary_hook.ts)
|
|
73
|
-
>
|
|
74
|
-
> contract
|
|
75
|
-
>
|
|
76
|
-
>
|
|
77
|
-
|
|
78
|
-
**
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
77
|
+
## Enforcement — per turn, which is the closest reachable cover for per task
|
|
78
|
+
|
|
79
|
+
> **Enforced by:** [`scripts/session_canary_hook.ts`](../../scripts/session_canary_hook.ts),
|
|
80
|
+
> bound in **two** slots. `session_start` injects the full `<session-canary>`
|
|
81
|
+
> contract once, so a fresh conversation cannot start without it.
|
|
82
|
+
> `user_prompt_submit` injects a one-line beat every turn, which is what
|
|
83
|
+
> actually reaches a task boundary.
|
|
84
|
+
|
|
85
|
+
**Why two slots, and why not one.** The obligation is per *task*. No host has a
|
|
86
|
+
per-task slot — Cline maps `TaskStart`/`TaskResume` onto `session_start`, and
|
|
87
|
+
Claude Code has no task event at all — so "move the carrier to the right slot"
|
|
88
|
+
was never available. Per-turn is a strict superset of per-task and is reachable,
|
|
89
|
+
which is the whole argument: over-firing a greeting is a visible, cheap failure;
|
|
90
|
+
under-firing is the silent one. The full contract stays at session scope because
|
|
91
|
+
re-injecting ~800 characters every turn would buy the same coverage at roughly
|
|
92
|
+
40× the tokens over a long session.
|
|
93
|
+
|
|
94
|
+
**What that fixed, stated because it was measured.** Conformance audit, 30
|
|
95
|
+
sessions, 2026-08-06, under session-scope-only injection: opening canary dropped
|
|
96
|
+
on ~13 of 15 task starts, often present only in the closing summary, twice
|
|
97
|
+
carrying a name the settings chain did not resolve; the honesty clause fired
|
|
98
|
+
zero times. The frequency join in `check_enforcement_coverage.ts` now reports the
|
|
99
|
+
carrier as covering the obligation — which is a claim about firing, not about
|
|
100
|
+
compliance.
|
|
101
|
+
|
|
102
|
+
**What the second audit found: the carrier fires and compliance did not
|
|
103
|
+
follow.** Conformance round 5, 2026-08-07, reading the five highest-turn
|
|
104
|
+
sessions with the carrier bound per turn: opening canary dropped on **24 of 29**
|
|
105
|
+
task starts, the honesty clause fired **0** times, and the wrong name was
|
|
106
|
+
emitted **twice** — "Mathias", which resolves from no layer of the chain
|
|
107
|
+
(`identity.name` is `Matze`, `git config user.name` is `matze4u`), i.e. inferred
|
|
108
|
+
from the ambient environment rather than read from settings. 24/29 against the
|
|
109
|
+
earlier 13/15 is not a fall, and the two windows are not identical, so they are
|
|
110
|
+
stated side by side rather than as a trend — but nothing here supports the claim
|
|
111
|
+
that the miss rate moved. A reminder in context is therefore not a mechanism for
|
|
112
|
+
this obligation: at higher frequency it is the same request, more often.
|
|
113
|
+
|
|
114
|
+
**What the next mechanism has to be.** Not another injection. It has to be able
|
|
115
|
+
to **refuse** — a check at delivery (`stop` is block-capable on this host, so a
|
|
116
|
+
refused turn-end continues in the same turn) that rejects a task-start reply
|
|
117
|
+
carrying no greeting. Proposed, not shipped; until it is, this obligation is
|
|
118
|
+
model-carried in practice, whatever the frequency join reports.
|
|
119
|
+
|
|
120
|
+
**The wrong-name half needs nothing, and that is worth stating.** The beat
|
|
121
|
+
already carries the resolved value — `build_canary_reminder` emits
|
|
122
|
+
`Canary active for "<name>"`, and the hook no-ops when no layer resolves a name —
|
|
123
|
+
and both wrong-name occurrences predate it: 2026-08-04, where the per-turn beat
|
|
124
|
+
landed 2026-08-06. The inference path they measure is already closed, so a third
|
|
125
|
+
audit should not re-open it.
|
|
126
|
+
|
|
127
|
+
**Two declared gaps, neither papered over.** On **Augment** there is no
|
|
128
|
+
`user_prompt_submit` slot; its `stop` fires *after* the reply, so injecting
|
|
129
|
+
there could not shape the reply the reminder is for, and counting it would be
|
|
130
|
+
exactly the over-credit the frequency audit exists to remove. Augment therefore
|
|
131
|
+
reports as an open gap rather than as covered. **Copilot** has no hook surface at
|
|
132
|
+
all — this rule is the only carrier there; re-read it when the trigger fires.
|
|
89
133
|
|
|
90
134
|
## See also
|
|
91
135
|
|