@event4u/agent-config 1.23.0 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/.agent-src/commands/analyze-reference-repo.md +3 -0
  2. package/.agent-src/commands/review-routing.md +7 -10
  3. package/.agent-src/commands/roadmap/process-full.md +41 -1
  4. package/.agent-src/contexts/authority/kernel-rule-edits.md +48 -0
  5. package/.agent-src/contexts/authority/scope-mechanics.md +15 -0
  6. package/.agent-src/contexts/contracts/consumer-agents-md-guide.md +127 -0
  7. package/.agent-src/contexts/contracts/emergency-triage-block.md +53 -0
  8. package/.agent-src/contexts/execution/roadmap-process-loop.md +29 -6
  9. package/.agent-src/rules/analysis-skill-routing.md +1 -1
  10. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  11. package/.agent-src/rules/artifact-engagement-recording.md +1 -1
  12. package/.agent-src/rules/augment-source-of-truth.md +1 -1
  13. package/.agent-src/rules/autonomous-execution.md +1 -1
  14. package/.agent-src/rules/caveman-speak.md +1 -1
  15. package/.agent-src/rules/cli-output-handling.md +1 -1
  16. package/.agent-src/rules/command-suggestion-policy.md +1 -1
  17. package/.agent-src/rules/docs-sync.md +1 -1
  18. package/.agent-src/rules/guidelines.md +1 -1
  19. package/.agent-src/rules/improve-before-implement.md +1 -1
  20. package/.agent-src/rules/invite-challenge.md +1 -1
  21. package/.agent-src/rules/minimal-safe-diff.md +1 -1
  22. package/.agent-src/rules/model-recommendation.md +1 -1
  23. package/.agent-src/rules/no-attribution-footers.md +1 -1
  24. package/.agent-src/rules/no-roadmap-references.md +56 -20
  25. package/.agent-src/rules/onboarding-gate.md +1 -1
  26. package/.agent-src/rules/package-ci-checks.md +1 -1
  27. package/.agent-src/rules/reviewer-awareness.md +9 -2
  28. package/.agent-src/rules/roadmap-progress-sync.md +37 -3
  29. package/.agent-src/rules/scope-control.md +6 -0
  30. package/.agent-src/rules/security-sensitive-stop.md +1 -1
  31. package/.agent-src/rules/size-enforcement.md +1 -1
  32. package/.agent-src/rules/token-optimizer-maintenance.md +1 -1
  33. package/.agent-src/rules/ui-audit-gate.md +1 -1
  34. package/.agent-src/skills/adr-create/SKILL.md +2 -1
  35. package/.agent-src/skills/agents-md-thin-root/SKILL.md +125 -0
  36. package/.agent-src/skills/ai-council/SKILL.md +9 -7
  37. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +9 -0
  38. package/.agent-src/skills/markitdown/SKILL.md +239 -0
  39. package/.agent-src/skills/review-routing/SKILL.md +3 -4
  40. package/.agent-src/skills/universal-project-analysis/SKILL.md +8 -0
  41. package/.agent-src/templates/AGENTS.md +18 -148
  42. package/.agent-src/templates/copilot-instructions.md +41 -17
  43. package/.agent-src/templates/github-workflows/pr-risk-review.yml +1 -1
  44. package/.agent-src/templates/scripts/pr_review_routing.py +1 -1
  45. package/.claude-plugin/marketplace.json +7 -5
  46. package/AGENTS.md +18 -205
  47. package/CHANGELOG.md +70 -0
  48. package/README.md +2 -2
  49. package/docs/architecture.md +13 -7
  50. package/docs/catalog.md +45 -29
  51. package/docs/contracts/agents-md-tech-stack.md +74 -0
  52. package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
  53. package/docs/contracts/package-self-orientation.md +135 -0
  54. package/docs/contracts/rule-classification.md +4 -4
  55. package/docs/decisions/ADR-004-rule-governance-pruning.md +240 -0
  56. package/docs/getting-started.md +1 -1
  57. package/docs/guidelines/agent-infra/review-routing-data-format.md +1 -2
  58. package/package.json +1 -1
  59. package/scripts/_p4_migrate.py +5 -5
  60. package/scripts/audit_auto_rules.py +159 -0
  61. package/scripts/audit_likelihood.py +148 -0
  62. package/scripts/audit_overlap.py +145 -0
  63. package/scripts/build_rule_trigger_matrix.py +3 -5
  64. package/scripts/check_augment_description_cap.py +79 -0
  65. package/scripts/check_council_references.py +3 -3
  66. package/scripts/check_kernel_rule_bundle.py +151 -0
  67. package/scripts/check_references.py +21 -1
  68. package/scripts/compile_router.py +3 -0
  69. package/scripts/install.sh +0 -1
  70. package/scripts/lint_agents_md.py +168 -0
  71. package/scripts/measure_augment_budget.py +208 -0
  72. package/scripts/measure_markitdown_lift.py +127 -0
  73. package/scripts/schemas/rule.schema.json +2 -1
  74. package/scripts/skill_linter.py +10 -4
  75. package/scripts/spotcheck_thin_root.py +134 -0
  76. package/scripts/update_counts.py +6 -10
  77. package/.agent-src/rules/no-council-references.md +0 -76
  78. package/.agent-src/rules/review-routing-awareness.md +0 -19
  79. package/.agent-src/templates/copilot-review-instructions.md +0 -76
@@ -192,4 +192,7 @@ Never create the roadmap without explicit confirmation.
192
192
  - Skill: `project-analyzer` — base analysis workflow.
193
193
  - Skill: `learning-to-rule-or-skill` — turn adopt items into content.
194
194
  - Skill: `upstream-contribute` — push learnings back to this package.
195
+ - Skill: `markitdown` — preferred ingestion path when the reference
196
+ ships PDFs, DOCX, XLSX, PPTX, EPUB, images, or audio. Never read a
197
+ binary office format raw — convert first, then analyze.
195
198
  - Roadmaps: `agents/roadmaps/` — consumers of findings (e.g. `archive/road-to-anthropic-alignment.md`).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: review-routing
3
- skills: [review-routing, reviewer-awareness, review-routing-awareness]
3
+ skills: [review-routing, reviewer-awareness]
4
4
  description: Compute reviewer roles and matched historical bug patterns for the current diff, using project-local ownership-map.yml and historical-bug-patterns.yml
5
5
  disable-model-invocation: true
6
6
  suggestion:
@@ -18,10 +18,9 @@ reviewer roles plus any matched historical bug patterns — so the author
18
18
  knows *who* to request and *what* to test before opening a PR.
19
19
 
20
20
  Dispatches to [`review-routing`](../skills/review-routing/SKILL.md) for
21
- the core resolution logic. The rules
22
- [`reviewer-awareness`](../rules/reviewer-awareness.md) and
23
- [`review-routing-awareness`](../rules/review-routing-awareness.md) govern
24
- the output format and data handling.
21
+ the core resolution logic. The rule
22
+ [`reviewer-awareness`](../rules/reviewer-awareness.md) governs reviewer
23
+ choice, routing, and data handling.
25
24
 
26
25
  ### 1. Gather the diff
27
26
 
@@ -73,7 +72,7 @@ After the block, ask:
73
72
  ```
74
73
 
75
74
  - On **1**: hand off to
76
- [`create-pr-description`](../skills/create-pr-description/SKILL.md).
75
+ [`create-pr-description`](../skills/create-pr:description-only/SKILL.md).
77
76
  - On **2**: respect CODEOWNERS — request the *roles* resolved to people
78
77
  by the consumer's own mapping, never invent usernames.
79
78
  - On **3**: the user wants to curate the map first. Stop.
@@ -104,12 +103,10 @@ After the block, ask:
104
103
  ## See also
105
104
 
106
105
  - [`review-routing`](../skills/review-routing/SKILL.md) — the resolver
107
- - [`reviewer-awareness`](../rules/reviewer-awareness.md) — role vocabulary
108
- - [`review-routing-awareness`](../rules/review-routing-awareness.md) —
109
- data-source rules
106
+ - [`reviewer-awareness`](../rules/reviewer-awareness.md) — role vocabulary + data-source rules
110
107
  - [`review-routing-data-format`](../docs/guidelines/agent-infra/review-routing-data-format.md)
111
108
  — YAML schemas
112
- - [`create-pr-description`](../skills/create-pr-description/SKILL.md) —
109
+ - [`create-pr-description`](../skills/create-pr:description-only/SKILL.md) —
113
110
  consumes the routing block
114
111
  - [`verify-before-complete`](../rules/verify-before-complete.md) —
115
112
  consumes the `required_test` list
@@ -28,7 +28,8 @@ with the **scope delta below**.
28
28
  ## Scope delta
29
29
 
30
30
  - **Working set:** every open step across every phase, in document
31
- order.
31
+ order. **Horizon markers do not narrow the working set** — see
32
+ Iron Law below.
32
33
  - **Stop after:** the entire roadmap reaches `count_open == 0`, or a
33
34
  halt condition fires (Hard-Floor, council-off + ambiguity,
34
35
  security-sensitive, scope-out-of-roadmap, test/quality red).
@@ -40,10 +41,49 @@ with the **scope delta below**.
40
41
  archival check from
41
42
  [`roadmap-process-loop § 6`](../../contexts/execution/roadmap-process-loop.md#6-final-report-and-archival).
42
43
 
44
+ ## Iron Law — Full is Full
45
+
46
+ ```
47
+ /roadmap:process-full PROCESSES EVERY OPEN STEP IN THE FILE.
48
+ HORIZON MARKERS, "OUT-OF-HORIZON" LABELS, "GATED ON PHASE X"
49
+ NOTES, AND PHASE-INTERNAL "OPTIONAL" TAGS DO NOT NARROW THE
50
+ WORKING SET. ONLY THE FIVE HALT CONDITIONS STOP THE RUN.
51
+ ```
52
+
53
+ Roadmaps frequently carry a "Horizon (N-week visible plate)" section
54
+ or "(out-of-horizon, gated on Phase N)" sub-headings as an authoring
55
+ device. Those are **archival annotations**, not execution gates.
56
+ `/roadmap:process-full` ignores them by construction. If the user
57
+ wants horizon-respecting execution, they invoke `/roadmap:process-phase`
58
+ (scope = single phase) or `/roadmap:process-step` (scope = single
59
+ step) instead.
60
+
61
+ ## Iron Law — Real-time dashboard
62
+
63
+ ```
64
+ EVERY DONE STEP FLIPS [ ] → [x] BEFORE THE LOOP MOVES TO THE NEXT STEP.
65
+ DASHBOARD REGENERATES IN THE SAME REPLY THAT FLIPPED THE BOX.
66
+ NO BATCH FLIP AT THE ARCHIVE COMMIT. NO "I'LL DO IT AT THE END."
67
+ ```
68
+
69
+ `/roadmap:process-full` is the worst offender for batching because it
70
+ runs continuously across many steps. Flipping all 13 boxes in the
71
+ single archive commit defeats the dashboard's purpose — the user
72
+ loses progress visibility for the entire run. Per Iron Law 2 of
73
+ [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md): the
74
+ flip + regen pair is atomic with the step's work, executed inside
75
+ [`roadmap-process-loop § 5`](../../contexts/execution/roadmap-process-loop.md#5-step-loop)
76
+ step 5.
77
+
43
78
  ## Rules
44
79
 
45
80
  - **No silent acceleration past a halt.** Every halt condition stops
46
81
  the run; the user resumes on the next turn.
82
+ - **No silent stop at a horizon marker.** Encountering "out-of-horizon",
83
+ "gated on Phase N", "deferred", or any equivalent annotation is
84
+ **not** a halt condition. Continue.
85
+ - **No silent batch flip.** Each step's checkbox flips in the same
86
+ reply that lands its work — never deferred to the archive commit.
47
87
  - **Phase quality pipeline runs at every phase boundary** when cadence
48
88
  is `per_phase` or `per_step`. `end_of_roadmap` skips per-phase and
49
89
  runs only at the final archival check.
@@ -0,0 +1,48 @@
1
+ # Kernel-Rule Edits — Slow-Rollout Guarantee
2
+
3
+ Loaded by [`scope-control`](../../rules/scope-control.md). Codifies the
4
+ soak-time guarantee for edits to always-loaded (kernel) rules under
5
+ `.agent-src.uncompressed/rules/`.
6
+
7
+ **Size budget:** ≤ 1,500 chars.
8
+
9
+ ## The guarantee
10
+
11
+ Each kernel-rule edit ships in **its own PR**, with **≥ 24 h between
12
+ merges** of consecutive kernel-rule PRs. Autonomous mandate, roadmap
13
+ authorization, and standing "just keep going" directives **do not lift
14
+ this** — it is a behaviour-soak guarantee, not a governance preference.
15
+
16
+ The 24 h window exists so that a regression introduced by the first
17
+ edit (a rule that stops firing, an Iron Law that loses rhetorical
18
+ weight, a trigger that swallows a sibling rule's domain) surfaces in
19
+ real interactions before the second edit lands and confounds the
20
+ diagnosis.
21
+
22
+ ## Trigger
23
+
24
+ A PR is a "kernel-rule edit" iff it modifies any file in
25
+ `.agent-src.uncompressed/rules/` that is in the locked kernel set
26
+ (see [`docs/contracts/kernel-membership.md`](../../../docs/contracts/kernel-membership.md)).
27
+
28
+ The CI guard (Phase 4.2 of the always-budget-relief roadmap) fails
29
+ any PR that touches **> 1** kernel rule in the same diff. Override is
30
+ a single PR label: `bundled-always-rules-acknowledged` — the maintainer
31
+ records why the bundle is necessary in the PR body.
32
+
33
+ ## Out of scope
34
+
35
+ - Auto-tier rules. Auto rules load on demand; the soak rationale does
36
+ not apply with the same force.
37
+ - Context files cited by kernel rules. Context edits are reversible
38
+ cheaply and do not change rule firing surface.
39
+ - Whitespace / typo / link fixes inside a single kernel rule. Same-rule
40
+ cosmetic edits are not subject to the 24 h window — they ship as a
41
+ normal PR.
42
+
43
+ ## Source
44
+
45
+ - Roadmap Phase 4: always-budget-relief roadmap § Phase 4 (transient — see `agents/roadmaps/archive/`).
46
+ - Lesson: PR #36 (2026-05-04) compressed the rollout schedule under
47
+ autonomous mandate; the slow-rollout note was deferred until this
48
+ ADR pass.
@@ -58,6 +58,21 @@ Then present numbered options (`user-interaction`) with "stay on the
58
58
  current branch" as the default. The user decides. Do not branch
59
59
  first and explain later.
60
60
 
61
+ ## Branch-base inventory — ALWAYS before starting work
62
+
63
+ Before the first commit on related work, scan: `git branch --show-current` (is this branch shaped for the task?), `gh pr list --state open --limit 10` (overlapping open PR?), `git branch --sort=-committerdate | head -10` (in-flight branch to extend?).
64
+
65
+ A plausible base beyond the current branch exists → STOP and ask with numbered options:
66
+
67
+ 1. Branch off the **current branch** — stacked PR.
68
+ 2. Branch off **`main`** — independent PR.
69
+ 3. **Continue on the current branch** — extend the in-flight PR.
70
+ 4. **Cancel**.
71
+
72
+ User decides. Default: **3** when the current branch's name and scope match the task; otherwise **2**. Never improvise the base.
73
+
74
+ **Failure mode — diverging stacked PRs.** Skipping the inventory and committing to the wrong base creates two PRs that should have been one stack: merge conflicts when the parent lands, rebase / force-push churn, duplicate review effort. The 30-second inventory cost up front beats hours of rebase reconciliation later.
75
+
61
76
  ## Decline = silence — context
62
77
 
63
78
  The right moment to ask is **before** the work starts (writing the
@@ -0,0 +1,127 @@
1
+ # Consumer `AGENTS.md` — fill-out guide
2
+
3
+ > Outboard target for the placeholder sections that used to live verbatim
4
+ > in the consumer-template `AGENTS.md`. The template is now Thin-Root; this
5
+ > guide carries the prose / examples / `<!-- … -->` hints that the
6
+ > consumer copies in only when they need them.
7
+
8
+ After installing `event4u/agent-config`, the consumer project gets:
9
+
10
+ - `AGENTS.md` at project root — Thin-Root, points here.
11
+ - `.augment/`, `.agent-src/`, `.claude/`, `.cursor/`, `.clinerules/`,
12
+ `.windsurfrules` — installed artifacts, never hand-edited.
13
+ - `agents/` — project docs / roadmaps / sessions / overrides.
14
+ - `.agent-settings.yml` — project config consumed by skills.
15
+
16
+ ## Recommended `AGENTS.md` shape
17
+
18
+ The installed Thin-Root carries: project name + description, layer table,
19
+ five-question emergency triage block, pointers to this guide. Copy any of
20
+ the sections below into AGENTS.md only when the project actually needs
21
+ the content there (e.g. an unusual stack note that no `agents/` doc
22
+ covers). Default: leave AGENTS.md thin and put detail under `agents/`.
23
+
24
+ ## Tech-stack section (optional copy-in)
25
+
26
+ ```markdown
27
+ ## Tech Stack
28
+
29
+ - **Language:** {{primary_language}}
30
+ - **Framework:** {{framework}} # Laravel 11 / Next.js 15 / Rails 7 / Django 5
31
+ - **Database:** {{database}} # PostgreSQL / MySQL / MariaDB / SQLite
32
+ - **Testing:** {{test_framework}} # Pest / PHPUnit / Jest / Vitest / pytest
33
+ - **Code style:** {{code_style_tool}} # ECS / PHPStan / Ruff / ESLint
34
+ ```
35
+
36
+ ## Development-setup section (optional copy-in)
37
+
38
+ ```markdown
39
+ ## Development Setup
40
+
41
+ ​```bash
42
+ {{dev_start_command}} # make start / docker compose up / npm run dev / php artisan serve
43
+ {{dev_test_command}} # make test / docker compose exec app bash / npm test / php artisan test
44
+ ​```
45
+
46
+ ### Environment files
47
+
48
+ | File | Purpose |
49
+ |---|---|
50
+ | `.env` | Main environment |
51
+ | `.env.local` | Local overrides |
52
+ | `.env.testing` | Testing environment |
53
+ ```
54
+
55
+ ## Project-structure section (optional copy-in)
56
+
57
+ ```markdown
58
+ ## Project Structure
59
+
60
+ {{project_structure_notes}} # Where new features go, module/component
61
+ # boundaries, namespace conventions.
62
+ ```
63
+
64
+ ## Testing section (optional copy-in)
65
+
66
+ ```markdown
67
+ ## Testing
68
+
69
+ {{testing_notes}} # Framework quirks, how to run all/targeted
70
+ # tests, test data strategy (seeders /
71
+ # factories / fixtures), performance-critical
72
+ # suites.
73
+ ```
74
+
75
+ ## Quality-tools section (optional copy-in)
76
+
77
+ ```markdown
78
+ ## Quality Tools
79
+
80
+ {{quality_tools_notes}} # Which linters/formatters run, whether
81
+ # they auto-fix or report only, CI
82
+ # enforcement level.
83
+ ```
84
+
85
+ ## Recommended entry flow
86
+
87
+ Two entrypoints share the same engine and Option-A loop; pick by input shape:
88
+
89
+ | You have | Command | Envelope |
90
+ |---|---|---|
91
+ | Ticket id, URL, or pasted ticket payload | [`/implement-ticket`](.augment/commands/implement-ticket.md) | `input.kind="ticket"` |
92
+ | Free-form goal, no ticket | [`/work`](.augment/commands/work.md) | `input.kind="prompt"` |
93
+
94
+ Both drive the linear flow `refine → memory → analyze → plan → implement
95
+ → test → verify → report` with block-on-ambiguity semantics and no
96
+ auto-git.
97
+
98
+ `/work` adds a confidence-band gate at `refine`: the
99
+ [`refine-prompt`](.augment/skills/refine-prompt/SKILL.md) skill scores
100
+ the prompt on five dimensions and the engine proceeds **silently** on
101
+ `high`, halts with an **assumptions report** on `medium`, or halts with
102
+ **one clarifying question** on `low` (per the `ask-when-uncertain` Iron
103
+ Law). UI-shaped prompts route through the product UI track (`directive_set`
104
+ `ui` / `ui-trivial` / `mixed`) — `audit → design → apply → review →
105
+ polish` with a hard audit gate before any `apply`.
106
+
107
+ Persona comes from `.agent-settings.yml` (`roles.active_role`). Use
108
+ `/commit` and `/create-pr` explicitly after the delivery report. The
109
+ two flows are mutually exclusive at the state-file level: one
110
+ `.work-state.json` carries one envelope at a time; the engine refuses to
111
+ switch mid-flight.
112
+
113
+ ## Multi-agent support
114
+
115
+ | Tool | Rules | Skills | How |
116
+ |---|---|---|---|
117
+ | **Augment Code** | `.augment/rules/` | `.augment/skills/` | Native (source) |
118
+ | **Claude Code** | `.claude/rules/` | `.claude/skills/` | Symlinks + Agent Skills standard |
119
+ | **Cursor** | `.cursor/rules/` | — | Symlinks |
120
+ | **Cline** | `.clinerules/` | — | Symlinks |
121
+ | **Windsurf** | `.windsurfrules` | — | Concatenated file |
122
+ | **Gemini CLI** | `GEMINI.md` | — | Symlink → AGENTS.md |
123
+
124
+ Reinstall agent-config: `composer update event4u/agent-config` (PHP) or
125
+ `npm update @event4u/agent-config` (JS). Don't run package-internal
126
+ `task` commands from a consumer project; they only work in the
127
+ agent-config repo itself.
@@ -0,0 +1,53 @@
1
+ # Emergency Triage Block — canonical source
2
+
3
+ > Canonical content of the **Emergency Triage** block referenced by the
4
+ > `agents-md-thin-root` skill. Both the package-root `AGENTS.md` and
5
+ > `.agent-src.uncompressed/templates/AGENTS.md` (consumer template)
6
+ > embed this block verbatim. Drift is caught by the `lint-agents-md`
7
+ > task in the package's CI pipeline.
8
+
9
+ The block exists so a host agent can answer five basic questions from
10
+ the root file alone when network access, context-engine retrieval, or
11
+ linked-file fetches are degraded. Each answer fits on one line.
12
+
13
+ ## Package-root variant
14
+
15
+ Use this variant in `AGENTS.md` at the package root.
16
+
17
+ ```
18
+ ## Emergency triage — read this when nothing else is reachable
19
+
20
+ 1. **What is this repo?** — `event4u/agent-config`, a governed skill / rule / command suite for AI coding tools (no application runtime).
21
+ 2. **What language?** — All `.md` content is English; agents mirror the user's language at runtime.
22
+ 3. **Where do I edit?** — `.agent-src.uncompressed/` only. Never `.agent-src/`, `.augment/`, `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`.
23
+ 4. **Lint / test / sync entry point?** — `task ci` (full pipeline). Subsets: `task sync`, `task generate-tools`, `task lint-skills`, `task test`.
24
+ 5. **Where do the always-active rules live?** — `.agent-src/rules/` (kernel = 9 Iron-Law rules; tier-1 / tier-2 routed via `.agent-src/router.json`).
25
+ ```
26
+
27
+ ## Consumer-template variant
28
+
29
+ Use this variant in `.agent-src.uncompressed/templates/AGENTS.md`. The
30
+ consumer's `AGENTS.md` lands at the consumer-project root after install.
31
+
32
+ ```
33
+ ## Emergency triage — read this when nothing else is reachable
34
+
35
+ 1. **What is this repo?** — Consumer project; agent-config is installed as a shared skill / rule / command suite at `.augment/` and `.agent-src/`.
36
+ 2. **What language?** — Project-specific; agents mirror the user's language at runtime.
37
+ 3. **Where do I edit agent-config?** — Do not edit `.augment/` or `.agent-src/` here; they are installed artifacts. Project edits live in `agents/` and project source.
38
+ 4. **Lint / test / sync entry point?** — Project-specific (see project README); agent-config itself reinstalls via `composer update event4u/agent-config` or `npm update @event4u/agent-config`.
39
+ 5. **Where do the always-active rules live?** — `.agent-src/rules/` (kernel = 9 Iron-Law rules; tier-1 / tier-2 routed via `.agent-src/router.json`).
40
+ ```
41
+
42
+ ## Why two variants
43
+
44
+ The package-root and the consumer template answer the same five
45
+ questions but in different repos:
46
+
47
+ - The package-root variant points at this repo's authoring layer
48
+ (`.agent-src.uncompressed/`) and the package's CI entry point.
49
+ - The consumer variant tells the agent it is in a **consumer** project
50
+ where `.augment/` is an installed artifact and editing it is wrong.
51
+
52
+ The questions stay identical so a host agent can recognise the block
53
+ visually regardless of which repo it landed in.
@@ -86,10 +86,17 @@ For each open step in the working set (scope-bound — see wrapper):
86
86
  - **Council on** → invoke per [`ai-council`](../../skills/ai-council/SKILL.md),
87
87
  integrate convergence, proceed. Token spend was opted in.
88
88
  - **Council off** → halt, surface once, wait. Resume on next turn.
89
- 5. Mark the checkbox: `[x]` done · `[~]` partial · `[-]` skipped.
90
- 6. Regenerate the dashboard `./agent-config roadmap:progress` — in
91
- the **same response** per [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md).
92
- 7. Run quality pipeline if cadence is `per_step`.
89
+ 5. **Atomic flip + regen** before moving to step N+1, in the **same
90
+ reply** that landed step N's work:
91
+ 1. Flip the checkbox in `agents/roadmaps/<file>.md`: `[x]` done ·
92
+ `[~]` partial · `[-]` skipped.
93
+ 2. Run `./agent-config roadmap:progress` to regenerate the
94
+ dashboard.
95
+ This pair is **non-skippable** and **non-batchable** per Iron Law 2
96
+ of [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md). A
97
+ loop iteration that lands work without flipping its box is a rule
98
+ violation. Do not save flips for the archive commit.
99
+ 6. Run quality pipeline if cadence is `per_step`.
93
100
 
94
101
  ### Halt conditions
95
102
 
@@ -101,6 +108,20 @@ For each open step in the working set (scope-bound — see wrapper):
101
108
 
102
109
  On halt: stop, surface state, do **not** auto-fix outside the failing step.
103
110
 
111
+ ### Non-halt — horizon markers, gating notes, "optional" tags
112
+
113
+ The following are **authoring annotations**, never halt conditions. Do
114
+ **not** stop execution when the roadmap text contains them:
115
+
116
+ - `Horizon (N-week visible plate)` section headers
117
+ - `(out-of-horizon, gated on Phase N)` phase-header suffixes
118
+ - `(deferred)` / `(later)` / `(optional)` tags on a step
119
+ - "Gate: Phase 1 ships and …" prose inside an out-of-horizon phase
120
+
121
+ `process-step` and `process-phase` honor scope by stopping at their
122
+ configured boundary anyway. `process-full` is **defined by** ignoring
123
+ these markers — see [`/roadmap:process-full § Iron Law`](../../commands/roadmap/process-full.md#iron-law--full-is-full).
124
+
104
125
  ## 6. Final report and archival
105
126
 
106
127
  - Summary: scope-bound (steps/phases done in this run), council
@@ -118,8 +139,10 @@ On halt: stop, surface state, do **not** auto-fix outside the failing step.
118
139
  |---|---|---|
119
140
  | `process-step` | Single first open step | One iteration of § 5 |
120
141
  | `process-phase` | All open steps in first phase with `count_open > 0` | Phase boundary; per-phase quality if cadence ≠ `end_of_roadmap` |
121
- | `process-full` | Every open step across every phase, in order | Roadmap fully closed (or halt) |
142
+ | `process-full` | Every open step across every phase, in order — **horizon markers do not narrow this set** | Roadmap fully closed (or halt) |
122
143
 
123
144
  `process-full` runs the per-phase quality pipeline at every phase
124
145
  boundary when cadence is `per_phase` or `per_step`; on red it halts
125
- before the next phase.
146
+ before the next phase. It does **not** stop at horizon markers,
147
+ "out-of-horizon" labels, or "gated on Phase N" notes — those are
148
+ archival annotations, not halt conditions.
@@ -1,5 +1,5 @@
1
1
  ---
2
- type: "auto"
2
+ type: "manual"
3
3
  tier: "3"
4
4
  description: "When choosing an analysis skill, route to the narrowest matching skill instead of defaulting to broad analysis"
5
5
  source: package
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "2a"
4
4
  alwaysApply: false
5
- description: "Creating a new skill, rule, command, or guideline, or significantly rewriting one — runs a mandatory Understand → Research → Draft sequence before any artifact content is written."
5
+ description: "Creating a new skill, rule, command, or guideline, or significantly rewriting one — runs mandatory Understand → Research → Draft before drafting"
6
6
  source: package
7
7
  triggers:
8
8
  - intent: "create new skill"
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "mechanical-already"
4
4
  alwaysApply: false
5
- description: "After a /implement-ticket or /work phase-step (refine/memory/analyze/plan/implement/test/verify/report) or full task — emit one telemetry:record call with consulted+applied ids when enabled"
5
+ description: "After a /implement-ticket or /work phase-step (refine/memory/analyze/plan/implement/test/verify/report) or full task — emit one telemetry:record call"
6
6
  source: package
7
7
  triggers:
8
8
  - phrase: "/implement-ticket"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
4
- description: "Creating, editing, or modifying files inside .agent-src/ or .augment/ — the source of truth is .agent-src.uncompressed/, never edit the generated directories directly"
4
+ description: "Creating, editing, or modifying files in .agent-src/ or .augment/ — source of truth is .agent-src.uncompressed/, never edit generated dirs directly"
5
5
  source: package
6
6
  load_context:
7
7
  - ../contexts/communication/rules-auto/augment-source-of-truth-mechanics.md
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "3"
4
- description: "Deciding whether to ask the user or just act on a workflow step — trivial-vs-blocking classification, autonomy opt-in detection, commit default; defers to non-destructive-by-default for the Hard Floor"
4
+ description: "Whether to ask or act on a workflow step — trivial-vs-blocking, autonomy opt-in, commit default; Hard Floor in non-destructive-by-default"
5
5
  alwaysApply: false
6
6
  source: package
7
7
  load_context:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
4
- description: "When caveman.speak_scope != off — compress reply prose to caveman grammar with byte-for-byte carve-outs for numbered options, Iron-Law literals, code, paths, and error markers."
4
+ description: "When caveman.speak_scope != off — compress reply prose to caveman grammar with carve-outs for numbered options, Iron-Law, code, paths, error markers"
5
5
  source: package
6
6
  triggers:
7
7
  - intent: "any reply"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
4
- description: "Running CLI commands that produce verbose output — git, tests, linters, docker, build tools, artisan, npm, composer. Wrap with rtk when installed; tail/grep is fallback."
4
+ description: "Running CLI commands that produce verbose output — git, tests, linters, docker, build tools, artisan, npm, composer. Wrap with rtk; tail/grep fallback"
5
5
  source: package
6
6
  triggers:
7
7
  - keyword: "git"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "mechanical-already"
4
- description: "User prompt without /command but matching an eligible slash command — surface matches as numbered options with as-is escape hatch; never auto-executes, user always picks"
4
+ description: "User prompt without /command matching an eligible slash command — surface matches as numbered options with as-is escape; never auto-executes"
5
5
  source: package
6
6
  triggers:
7
7
  - phrase: "free-form prompt"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
4
- description: "Keeping .augment/ contexts, counts, and cross-references in sync when creating, renaming, or deleting skills, commands, rules, guidelines, templates, or any agent infrastructure files"
4
+ description: "Keeping .augment/ contexts, counts, cross-references in sync when creating, renaming, or deleting skills, rules, commands, templates, agent infra"
5
5
  source: package
6
6
  triggers:
7
7
  - path_prefix: ".agent-src.uncompressed/"
@@ -1,5 +1,5 @@
1
1
  ---
2
- type: "auto"
2
+ type: "manual"
3
3
  tier: "3"
4
4
  description: "Writing or reviewing code — check relevant guideline before writing or reviewing code"
5
5
  alwaysApply: false
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2b"
4
- description: "Before implementing features or architectural changes — validate the request against existing code, challenge weak requirements, and suggest improvements"
4
+ description: "Before implementing features or architectural changes — validate the request against existing code, challenge weak requirements, suggest improvements"
5
5
  alwaysApply: false
6
6
  source: package
7
7
  council_depth: deep
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2b"
4
- description: "Before executing a complex plan or non-trivial design — proactively ask 'am I solving the right problem?' and pause for user confirmation, even when no ambiguity is detected"
4
+ description: "Before executing a complex plan or non-trivial design — ask 'am I solving the right problem?' and pause for user confirmation, even when no ambiguity"
5
5
  alwaysApply: false
6
6
  source: package
7
7
  council_depth: deep
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "2a"
4
4
  alwaysApply: false
5
- description: "When writing or reviewing a diff — the smallest change that solves the stated problem; no drive-by edits, no opportunistic refactors, no reformatting of untouched code"
5
+ description: "When writing or reviewing a diff — the smallest change that solves the stated problem; no drive-by edits, opportunistic refactors, or reformatting"
6
6
  source: package
7
7
  triggers:
8
8
  - intent: "writing a diff"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
4
- description: "Starting a new task, switching task type, or invoking a command — detect task complexity and recommend the optimal model (Opus/Sonnet/GPT) before any work"
4
+ description: "Starting a new task, switching task type, or invoking a command — detect complexity and recommend optimal model (Opus/Sonnet/GPT) before work"
5
5
  source: package
6
6
  triggers:
7
7
  - phrase: "switch task"
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "3"
4
4
  alwaysApply: false
5
- description: "Generating PR/issue/comment/commit-message bodies — forbids unsolicited 'Generated with', 'Co-authored by', or 'Pull Request opened by' attribution footers in any user-owned artifact"
5
+ description: "Generating PR/issue/comment/commit-message bodies — forbids 'Generated with', 'Co-authored by', or 'Pull Request opened by' attribution footers"
6
6
  source: package
7
7
  triggers:
8
8
  - intent: "PR body"