@event4u/agent-config 7.0.1 → 7.1.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 +8 -1
- package/CHANGELOG.md +99 -0
- package/README.md +4 -2
- package/dist/agent-src/commands/council/default.md +28 -20
- package/dist/agent-src/commands/evals/fix.json +5 -1
- package/dist/agent-src/commands/fix/comments.md +101 -0
- package/dist/agent-src/commands/fix.md +5 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +65 -0
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +68 -0
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +68 -0
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +62 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +59 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +8 -3
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +56 -0
- package/dist/agent-src/contexts/execution/subagent-routing.md +57 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +54 -0
- package/dist/agent-src/contexts/execution/subagent-steering.md +71 -0
- package/dist/agent-src/contexts/execution/verify-budget.md +50 -0
- package/dist/agent-src/rules/delegation-policy.md +84 -0
- package/dist/agent-src/rules/design-fidelity.md +98 -0
- package/dist/agent-src/rules/domain-safety-pii.md +22 -0
- package/dist/agent-src/rules/legal-safety-floor.md +144 -0
- package/dist/agent-src/rules/lethal-trifecta-guard.md +25 -22
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +102 -15
- package/dist/agent-src/scripts/update_roadmap_progress.ts +52 -7
- package/dist/agent-src/skills/ai-council/SKILL.md +28 -1
- package/dist/agent-src/skills/contract-review/SKILL.md +124 -0
- package/dist/agent-src/skills/contract-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/dpa-review/SKILL.md +129 -0
- package/dist/agent-src/skills/dpa-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/laravel/SKILL.md +1 -0
- package/dist/agent-src/skills/legal-intake-triage/SKILL.md +127 -0
- package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +17 -0
- package/dist/agent-src/skills/legal-practice-profile/SKILL.md +100 -0
- package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +17 -0
- package/dist/agent-src/skills/nda-triage/SKILL.md +113 -0
- package/dist/agent-src/skills/nda-triage/evals/triggers.json +17 -0
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +36 -9
- package/dist/agent-src/skills/recursive-verification/SKILL.md +186 -0
- package/dist/agent-src/skills/roadmap-management/SKILL.md +17 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +14 -0
- package/dist/agent-src/templates/agent-settings.md +64 -19
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +278 -23
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +12 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +50 -8
- package/dist/discovery/trust-report.md +7 -5
- package/dist/discovery/workspaces.json +34 -6
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/router.json +1 -1
- package/dist/server/schemas/settings.js +14 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/architecture.md +4 -4
- package/docs/benchmark.md +46 -0
- package/docs/catalog.md +18 -6
- package/docs/command-flows.md +7 -1
- package/docs/contracts/ai-council-config.md +17 -10
- package/docs/contracts/audit-log-v1.md +7 -0
- package/docs/contracts/auto-orchestration-v1.md +70 -0
- package/docs/contracts/command-clusters.md +1 -1
- package/docs/contracts/discovery-manifest.schema.json +2 -2
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +19 -0
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +13 -6
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +11 -1
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +10 -4
- package/docs/decisions/ADR-104-ai-council-config-global-only.md +119 -0
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +102 -0
- package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +126 -0
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +51 -0
- package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +46 -0
- package/docs/decisions/INDEX.md +5 -0
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
- package/docs/guidelines/agent-infra/domain-pack-architecture.md +55 -0
- package/package.json +1 -1
- package/src/config/agent-settings.template.yml +72 -3
- package/src/config/discovery/packs.yml +13 -0
- package/src/config/discovery/workspaces.yml +7 -0
- package/src/scripts/_lib/auto_dispatch.ts +95 -0
- package/src/scripts/_lib/host_capability.ts +59 -0
- package/src/scripts/_lib/orchestration_gate.ts +98 -0
- package/src/scripts/_lib/subagent_bundle.ts +154 -0
- package/src/scripts/_lib/subagent_response.ts +82 -0
- package/src/scripts/_lib/subagent_routing.ts +81 -0
- package/src/scripts/_lib/subagent_spawn.ts +97 -0
- package/src/scripts/_lib/subagent_steering.ts +64 -0
- package/src/scripts/_lib/verify_budget.ts +54 -0
- package/src/scripts/ai_council/advisors.ts +4 -2
- package/src/scripts/ai_council/clients.ts +7 -1
- package/src/scripts/ai_council/config.ts +22 -17
- package/src/scripts/bench_ab_v2_run.ts +127 -0
- package/src/scripts/bench_ab_v2_stats.ts +39 -0
- package/src/scripts/check_council_config_location.ts +6 -5
- package/src/scripts/lint_discovery_vocabulary.ts +6 -0
- package/src/scripts/lint_framework_leakage_allowlist.json +21 -0
- package/src/scripts/lint_legal_pack.ts +139 -0
- package/src/scripts/probe_projection_fidelity.ts +7 -1
- package/src/scripts/rdp_gate_classify.ts +131 -0
- package/src/scripts/rdp_quality_eval.ts +437 -0
- package/src/scripts/schemas/agent-settings.schema.json +11 -0
- package/src/scripts/skill_linter.ts +3 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: inherit
|
|
3
|
+
name: recursive-verification
|
|
4
|
+
description: "Use to run a depth-bounded self-correction loop (attempt → critic verdict → re-attempt) as a tunable test-time compute knob — a do-and-judge specialisation, default off, capability-gated."
|
|
5
|
+
domain: process
|
|
6
|
+
workspaces:
|
|
7
|
+
- agent-config-maintainer
|
|
8
|
+
packs:
|
|
9
|
+
- meta
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# recursive-verification
|
|
13
|
+
|
|
14
|
+
## When to use
|
|
15
|
+
|
|
16
|
+
* A first attempt at a bounded task may be improvable by feeding the
|
|
17
|
+
attempt plus an explicit critic verdict back into a corrective
|
|
18
|
+
re-attempt — and the extra compute is justified by the task's value.
|
|
19
|
+
* You want **depth** (number of correction rounds) to be an explicit
|
|
20
|
+
compute knob, not an open-ended loop.
|
|
21
|
+
* The shipped default (`verification.recursive`) is not `off` for the
|
|
22
|
+
active host, or the user asks for an extra self-correction pass.
|
|
23
|
+
|
|
24
|
+
Do NOT use when:
|
|
25
|
+
|
|
26
|
+
* The task is trivial — a one-liner, a rename, a format fix. The loop's
|
|
27
|
+
cost dwarfs any gain (the package's A/B bench measured ~11× tokens for
|
|
28
|
+
a single wrapper pass; recursion multiplies that per depth level).
|
|
29
|
+
* The host already one-shots the task. On a strong host with no headroom
|
|
30
|
+
a second pass only adds cost (see `docs/benchmark.md`: strong-host
|
|
31
|
+
discipline lift is null).
|
|
32
|
+
* You are chasing **model intelligence**. This transfers a test-time
|
|
33
|
+
*compute* pattern, not capability — it cannot make a model smarter than
|
|
34
|
+
its weights, and it implies **no** comparison to any frontier model.
|
|
35
|
+
* Budget is the constraint, or `verification.recursive: off` for this host.
|
|
36
|
+
|
|
37
|
+
## Goal
|
|
38
|
+
|
|
39
|
+
Land a verified result by running a depth-bounded
|
|
40
|
+
`attempt → critic verdict → conditional re-attempt` loop, with depth as
|
|
41
|
+
the only compute knob, every level budgeted, and the loop default-off
|
|
42
|
+
until a benchmark gate authorises it per host.
|
|
43
|
+
|
|
44
|
+
## The Iron Law
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
A CROSS-MODEL CRITIC NEVER RUNS ON THE SAME MODEL + CONTEXT AS THE ATTEMPT.
|
|
48
|
+
SAME-MODEL SELF-CRITIQUE IS A DISCIPLINE PASS ONLY — NEVER A CAPABILITY CLAIM.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Inherited from [`subagent-orchestration`](../subagent-orchestration/SKILL.md):
|
|
52
|
+
same model + same context = same blind spots. A same-model self-critique
|
|
53
|
+
at depth 1 is allowed **only** when explicitly flagged as a *discipline*
|
|
54
|
+
(not capability) pass — it can catch a skipped step or a scope-creep, but
|
|
55
|
+
it shares the attempt's blind spots and must never be sold as a capability
|
|
56
|
+
lift. Cross-model recursion (a different vendor as critic) is the
|
|
57
|
+
cross-vendor variant and obeys the Iron Law by construction
|
|
58
|
+
(critic model ≠ attempt model).
|
|
59
|
+
|
|
60
|
+
## The loop
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
attempt₀
|
|
64
|
+
→ critic verdict (accept | revise: <reason>)
|
|
65
|
+
→ accept → done
|
|
66
|
+
→ revise → attempt₁ (reads attempt₀ + the verdict as context)
|
|
67
|
+
→ critic verdict
|
|
68
|
+
→ … → depthₙ
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Each level reads **only** the prior attempt plus the critic's verdict —
|
|
72
|
+
never the full history — mirroring the read-your-own-output-and-decide
|
|
73
|
+
pattern. Depth `n` is the tunable compute knob, hard-capped by
|
|
74
|
+
`verification.max_depth`.
|
|
75
|
+
|
|
76
|
+
## Deterministic stop conditions
|
|
77
|
+
|
|
78
|
+
The loop stops at the first of:
|
|
79
|
+
|
|
80
|
+
1. **`accept`** — the critic accepts the attempt.
|
|
81
|
+
2. **`max_depth` reached** — `verification.max_depth` (default `1`).
|
|
82
|
+
3. **`verify-budget` exhausted** — each re-attempt is one budgeted unit
|
|
83
|
+
per [`verify-budget`](../../contexts/execution/verify-budget.md); a
|
|
84
|
+
required-but-unrun verification is a surfaced safety gap, never a
|
|
85
|
+
silent pass.
|
|
86
|
+
4. **No-progress floor** — two consecutive attempts score identical on
|
|
87
|
+
the deterministic scorer; further depth cannot help, so stop.
|
|
88
|
+
|
|
89
|
+
Stop conditions are deterministic so the loop can never run unbounded —
|
|
90
|
+
there is no open-ended "keep trying" branch.
|
|
91
|
+
|
|
92
|
+
## Settings
|
|
93
|
+
|
|
94
|
+
Configured in `.agent-settings.yml`; documented in
|
|
95
|
+
[`agent-settings`](../../templates/agent-settings.md):
|
|
96
|
+
|
|
97
|
+
| Key | Default | Effect |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| `verification.recursive` | `off` | `off` = inert; `ask` = ask once before looping; `on` = loop silently up to `max_depth`. |
|
|
100
|
+
| `verification.max_depth` | `1` | Hard cap on correction rounds. `1` = a single critic pass (effectively inert beyond one review) until a benchmark gate authorises more. |
|
|
101
|
+
|
|
102
|
+
Ships `off`. The per-host shipped default flips only on a passing
|
|
103
|
+
capability-axis benchmark cell (see Procedure step 4); an honest-null
|
|
104
|
+
keeps it `off`.
|
|
105
|
+
|
|
106
|
+
## Procedure
|
|
107
|
+
|
|
108
|
+
### 1. Gate on settings + task shape
|
|
109
|
+
|
|
110
|
+
Resolve `verification.recursive` for the active host. `off` → no-op.
|
|
111
|
+
Confirm the task is non-trivial (above the `verify-budget` change-size
|
|
112
|
+
floor) and that the host plausibly has headroom — skip otherwise.
|
|
113
|
+
|
|
114
|
+
### 2. Resolve the critic
|
|
115
|
+
|
|
116
|
+
Read `.agent-settings.yml` (`subagents.judge_model`). A cross-model
|
|
117
|
+
critic must satisfy the Iron Law. A same-model depth-1 pass is allowed
|
|
118
|
+
only when explicitly flagged as a discipline pass; surface that framing.
|
|
119
|
+
|
|
120
|
+
### 3. Run the loop
|
|
121
|
+
|
|
122
|
+
Run `attempt → verdict → conditional re-attempt`, counting each
|
|
123
|
+
re-attempt against `verify-budget`, until a deterministic stop condition
|
|
124
|
+
fires. Under `verification.recursive: on` surface depth + spend in one
|
|
125
|
+
line; under `ask`, ask once before the first re-attempt.
|
|
126
|
+
|
|
127
|
+
### 4. Honour the benchmark gate
|
|
128
|
+
|
|
129
|
+
The shipped default is set by the `bench:ab` gate
|
|
130
|
+
([`orchestration-benchmark-gate`](../../contexts/execution/orchestration-benchmark-gate.md),
|
|
131
|
+
`gateVerdict` / `resolveShippedDefault`): `on`/`ask` only on a host whose
|
|
132
|
+
**capability-axis** cell passed; `off` otherwise. A discipline-only lift
|
|
133
|
+
does not authorise a flip — that question is already answered by the
|
|
134
|
+
existing rules. Never flip a default without its own passing cell.
|
|
135
|
+
|
|
136
|
+
### 5. Report
|
|
137
|
+
|
|
138
|
+
Follow the output format. Never present a recursion result as a
|
|
139
|
+
capability gain or a frontier-model comparison.
|
|
140
|
+
|
|
141
|
+
## Gotcha
|
|
142
|
+
|
|
143
|
+
* **Recursion as discipline duplicate** — if the only lift is on the
|
|
144
|
+
discipline axis, recursion duplicates rules the package already ships,
|
|
145
|
+
at multiplied cost. Surface it; do not ship a redundant expensive loop.
|
|
146
|
+
* **Unbounded loop** — there is no open-ended branch; the four stop
|
|
147
|
+
conditions are deterministic and the depth cap is hard.
|
|
148
|
+
* **Same-model self-praise** — a same-model critic shares the attempt's
|
|
149
|
+
blind spots and tends to accept; treat depth-1 same-model passes as a
|
|
150
|
+
discipline check only, never as independent verification.
|
|
151
|
+
* **Cost surprise** — depth multiplies the per-pass token cost; confirm
|
|
152
|
+
budget before raising `max_depth` above 1.
|
|
153
|
+
* **Strong-host no-op** — on a host that one-shots the task, every extra
|
|
154
|
+
depth level is pure cost; the benchmark gate keeps the default `off`
|
|
155
|
+
there.
|
|
156
|
+
|
|
157
|
+
## Output format
|
|
158
|
+
|
|
159
|
+
1. **Depth reached** — the number of correction rounds run, and which
|
|
160
|
+
stop condition fired (`accept` / `max_depth` / `budget` / `no-progress`).
|
|
161
|
+
2. **Critic pairing** — attempt model / critic model (resolved), and
|
|
162
|
+
whether it was a cross-model or same-model discipline pass.
|
|
163
|
+
3. **Verdict** — accepted attempt vs. handed back, with the budget spent.
|
|
164
|
+
4. **Evidence** — per-depth scorer/verdict trail, never framed as a
|
|
165
|
+
capability or frontier-model comparison.
|
|
166
|
+
|
|
167
|
+
## Do NOT
|
|
168
|
+
|
|
169
|
+
* NEVER claim recursion makes the host model more capable or "closer to"
|
|
170
|
+
any frontier model — it is a test-time compute pattern, not intelligence.
|
|
171
|
+
* NEVER run an open-ended loop — `max_depth` and the stop conditions are
|
|
172
|
+
hard caps.
|
|
173
|
+
* NEVER treat a same-model self-critique as independent verification.
|
|
174
|
+
* NEVER flip the shipped default without a passing capability-axis gate
|
|
175
|
+
cell for that host.
|
|
176
|
+
* NEVER skip a required verification silently — surface it as a safety gap.
|
|
177
|
+
|
|
178
|
+
## Handover
|
|
179
|
+
|
|
180
|
+
| Task | Skill / context |
|
|
181
|
+
|---|---|
|
|
182
|
+
| Mode selection, the judge Iron Law | [`subagent-orchestration`](../subagent-orchestration/SKILL.md) |
|
|
183
|
+
| Per-pass cost budgeting | [`verify-budget`](../../contexts/execution/verify-budget.md) |
|
|
184
|
+
| Shipped-default gate mechanism | [`orchestration-benchmark-gate`](../../contexts/execution/orchestration-benchmark-gate.md) |
|
|
185
|
+
| Cross-vendor critic (different vendor) | [`ai-council`](../ai-council/SKILL.md) |
|
|
186
|
+
| Completion evidence | [`verify-completion-evidence`](../verify-completion-evidence/SKILL.md) |
|
|
@@ -43,6 +43,23 @@ rule. Batching multiple edits in one response is fine — one final
|
|
|
43
43
|
regeneration before replying is enough. But the response must not end
|
|
44
44
|
without it.
|
|
45
45
|
|
|
46
|
+
### Archival — preferred sweep, untracked-safe manual fallback
|
|
47
|
+
|
|
48
|
+
Robust path: `archive_completed_roadmaps --all` — detects complete
|
|
49
|
+
(`count_open == 0`, `count_deferred == 0`), moves to `agents/roadmaps/archive/`
|
|
50
|
+
(`git mv` tracked, plain `mv` untracked / no-commit), rewrites inbound refs,
|
|
51
|
+
regens dashboard. PR-independent.
|
|
52
|
+
|
|
53
|
+
**Manual fallback (script not vendored)** — same response, never leave a
|
|
54
|
+
100 %-complete roadmap active because `git mv` failed:
|
|
55
|
+
|
|
56
|
+
1. `mkdir -p agents/roadmaps/archive`.
|
|
57
|
+
2. `git mv agents/roadmaps/<x>.md agents/roadmaps/archive/<x>.md` (tracked); plain
|
|
58
|
+
`mv` if untracked / no commits.
|
|
59
|
+
3. Rewrite inbound `agents/roadmaps/<x>.md` → `agents/roadmaps/archive/<x>.md`
|
|
60
|
+
across the tree (working tree, not just index, when untracked).
|
|
61
|
+
4. Regenerate `agents/roadmaps-progress.md`.
|
|
62
|
+
|
|
46
63
|
## Procedure: Manage a roadmap
|
|
47
64
|
|
|
48
65
|
1. **Identify need** — Is this a multi-step change that spans sessions or agents?
|
|
@@ -56,6 +56,20 @@ parallel subagents **by default** and keep working while they run (async), rathe
|
|
|
56
56
|
than blocking on each return — intervene only if one goes off track. Engage per
|
|
57
57
|
[`rdp-gate`](../../contexts/execution/rdp-gate.md).
|
|
58
58
|
|
|
59
|
+
### Settings-gated auto-dispatch
|
|
60
|
+
|
|
61
|
+
"By default" is governed by `.agent-settings.yml`, not unconditional. Before
|
|
62
|
+
auto-dispatch, run the activation gate
|
|
63
|
+
([`auto-orchestration-activation`](../../contexts/execution/auto-orchestration-activation.md)):
|
|
64
|
+
dispatch only when `subagents.enabled` **and** `subagents.auto != off` **and**
|
|
65
|
+
the [`host-capability-manifest`](../../contexts/execution/host-capability-manifest.md)
|
|
66
|
+
reports `subagent_spawn: true` **and** the task is classified delegable
|
|
67
|
+
([`auto-dispatch-classification`](../../contexts/execution/auto-dispatch-classification.md)).
|
|
68
|
+
`auto: ask` → ask once (per [`user-interaction`](../../rules/user-interaction.md));
|
|
69
|
+
`auto: on` → surface chosen mode + per-subtask tiers in one line. Any gate fails
|
|
70
|
+
→ in-session. Auto-dispatch is the default where host + settings allow, a clean
|
|
71
|
+
no-op elsewhere — never lifts a safety floor.
|
|
72
|
+
|
|
59
73
|
## The seven modes
|
|
60
74
|
|
|
61
75
|
Each mode has a decision row: when to use, when not, and the expected
|
|
@@ -59,6 +59,20 @@ made by the user directly or by the agent on request, following the
|
|
|
59
59
|
# custom = ignore profile — every matrix value must be set explicitly.
|
|
60
60
|
rule_loading_tier: balanced
|
|
61
61
|
|
|
62
|
+
# --- Per-skill model auto-switch (ADR-035) ---
|
|
63
|
+
# Skills declare a vendor-neutral `model_tier` (lite|medium|high); the generator
|
|
64
|
+
# maps it to a native Claude model (high→opus, medium→sonnet, lite→haiku).
|
|
65
|
+
# suggest = (default) never emit a native Claude `model:` key; the
|
|
66
|
+
# model-recommendation rule names the tier as a one-question
|
|
67
|
+
# suggestion on every surface. Your explicit /model choice is
|
|
68
|
+
# never silently overridden.
|
|
69
|
+
# auto = render a native Claude `model:` into lite/medium/high-tier skills
|
|
70
|
+
# so Claude Code switches automatically for that turn (reverts on
|
|
71
|
+
# the next prompt); suggest on surfaces without a native override.
|
|
72
|
+
# off = inert — no native key, no suggestion.
|
|
73
|
+
model:
|
|
74
|
+
auto_switch: suggest
|
|
75
|
+
|
|
62
76
|
# --- Personal preferences ---
|
|
63
77
|
personal:
|
|
64
78
|
# IDE to use for opening files (code, phpstorm, cursor)
|
|
@@ -209,14 +223,20 @@ pipelines:
|
|
|
209
223
|
# response — that cadence is governed by `roadmap-progress-sync` and
|
|
210
224
|
# is non-negotiable. This setting only governs *quality tool runs*.
|
|
211
225
|
roadmap:
|
|
212
|
-
# Skip the
|
|
213
|
-
#
|
|
214
|
-
#
|
|
215
|
-
#
|
|
216
|
-
#
|
|
217
|
-
#
|
|
218
|
-
#
|
|
219
|
-
#
|
|
226
|
+
# Skip the pre-run confirmation gate when /roadmap:process-step|phase|full
|
|
227
|
+
# is invoked (true, false).
|
|
228
|
+
# true = default. The command name itself names the scope; if a
|
|
229
|
+
# single active roadmap is discoverable (or the user named
|
|
230
|
+
# one), the loop starts immediately. The resolved roadmap /
|
|
231
|
+
# cadence / council setting are surfaced inline as a one-shot
|
|
232
|
+
# note so an unwanted pick can still be aborted mid-stream.
|
|
233
|
+
# false = legacy. The loop shows the pre-run summary with numbered
|
|
234
|
+
# options (Go / Different roadmap / Different scope / Toggle
|
|
235
|
+
# council / Abort) and waits for input.
|
|
236
|
+
# The gate is still shown — regardless of this flag — when the roadmap
|
|
237
|
+
# is ambiguous (multiple active, none named) or a scope / cadence
|
|
238
|
+
# conflict has no sensible default. The flag suppresses the
|
|
239
|
+
# confirmation, never a genuine "which roadmap?" question.
|
|
220
240
|
skip_pre_run_gate: true
|
|
221
241
|
|
|
222
242
|
# When to run quality tools during /roadmap:process-step|phase|full.
|
|
@@ -257,6 +277,23 @@ subagents:
|
|
|
257
277
|
# Set to 1 to serialize. Hard cap enforced by runtime.
|
|
258
278
|
max_parallel: 3
|
|
259
279
|
|
|
280
|
+
# --- Recursive self-verification (see skills/recursive-verification) ---
|
|
281
|
+
verification:
|
|
282
|
+
# off | ask | on (default: off)
|
|
283
|
+
# Depth-bounded self-correction loop (attempt -> critic verdict ->
|
|
284
|
+
# conditional re-attempt) as a tunable test-time compute knob.
|
|
285
|
+
# off = inert; ask = ask once before looping; on = loop up to max_depth.
|
|
286
|
+
# The shipped per-host default flips off -> on/ask ONLY on a passing
|
|
287
|
+
# capability-axis bench:ab gate cell (orchestration-benchmark-gate);
|
|
288
|
+
# a discipline-only or honest-null result keeps it off.
|
|
289
|
+
recursive: off
|
|
290
|
+
|
|
291
|
+
# Hard cap on correction rounds (integer, default 1).
|
|
292
|
+
# 1 = a single critic pass (effectively inert beyond one review) until
|
|
293
|
+
# a benchmark gate authorises deeper recursion. Each level is one
|
|
294
|
+
# verify-budget unit; the loop also stops on accept / no-progress.
|
|
295
|
+
max_depth: 1
|
|
296
|
+
|
|
260
297
|
# --- Git worktrees ---
|
|
261
298
|
worktrees:
|
|
262
299
|
# off | on | ask (default: ask)
|
|
@@ -432,18 +469,26 @@ telemetry:
|
|
|
432
469
|
path: .agent-engagement.jsonl
|
|
433
470
|
|
|
434
471
|
# --- Linked projects (cross-repo awareness, local-only) ---
|
|
435
|
-
#
|
|
436
|
-
#
|
|
437
|
-
#
|
|
438
|
-
#
|
|
439
|
-
#
|
|
440
|
-
#
|
|
441
|
-
#
|
|
442
|
-
#
|
|
472
|
+
#
|
|
473
|
+
# Sibling repositories the IDE has attached to this project (PhpStorm
|
|
474
|
+
# .idea/modules.xml + vcs.xml, VS Code *.code-workspace). When a sibling is
|
|
475
|
+
# opted in, the agent proactively considers cross-repo impact (API contract /
|
|
476
|
+
# shared-type changes) and warns — it does NOT bulk-include the sibling's
|
|
477
|
+
# files. See docs/guides/cross-repo-linked-projects.md and ADR-032.
|
|
478
|
+
#
|
|
479
|
+
# THIS KEY BELONGS IN `.agent-settings.local.yml` (in agents/settings/) (the per-machine, gitignored
|
|
480
|
+
# override layer), NOT in the committed `.agent-settings.yml`: sibling paths
|
|
481
|
+
# differ per developer and must never be committed. Each entry:
|
|
482
|
+
# - path: absolute path to the sibling repo root (auto-filled by detection)
|
|
483
|
+
# - include: true = in scope (proactive awareness); false = declined, never
|
|
484
|
+
# re-prompted.
|
|
485
|
+
# Detection auto-skips bloat dirs (node_modules/.git/dist/build/.venv/target);
|
|
486
|
+
# a sibling over `max_files` is flagged `large` (awareness only), never excluded.
|
|
443
487
|
linked_projects: []
|
|
444
488
|
# - path: /abs/path/to/sibling-repo
|
|
445
489
|
# include: true
|
|
446
|
-
|
|
490
|
+
# Optional ceiling for the `large` flag (does not exclude). Default 20000.
|
|
491
|
+
linked_projects_max_files: 20000
|
|
447
492
|
```
|
|
448
493
|
|
|
449
494
|
## Settings Reference
|
|
@@ -468,7 +513,7 @@ the canonical narrative lives in
|
|
|
468
513
|
| `personal.minimal_output` | `true`, `false` | `true` | When `true`: short bullet points during work, concise summary at end. When `false`: verbose explanations. |
|
|
469
514
|
| `personal.play_by_play` | `true`, `false` | `false` | When `true`: share intermediate findings during investigation. When `false`: work silently, report only the conclusion. |
|
|
470
515
|
| `personal.pr_comment_bot_icon` | `true`, `false` | `false` | Prefix PR comment replies with 🤖 to indicate bot-authored replies. Personal preference — each developer decides. |
|
|
471
|
-
| `personal.autonomy` | `on`, `off`, `auto` | `auto` | Suppress trivial workflow questions and act on the obvious next step. `auto` defaults to `off` but flips to `on` after a prose opt-in like "arbeite selbstständig". `on` suppresses trivial questions unconditionally. Blocking decisions (security, scope expansion, push/merge/branch/PR/tag) are never suppressed. See `rules/autonomous-execution.md`. |
|
|
516
|
+
| `personal.autonomy` | `on`, `off`, `auto` | `auto` | Suppress trivial workflow questions and act on the obvious next step. `auto` (default) defaults to `off` but flips to `on` after a prose opt-in like "arbeite selbstständig". `on` suppresses trivial questions unconditionally. `off` is the legacy ask-everything mode. Blocking decisions (security, scope expansion, push/merge/branch/PR/tag) are never suppressed. See `rules/autonomous-execution.md`. |
|
|
472
517
|
| `project.pr_template` | file path | `.github/pull_request_template.md` | Path to PR template file. Read this instead of searching for it. |
|
|
473
518
|
| `project.upstream_repo` | `org/repo` | _(empty)_ | Target repository for universal improvement PRs (e.g., `org/agent-config`). |
|
|
474
519
|
| `project.improvement_pr_branch_prefix` | string | `improve/agent-` | Branch prefix for agent improvement PRs. |
|
|
@@ -487,7 +532,7 @@ the canonical narrative lives in
|
|
|
487
532
|
| `hooks.chat_history.enabled` | `true`, `false` | `true` | Register the chat-history hooks (`append` on `after_step`, `halt_append` on `on_halt`). Gated by **both** this flag AND `chat_history.enabled`; either off → no chat-history hook registers. Schema v4: every entry self-identifies via a 16-char session fingerprint, no ownership/sidecar layer. |
|
|
488
533
|
| `hooks.chat_history.script` | path | `scripts/chat_history.py` | Override path to the chat-history CLI. Set only when the script lives outside the standard location. |
|
|
489
534
|
| `pipelines.skill_improvement` | `true`, `false` | `true` | When `true`: propose learning capture after meaningful tasks. When `false`: silent. Included in every profile except `custom`. |
|
|
490
|
-
| `roadmap.skip_pre_run_gate` | `true`, `false` | `true` | When `true` (default): `/roadmap:process-step\|phase\|full` skips the interactive pre-run summary and starts immediately — resolved roadmap
|
|
535
|
+
| `roadmap.skip_pre_run_gate` | `true`, `false` | `true` | When `true` (default): `/roadmap:process-step\|phase\|full` skips the interactive pre-run summary and starts the loop immediately — the resolved roadmap, cadence, and council are surfaced inline so an unwanted pick can still be aborted. When `false`: the loop shows the pre-run summary with numbered options (Go / Different roadmap / Different scope / Toggle council / Abort) and waits. The gate is always shown — regardless of this flag — when the roadmap is ambiguous (multiple active, none named) or a scope / cadence conflict has no sensible default. |
|
|
491
536
|
| `roadmap.quality_cadence` | `end_of_roadmap`, `per_phase`, `per_step` | `end_of_roadmap` | When `/roadmap:process-step|phase|full` runs the project's quality pipeline. Default skips per-step / per-phase runs and gates only the final archival. `per_phase` runs once after every phase; `per_step` is the legacy verbose mode. Step checkboxes and the dashboard are always updated regardless. `verify-before-complete` still requires fresh output before any "roadmap complete" claim. |
|
|
492
537
|
| `quality.local_auto_run` | `true`, `false` | `true` | When `true`: agent runs the project's quality pipeline (`task ci`, `make test`, `npm run check`, PHPStan, ECS, Rector, test suites) autonomously when work is ready for verification. When `false`: agent asks before running locally. **Carve-out**: NEW CI gates / smoke tests / test files MUST run locally regardless of this flag — without execution the new gate is unverified evidence. Iron Law `verify-before-complete` still applies; suppressed runs require the agent to surface the gap before claiming completion. |
|
|
493
538
|
| `quality.wait_for_remote_ci` | `true`, `false` | `false` | When `true`: after `git push`, the agent polls GitHub check-runs / pipeline status on the PR and reports green / red before handing back. When `false`: agent pushes and hands back immediately; the user inspects CI themselves (default — saves agent runtime and tokens). |
|