@event4u/agent-config 1.16.0 → 1.18.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/.agent-src/commands/{agents-audit.md → agents/audit.md} +4 -3
- package/.agent-src/commands/{agents-cleanup.md → agents/cleanup.md} +12 -6
- package/.agent-src/commands/{agents-prepare.md → agents/prepare.md} +4 -3
- package/.agent-src/commands/agents.md +46 -0
- package/.agent-src/commands/{chat-history-checkpoint.md → chat-history/checkpoint.md} +4 -4
- package/.agent-src/commands/{chat-history-clear.md → chat-history/clear.md} +4 -4
- package/.agent-src/commands/{chat-history-resume.md → chat-history/resume.md} +4 -4
- package/.agent-src/commands/chat-history/show.md +107 -0
- package/.agent-src/commands/chat-history.md +33 -89
- package/.agent-src/commands/{commit-in-chunks.md → commit/in-chunks.md} +15 -13
- package/.agent-src/commands/commit.md +22 -2
- package/.agent-src/commands/{context-create.md → context/create.md} +4 -3
- package/.agent-src/commands/{context-refactor.md → context/refactor.md} +4 -3
- package/.agent-src/commands/context.md +44 -0
- package/.agent-src/commands/{copilot-agents-init.md → copilot-agents/init.md} +4 -3
- package/.agent-src/commands/{copilot-agents-optimize.md → copilot-agents/optimize.md} +4 -3
- package/.agent-src/commands/copilot-agents.md +44 -0
- package/.agent-src/commands/council/default.md +221 -0
- package/.agent-src/commands/{council-design.md → council/design.md} +6 -5
- package/.agent-src/commands/{council-optimize.md → council/optimize.md} +7 -6
- package/.agent-src/commands/{council-pr.md → council/pr.md} +6 -5
- package/.agent-src/commands/council.md +47 -212
- package/.agent-src/commands/{create-pr-description.md → create-pr/description-only.md} +4 -2
- package/.agent-src/commands/create-pr.md +26 -5
- package/.agent-src/commands/{feature-dev.md → feature/dev.md} +5 -10
- package/.agent-src/commands/{feature-explore.md → feature/explore.md} +4 -8
- package/.agent-src/commands/{feature-plan.md → feature/plan.md} +4 -8
- package/.agent-src/commands/{feature-refactor.md → feature/refactor.md} +4 -8
- package/.agent-src/commands/{feature-roadmap.md → feature/roadmap.md} +6 -10
- package/.agent-src/commands/feature.md +6 -12
- package/.agent-src/commands/{fix-ci.md → fix/ci.md} +4 -8
- package/.agent-src/commands/{fix-portability.md → fix/portability.md} +4 -8
- package/.agent-src/commands/{fix-pr-bot-comments.md → fix/pr-bots.md} +4 -8
- package/.agent-src/commands/{fix-pr-developer-comments.md → fix/pr-developers.md} +4 -8
- package/.agent-src/commands/{fix-pr-comments.md → fix/pr.md} +7 -11
- package/.agent-src/commands/{fix-references.md → fix/refs.md} +4 -8
- package/.agent-src/commands/{fix-seeder.md → fix/seeder.md} +4 -8
- package/.agent-src/commands/fix.md +7 -13
- package/.agent-src/commands/{do-and-judge.md → judge/on-diff.md} +4 -3
- package/.agent-src/commands/judge/solo.md +90 -0
- package/.agent-src/commands/{do-in-steps.md → judge/steps.md} +4 -3
- package/.agent-src/commands/judge.md +35 -70
- package/.agent-src/commands/{memory-add.md → memory/add.md} +4 -3
- package/.agent-src/commands/{memory-full.md → memory/load.md} +4 -3
- package/.agent-src/commands/{memory-promote.md → memory/promote.md} +4 -3
- package/.agent-src/commands/{propose-memory.md → memory/propose.md} +4 -3
- package/.agent-src/commands/memory.md +48 -0
- package/.agent-src/commands/{module-create.md → module/create.md} +4 -3
- package/.agent-src/commands/{module-explore.md → module/explore.md} +4 -3
- package/.agent-src/commands/module.md +44 -0
- package/.agent-src/commands/{optimize-agents.md → optimize/agents.md} +4 -8
- package/.agent-src/commands/{optimize-augmentignore.md → optimize/augmentignore.md} +4 -9
- package/.agent-src/commands/{optimize-rtk-filters.md → optimize/rtk.md} +4 -8
- package/.agent-src/commands/{optimize-skills.md → optimize/skills.md} +4 -8
- package/.agent-src/commands/optimize.md +4 -10
- package/.agent-src/commands/{override-create.md → override/create.md} +4 -3
- package/.agent-src/commands/{override-manage.md → override/manage.md} +4 -3
- package/.agent-src/commands/override.md +44 -0
- package/.agent-src/commands/{roadmap-create.md → roadmap/create.md} +4 -3
- package/.agent-src/commands/{roadmap-execute.md → roadmap/execute.md} +4 -3
- package/.agent-src/commands/roadmap.md +44 -0
- package/.agent-src/commands/{tests-create.md → tests/create.md} +4 -3
- package/.agent-src/commands/{tests-execute.md → tests/execute.md} +4 -3
- package/.agent-src/commands/tests.md +44 -0
- package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +72 -0
- package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +79 -0
- package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +98 -0
- package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +87 -0
- package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +62 -0
- package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +78 -0
- package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +85 -0
- package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +65 -0
- package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +78 -0
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +62 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +55 -0
- package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +53 -0
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +77 -0
- package/.agent-src/contexts/judges/no-consolidate-rationale.md +102 -0
- package/.agent-src/contexts/judges/persona-voice-rubric.md +140 -0
- package/.agent-src/rules/artifact-engagement-recording.md +13 -69
- package/.agent-src/rules/ask-when-uncertain.md +27 -42
- package/.agent-src/rules/augment-portability.md +15 -61
- package/.agent-src/rules/augment-source-of-truth.md +27 -93
- package/.agent-src/rules/cli-output-handling.md +10 -76
- package/.agent-src/rules/command-suggestion-policy.md +18 -59
- package/.agent-src/rules/commit-conventions.md +17 -14
- package/.agent-src/rules/context-hygiene.md +6 -0
- package/.agent-src/rules/direct-answers.md +35 -59
- package/.agent-src/rules/docker-commands.md +5 -5
- package/.agent-src/rules/docs-sync.md +15 -69
- package/.agent-src/rules/language-and-tone.md +48 -72
- package/.agent-src/rules/missing-tool-handling.md +28 -22
- package/.agent-src/rules/no-cheap-questions.md +39 -53
- package/.agent-src/rules/no-roadmap-references.md +73 -0
- package/.agent-src/rules/onboarding-gate.md +7 -0
- package/.agent-src/rules/package-ci-checks.md +21 -61
- package/.agent-src/rules/preservation-guard.md +64 -29
- package/.agent-src/rules/review-routing-awareness.md +24 -43
- package/.agent-src/rules/roadmap-progress-sync.md +31 -65
- package/.agent-src/rules/rule-type-governance.md +28 -0
- package/.agent-src/rules/security-sensitive-stop.md +8 -8
- package/.agent-src/rules/skill-quality.md +16 -48
- package/.agent-src/rules/slash-command-routing-policy.md +7 -4
- package/.agent-src/rules/think-before-action.md +52 -42
- package/.agent-src/rules/tool-safety.md +19 -16
- package/.agent-src/rules/ui-audit-gate.md +24 -38
- package/.agent-src/rules/user-interaction.md +13 -68
- package/.agent-src/skills/ai-council/SKILL.md +2 -0
- package/.agent-src/skills/api-testing/SKILL.md +1 -1
- package/.agent-src/skills/check-refs/SKILL.md +59 -40
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +86 -28
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +5 -5
- package/.agent-src/skills/developer-like-execution/SKILL.md +4 -4
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +101 -65
- package/.agent-src/skills/flux/SKILL.md +30 -10
- package/.agent-src/skills/github-ci/SKILL.md +2 -2
- package/.agent-src/skills/judge-code-quality/SKILL.md +7 -8
- package/.agent-src/skills/judge-security-auditor/SKILL.md +4 -5
- package/.agent-src/skills/judge-test-coverage/SKILL.md +3 -4
- package/.agent-src/skills/lint-skills/SKILL.md +57 -39
- package/.agent-src/skills/md-language-check/SKILL.md +61 -39
- package/.agent-src/skills/override-management/SKILL.md +5 -5
- package/.agent-src/skills/quality-tools/SKILL.md +2 -2
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +116 -43
- package/.agent-src/skills/readme-reviewer/SKILL.md +30 -29
- package/.agent-src/skills/readme-writing/SKILL.md +78 -53
- package/.agent-src/skills/readme-writing-package/SKILL.md +50 -47
- package/.agent-src/skills/receiving-code-review/SKILL.md +52 -47
- package/.agent-src/skills/refine-prompt/SKILL.md +0 -1
- package/.agent-src/skills/requesting-code-review/SKILL.md +35 -30
- package/.agent-src/skills/security/SKILL.md +7 -2
- package/.agent-src/skills/security-audit/SKILL.md +7 -3
- package/.agent-src/skills/systematic-debugging/SKILL.md +68 -60
- package/.agent-src/skills/test-driven-development/SKILL.md +59 -57
- package/.agent-src/skills/test-performance/SKILL.md +0 -1
- package/.agent-src/skills/traefik/SKILL.md +4 -4
- package/.agent-src/skills/verify-completion-evidence/SKILL.md +28 -26
- package/.agent-src/templates/roadmaps.md +4 -0
- package/.claude-plugin/marketplace.json +22 -11
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +125 -1
- package/README.md +18 -17
- package/docs/architecture.md +4 -6
- package/docs/catalog.md +67 -39
- package/docs/contracts/STABILITY.md +13 -7
- package/docs/contracts/adr-chat-history-split.md +1 -3
- package/docs/contracts/adr-command-suggestion.md +0 -2
- package/docs/contracts/adr-implement-ticket-runtime.md +1 -2
- package/docs/contracts/adr-product-ui-track.md +3 -6
- package/docs/contracts/adr-prompt-driven-execution.md +3 -4
- package/docs/contracts/agent-memory-contract.md +6 -11
- package/docs/contracts/artifact-engagement-flow.md +6 -9
- package/docs/contracts/command-clusters.md +56 -46
- package/docs/contracts/command-suggestion-flow.md +1 -3
- package/docs/contracts/context-paths.md +99 -0
- package/docs/contracts/file-ownership-matrix.json +6722 -0
- package/docs/contracts/file-ownership-matrix.md +134 -0
- package/docs/contracts/implement-ticket-flow.md +6 -9
- package/docs/contracts/linear-ai-rules-inclusion.md +0 -1
- package/docs/contracts/linear-ai-three-layers.md +0 -2
- package/docs/contracts/load-context-budget-model.md +258 -0
- package/docs/contracts/load-context-schema.md +21 -3
- package/docs/contracts/roadmap-complexity-standard.md +137 -0
- package/docs/contracts/rule-interactions.md +0 -1
- package/docs/contracts/rule-priority-hierarchy.md +1 -1
- package/docs/contracts/ui-track-flow.md +7 -17
- package/docs/customization.md +2 -0
- package/docs/getting-started.md +5 -4
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +100 -0
- package/docs/guidelines/agent-infra/direct-answers-demos.md +145 -0
- package/docs/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
- package/package.json +1 -1
- package/scripts/_phase2_shim_helper.py +109 -0
- package/scripts/agent-config +30 -0
- package/scripts/ai_council/one_off_archive/2026-05/README.md +45 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_2a4_acceptance.py +208 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +206 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_estimate.py +67 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +292 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_followups_review.py +259 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +209 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase4_dispatch_latency.py +108 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +92 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +257 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_post_revert.py +197 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_rule_hardening_v1.py +251 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_open_questions.py +232 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +144 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_gaps.py +252 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_review.py +240 -0
- package/scripts/build_rule_trigger_matrix.py +360 -0
- package/scripts/check_always_budget.py +402 -45
- package/scripts/check_cluster_patterns.py +159 -0
- package/scripts/check_command_count_messaging.py +14 -7
- package/scripts/check_context_paths.py +201 -0
- package/scripts/check_no_roadmap_refs.py +155 -0
- package/scripts/check_one_off_location.py +81 -0
- package/scripts/check_phase_coupling.py +148 -0
- package/scripts/check_portability.py +2 -0
- package/scripts/check_references.py +35 -2
- package/scripts/check_safety_floor_untouched.py +125 -0
- package/scripts/command_suggester/loader.py +4 -1
- package/scripts/compress.py +64 -15
- package/scripts/context_hygiene_hook.py +173 -0
- package/scripts/generate_index.py +6 -2
- package/scripts/generate_ownership_matrix.py +323 -0
- package/scripts/hooks/augment-context-hygiene.sh +55 -0
- package/scripts/hooks/augment-onboarding-gate.sh +55 -0
- package/scripts/hooks/augment-roadmap-progress.sh +57 -0
- package/scripts/install.py +105 -45
- package/scripts/lint_examples.py +98 -0
- package/scripts/lint_no_new_atomic_commands.py +12 -11
- package/scripts/lint_roadmap_complexity.py +127 -0
- package/scripts/onboarding_gate_hook.py +137 -0
- package/scripts/requirements-evals.txt +1 -0
- package/scripts/roadmap_progress_hook.py +159 -0
- package/scripts/schemas/command.schema.json +4 -3
- package/scripts/schemas/rule.schema.json +5 -0
- package/scripts/skill_linter.py +1 -0
- package/scripts/sync_agent_settings.py +25 -2
- package/scripts/update_counts.py +7 -0
- /package/scripts/ai_council/{_one_off_rebalancing_audit.py → one_off_archive/2026-05/_one_off_rebalancing_audit.py} +0 -0
- /package/scripts/ai_council/{_one_off_roundtrip.py → one_off_archive/2026-05/_one_off_roundtrip.py} +0 -0
|
@@ -6,34 +6,38 @@ description: "When a CLI tool needed for the task is not installed — ask befor
|
|
|
6
6
|
|
|
7
7
|
# Missing Tool Handling
|
|
8
8
|
|
|
9
|
-
When a CLI tool is needed and **not installed**
|
|
10
|
-
`which X` empty), **STOP and ask**
|
|
9
|
+
When a CLI tool is needed to solve the task cleanly and is **not installed**
|
|
10
|
+
(`command not found`, `which X` empty, missing from `$PATH`), **STOP and ask**
|
|
11
|
+
before working around it or installing it.
|
|
11
12
|
|
|
12
13
|
## The rule
|
|
13
14
|
|
|
14
|
-
- **Never install silently.** Installing changes the user's
|
|
15
|
-
requires explicit permission (`scope-control`).
|
|
15
|
+
- **Never install silently.** Installing is an action that changes the user's
|
|
16
|
+
system — it requires explicit permission (see `scope-control`).
|
|
16
17
|
- **Never silently work around** a missing tool with a brittle substitute
|
|
17
|
-
(awk for YAML, `grep` for JSON, string splicing) when a proper tool
|
|
18
|
-
the standard answer. The workaround hides the
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
(awk-regex for YAML, `grep` for JSON, string splicing) when a proper tool
|
|
19
|
+
is the standard answer for the job. The workaround hides the real
|
|
20
|
+
dependency and makes the decision invisible to the user.
|
|
21
|
+
- **Ask with numbered options** (see `user-interaction`). State which tool,
|
|
22
|
+
why it's the best fit, the install command, and the workaround cost.
|
|
21
23
|
|
|
22
24
|
## When it applies
|
|
23
25
|
|
|
24
|
-
-
|
|
25
|
-
(yq, jq, rtk, gh, docker, mkcert, terraform, …).
|
|
26
|
-
- A skill or spike
|
|
27
|
-
|
|
26
|
+
- Any shell command fails with `command not found` for a tool the task
|
|
27
|
+
genuinely needs (yq, jq, rtk, gh, docker, mkcert, terraform, …).
|
|
28
|
+
- A skill or spike requires a tool that is the idiomatic answer but is
|
|
29
|
+
absent locally.
|
|
30
|
+
- You are about to substitute a verbose script for a single tool invocation
|
|
28
31
|
because the tool isn't there.
|
|
29
32
|
|
|
30
33
|
## When it does NOT apply
|
|
31
34
|
|
|
32
|
-
-
|
|
33
|
-
no `yq`
|
|
34
|
-
-
|
|
35
|
-
tool-allowlists first).
|
|
36
|
-
-
|
|
35
|
+
- The tool is a nice-to-have and a clean substitute already exists in the
|
|
36
|
+
repo (e.g. `jq` present → no need for `yq` just for JSON).
|
|
37
|
+
- The tool is explicitly forbidden by project policy (check
|
|
38
|
+
`scope-control` and tool-allowlists first).
|
|
39
|
+
- The missing artefact is a library dependency — those go through
|
|
40
|
+
`composer require`, `npm install`, `pip install` per the package-manager
|
|
37
41
|
rules, still with explicit permission.
|
|
38
42
|
|
|
39
43
|
## How to ask
|
|
@@ -49,14 +53,16 @@ When a CLI tool is needed and **not installed** (`command not found`,
|
|
|
49
53
|
> 4. Skip this path — I propose a different approach
|
|
50
54
|
```
|
|
51
55
|
|
|
52
|
-
After the user picks: if **install**, wait for confirmation
|
|
53
|
-
documented command only if
|
|
54
|
-
**workaround**, record the decision in
|
|
56
|
+
After the user picks: if **install**, wait for confirmation that it is
|
|
57
|
+
done (or run the documented install command only if the user explicitly
|
|
58
|
+
authorises it in this turn). If **workaround**, record the decision in
|
|
59
|
+
the artefact (comment or ADR) so the cost is visible.
|
|
55
60
|
|
|
56
61
|
## Capture the learning
|
|
57
62
|
|
|
58
|
-
If the same tool keeps missing across tasks, flag
|
|
59
|
-
setup docs or `.agent-settings.yml` prerequisites.
|
|
63
|
+
If the same tool keeps coming up as missing across multiple tasks, flag
|
|
64
|
+
it in the project's setup docs or `.agent-settings.yml` prerequisites.
|
|
65
|
+
Don't make every session re-discover the gap.
|
|
60
66
|
|
|
61
67
|
See also: `scope-control` · `ask-when-uncertain` · `user-interaction` ·
|
|
62
68
|
`tool-safety`.
|
|
@@ -8,14 +8,11 @@ source: package
|
|
|
8
8
|
# No Cheap Questions
|
|
9
9
|
|
|
10
10
|
A question is **cheap** when the answer follows from stated context,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
[`autonomous-execution`](autonomous-execution.md) are scoped to
|
|
17
|
-
`personal.autonomy: on` (or `auto`-after-opt-in); this rule lifts the
|
|
18
|
-
**no-trade-off** subset to apply in `off` and pre-opt-in `auto` too.
|
|
11
|
+
an option breaches an Iron Law, choices differ only in sequencing /
|
|
12
|
+
format, or one option is obviously dominant. Mode-independent — holds
|
|
13
|
+
in `off`, `auto`, and `on`; autonomy never lifts the no-trade-off
|
|
14
|
+
floor (cf. [`autonomous-execution`](autonomous-execution.md), whose
|
|
15
|
+
"trivial" failure modes only scope to `on` / opted-in `auto`).
|
|
19
16
|
|
|
20
17
|
## The Iron Laws
|
|
21
18
|
|
|
@@ -29,61 +26,50 @@ Hold in `off`, `auto`, and `on`. Autonomy never lifts them.
|
|
|
29
26
|
|
|
30
27
|
## What counts as cheap
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
- **Sequencing** — "Step 2 or 3 next?" when the roadmap orders them.
|
|
30
|
+
- **Format-only** — "Table or paragraph?"; no semantic trade-off.
|
|
31
|
+
- **Commit asks** — forbidden by [`commit-policy`](commit-policy.md).
|
|
32
|
+
- **CI / test asks** — [`verify-before-complete`](verify-before-complete.md) decides, not the user.
|
|
33
|
+
- **Fenced-step re-asks** — "Start Phase 1?" after *"plan only"*; see
|
|
34
|
+
[`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
|
|
35
|
+
- **Iron-Law option** — breaches `commit-policy`, `scope-control` § git-ops, or `non-destructive-by-default`.
|
|
36
|
+
- **Context-derived** — answer follows from prior turn / standing instruction / roadmap; act, state the assumption inline.
|
|
37
|
+
- **Dominant option** — one choice obviously correct; alternatives carry no upside.
|
|
38
|
+
- **Re-ask after decline** — forbidden per [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
39
|
+
|
|
40
|
+
Examples per class:
|
|
41
|
+
[`asking-and-brevity-examples`](../../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
|
|
43
42
|
|
|
44
43
|
## Pre-Send Self-Check — MANDATORY before every question
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
1.
|
|
49
|
-
2.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
Any "yes" → **do not ask**. Pick the dominant path, state the
|
|
60
|
-
assumption inline (*"assuming X — adjust if wrong"*), hand back. The
|
|
61
|
-
one-question-per-turn Iron Law from
|
|
62
|
-
[`ask-when-uncertain`](ask-when-uncertain.md) still applies when the
|
|
63
|
-
question is genuine.
|
|
45
|
+
Run silently before any numbered-options block:
|
|
46
|
+
|
|
47
|
+
1. Answer already in stated context?
|
|
48
|
+
2. Any option violates `commit-policy`, `scope-control` § git-ops, or `non-destructive-by-default`?
|
|
49
|
+
3. Options pure sequencing / format, no trade-off?
|
|
50
|
+
4. One option obviously dominant?
|
|
51
|
+
5. User fenced next step (*"plan only"*, *"review first"*) → deliver + handback per `scope-control` § fenced step.
|
|
52
|
+
6. User already declined? Re-ask forbidden per `scope-control` § decline = silence.
|
|
53
|
+
|
|
54
|
+
Any "yes" → **do not ask**. Pick the dominant path, state assumption
|
|
55
|
+
inline (*"assuming X — adjust if wrong"*), hand back. One-question-per-turn
|
|
56
|
+
from [`ask-when-uncertain`](ask-when-uncertain.md) still applies when
|
|
57
|
+
the question is genuine.
|
|
64
58
|
|
|
65
59
|
## When asking IS allowed
|
|
66
60
|
|
|
67
61
|
- Real architectural / scope decision with non-obvious trade-offs.
|
|
68
|
-
- Vague-request trigger per
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
[`security-sensitive-stop`](security-sensitive-stop.md).
|
|
72
|
-
- Hard Floor in [`non-destructive-by-default`](non-destructive-by-default.md)
|
|
73
|
-
fires — confirmation is mandatory, never cheap.
|
|
62
|
+
- Vague-request trigger per [`ask-when-uncertain`](ask-when-uncertain.md#vague-request-triggers--must-ask).
|
|
63
|
+
- Security-sensitive path per [`security-sensitive-stop`](security-sensitive-stop.md).
|
|
64
|
+
- Hard Floor per `non-destructive-by-default` — confirmation mandatory.
|
|
74
65
|
- Two genuinely-equivalent paths; user preference is the tiebreaker.
|
|
75
66
|
|
|
76
|
-
In doubt →
|
|
67
|
+
In doubt → ask. This rule narrows asking, never widens silence.
|
|
77
68
|
|
|
78
69
|
## Interactions
|
|
79
70
|
|
|
80
|
-
- [`ask-when-uncertain`](ask-when-uncertain.md) — vague triggers +
|
|
81
|
-
|
|
82
|
-
- [`
|
|
83
|
-
|
|
84
|
-
- [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) ·
|
|
85
|
-
[`non-destructive-by-default`](non-destructive-by-default.md) —
|
|
86
|
-
the Iron Laws this rule defends.
|
|
87
|
-
- [`user-interaction`](user-interaction.md) — numbered-options shape;
|
|
88
|
-
this rule decides whether the block is sent at all.
|
|
71
|
+
- [`ask-when-uncertain`](ask-when-uncertain.md) — vague triggers + one-question-per-turn; narrows the cheap subset.
|
|
72
|
+
- [`autonomous-execution`](autonomous-execution.md) — mode-scoped triviality there; mode-independent floor here.
|
|
73
|
+
- [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) — Iron Laws this rule defends.
|
|
74
|
+
- [`user-interaction`](user-interaction.md) — numbered-options shape; this rule decides whether to send.
|
|
89
75
|
- [`direct-answers`](direct-answers.md) — brevity, no flattery.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
description: "Adding a link to a specific file in agents/roadmaps/ from any stable artifact (rule, skill, command, context, guideline) — roadmaps are transient; promote durable findings to agents/contexts/ instead"
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
source: package
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# No Roadmap References from Stable Artifacts
|
|
9
|
+
|
|
10
|
+
Roadmaps in `agents/roadmaps/` are **transient** — archived, skipped,
|
|
11
|
+
or deleted as work completes. Stable artifacts (rules, skills,
|
|
12
|
+
commands, contexts, guidelines, AGENTS.md, README) outlive them. A
|
|
13
|
+
stable artifact citing a specific roadmap file becomes a broken
|
|
14
|
+
reference the moment that roadmap is deleted.
|
|
15
|
+
|
|
16
|
+
## The Iron Law
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
NEVER LINK TO A SPECIFIC FILE IN agents/roadmaps/ FROM A STABLE ARTIFACT.
|
|
20
|
+
PROMOTE DURABLE CONCLUSIONS TO agents/contexts/ AND CITE THAT INSTEAD.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Stable artifact = anything that is **not** a roadmap, council
|
|
24
|
+
session, chat-history archive, commit message, or PR description.
|
|
25
|
+
|
|
26
|
+
## Forbidden patterns
|
|
27
|
+
|
|
28
|
+
These paths must not appear inside a stable artifact:
|
|
29
|
+
|
|
30
|
+
- `agents/roadmaps/<file>.md`, `agents/roadmaps/archive/<file>.md`,
|
|
31
|
+
`agents/roadmaps/skipped/<file>.md`
|
|
32
|
+
|
|
33
|
+
Stable artifact = any file under `.agent-src.uncompressed/{rules,
|
|
34
|
+
skills,commands,contexts,templates,personas}/`, `agents/contexts/`,
|
|
35
|
+
`docs/guidelines/`, `docs/contracts/`, `docs/architecture.md`,
|
|
36
|
+
`docs/customization.md`, `docs/getting-started.md`, `docs/catalog.md`,
|
|
37
|
+
`AGENTS.md`, `README.md`, `copilot-instructions.md`.
|
|
38
|
+
|
|
39
|
+
CI enforcement: `scripts/check_no_roadmap_refs.py` (companion linter
|
|
40
|
+
— fails the build on any new violation).
|
|
41
|
+
|
|
42
|
+
## Allowed patterns
|
|
43
|
+
|
|
44
|
+
- `agents/roadmaps/` and its subdirectories as directory mentions
|
|
45
|
+
(talking about the layer, not a specific file)
|
|
46
|
+
- Roadmap → roadmap references (siblings within the transient layer)
|
|
47
|
+
- Council sessions, `.agent-chat-history`, commit messages, PR
|
|
48
|
+
descriptions — transient by construction, not part of the package
|
|
49
|
+
surface
|
|
50
|
+
|
|
51
|
+
## What to do instead
|
|
52
|
+
|
|
53
|
+
When a stable artifact needs to cite a roadmap finding:
|
|
54
|
+
|
|
55
|
+
1. Identify the durable conclusion — decision, contract, lesson,
|
|
56
|
+
mechanic.
|
|
57
|
+
2. Promote it to a context file under `agents/contexts/` (ADR,
|
|
58
|
+
mechanics doc, locked decision). The roadmap can then point at
|
|
59
|
+
the context, not the other way around.
|
|
60
|
+
3. Reference the context from the stable artifact.
|
|
61
|
+
|
|
62
|
+
Failure mode: *"I'll just link to the roadmap, it's evidence."* The
|
|
63
|
+
roadmap gets archived, then deleted, then the link rots. **Promote
|
|
64
|
+
first, link second.**
|
|
65
|
+
|
|
66
|
+
## See also
|
|
67
|
+
|
|
68
|
+
- [`docs-sync`](docs-sync.md) — cross-reference sync after rename / delete
|
|
69
|
+
- [`agent-docs`](agent-docs.md) — roadmap layer conventions
|
|
70
|
+
- [`roadmap-progress-sync`](roadmap-progress-sync.md) — sync dashboard on
|
|
71
|
+
roadmap touch
|
|
72
|
+
- [`augment-source-of-truth`](augment-source-of-truth.md) — edit
|
|
73
|
+
`.agent-src.uncompressed/`
|
|
@@ -7,6 +7,12 @@ source: package
|
|
|
7
7
|
|
|
8
8
|
# Onboarding Gate
|
|
9
9
|
|
|
10
|
+
> **Enforced by:** [`scripts/onboarding_gate_hook.py`](../../scripts/onboarding_gate_hook.py)
|
|
11
|
+
> on Augment + Claude Code (`SessionStart`). The hook refreshes
|
|
12
|
+
> `agents/state/onboarding-gate.json` from `.agent-settings.yml`; the
|
|
13
|
+
> prose below is the spec the hook implements and the fallback for
|
|
14
|
+
> platforms without a hook surface.
|
|
15
|
+
|
|
10
16
|
Forces a one-time `/onboard` run for each developer on each project. This
|
|
11
17
|
replaces the previously scattered "ask once" patterns across `user_name`,
|
|
12
18
|
`personal.ide`, `personal.rtk_installed`, and cost profile confirmation.
|
|
@@ -92,3 +98,4 @@ gate. This protects projects that were set up before this rule shipped.
|
|
|
92
98
|
- [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md) — merge rules for mid-life edits
|
|
93
99
|
- [`agent-settings` template](../templates/agent-settings.md) — `onboarding.onboarded` reference
|
|
94
100
|
- [`rule-type-governance`](rule-type-governance.md) — why this is `always`
|
|
101
|
+
- [`hardening-pattern`](../../agents/contexts/hardening-pattern.md) — Tier 1 mechanical-rule contract
|
|
@@ -3,11 +3,16 @@ type: "auto"
|
|
|
3
3
|
alwaysApply: false
|
|
4
4
|
description: "Before pushing to remote or creating a PR in the agent-config package — run all CI checks locally first"
|
|
5
5
|
source: package
|
|
6
|
+
load_context:
|
|
7
|
+
- .agent-src.uncompressed/contexts/communication/rules-auto/package-ci-checks-mechanics.md
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
# Package CI Checks
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
## When this applies
|
|
13
|
+
|
|
14
|
+
Before **any** push to remote or PR creation in the **agent-config** package.
|
|
15
|
+
This rule is specific to this package — it does NOT apply to consumer projects.
|
|
11
16
|
|
|
12
17
|
## The Iron Law
|
|
13
18
|
|
|
@@ -17,69 +22,24 @@ NEVER push without running ALL CI checks locally first.
|
|
|
17
22
|
|
|
18
23
|
Every CI pipeline failure is preventable by running these checks before pushing.
|
|
19
24
|
|
|
20
|
-
## Required checks
|
|
21
|
-
|
|
22
|
-
### 1. Sync
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
bash scripts/compress.sh --check # .agent-src/ matches .agent-src.uncompressed/
|
|
26
|
-
bash scripts/compress.sh --check-hashes # compression hashes are clean
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### 2. Consistency
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
python3 scripts/check_compression.py # compressed variants are valid
|
|
33
|
-
python3 scripts/check_references.py # no broken cross-references
|
|
34
|
-
python3 scripts/check_portability.py # no project-specific references in shared files
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### 3. Linter (0 FAIL required)
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
python3 scripts/skill_linter.py --all # 0 FAIL required
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### 4. Tests
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
python3 -m pytest tests/ --tb=short # all tests must pass
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### 5. README
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
python3 scripts/readme_linter.py README.md --root .
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Quick one-liner
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
bash scripts/compress.sh --check && \
|
|
59
|
-
bash scripts/compress.sh --check-hashes && \
|
|
60
|
-
python3 scripts/check_compression.py && \
|
|
61
|
-
python3 scripts/check_references.py && \
|
|
62
|
-
python3 scripts/check_portability.py && \
|
|
63
|
-
python3 scripts/skill_linter.py --all && \
|
|
64
|
-
python3 -m pytest tests/ --tb=short && \
|
|
65
|
-
python3 scripts/readme_linter.py README.md --root .
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## After editing skills/rules in .agent-src.uncompressed/
|
|
69
|
-
|
|
70
|
-
1. Edit uncompressed file
|
|
71
|
-
2. Edit compressed file in `.agent-src/` to match
|
|
72
|
-
3. `bash scripts/compress.sh --mark-done {relative-path}` — update hash
|
|
73
|
-
4. `bash scripts/compress.sh --check-hashes` — verify
|
|
25
|
+
## Required checks — see mechanics
|
|
74
26
|
|
|
75
|
-
|
|
27
|
+
Five checks must pass locally before push, in this order:
|
|
76
28
|
|
|
77
|
-
|
|
29
|
+
1. **Sync** — `compress.sh --check` and `--check-hashes`.
|
|
30
|
+
2. **Consistency** — `check_compression.py`, `check_references.py`, `check_portability.py`.
|
|
31
|
+
3. **Linter** — `skill_linter.py --all`, 0 FAIL required.
|
|
32
|
+
4. **Tests** — `pytest tests/`.
|
|
33
|
+
5. **README** — `readme_linter.py`.
|
|
78
34
|
|
|
79
|
-
|
|
35
|
+
The full command snippets, common-failure notes per step, the quick
|
|
36
|
+
chained one-liner, and the post-edit workflow ("after editing
|
|
37
|
+
skills/rules", "after editing `scripts/compress.py`") all live in
|
|
38
|
+
[`contexts/communication/rules-auto/package-ci-checks-mechanics.md`](../contexts/communication/rules-auto/package-ci-checks-mechanics.md).
|
|
39
|
+
Pull it whenever pre-push verification is needed.
|
|
80
40
|
|
|
81
41
|
## Do NOT
|
|
82
42
|
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
43
|
+
- Do NOT push "to see if CI passes" — that wastes pipeline minutes
|
|
44
|
+
- Do NOT skip hash checks because "I only changed one file"
|
|
45
|
+
- Do NOT assume tests pass because linter passes — they check different things
|
|
@@ -7,43 +7,78 @@ source: package
|
|
|
7
7
|
|
|
8
8
|
# Preservation Guard
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
When transforming any agent artifact (merge, refactor, compress, split, restructure),
|
|
11
|
+
the result must be **at least as strong** as the original.
|
|
11
12
|
|
|
12
13
|
## Iron Laws — every passage stays, caveman is fine
|
|
13
14
|
|
|
14
|
-
Sections marked **Iron Law** (heading
|
|
15
|
-
`# The Iron Law`, any level, numbered like
|
|
16
|
-
are **non-negotiable
|
|
15
|
+
Sections marked **Iron Law** (any heading matching `# Iron Law`, `# Iron Laws`,
|
|
16
|
+
`# The Iron Law`, at any heading level, including numbered variants like
|
|
17
|
+
`Iron Law 1`, `Iron Law 2`) are **non-negotiable** and require the strictest
|
|
18
|
+
preservation:
|
|
17
19
|
|
|
18
|
-
- [ ] **Heading verbatim** — exact text
|
|
19
|
-
|
|
20
|
-
- [ ] **
|
|
21
|
-
- [ ] **
|
|
22
|
-
|
|
20
|
+
- [ ] **Heading preserved verbatim** — exact text and exact heading level. Drop the
|
|
21
|
+
heading → the law is gone, even if the code block underneath survives.
|
|
22
|
+
- [ ] **Fenced code blocks preserved byte-for-byte** — the law itself.
|
|
23
|
+
- [ ] **Negation clauses preserved** — `NO X`, `NEVER Y`, `NOT Z` stay in. These
|
|
24
|
+
are the load-bearing exception denials, not filler.
|
|
25
|
+
- [ ] **Every passage stays** — every paragraph, every list item, and every
|
|
26
|
+
fenced code block from the source survives in the compressed output, in
|
|
27
|
+
order. One paragraph → one paragraph; one bullet → one bullet. Dropping
|
|
28
|
+
whole sentences, merging two paragraphs into one, or skipping a list item
|
|
29
|
+
is forbidden, even if the surviving prose still "makes the point".
|
|
30
|
+
- [ ] **No Iron Law downgrades** — `## Iron Law` MUST NOT become `### Iron Law`,
|
|
31
|
+
`**Iron Law:**`, or inline prose. Heading level is part of the prominence.
|
|
23
32
|
|
|
24
|
-
**Caveman style encouraged for Iron Law bodies** — drop articles ("the",
|
|
33
|
+
**Caveman style is encouraged for Iron Law bodies** — drop articles ("the",
|
|
34
|
+
"a"), shorten phrasing, primitive grammar, terse cave-speak. Word count is
|
|
35
|
+
not a budget; the structural unit count is. As long as every paragraph,
|
|
36
|
+
bullet, and code block from the source is present, compress as hard as you
|
|
37
|
+
want. What's forbidden is **deletion**: the rationale paragraph stays, the
|
|
38
|
+
canonical-failure example stays, every "NEVER X" bullet stays.
|
|
25
39
|
|
|
26
|
-
`scripts/check_compression.py` enforces mechanically — any violation is
|
|
40
|
+
`scripts/check_compression.py` enforces these mechanically — any violation is
|
|
41
|
+
an `error`, not a warning.
|
|
27
42
|
|
|
28
|
-
##
|
|
43
|
+
## Mandatory preservation checklist
|
|
29
44
|
|
|
30
|
-
|
|
31
|
-
- [ ] Strongest validation step preserved
|
|
32
|
-
- [ ] Strongest example preserved
|
|
33
|
-
- [ ] Strongest anti-pattern / "Do NOT" preserved
|
|
34
|
-
- [ ] Essential decision hints (if/when/unless) preserved
|
|
35
|
-
- [ ] Required sections preserved
|
|
36
|
-
- [ ] Single clear responsibility preserved
|
|
37
|
-
- [ ] Strong language ("MUST"/"NEVER") not weakened
|
|
45
|
+
Before completing any transformation, verify:
|
|
38
46
|
|
|
39
|
-
|
|
47
|
+
- [ ] **Iron Law sections** preserved per the rules above — heading, body, fenced blocks, rationale
|
|
48
|
+
- [ ] **Strongest validation step** preserved — concrete verify/confirm actions survive
|
|
49
|
+
- [ ] **Strongest example** preserved — the most illustrative code block or scenario stays
|
|
50
|
+
- [ ] **Strongest anti-pattern** preserved — the most important "Do NOT" or failure mode stays
|
|
51
|
+
- [ ] **Essential decision hints** preserved — if/when/unless logic that prevents mistakes
|
|
52
|
+
- [ ] **Required sections** preserved — When to use, Procedure, Output, Gotchas, Do NOT
|
|
53
|
+
- [ ] **Single clear responsibility** preserved — no scope creep from merging unrelated concerns
|
|
54
|
+
- [ ] **Strong language** preserved — "MUST", "NEVER", "Do NOT" not weakened to "should", "avoid"
|
|
40
55
|
|
|
41
|
-
|
|
42
|
-
- Paragraph, list item, or fenced code block dropped from Iron Law section
|
|
43
|
-
- Negation clauses or canonical-failure prose stripped from Iron Law
|
|
44
|
-
- Validation, example, or anti-pattern removed without replacement
|
|
45
|
-
- Decision logic weakened
|
|
46
|
-
- Scope broadened by merging unrelated concerns
|
|
47
|
-
- Strong language downgraded
|
|
56
|
+
## Reject criteria
|
|
48
57
|
|
|
49
|
-
|
|
58
|
+
**REJECT** the transformation if it:
|
|
59
|
+
|
|
60
|
+
- Removes or downgrades an Iron Law heading
|
|
61
|
+
- Drops a paragraph, list item, or fenced code block from an Iron Law section
|
|
62
|
+
- Strips negation clauses or canonical-failure prose from an Iron Law
|
|
63
|
+
- Removes a concrete validation step without equivalent replacement
|
|
64
|
+
- Removes the strongest example without equivalent replacement
|
|
65
|
+
- Removes the strongest anti-pattern without equivalent replacement
|
|
66
|
+
- Weakens routing or decision logic
|
|
67
|
+
- Broadens scope by merging unrelated workflows
|
|
68
|
+
- Weakens strong enforcement language
|
|
69
|
+
|
|
70
|
+
## Applies to
|
|
71
|
+
|
|
72
|
+
- Skill merges (combining two skills into one)
|
|
73
|
+
- Skill splits (extracting part of a skill)
|
|
74
|
+
- Refactoring (restructuring without behavior change)
|
|
75
|
+
- Compression (`.agent-src.uncompressed/` → `.agent-src/`)
|
|
76
|
+
- Rule consolidation
|
|
77
|
+
- Guideline restructuring
|
|
78
|
+
|
|
79
|
+
## References
|
|
80
|
+
|
|
81
|
+
- Skill: `skill-management` — compression/refactoring modes
|
|
82
|
+
- Skill: `skill-reviewer` — compression safety checks
|
|
83
|
+
- Command: `/compress` — compression quality checklist
|
|
84
|
+
- Linter: `scripts/skill_linter.py` — `check_compression_quality()`
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
description: "When routing reviewers or flagging risk hotspots — consult ownership-map and historical-bug-patterns before suggesting reviewers or claiming a change is safe"
|
|
4
4
|
source: package
|
|
5
|
+
load_context:
|
|
6
|
+
- .agent-src.uncompressed/contexts/communication/rules-auto/review-routing-awareness-mechanics.md
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Review Routing Awareness
|
|
@@ -37,24 +39,13 @@ Look, in order, for:
|
|
|
37
39
|
- `.github/historical-bug-patterns.yml` (or
|
|
38
40
|
`agents/historical-bug-patterns.yml`)
|
|
39
41
|
|
|
40
|
-
If neither file exists, fall back to the engineering-memory layer
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
keys=<changed file paths>,
|
|
48
|
-
limit=5,
|
|
49
|
-
)
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Curated memory (`agents/memory/ownership.yml`,
|
|
53
|
-
`agents/memory/historical-patterns.yml`) carries the same schema as the
|
|
54
|
-
project-local YAMLs and is merged into the routing output alongside
|
|
55
|
-
them. If both memory and project YAMLs are absent, skip this rule and
|
|
56
|
-
rely on [`reviewer-awareness`](reviewer-awareness.md) defaults. **Do
|
|
57
|
-
not invent owners or patterns** from context.
|
|
42
|
+
If neither file exists, fall back to the engineering-memory layer.
|
|
43
|
+
Memory-lookup snippet and merge semantics live in
|
|
44
|
+
[`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
|
|
45
|
+
§ Memory-lookup fallback. If both memory and project YAMLs are absent,
|
|
46
|
+
skip this rule and rely on
|
|
47
|
+
[`reviewer-awareness`](reviewer-awareness.md) defaults. **Do not
|
|
48
|
+
invent owners or patterns** from context.
|
|
58
49
|
|
|
59
50
|
### 2. Match the diff
|
|
60
51
|
|
|
@@ -71,25 +62,19 @@ for the schema).
|
|
|
71
62
|
|
|
72
63
|
### 3. Surface findings
|
|
73
64
|
|
|
74
|
-
When producing a review plan, include
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
short label and the required control, e.g. _"Pattern: N+1 on tenant
|
|
81
|
-
listings → add an eager-load regression test"_.
|
|
82
|
-
- **Confidence note** — if the ownership map is stale (last updated > 6
|
|
83
|
-
months ago per the `updated` field), say so. Ownership maps rot.
|
|
65
|
+
When producing a review plan, include owner-mapped roles (preferred
|
|
66
|
+
over generic), historical-pattern warnings (with required control),
|
|
67
|
+
and a staleness note if the ownership map's `updated` field is older
|
|
68
|
+
than 6 months. Worked examples for each in
|
|
69
|
+
[`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
|
|
70
|
+
§ Surface findings.
|
|
84
71
|
|
|
85
72
|
### 4. Do NOT overreach
|
|
86
73
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
- **Never copy historical-pattern names into the diff** as code comments
|
|
92
|
-
or commit messages — they are routing metadata, not commentary.
|
|
74
|
+
The "do NOT overreach" guardrails (no path renames as side effects, no
|
|
75
|
+
"safe because no match", no pattern names in diffs/commits) live in
|
|
76
|
+
[`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
|
|
77
|
+
§ Do NOT overreach.
|
|
93
78
|
|
|
94
79
|
## Interaction with other rules
|
|
95
80
|
|
|
@@ -102,16 +87,12 @@ When producing a review plan, include:
|
|
|
102
87
|
matched pattern is a reason to **add a test**, never a reason to
|
|
103
88
|
expand scope into unrelated refactors.
|
|
104
89
|
|
|
105
|
-
## Anti-patterns
|
|
90
|
+
## Anti-patterns
|
|
106
91
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
- Downgrading a matched high-severity pattern because "the author said
|
|
112
|
-
it's fine" — the pattern was registered because it bit before.
|
|
113
|
-
- Treating an out-of-date map as absent. Flag staleness; do not silently
|
|
114
|
-
skip.
|
|
92
|
+
The four anti-pattern rejections (invented owners, invented patterns,
|
|
93
|
+
downgrading high-severity hits, treating stale maps as absent) live in
|
|
94
|
+
[`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
|
|
95
|
+
§ Anti-patterns.
|
|
115
96
|
|
|
116
97
|
## See also
|
|
117
98
|
|