@event4u/agent-config 9.22.0 → 9.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +84 -238
- package/README.md +2 -2
- package/dist/agent-src/commands/agent-handoff.md +10 -3
- package/dist/agent-src/commands/analyze/inbox.md +190 -0
- package/dist/agent-src/commands/analyze.md +4 -3
- package/dist/agent-src/commands/optimize/deep.md +13 -0
- package/dist/agent-src/commands/pr/create.md +6 -6
- package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +12 -2
- package/dist/agent-src/contexts/execution/mandated-lines.md +180 -0
- package/dist/agent-src/rules/context-hygiene.md +20 -0
- package/dist/agent-src/rules/downstream-changes.md +26 -0
- package/dist/agent-src/rules/think-before-action.md +25 -0
- package/dist/agent-src/rules/token-budget-discipline.md +46 -3
- package/dist/agent-src/rules/token-efficiency.md +13 -0
- package/dist/agent-src/rules/ui-audit-gate.md +33 -2
- package/dist/agent-src/skills/adversarial-review/SKILL.md +18 -4
- package/dist/agent-src/skills/decision-review/SKILL.md +49 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +5 -1
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +16 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +14 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +33 -0
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +31 -0
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/cli/registry.js +1 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/chunk-DVRS2KVR.js +4602 -0
- package/dist/cli-delegate/{chunk-ELMFOQPW.js → chunk-SJQMJI7M.js} +8 -4597
- package/dist/cli-delegate/cmd_export.js +2 -1
- package/dist/cli-delegate/cmd_prune.js +2 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +2 -1
- package/dist/cli-delegate/cmd_settings_set.js +3370 -0
- package/dist/cli-delegate/cmd_sync.js +2 -1
- package/dist/cli-delegate/cmd_uninstall.js +2 -1
- package/dist/cli-delegate/cmd_validate.js +2 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +54 -27
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +6 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +5 -4
- package/dist/hooks/dispatch.js +79 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/scripts/condense.js +47 -2
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/routes/settings.js +82 -0
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/shared/settingsClasses.js +191 -0
- package/dist/shared/settingsClasses.js.map +1 -0
- package/docs/contracts/settings-classes.md +342 -0
- package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +23 -2
- package/docs/guidelines/agent-infra/false-green.md +187 -0
- package/docs/guidelines/agent-infra/gate-authoring.md +177 -0
- package/package.json +3 -1
- package/src/config/ci-local-parity.yml +12 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +54 -12
- package/src/config/gate-violation-baselines.json +6 -0
- package/src/config/pack-size-budget.json +4 -3
- package/src/scripts/_cli/cmd_settings_set.ts +509 -0
- package/src/scripts/_dispatch.bash +16 -0
- package/src/scripts/_lib/gate_ledger.ts +295 -0
- package/src/scripts/_lib/gate_result.ts +101 -0
- package/src/scripts/_lib/gate_self_test.ts +129 -0
- package/src/scripts/_lib/measured_render.ts +97 -0
- package/src/scripts/_lib/ratchet_base_ref.ts +373 -0
- package/src/scripts/check_gate_completeness.ts +244 -0
- package/src/scripts/check_gate_coverage.ts +35 -6
- package/src/scripts/check_references.ts +125 -15
- package/src/scripts/check_review_dispositions.ts +14 -1
- package/src/scripts/check_suppression_hygiene.ts +503 -0
- package/src/scripts/condense.ts +47 -2
- package/src/scripts/hook_manifest.yaml +23 -0
- package/src/scripts/hooks/dispatch_hook.ts +65 -1
- package/src/scripts/hooks/host_semantics.ts +140 -0
- package/src/scripts/lint_framework_leakage.ts +147 -15
- package/src/scripts/lint_mandated_lines.ts +339 -0
- package/src/scripts/lint_roadmap_complexity.ts +102 -11
- package/src/scripts/lint_roadmap_family_cap.ts +191 -0
- package/src/scripts/lint_settings_classes.ts +397 -0
- package/src/scripts/lint_token_budget_discipline.ts +109 -1
- package/src/scripts/measure_rule_absoluta.ts +231 -0
- package/src/scripts/report_imperative_density.ts +229 -0
- package/src/scripts/verify_physical_move.ts +10 -1
- package/src/server/io/yamlIO.ts +173 -0
- package/src/shared/settingsClasses.ts +235 -0
|
@@ -26,6 +26,19 @@ NEVER CALL THE SAME TOOL >2 TIMES IN A ROW WITH SIMILAR PARAMETERS.
|
|
|
26
26
|
IF YOU CATCH YOURSELF REPEATING → STOP, RETHINK, ASK.
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
## Enumerated file sets are ONE operation, not N repetitions
|
|
30
|
+
|
|
31
|
+
The same-tool ceiling counts *repetition without new information* — the loop where the agent re-runs a tool because it did not learn from the last result. Reading N **declared, enumerated** files is the opposite: each read returns different content and the set was known before the first call. Counting it as N repetitions puts this rule in direct conflict with [`downstream-changes`](downstream-changes.md) ("find **ALL** callers, tests, imports") and with [`source-discovery-gate`](source-discovery-gate.md), which cannot be satisfied in two calls.
|
|
32
|
+
|
|
33
|
+
Exempt — the file set is enumerated **before** the first read and each read is a distinct member:
|
|
34
|
+
|
|
35
|
+
- an override / settings-resolution chain (project → user → global);
|
|
36
|
+
- a downstream-caller sweep after a rename or signature change;
|
|
37
|
+
- the members of a directory listing or grep result being opened in turn;
|
|
38
|
+
- a declared read protocol under [`context-hygiene`](context-hygiene.md).
|
|
39
|
+
|
|
40
|
+
Not exempt, and still the failure this rule exists to catch: re-reading the *same* file hoping for a different answer, re-running a failing command unchanged, or widening a grep by one word at a time instead of thinking. The discriminator is **did the previous call change what I know** — not the tool name.
|
|
41
|
+
|
|
29
42
|
## Fresh Output Over Memory
|
|
30
43
|
|
|
31
44
|
When a tool returns a value (branch name, file path, PR number), use that EXACT value in subsequent API calls. NEVER substitute a value from earlier in the conversation. Context decay causes silent mismatches — fresh output is the only source of truth.
|
|
@@ -46,12 +46,43 @@ EXISTING-UI-AUDIT RUNS FIRST. ALWAYS.
|
|
|
46
46
|
|
|
47
47
|
`null` or `{}` is **not** findings; empty dict is rejected on purpose.
|
|
48
48
|
|
|
49
|
-
## Allow-list — `ui-trivial
|
|
49
|
+
## Allow-list — `ui-trivial`, decidable from the diff alone
|
|
50
50
|
|
|
51
51
|
Skip only when **all** hold:
|
|
52
52
|
|
|
53
|
-
- `directive_set == "ui-trivial"`.
|
|
54
53
|
- ≤ 1 file, ≤ 5 changed lines, no new component, no new state.
|
|
54
|
+
- Inside the work engine, `directive_set == "ui-trivial"` — the dispatcher
|
|
55
|
+
states it directly. Outside it, the same four conditions are read **off the
|
|
56
|
+
diff**, which is observable without any dispatcher state.
|
|
57
|
+
|
|
58
|
+
The `directive_set` check used to be an additional *requirement* rather than
|
|
59
|
+
the dispatcher's way of stating the same fact. That made the escape hatch
|
|
60
|
+
dispatcher-only, and with `state.ui_audit` also dispatcher-only the gate could
|
|
61
|
+
be neither satisfied nor skipped in a plain chat session — the only
|
|
62
|
+
rule-conform action left was "write no UI". A gate whose sole compliant path is
|
|
63
|
+
inaction is not a gate.
|
|
64
|
+
|
|
65
|
+
## Honest scope — what this rule does NOT enforce in a chat session
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
OUTSIDE THE WORK ENGINE, THE AUDIT OBLIGATION IS MODEL-CARRIED.
|
|
69
|
+
NEVER CLAIM THE AUDIT RAN AS IF IT WERE VERIFIED.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`state.ui_audit` exists only inside the work-engine dispatcher, so only there
|
|
73
|
+
is "the audit ran" a *checked* fact. A chat session cannot verify it: "I ran
|
|
74
|
+
`existing-ui-audit` first" is self-report, and self-report is not enforcement —
|
|
75
|
+
the same honesty boundary `security-sensitive-stop` and
|
|
76
|
+
`untrusted-input-defense` state for their own obligations. So this rule ships
|
|
77
|
+
`enforced_by: none` outside the dispatcher, deliberately, rather than pretending
|
|
78
|
+
a satisfiable-by-assertion condition is a gate.
|
|
79
|
+
|
|
80
|
+
What that leaves, and it is the useful part: run
|
|
81
|
+
[`existing-ui-audit`](../skills/existing-ui-audit/SKILL.md) before adding a
|
|
82
|
+
component because reuse beats duplication — not because a check will catch you.
|
|
83
|
+
Full enforcement requires the dispatcher (or the `frontend-design` pack once
|
|
84
|
+
pack-scoped rule projection is enabled; that flip is a maintainer decision,
|
|
85
|
+
never an automated one).
|
|
55
86
|
|
|
56
87
|
## Failure modes
|
|
57
88
|
|
|
@@ -37,7 +37,7 @@ sums ("attack the winner, using the losing options' strongest criteria")
|
|
|
37
37
|
1. **Inspect the artifact** — Read the plan, diff, or draft you are about to critique; note its scope, assumptions, and the explicit asks before attacking.
|
|
38
38
|
2. **Attack** — Run Step 1 below as the grumpy senior engineer.
|
|
39
39
|
3. **Defend** — Run Step 2 as the balanced engineer; classify each criticism as must-fix / defer / reject.
|
|
40
|
-
4. **Revise** — Run Step 3 to fold valid fixes back in
|
|
40
|
+
4. **Revise** — Run Step 3 to fold valid fixes back in, then report every criticism with its disposition. Deciding which trade-offs matter is the user's pass, not this step's.
|
|
41
41
|
|
|
42
42
|
### Step 1: Attack (Grumpy Senior Engineer)
|
|
43
43
|
|
|
@@ -64,8 +64,19 @@ Counter the criticism fairly:
|
|
|
64
64
|
- Move deferred concerns to "Open Questions" or "Known Limitations".
|
|
65
65
|
- Present the improved version to the user.
|
|
66
66
|
|
|
67
|
-
**
|
|
68
|
-
|
|
67
|
+
**Debate internally, report completely.** The user sees the improved result
|
|
68
|
+
rather than the blow-by-blow — but every criticism raised reaches the report
|
|
69
|
+
with its disposition (must-fix / deferred / rejected, each with one line of
|
|
70
|
+
reason). Do not decide on the user's behalf which concerns were worth their
|
|
71
|
+
attention.
|
|
72
|
+
|
|
73
|
+
This clause used to read *"surface only the trade-offs that need the user's
|
|
74
|
+
input"*, and that is the pre-filter defect: an instruction to report a subset is
|
|
75
|
+
followed literally — the review finds the defects, then withholds the ones it
|
|
76
|
+
judged unimportant, and the loss is invisible because the withheld set leaves no
|
|
77
|
+
trace. It matters here more than anywhere: `self_review_gate.ts` loads this file
|
|
78
|
+
as the system prompt for the package's own CI self-review, so a suppression
|
|
79
|
+
clause here suppresses findings on every pull request.
|
|
69
80
|
|
|
70
81
|
## Context-specific attack questions
|
|
71
82
|
|
|
@@ -148,7 +159,10 @@ triggers it. See [`rdp-gate`](../../contexts/execution/rdp-gate.md) (L12).
|
|
|
148
159
|
## Output format
|
|
149
160
|
|
|
150
161
|
1. Improved plan/code incorporating adversarial findings
|
|
151
|
-
2.
|
|
162
|
+
2. **Every criticism raised**, each with severity and disposition (must-fix /
|
|
163
|
+
deferred / rejected) and one line of reason. Not "top concerns" — a summary
|
|
164
|
+
that keeps only the highlights is the pre-filter defect wearing an
|
|
165
|
+
editor's hat.
|
|
152
166
|
3. Remaining open risks (if any) with severity rating
|
|
153
167
|
|
|
154
168
|
## Gotcha
|
|
@@ -173,6 +173,55 @@ strengthening evidence.
|
|
|
173
173
|
`skipped` (stale — age > `review_after_days`), surface them to
|
|
174
174
|
the user; do not silently use stale entries as if they were current.
|
|
175
175
|
|
|
176
|
+
## Removal is a disposition — a rule the agent keeps failing gets teeth or gets deleted
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
A RULE THE AGENT CONSISTENTLY FAILS TO FOLLOW GETS STRUCTURAL ENFORCEMENT
|
|
180
|
+
OR DELETION. NEVER A LOUDER RESTATEMENT.
|
|
181
|
+
ASK WHAT CAN BE REMOVED AS DELIBERATELY AS WHAT SHOULD BE ADDED.
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Ratchets in this tree move one way. Counts go up, gates accumulate, and nothing
|
|
185
|
+
retires an artifact — so the default response to non-adherence has been to say
|
|
186
|
+
it again, harder. That is the one response the evidence rules out: an obligation
|
|
187
|
+
that did not change behaviour as prose does not change it as louder prose. The
|
|
188
|
+
fork is **enforcement or deletion**, and both are real options.
|
|
189
|
+
|
|
190
|
+
**Non-adherence is the trigger, not low frequency.** A rule that rarely fires is
|
|
191
|
+
not a rule that fails. A floor is working precisely when nothing crosses it, and
|
|
192
|
+
deleting it because it has been quiet removes the thing that was holding.
|
|
193
|
+
|
|
194
|
+
### The simplify signals
|
|
195
|
+
|
|
196
|
+
Any of these is a reason to open the question. None of them is on its own a
|
|
197
|
+
verdict:
|
|
198
|
+
|
|
199
|
+
- a section that has not been relevant across many sessions;
|
|
200
|
+
- a rule derived from a **single unvalidated observation**;
|
|
201
|
+
- a workflow that is consistently shortcut in practice;
|
|
202
|
+
- sections that are loaded every run and never acted on;
|
|
203
|
+
- two rules that contradict each other;
|
|
204
|
+
- complexity added for a case that has never triggered.
|
|
205
|
+
|
|
206
|
+
Note that *never relevant*, *single unvalidated observation*, and *never acted
|
|
207
|
+
on* are listed separately on purpose. They look alike and they are not: the
|
|
208
|
+
first is about scope, the second about evidence, the third about attention.
|
|
209
|
+
|
|
210
|
+
### Escalation, and its counterpart
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
A THIRD RECURRENCE OF THE SAME VIOLATION CLASS CONVERTS AN OBSERVATION
|
|
214
|
+
INTO A DETERMINISTIC GATE.
|
|
215
|
+
A REVIEW FINDING NEVER SILENTLY BECOMES A HARD GATE.
|
|
216
|
+
ESCALATE AT A STATED THRESHOLD, NEVER SILENTLY.
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Both halves are load-bearing and they come from sources that disagree. The
|
|
220
|
+
threshold stops a recurring defect from being re-observed forever; the
|
|
221
|
+
counterpart stops a single reviewer's opinion from quietly becoming law. Between
|
|
222
|
+
them, the only legitimate path from *noticed* to *enforced* is a stated count
|
|
223
|
+
reached in the open.
|
|
224
|
+
|
|
176
225
|
## Decision-revisit gate — mechanics (migrated from the `decision-revisit-gate` rule)
|
|
177
226
|
|
|
178
227
|
Body of [`decision-revisit-gate`](../../rules/decision-revisit-gate.md)
|
|
@@ -101,7 +101,11 @@ Before finalising:
|
|
|
101
101
|
2. No dimension was penalised for length or word count.
|
|
102
102
|
3. N/A credit was granted only where the schema allows it.
|
|
103
103
|
4. The verdict follows the ratio thresholds above, not intuition.
|
|
104
|
-
5.
|
|
104
|
+
5. The **Dimensions block lists every dimension**, scored, with no omissions —
|
|
105
|
+
that is the complete emission and it is not optional. **Top gaps** is a
|
|
106
|
+
ranked summary layered over it, so it names the highest-weight misses rather
|
|
107
|
+
than repeating the block. Shortening the block itself is the pre-filter
|
|
108
|
+
defect; shortening the summary is what a summary is.
|
|
105
109
|
|
|
106
110
|
## Output format
|
|
107
111
|
|
|
@@ -121,11 +121,24 @@ Issues (if revise/reject):
|
|
|
121
121
|
Trigger: <concrete input/condition>
|
|
122
122
|
Expected: <what should happen>
|
|
123
123
|
🟡 ...
|
|
124
|
+
|
|
125
|
+
Rejected candidates (if the devil's-advocate pass killed any):
|
|
126
|
+
🔴→drop path/to/file.ext:LINE — <the finding> · refuted by: <guard clause
|
|
127
|
+
upstream | framework default | unreachable input | …>
|
|
124
128
|
```
|
|
125
129
|
|
|
126
130
|
Severity: 🔴 crash or incorrect result / 🟡 edge case unhandled but
|
|
127
131
|
graceful / 🟢 defensive-coding suggestion.
|
|
128
132
|
|
|
133
|
+
**A killed 🔴 is demoted, never deleted.** This judge runs a refutation pass on
|
|
134
|
+
every 🔴 and used to leave no trace of what it killed — the one judge with a
|
|
135
|
+
refutation step and no demotion bucket, where `code-review`, `security-audit`,
|
|
136
|
+
`bug-analyzer`, and the adversarial council all pair theirs with one. The
|
|
137
|
+
asymmetry matters because refutation is a judgement: a reviewer who was wrong to
|
|
138
|
+
refute leaves the reader no way to notice. Confidence is what the row carries;
|
|
139
|
+
severity is what it keeps — a 🔴 refuted on a guess is still a 🔴 somebody should
|
|
140
|
+
look at.
|
|
141
|
+
|
|
129
142
|
Required fields (ordered):
|
|
130
143
|
|
|
131
144
|
1. **Judge** and **Model** — skill name and resolved judge model
|
|
@@ -133,6 +146,9 @@ Required fields (ordered):
|
|
|
133
146
|
3. **Verdict** — `apply`, `revise`, or `reject`
|
|
134
147
|
4. **Issues** — every finding cites file:line and concrete trigger;
|
|
135
148
|
omit only when verdict is `apply`
|
|
149
|
+
5. **Rejected candidates** — every finding the refutation pass killed, with what
|
|
150
|
+
refuted it. Omit the section only when the pass killed nothing; never omit it
|
|
151
|
+
because the kills seemed obvious.
|
|
136
152
|
|
|
137
153
|
If a finding needs runtime confirmation, note it as a follow-up for
|
|
138
154
|
the implementer with the concrete probe — backend: `curl` or
|
|
@@ -63,6 +63,15 @@ finding count. Preserve each
|
|
|
63
63
|
judge's own verdict word (do not normalise away `breached` into `reject`); add a
|
|
64
64
|
severity tier (worst/mid/clean) only as a sort key.
|
|
65
65
|
|
|
66
|
+
**A sort key, never a filter.** Severity orders the synthesis; it never decides
|
|
67
|
+
what enters it. Dropping a judge's low-severity finding during synthesis
|
|
68
|
+
reproduces the pre-filter defect one layer up — the finding was found, the
|
|
69
|
+
reviewer reported it, and the aggregator withheld it. Filtering is the
|
|
70
|
+
consumer's pass, after the ledger is whole. Output shape, the separate
|
|
71
|
+
`Confidence` field, and the preserve-an-unverified-S0 rule are specified once in
|
|
72
|
+
[`adversarial-review-protocol`](../../../docs/contracts/adversarial-review-protocol.md)
|
|
73
|
+
§ 3.
|
|
74
|
+
|
|
66
75
|
### 2. Find consensus (highest confidence)
|
|
67
76
|
|
|
68
77
|
A finding flagged by **≥2 judges** (same file:line / same dimension / same
|
|
@@ -85,7 +94,11 @@ contested.
|
|
|
85
94
|
- **Must-fix** — every finding from a worst-tier verdict (`reject` / `incomplete`
|
|
86
95
|
/ `breached`) + every consensus finding at the highest severity.
|
|
87
96
|
- **Should-fix** — mid-tier (`revise` / `partial`) findings.
|
|
88
|
-
- **Advisory** — single-judge low-severity suggestions.
|
|
97
|
+
- **Advisory** — single-judge low-severity suggestions. **Emitted in full,
|
|
98
|
+
never elided.** This is the tier with no downstream consumer, which makes it
|
|
99
|
+
the one where quiet dropping costs nothing visible — and that is exactly why
|
|
100
|
+
it is stated: a finding that reached a judge and not the reader was suppressed
|
|
101
|
+
by the aggregator, whatever the tier was called.
|
|
89
102
|
|
|
90
103
|
Each entry carries **provenance**: which judge(s) raised it. Never merge two
|
|
91
104
|
judges' findings into one unattributed line.
|
|
@@ -203,6 +203,39 @@ See § 3b above for the load-bearing distinction between `load_context:`
|
|
|
203
203
|
(logical, rewritten), `triggers[].path_prefix:` (literal, verbatim),
|
|
204
204
|
and body links (relative `../../docs/...`, rewriter handles depth).
|
|
205
205
|
|
|
206
|
+
## Required: name the primary bias this rule overrides
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
EVERY RULE STATES, IN ONE SENTENCE, THE MODEL'S WRONG DEFAULT IT EXISTS TO
|
|
210
|
+
OVERRIDE. NOT THE HISTORY. NOT THE RATIONALE. THE TENDENCY.
|
|
211
|
+
A RULE THAT CANNOT NAME ONE IS A RULE WITH NO OBSERVED FAILURE BEHIND IT.
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
One sentence, near the top, in the shape *"left alone, the model
|
|
215
|
+
<does the wrong thing>"*:
|
|
216
|
+
|
|
217
|
+
- ✅ "Left alone, the model treats a question as an instruction and starts
|
|
218
|
+
building."
|
|
219
|
+
- ✅ "Left alone, the model reports the happy path it just made pass and calls
|
|
220
|
+
the change finished."
|
|
221
|
+
- ❌ "This rule exists because a session in June went badly." — backstory.
|
|
222
|
+
- ❌ "Correctness matters." — a value, not a tendency.
|
|
223
|
+
- ❌ "Agents sometimes make mistakes." — true of everything, discriminates
|
|
224
|
+
nothing.
|
|
225
|
+
|
|
226
|
+
**Why this field and not a longer rationale.** It is the discriminator the
|
|
227
|
+
mechanism-must-match-an-observed-failure-mode discipline wants at *authoring*
|
|
228
|
+
time: a rule whose bias sentence is a plausible generality is a rule aimed at
|
|
229
|
+
nothing in particular, and that is visible in one line where it is invisible in
|
|
230
|
+
three paragraphs. The field is also the input to the removal question later —
|
|
231
|
+
`decision-review` asks whether the agent still exhibits the named tendency, and
|
|
232
|
+
that question cannot be asked of a rule that never named one.
|
|
233
|
+
|
|
234
|
+
**Retrofit is opportunistic, never a sweep.** Add the sentence when you touch a
|
|
235
|
+
rule for another reason. A batch edit across the rule set trips the
|
|
236
|
+
kernel-prefix byte-stability gate, and that gate is right to fire — the kernel
|
|
237
|
+
prefix is pinned deliberately.
|
|
238
|
+
|
|
206
239
|
## Output format
|
|
207
240
|
|
|
208
241
|
1. Complete rule file at `src/rules/{name}.md`
|
|
@@ -159,6 +159,37 @@ Ask the user:
|
|
|
159
159
|
6. Create PR with title: `improve(agent): {short description}`
|
|
160
160
|
7. Use the agent-improvement PR template if it exists
|
|
161
161
|
|
|
162
|
+
## Classify the missing component BEFORE choosing the artifact
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
ON A FAILURE, NAME WHICH COMPONENT WAS ABSENT. THE CLASS PICKS THE ARTIFACT.
|
|
166
|
+
THE DEFAULT ANSWER TODAY IS "ANOTHER RULE". IT IS USUALLY THE WRONG ONE.
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
A failure means something was missing. Which something decides what to build,
|
|
170
|
+
and the pipeline's own bias is to answer "a rule" regardless — which is how a
|
|
171
|
+
tree accumulates prose for problems prose cannot solve.
|
|
172
|
+
|
|
173
|
+
| Absent component | What it becomes |
|
|
174
|
+
|---|---|
|
|
175
|
+
| **Instruction** — nothing said to do it | a rule or a skill section |
|
|
176
|
+
| **Source of truth** — the fact was not written down anywhere | a context or contract |
|
|
177
|
+
| **Tool** — the step was manual and got skipped | a script |
|
|
178
|
+
| **Validator** — nothing checked the result | a gate |
|
|
179
|
+
| **Permission rule** — authority was ambiguous | an authority-band edit |
|
|
180
|
+
| **Sandbox signal** — the environment did not say what it allowed | a capability probe |
|
|
181
|
+
| **Evaluation** — nothing would have caught the regression | a fixture |
|
|
182
|
+
| **Recovery path** — the failure had no exit | a runbook step |
|
|
183
|
+
|
|
184
|
+
Run this before the promotion gate, not after: a validator gap that reaches the
|
|
185
|
+
gate as a proposed rule is judged on whether the *rule* is worth adding, which
|
|
186
|
+
is the wrong question asked well.
|
|
187
|
+
|
|
188
|
+
**The escalation threshold applies here too.** A third recurrence of the same
|
|
189
|
+
violation class converts an observation into a deterministic gate — and a review
|
|
190
|
+
finding never silently becomes a hard gate. Both halves, specified in
|
|
191
|
+
[`decision-review` § Removal is a disposition](../decision-review/SKILL.md).
|
|
192
|
+
|
|
162
193
|
## Output format
|
|
163
194
|
|
|
164
195
|
1. Learning summary with promotion gate results
|
|
@@ -203,7 +203,7 @@ Before scoring the 5 Killers, verify structure:
|
|
|
203
203
|
## Output format
|
|
204
204
|
|
|
205
205
|
1. Review report with pass/fail per checklist item
|
|
206
|
-
2. Prioritized fix recommendations
|
|
206
|
+
2. Prioritized fix recommendations — ordered over the **complete** per-killer table above, never a subset of it. Priority is a sort, not a filter.
|
|
207
207
|
|
|
208
208
|
## Gotcha
|
|
209
209
|
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.ts (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "9.
|
|
42
|
+
agent_config_version: "9.24.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
package/dist/cli/registry.js
CHANGED
|
@@ -24,6 +24,7 @@ export const REGISTRY = [
|
|
|
24
24
|
{ name: 'settings:check', disposition: 'delegate', synopsis: 'Validate .agent-settings.yml against the YAML-subset contract (read-only).' },
|
|
25
25
|
{ name: 'settings:sync', disposition: 'delegate', synopsis: 'Additively merge new template keys into an existing .agent-settings.yml.' },
|
|
26
26
|
{ name: 'settings:migrate', disposition: 'delegate', synopsis: 'Lift legacy project-local settings into ~/.event4u/agent-config/.' },
|
|
27
|
+
{ name: 'settings:set', disposition: 'delegate', synopsis: 'Set one A/B-class setting in the global file; C-class keys are refused.' },
|
|
27
28
|
{ name: 'uninstall', disposition: 'delegate', synopsis: 'Remove bridge markers (project) or lockfile entries (global).' },
|
|
28
29
|
{ name: 'prune', disposition: 'delegate', synopsis: 'Remove project bridge markers not declared in installed-tools.lock.' },
|
|
29
30
|
{ name: 'doctor', disposition: 'delegate', synopsis: 'Read-only drift report: manifest ↔ filesystem.' },
|
package/dist/cli/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|