@event4u/agent-config 14.17.0 → 14.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.
Files changed (74) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +170 -79
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/pr/merge.md +35 -44
  7. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +2 -0
  8. package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +27 -1
  9. package/dist/agent-src/skills/code-intelligence/SKILL.md +60 -12
  10. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +27 -0
  11. package/dist/agent-src/skills/design-review/SKILL.md +2 -0
  12. package/dist/agent-src/skills/feature-planning/SKILL.md +34 -0
  13. package/dist/agent-src/skills/git-workflow/SKILL.md +37 -12
  14. package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +176 -0
  15. package/dist/agent-src/skills/laravel-mail/SKILL.md +44 -0
  16. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +40 -0
  17. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +12 -0
  18. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +53 -8
  19. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +3 -1
  20. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  21. package/dist/cli-delegate/cmd_conformance.js +335 -659
  22. package/dist/discovery/deprecation-report.md +1 -1
  23. package/dist/discovery/discovery-manifest.json +15 -15
  24. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  25. package/dist/discovery/discovery-manifest.summary.md +1 -1
  26. package/dist/discovery/dormancy-report.md +1 -1
  27. package/dist/discovery/orphan-report.md +1 -1
  28. package/dist/discovery/packs.json +2 -2
  29. package/dist/discovery/trust-report.md +1 -1
  30. package/dist/discovery/workspaces.json +2 -2
  31. package/dist/hooks/dispatch.js +959 -1304
  32. package/dist/mcp/registry-manifest.json +2 -2
  33. package/dist/mcp/server.json +2 -2
  34. package/dist/mcp/server.mjs +671 -1002
  35. package/dist/shared/settingsConsent.js +1 -1
  36. package/package.json +1 -1
  37. package/src/config/conformance-claim-baseline.json +9 -0
  38. package/src/config/gate-violation-baselines.json +3 -3
  39. package/src/config/release-gate-locality.yml +129 -0
  40. package/src/scripts/_lib/release_highlights.ts +172 -1
  41. package/src/scripts/_lib/release_material.ts +66 -0
  42. package/src/scripts/_lib/repeated_run.ts +77 -0
  43. package/src/scripts/_lib/tamper_vocabulary.ts +242 -0
  44. package/src/scripts/_lib/unified_diff.ts +121 -0
  45. package/src/scripts/check_finding_dispositions.ts +179 -3
  46. package/src/scripts/check_installed_hooks_fresh.ts +381 -0
  47. package/src/scripts/check_release_highlights.ts +25 -13
  48. package/src/scripts/check_suppression_hygiene.ts +11 -0
  49. package/src/scripts/code_graph/build.ts +230 -33
  50. package/src/scripts/code_graph/extract.ts +168 -33
  51. package/src/scripts/code_graph/types.ts +37 -2
  52. package/src/scripts/code_graph/validate.ts +12 -1
  53. package/src/scripts/conformance_scan.ts +2 -2
  54. package/src/scripts/detect_silent_catch.ts +403 -0
  55. package/src/scripts/detect_verification_tampering.ts +538 -0
  56. package/src/scripts/git_authorization_hook.ts +153 -17
  57. package/src/scripts/hook_manifest.json +1 -1
  58. package/src/scripts/hook_manifest.yaml +33 -19
  59. package/src/scripts/hooks/block_no_verify.ts +3 -3
  60. package/src/scripts/hooks/concern_registry.ts +2 -2
  61. package/src/scripts/hooks/evidence_independence.ts +21 -2
  62. package/src/scripts/hooks/{block_unauthorized_git.ts → git_command_classifier.ts} +25 -369
  63. package/src/scripts/hooks/push_settle_hook.ts +250 -0
  64. package/src/scripts/hooks/ship_diff_volume_hook.ts +1 -1
  65. package/src/scripts/install-hooks.sh +134 -1
  66. package/src/scripts/language_mirror_hook.ts +27 -5
  67. package/src/scripts/release.ts +31 -143
  68. package/src/scripts/release_drill.ts +71 -1
  69. package/src/scripts/release_publication.ts +243 -3
  70. package/src/scripts/release_verify.ts +220 -0
  71. package/src/scripts/schemas/review-findings.schema.json +1 -1
  72. package/src/scripts/schemas/skill.schema.json +11 -1
  73. package/src/scripts/self_review_gate.ts +10 -1
  74. package/src/shared/settingsConsent.ts +1 -1
@@ -94,9 +94,38 @@ Each iteration is agent turns, never executing control-flow code:
94
94
  * **Plateau** (last `plateau_window` scores within `tolerance`) → STOP; surface
95
95
  suspected flakiness or a stuck point. Do not thrash.
96
96
  * **`attempts == max_attempts`** → STOP, hand back the best envelope.
97
- 4. **Numeric gate** — score `< threshold` and attempts remain → back to step 1
98
- (attempts++). Score `≥ threshold`, no regression → **escalate** (step 4 of the
99
- stage).
97
+ 4. **Tamper check (deterministic, loop-local)** — before the numeric gate is
98
+ allowed to say anything, run the detector over the diff this attempt
99
+ produced and over the recorded verdict:
100
+
101
+ ```bash
102
+ ./scripts-run src/scripts/detect_verification_tampering \
103
+ --diff <this attempt's diff> --message <this attempt's message> \
104
+ --verdict <the runner's recorded verdict>
105
+ ```
106
+
107
+ It is **fail-closed inside the loop**: outcome `violations` or
108
+ `stale_verdict` STOPS the loop and hands back with the finding's
109
+ `file:line`, whatever the score says. `clean` changes nothing — an
110
+ ordinary passing attempt is unaffected, because the detector reports only
111
+ on shapes the diff introduced.
112
+
113
+ The check answers exactly the gap the Iron Law names: `assertion-removed`,
114
+ `assertion-weakened`, `verification-skipped` (warn), `expectation-rewritten`,
115
+ `early-exit-injected`, `test-file-deleted`, `subject-mocked-away`, and
116
+ `stale_verdict` for a runner that finished before the last edit. A change
117
+ that legitimately deletes an obsolete test or relaxes an over-tight
118
+ assertion declares it in the attempt's message —
119
+ `tamper-allow: <detector-id> — <reason>` — scoped to one id, never to all.
120
+
121
+ It is **not** a CI gate and does not become one here. The tree's measured
122
+ lesson is that reach, not content, is the scarce thing; a new always-on
123
+ gate is the opposite of that lesson. Promotion owes a measured
124
+ false-positive rate first.
125
+
126
+ 5. **Numeric gate** — score `< threshold` and attempts remain → back to step 1
127
+ (attempts++). Score `≥ threshold`, no regression, tamper check clean →
128
+ **escalate** (step 4 of the stage).
100
129
 
101
130
  ### 4. Judge escalation (only after the numeric gate passes)
102
131
 
@@ -135,10 +164,13 @@ Before finalizing, confirm:
135
164
 
136
165
  1. The numeric gate **escalated to a judge** — it did not apply on its own.
137
166
  2. No baseline-green check regressed (or the loop stopped and said so).
138
- 3. The loop stopped at `max_attempts`, a plateau, or a judge `apply` — never
167
+ 3. The tamper check ran on the final attempt and returned `clean` — or the loop
168
+ stopped on its finding. A green verdict recorded over a `violations` or
169
+ `stale_verdict` outcome is not a green verdict.
170
+ 4. The loop stopped at `max_attempts`, a plateau, or a judge `apply` — never
139
171
  ran unbounded.
140
- 4. The judge saw only the diff + results, dispatched in fresh context.
141
- 5. No **unsupervised** resident process introduced — and none of the four
172
+ 5. The judge saw only the diff + results, dispatched in fresh context.
173
+ 6. No **unsupervised** resident process introduced — and none of the four
142
174
  governance conditions in `resident-process-governance.md` left unmet if a
143
175
  supervised one is. (Amended 2026-08-27, ADR-249: this read "No daemon /
144
176
  persistent runtime introduced" when a daemon was prohibited outright. The
@@ -182,9 +214,15 @@ iter2 fixes A, breaks B, 92% → "PASS" ✗ regression ignored
182
214
  ## Gotcha
183
215
 
184
216
  * **Metric gaming** — the agent "passes" by deleting a failing test or
185
- weakening an assertion. The numeric gate cannot catch this; the
186
- fresh-context judge is the safeguard. If the diff *removes* checks,
217
+ weakening an assertion. The *numeric* gate still cannot catch this, and that
218
+ is why loop step 3.4 exists: `detect_verification_tampering` decides the
219
+ mechanical shapes deterministically, and the fresh-context judge remains the
220
+ safeguard for everything shape cannot decide. If the diff *removes* checks,
187
221
  that is a `reject`, not a `pass`.
222
+ * **Phantom verification** — the loop records a green verdict it never re-ran,
223
+ so the exit code describes a tree that no longer exists. The verdict carries
224
+ the runner's own timestamp; one that predates the last edit is
225
+ `stale_verdict`, its own outcome, never a pass.
188
226
  * **Flake mistaken for a plateau** — a single non-deterministic test flips
189
227
  the score and the window-comparison reads it as "no improvement". Re-run
190
228
  the suspected check before declaring a plateau; surface flakiness instead
@@ -202,6 +240,9 @@ iter2 fixes A, breaks B, 92% → "PASS" ✗ regression ignored
202
240
  ## Do NOT
203
241
 
204
242
  * NEVER let the numeric score apply a change without judge confirmation.
243
+ * NEVER record a green verdict over a tamper finding or a stale runner
244
+ timestamp — inside the loop the detector is fail-closed.
245
+ * NEVER widen a `tamper-allow` declaration past the one id it names.
205
246
  * NEVER continue past a regression because the overall score improved.
206
247
  * NEVER run the live-app Playwright path here — it is deferred (needs a runtime).
207
248
  * NEVER judge with the generator's own context — dispatch a fresh-context judge.
@@ -215,6 +256,10 @@ iter2 fixes A, breaks B, 92% → "PASS" ✗ regression ignored
215
256
  review; wires this loop as an opt-in step.
216
257
  * [`playwright-testing`](../playwright-testing/SKILL.md),
217
258
  [`quality-tools`](../quality-tools/SKILL.md) — verdict sources.
259
+ * `src/scripts/detect_verification_tampering.ts` — the loop-local tamper and
260
+ phantom-verification check bound at step 3.4, with its fixture corpus in
261
+ `tests/fixtures/tamper-corpus/` and its polarity proven both ways by
262
+ `--self-test`.
218
263
  * [`autonomous-execution`](../../rules/autonomous-execution.md) — the N=3 cap.
219
264
  * [`resident-process-governance`](../../../docs/contracts/resident-process-governance.md) — the
220
265
  runtime-free constraint this loop honors.
@@ -143,7 +143,9 @@ activity for 48 h. `review` keeps its disqualifying reason so the next sweep
143
143
  starts from a shorter list; `live` means another session may hold it. A
144
144
  worktree outside the conventional roots is never `safe` — sitting beside the
145
145
  repo it can be mistaken for a sibling package, so its removal stays a
146
- judgement call.
146
+ judgement call. It is also the placement that loses the persistent shell
147
+ cwd on a host with a working-directory boundary — see
148
+ [`using-git-worktrees`](../using-git-worktrees/SKILL.md) § 2.
147
149
 
148
150
  The mode reports only. `--plan` prints `git worktree remove` plus
149
151
  `git branch -d` (never `-D`) for the safe set; **running it is a bulk deletion
@@ -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: "14.17.0"
42
+ agent_config_version: "14.18.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project: