@event4u/agent-config 14.20.0 → 14.21.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +243 -0
- package/README.md +1 -1
- package/agents/templates/.ai-council.yml.example +10 -0
- package/dist/agent-src/commands/analyze/inbox.md +1 -1
- package/dist/agent-src/commands/analyze/{reference-repo.md → repo.md} +247 -32
- package/dist/agent-src/commands/analyze/roadmap-repos.md +129 -0
- package/dist/agent-src/commands/analyze.md +12 -7
- package/dist/agent-src/commands/feature/plan.md +55 -16
- package/dist/agent-src/commands/feature/refactor.md +8 -3
- package/dist/agent-src/commands/humanize.md +48 -4
- package/dist/agent-src/contexts/execution/contract-decision-sheet.md +22 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +4 -1
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +35 -2
- package/dist/agent-src/contexts/execution/terminal-states.md +4 -1
- package/dist/agent-src/rules/evaluator-independence.md +4 -4
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +27 -11
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/technical-specification/SKILL.md +4 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/features.md +5 -0
- package/dist/agent-src/templates/roadmaps.md +15 -0
- package/dist/cli-delegate/{chunk-KPBWFOPZ.js → chunk-2FTMENJL.js} +194 -37
- package/dist/cli-delegate/{chunk-PI2GU3DP.js → chunk-2TAQ2K4V.js} +4 -1
- package/dist/cli-delegate/{chunk-C6IPZRDA.js → chunk-643Z7FIC.js} +1 -1
- package/dist/cli-delegate/{chunk-NUMQHLS5.js → chunk-J3RFNKG4.js} +21 -2
- package/dist/cli-delegate/cmd_conformance.js +17 -3
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +2 -2
- package/dist/cli-delegate/cmd_handoff.js +1 -1
- package/dist/cli-delegate/cmd_prune.js +2 -2
- package/dist/cli-delegate/cmd_settings_migrate.js +2 -2
- package/dist/cli-delegate/cmd_sync.js +2 -2
- package/dist/cli-delegate/cmd_uninstall.js +2 -2
- package/dist/cli-delegate/cmd_validate.js +2 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +56 -25
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +7 -6
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +6 -5
- package/dist/hooks/dispatch.js +479 -241
- package/dist/install/install.mjs +4 -1
- package/dist/mcp/registry-manifest.json +2 -2
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +313 -63
- package/dist/scripts/ai_council/content_ceiling.js +63 -0
- package/dist/scripts/ai_council/seat_policy.js +106 -0
- package/dist/scripts/ai_council/transport_resolver.js +21 -0
- package/llms.txt +14 -14
- package/package.json +1 -1
- package/src/config/gate-violation-baselines.json +3 -3
- package/src/config/release-gate-locality.yml +4 -3
- package/src/scripts/_lib/blocked_by_marker.ts +189 -0
- package/src/scripts/_lib/host_capability.ts +38 -1
- package/src/scripts/_lib/release_highlights.ts +19 -211
- package/src/scripts/_lib/release_material.ts +27 -77
- package/src/scripts/_lib/structured_ask.ts +117 -0
- package/src/scripts/_lib/tty_prompt.ts +76 -0
- package/src/scripts/ai_council/api_transport.ts +163 -0
- package/src/scripts/ai_council/clients.ts +58 -63
- package/src/scripts/ai_council/config.ts +13 -0
- package/src/scripts/ai_council/content_ceiling.ts +79 -0
- package/src/scripts/ai_council/jury_aggregate.ts +178 -0
- package/src/scripts/ai_council/seat_policy.ts +137 -0
- package/src/scripts/ai_council/status_surface.ts +79 -0
- package/src/scripts/ai_council/transport_resolver.ts +59 -1
- package/src/scripts/ai_tells_rules.ts +446 -5
- package/src/scripts/ask_block_census.ts +499 -0
- package/src/scripts/bench_humanizer_eval.ts +264 -40
- package/src/scripts/bench_prose_tells_fp.ts +198 -0
- package/src/scripts/check_branch_work_committed.ts +234 -0
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_release_highlights.ts +0 -157
- package/src/scripts/council_cli.ts +18 -27
- package/src/scripts/detect_ai_tells.ts +142 -20
- package/src/scripts/harvest_reference_tokens.ts +698 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +31 -1
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +45 -1
- package/src/scripts/hooks/one_question_per_ask_hook.ts +191 -0
- package/src/scripts/install-hooks.sh +52 -0
- package/src/scripts/lint_roadmap_blockers.ts +51 -1
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/probe_unblocked_ask.ts +135 -2
- package/src/scripts/release.ts +26 -71
- package/src/scripts/release_drill.ts +6 -10
- package/src/scripts/release_env.ts +1 -0
- package/src/scripts/release_publication.ts +34 -29
- package/src/scripts/self_review_gate.ts +409 -15
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "event4u-agent-config",
|
|
3
3
|
"description": "Governed agent system — skills, rules, commands, and guidelines for AI-assisted development.",
|
|
4
|
-
"version": "14.
|
|
4
|
+
"version": "14.21.0",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "event4u",
|
|
7
7
|
"email": "dev@event4u.app"
|
|
8
8
|
},
|
|
9
9
|
"metadata": {
|
|
10
10
|
"description": "A policy-driven execution system that enforces quality, consistency, and developer-like behavior for AI agents.",
|
|
11
|
-
"version": "14.
|
|
11
|
+
"version": "14.21.0"
|
|
12
12
|
},
|
|
13
13
|
"plugins": [
|
|
14
14
|
{
|
|
15
15
|
"name": "agent-config",
|
|
16
16
|
"description": "Full governed agent system — rules, skills, commands, guidelines, and runtime tooling.",
|
|
17
|
-
"version": "14.
|
|
17
|
+
"version": "14.21.0",
|
|
18
18
|
"source": ".",
|
|
19
19
|
"category": "governance",
|
|
20
20
|
"tags": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-config",
|
|
3
3
|
"description": "A governed skill framework for AI agents — runtime execution, tooling, observability, feedback, and lifecycle management with policy-driven quality enforcement.",
|
|
4
|
-
"version": "14.
|
|
4
|
+
"version": "14.21.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "event4u",
|
|
7
7
|
"email": "dev@event4u.app"
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Bootstrap shim for the event4u agent-config suite. This plugin ships ONLY the dispatcher hooks plus one install-pointer skill — ALL content (skills, rules, commands) is installed via `npx -y @event4u/agent-config init`, which writes the file projection AND registers the same hooks in ~/.claude/settings.json. DEPRECATED as a content channel; kept so the marketplace listing stays discoverable and existing installs keep working hooks.",
|
|
9
|
-
"version": "14.
|
|
9
|
+
"version": "14.21.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/CHANGELOG.md
CHANGED
|
@@ -32,6 +32,135 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
32
32
|
|
|
33
33
|
### Fixed
|
|
34
34
|
|
|
35
|
+
- **The self-review gate reviews again — it had reviewed nothing for four
|
|
36
|
+
consecutive releases.** 14.17.0, 14.18.0, 14.19.0 and 14.20.0 each returned
|
|
37
|
+
`HTTP 400 prompt is too long` and each recorded an honest null in
|
|
38
|
+
`agents/evidence/release-findings/`. The release path sets the analysis base
|
|
39
|
+
to the previous tag, so the whole release span went into **one** request.
|
|
40
|
+
**All four** recorded a figure against the 200000 cap — 235472 (14.17.0),
|
|
41
|
+
413191 (14.18.0), 450336 (14.19.0), 260998 (14.20.0) — and the smallest
|
|
42
|
+
exceeded it by 17.7 %. (An earlier draft of this entry said three releases
|
|
43
|
+
recorded a figure and put the smallest at 30 % over; both were wrong, and the
|
|
44
|
+
omitted reading was the one nearest the cap — the one that most constrains
|
|
45
|
+
the budget. The conclusion does not depend on the error: every span observed
|
|
46
|
+
exceeds the cap.) `buildPlan` already computed `promptChars` and only
|
|
47
|
+
*reported* it, so nothing consulted the number before spending the call.
|
|
48
|
+
The diff is now partitioned **per file** into requests under a character
|
|
49
|
+
budget, each is reviewed, and findings are merged and deduplicated on the
|
|
50
|
+
finding id the ledger already uses. Verified against the live span that had
|
|
51
|
+
been failing: 5 requests, no path left out.
|
|
52
|
+
**Nothing is truncated**, and that is the load-bearing decision: a silently
|
|
53
|
+
shortened diff yields findings about a fragment while reading as a review of
|
|
54
|
+
the whole change, which is the false green this repository's honest-null
|
|
55
|
+
discipline exists to prevent. So a single file larger than one request is
|
|
56
|
+
**named as unreviewed** rather than cut mid-hunk, a per-run request ceiling
|
|
57
|
+
bounds the spend and reports its remainder, a chunk whose call fails no longer
|
|
58
|
+
discards the chunks that succeeded, and the rendered PR comment carries a
|
|
59
|
+
**Coverage** block stating what was not read — including the sentence that
|
|
60
|
+
absence of a finding for an unreviewed path is not evidence about that path.
|
|
61
|
+
`--dry-run` now prints the request count rather than only a token estimate,
|
|
62
|
+
because this gate spends per request, and warns when a span sits at the
|
|
63
|
+
ceiling. The budget factor is a character proxy **derived from those four
|
|
64
|
+
failures** (measured diff chars / reported tokens = 3.13 and 3.18) and set
|
|
65
|
+
below them, because the ratio is content-dependent — cl100k over this repo's
|
|
66
|
+
own diffs reads ~3.9 for `src/`, ~4.1 for prose and ~2.75 for a lockfile. A
|
|
67
|
+
call that still overflows a budgeted chunk falsifies that number, not the
|
|
68
|
+
partitioning.
|
|
69
|
+
**A neutral reviewer on the first version found three defects that are fixed
|
|
70
|
+
here rather than shipped.** The coverage line counted every file in a dropped
|
|
71
|
+
chunk as reviewed — 59 of 60 for a run that read 4, because the partition
|
|
72
|
+
packed to opaque strings and reported one aggregate row; it ignored chunks
|
|
73
|
+
whose call had failed, computing the number before those were appended; and a
|
|
74
|
+
non-ASCII filename was silently skipped **and** counted as read, because
|
|
75
|
+
`git diff --name-only` renders it quoted and the quoted form then matches no
|
|
76
|
+
pathspec. Coverage is now summed from the chunks that actually returned, every
|
|
77
|
+
dropped chunk names its own files, and paths are read with
|
|
78
|
+
`core.quotePath=false`. Correcting the budget ratio shrank each request, so
|
|
79
|
+
the same span needed five: the request ceiling moved from four to six rather
|
|
80
|
+
than paying for tokenizer safety with silent coverage loss.
|
|
81
|
+
Known limits, stated rather than implied: coverage lives in prose, so an
|
|
82
|
+
`--enforce` run over a partial review still returns 0, and
|
|
83
|
+
`check_finding_dispositions --ingest` reads only `.findings`, so the durable
|
|
84
|
+
ledger does not record the coverage the artifact now carries.
|
|
85
|
+
|
|
86
|
+
### Added
|
|
87
|
+
|
|
88
|
+
- **A push no longer ships a branch whose tree contradicts its own commits.**
|
|
89
|
+
`check_branch_work_committed` runs first in the pre-push hook, and it exists
|
|
90
|
+
because this branch produced the defect it guards: a merge-reconciled baseline
|
|
91
|
+
was written into `gate-violation-baselines.json` **after** `git add`, so
|
|
92
|
+
`git commit --no-edit` captured the staged side, the reconciled number stayed
|
|
93
|
+
in the working tree, and the push went out asserting a baseline the tree
|
|
94
|
+
contradicted. The operator found it, not the pipeline — and **no CI gate
|
|
95
|
+
could have**: CI checks out the pushed commit, and the working tree holding
|
|
96
|
+
the lost edit does not exist there. That is why this gate is pre-push and
|
|
97
|
+
local-only, the same reach `check_branch_freshness` has.
|
|
98
|
+
It blocks by **authorship**, not on a dirty tree, because a blanket
|
|
99
|
+
clean-tree rule would fire on every gate script's own report output and train
|
|
100
|
+
the operator to set the skip variable: staged-and-changed-since (the measured
|
|
101
|
+
shape), staged at all (`git add` is recorded intent, and a push carries
|
|
102
|
+
commits rather than the index), and dirty files this branch's own commits
|
|
103
|
+
touch. A parallel session's edit and a gate's report output are named and
|
|
104
|
+
waved through. One residual limit is stated in the header rather than hidden:
|
|
105
|
+
a file this branch created and neither staged nor committed cannot be told
|
|
106
|
+
apart from a foreign untracked file; the staged rule closes it at the first
|
|
107
|
+
`git add`, and that rule exists because testing the gate against the live
|
|
108
|
+
tree put its own source file in the advisory class.
|
|
109
|
+
|
|
110
|
+
### Fixed
|
|
111
|
+
|
|
112
|
+
- **`task release` no longer asks the releaser to write anything, and the
|
|
113
|
+
written-answer obligation is deleted (ADR-261).** This entry replaces the one
|
|
114
|
+
that stood here — *"the release's written obligation is now answerable, not
|
|
115
|
+
only refusable"* — because that mechanism landed and was removed in the same
|
|
116
|
+
cycle, and shipping its description would be a false claim about 14.21.0.
|
|
117
|
+
|
|
118
|
+
The obligation: when governance-only commits outnumbered consumer-only ones
|
|
119
|
+
over the release span, the section had to carry human prose naming the next
|
|
120
|
+
cycle's consumer work, and the following release had to read that promise back
|
|
121
|
+
as `shipped` / `did not ship` / `withdrawn`. Four refusal sites, two
|
|
122
|
+
placeholder sentinels, a length floor, an outcome vocabulary, a
|
|
123
|
+
`## [Unreleased]` staging channel and an interactive prompt stood behind two
|
|
124
|
+
sentences. Across 14.18.0, 14.19.0 and 14.20.0 it was discharged **by hand,
|
|
125
|
+
mid-release**, after the pipeline had bumped the version and aborted.
|
|
126
|
+
|
|
127
|
+
The mechanism built to fix that ran for the first time on 14.21.0 and made it
|
|
128
|
+
worse: `staged_response` located its markers with an unanchored
|
|
129
|
+
`body.indexOf(marker)` over the whole `## [Unreleased]` body, so it matched
|
|
130
|
+
the **prose of the changelog entry describing itself**, cut two sentences out
|
|
131
|
+
of the middle of that entry, pasted them into the 14.21.0 release head as
|
|
132
|
+
orphan fragments, and prompted for the answer anyway. A `task release` run
|
|
133
|
+
corrupted both sections of the file it was governing. Both are repaired here.
|
|
134
|
+
|
|
135
|
+
The owner removed the obligation rather than the bug: this package exists to
|
|
136
|
+
make the maintainer's work cheaper, and a gate that halts a green pipeline
|
|
137
|
+
until a human types prose about a cycle that has not happened yet moves cost
|
|
138
|
+
onto the person the tool is for. `> **Governance mix:** …` stays as a
|
|
139
|
+
one-line measurement the generator renders end to end.
|
|
140
|
+
|
|
141
|
+
**Untouched:** every honesty control about a claim *this* release makes —
|
|
142
|
+
`_auto-derived, rewrite before merge:_` still blocks, the authoring-instruction
|
|
143
|
+
sentinel still blocks, the `_none_` contradiction check still blocks, the
|
|
144
|
+
`Tests: N` footer is still required. Those refuse an unreviewed statement about
|
|
145
|
+
the release being published; the deleted one refused the absence of a statement
|
|
146
|
+
about a future one. ADR-253's actual decision — the decline of the per-PR
|
|
147
|
+
user-artifact gate — stands.
|
|
148
|
+
|
|
149
|
+
- **The 14.19.0 start-position fix shipped incomplete; this is its other half.**
|
|
150
|
+
It taught `preflightPosition` to accept `release/{target}`, and 14.20.0 then
|
|
151
|
+
failed with `release must run from 'main' or 'release/14.21.0', currently on
|
|
152
|
+
'release/14.20.0'`. Step 2 had already bumped `package.json`, so a plain
|
|
153
|
+
re-run computed the bump from the **already bumped** version and asked the
|
|
154
|
+
preflight about a version one higher than the one in flight — the start-position
|
|
155
|
+
fix could not help, it was asked about the wrong target.
|
|
156
|
+
`_detect_in_flight_target` needed no flag for either of its branches (HEAD on a
|
|
157
|
+
release branch; a manifest version whose tag is not published), and the comment
|
|
158
|
+
at the call site already stated that intent — the `args.resume ?` gate narrowed
|
|
159
|
+
it to resumed runs. The probe now runs unconditionally, so an abandoned bump can
|
|
160
|
+
no longer be silently released as the NEXT version either. A wiring assertion
|
|
161
|
+
pins it, because the probe's own unit tests passed throughout: they never asked
|
|
162
|
+
whether anything called it unconditionally.
|
|
163
|
+
|
|
35
164
|
- **The curated-head refusal is recoverable again — its own remedy was refused
|
|
36
165
|
by the preflight.** `guard_release_curation` stops between step 2 and step 3,
|
|
37
166
|
leaving HEAD on the local `release/X.Y.Z` with the generated section
|
|
@@ -68,6 +197,13 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
68
197
|
section-level publication blocker, which until now also existed only inside
|
|
69
198
|
`release-validation.yml`.
|
|
70
199
|
|
|
200
|
+
**Superseded within the same cycle — read the ADR-261 entry above.** The
|
|
201
|
+
placeholder sentinel, `mix_response_blockers` and the whole written-answer
|
|
202
|
+
obligation this entry describes are deleted; the `> **Governance mix:**` line
|
|
203
|
+
survives as a pure measurement. What still holds from this entry: the
|
|
204
|
+
locality registry, the `Tests: N` footer as a section-level blocker, and the
|
|
205
|
+
push-time refusal for the curated head.
|
|
206
|
+
|
|
71
207
|
### Added
|
|
72
208
|
|
|
73
209
|
- **A release-gate locality registry, so the next orphan cannot land silently.**
|
|
@@ -521,6 +657,113 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
521
657
|
> that forces a new era split (`# Era: 14.21.x`, etc.) — see
|
|
522
658
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
523
659
|
|
|
660
|
+
## [14.21.0](https://github.com/event4u-app/agent-config/compare/14.20.0...14.21.0) (2026-09-07)
|
|
661
|
+
|
|
662
|
+
### Release highlights
|
|
663
|
+
|
|
664
|
+
- **Behaviour changes:** `task release` no longer asks the releaser to write prose about the next cycle — the governance-versus-product written answer, its promise read-back, the `## [Unreleased]` staging channel and the interactive prompt are deleted, and `> **Governance mix:**` is a pure measurement (ADR-261); one repo-analysis engine with a bounded three-lens loop (8488bf0); record that an unpaid route may propose and score, never decide (10c8c16).
|
|
665
|
+
- **Default changes + migration:** _none_
|
|
666
|
+
- **Security and correctness:** place the worktree gate where neither neighbour's pin breaks (e4ff296); harden the scan scope through the shared reporter (80514a3); read the in-flight target off state, not off --resume (9dafbc7); re-pin the council-template payload exception at its measured size (23dc5bd); guard the humanizer bench entry point (e998ce5); make the bound table say what the scanner does (20fd4c0); +4 more.
|
|
667
|
+
- **Honest nulls:** record the 14.20.0 findings null, and correct the growth claim (065aeba); re-pin the council-template payload exception at its measured size (23dc5bd); disarm the rule-of-three over ordinary lists, floor the densities (ee2fb2f); pre-register the jury claim and build its aggregator (3b3c7e0); report a disabled seat and why it ships off (47a1d1c).
|
|
668
|
+
- **Known limitations:** _none_
|
|
669
|
+
|
|
670
|
+
> **Governance mix:** governance-only 31 vs consumer-only 10 (taxonomy 1.0.0).
|
|
671
|
+
|
|
672
|
+
### Features
|
|
673
|
+
|
|
674
|
+
* **gates:** refuse a push that leaves this branch's own work uncommitted ([e64d35f](https://github.com/event4u-app/agent-config/commit/e64d35fce403f665035f55eee16a70d22a30c81f))
|
|
675
|
+
* **release:** make the written obligation answerable, not only refusable ([d61cab7](https://github.com/event4u-app/agent-config/commit/d61cab76ab46f5dea883b7664bd040948116aed3))
|
|
676
|
+
* **scripts:** add harvest_reference_tokens, the one discovery pass ([22eed08](https://github.com/event4u-app/agent-config/commit/22eed08890e33f83479343871e81d3be86218530))
|
|
677
|
+
* **analyze:** add the roadmap-repos harvester as a thin orchestrator ([64da6d4](https://github.com/event4u-app/agent-config/commit/64da6d43fd61e68e851c2a49dbf5d58a260cd7be))
|
|
678
|
+
* **analyze:** one repo-analysis engine with a bounded three-lens loop ([8488bf0](https://github.com/event4u-app/agent-config/commit/8488bf078d484028f280e6a8df6a41307da019e5))
|
|
679
|
+
* **humanizer:** locate findings, read a consistent pattern as intent, add --audit ([288f451](https://github.com/event4u-app/agent-config/commit/288f451a59b4a0b4f193bd1135e46ea738bc3f68))
|
|
680
|
+
* **humanizer:** attribute the blind preference, and decline real-draft collection ([89fa350](https://github.com/event4u-app/agent-config/commit/89fa350b34bb2ab99956c73fecf3308d9a847f72))
|
|
681
|
+
* **ai-tells:** land six English and seven German families, one epoch each ([40c77ed](https://github.com/event4u-app/agent-config/commit/40c77ed28d7498444ddb0bcf78b46d5035f848fa))
|
|
682
|
+
* **hooks:** one question per structured-ask call, where a deny is honoured ([f9ee563](https://github.com/event4u-app/agent-config/commit/f9ee5638a37ad7e9791712fb1db06cc9d32d859d))
|
|
683
|
+
* **feature-plan:** one decision per ask, and a summary that follows the asking ([b7222ea](https://github.com/event4u-app/agent-config/commit/b7222ea864482e7ddfb621771caa92b41644bcc2))
|
|
684
|
+
* **roadmap:** ask before park, and stop Open questions reading as storage ([5442cbd](https://github.com/event4u-app/agent-config/commit/5442cbde880117da5300e4d5cd491caa329c26d9))
|
|
685
|
+
* **host-capability:** make the structured-ask capability a recorded fact ([de33df2](https://github.com/event4u-app/agent-config/commit/de33df2e0f424b84013d6077bd57fa655ea52aeb))
|
|
686
|
+
* **ask:** record the native-ask rate in the census artefact ([0ea82ea](https://github.com/event4u-app/agent-config/commit/0ea82eadd5df1df58d64ae50959d242aacb08bec))
|
|
687
|
+
* **ask:** measure the ask surface before changing it ([1b27f7a](https://github.com/event4u-app/agent-config/commit/1b27f7a944d4cfb4031f58311620d760cf8c5340))
|
|
688
|
+
* **council:** pre-register the jury claim and build its aggregator ([3b3c7e0](https://github.com/event4u-app/agent-config/commit/3b3c7e0c7d4c1c77b51af888b83974a18b63b2be))
|
|
689
|
+
* **council:** make a policy refusal sayable, and fail closed on it ([f52115d](https://github.com/event4u-app/agent-config/commit/f52115d5931e349de035409559c6d7c1729ce9ba))
|
|
690
|
+
* **council:** report a disabled seat and why it ships off ([47a1d1c](https://github.com/event4u-app/agent-config/commit/47a1d1cc2424c5f66f2f32fd17ffb09269a45ae4))
|
|
691
|
+
* **council:** give gemini, xai and perplexity a live api transport ([92193b8](https://github.com/event4u-app/agent-config/commit/92193b8c0c1d2c8f06dc0761fdebdb17124a718e))
|
|
692
|
+
|
|
693
|
+
### Bug Fixes
|
|
694
|
+
|
|
695
|
+
* **decisions:** disclose ADR-260 evidence ([458ab51](https://github.com/event4u-app/agent-config/commit/458ab5148d61acc88c573341a7e933af8224c1af))
|
|
696
|
+
* **decisions:** repair the provenance kind and scope the ADR-255 supersession ([df0057c](https://github.com/event4u-app/agent-config/commit/df0057cc51fa7bc72e1905f471c54a570e4d7b6e))
|
|
697
|
+
* **evidence:** scrub the speaking round name the drafts cited ([fa8a8bf](https://github.com/event4u-app/agent-config/commit/fa8a8bf98771988a77b0d2d08dd4bc9e428af676))
|
|
698
|
+
* **hooks:** place the worktree gate where neither neighbour's pin breaks ([e4ff296](https://github.com/event4u-app/agent-config/commit/e4ff2969f598397fd36a2a4c58870ee28065c44c))
|
|
699
|
+
* **gates:** harden the scan scope through the shared reporter ([80514a3](https://github.com/event4u-app/agent-config/commit/80514a3fe81a3b1d6aee7a566b6e206059fdc35c))
|
|
700
|
+
* **evidence:** give shipped 14.20.0 the findings ledger it shipped without ([182d84c](https://github.com/event4u-app/agent-config/commit/182d84cb2bb48d1df7d4fe9e7797f3c0da71beed))
|
|
701
|
+
* **release:** record the 14.20.0 findings null, and correct the growth claim ([065aeba](https://github.com/event4u-app/agent-config/commit/065aeba595c887b23c2a82288bb49036f0b91f3a))
|
|
702
|
+
* **gates:** pay the two ratchets this branch moved ([ff6c84d](https://github.com/event4u-app/agent-config/commit/ff6c84d8bc7306d2cf7cbf0a6766c56cfc9732ed))
|
|
703
|
+
* **release:** read the in-flight target off state, not off --resume ([9dafbc7](https://github.com/event4u-app/agent-config/commit/9dafbc72419517607d4e523faab37652814bba4e))
|
|
704
|
+
* **gates:** re-pin the council-template payload exception at its measured size ([23dc5bd](https://github.com/event4u-app/agent-config/commit/23dc5bde2be254b55173de68f65c3ce76dc8cb06))
|
|
705
|
+
* **analyze:** keep the repo argument-hint inside the 120-char schema cap ([3862664](https://github.com/event4u-app/agent-config/commit/38626642214cd223a5ab93d8abb3959e114883b0))
|
|
706
|
+
* **bench:** guard the humanizer bench entry point ([e998ce5](https://github.com/event4u-app/agent-config/commit/e998ce5a154ae25b66c38922100888ca887b72f4))
|
|
707
|
+
* **humanizer:** make the bound table say what the scanner does ([20fd4c0](https://github.com/event4u-app/agent-config/commit/20fd4c0a802c982d1e3136c2b3da4225e979c64c))
|
|
708
|
+
* **ai-tells:** disarm the rule-of-three over ordinary lists, floor the densities ([ee2fb2f](https://github.com/event4u-app/agent-config/commit/ee2fb2f03ab4a79c8741b1219f37954c23b9767b))
|
|
709
|
+
* **handoff:** use the house dialect for handoff ([ffd42f0](https://github.com/event4u-app/agent-config/commit/ffd42f0445a877e56ebfc502b944e9e2014636f9))
|
|
710
|
+
* **comments:** drop report structure and evidence paths from source ([b346418](https://github.com/event4u-app/agent-config/commit/b346418b12c47d5ab422f92c95a81a47c0f26fbd))
|
|
711
|
+
* **claims:** use the house dialect in the jury claim ([dc82a5c](https://github.com/event4u-app/agent-config/commit/dc82a5caae2230cdf02444a9a49d3de330400894))
|
|
712
|
+
* **lint:** satisfy the two eslint rules the new council modules tripped ([162056e](https://github.com/event4u-app/agent-config/commit/162056e2bfd63fcb5fd4e1219b4882343a2acf29))
|
|
713
|
+
* **hooks:** carry rung-3 and rung-4 verdicts on the runtime carrier ([1a1f57a](https://github.com/event4u-app/agent-config/commit/1a1f57ae5e1e8352bced0b212a51af63410fea14))
|
|
714
|
+
|
|
715
|
+
### Documentation
|
|
716
|
+
|
|
717
|
+
* **evidence:** declare the completion-review skip for this docs-only diff ([b273d3f](https://github.com/event4u-app/agent-config/commit/b273d3f6bd0428d1b06e311bd13e632631522fda))
|
|
718
|
+
* **evidence:** the inbox-2026-09-u verification and reproduction ledger ([3927a27](https://github.com/event4u-app/agent-config/commit/3927a27c224b9f6c828aec47e888c5748e690853))
|
|
719
|
+
* **roadmaps:** land the standing-payload and code-graph plans, corrected against the tree ([165c154](https://github.com/event4u-app/agent-config/commit/165c1545b9a7ff40e14d735982f987ac1988d78d))
|
|
720
|
+
* **decisions:** record the two owner rulings as ADR-259 and ADR-260 ([b53b182](https://github.com/event4u-app/agent-config/commit/b53b18202e1242e2492437df454aa1d481c0366c))
|
|
721
|
+
* **evidence:** add the sixth drain position and the cross-session guard finding ([cb809ed](https://github.com/event4u-app/agent-config/commit/cb809ed2ec8f400b5f7e2d0bb594db498e5031c7))
|
|
722
|
+
* **changelog:** record the pre-push worktree gate ([ad04f23](https://github.com/event4u-app/agent-config/commit/ad04f2363997b336d4fe56f4bb962fa68458de29))
|
|
723
|
+
* **evidence:** record the 2026-09-07 PR drain run ([f5cad4c](https://github.com/event4u-app/agent-config/commit/f5cad4cfd6803c14513d629a0bbf8ad6d241668b))
|
|
724
|
+
* **evidence:** correct the run-20 PR states, and record how the shared red cleared ([5bcc8b8](https://github.com/event4u-app/agent-config/commit/5bcc8b840c6c9bd236179a689cd20fb5b6c1c73d))
|
|
725
|
+
* **evidence:** record the run-20 autonomous roadmap drain ([6aedb31](https://github.com/event4u-app/agent-config/commit/6aedb311a297281ce6de50c994132f1a63d73540))
|
|
726
|
+
* **release:** record the three answer routes and the in-flight target fix ([c7e320b](https://github.com/event4u-app/agent-config/commit/c7e320bac67aa2ebbc3571efc000bdc083804409))
|
|
727
|
+
* **roadmap:** close road-to-bounded-reference-harvest-loop, carry the observation ([1f1df17](https://github.com/event4u-app/agent-config/commit/1f1df17ceb0e49428ecce3f6c7fa8ef0c55f7684))
|
|
728
|
+
* **adr:** record the 2026-07-11 prose-tell verdicts as ADR-256 ([8dcc259](https://github.com/event4u-app/agent-config/commit/8dcc259b1d9541c38149f9379550617df6b97d07))
|
|
729
|
+
* **decisions:** record the one-question-per-ask concern admission ([03b865f](https://github.com/event4u-app/agent-config/commit/03b865fd8517604d8e81acd7ca8439e58f84dee9))
|
|
730
|
+
* **evidence:** the post-change ask-block census ([1390aa7](https://github.com/event4u-app/agent-config/commit/1390aa7502d1fc8f00f0aa3528c052540f2ef83e))
|
|
731
|
+
* **evidence:** freeze the ask-block census baseline ([27c7d40](https://github.com/event4u-app/agent-config/commit/27c7d4051241e44d716d500a8cb7b06e254ebdcd))
|
|
732
|
+
* **adr:** disclose ADR-256's evidence in the body, not only its frontmatter ([a37a12e](https://github.com/event4u-app/agent-config/commit/a37a12ebf497b542dcfb290e6dbf4dfcc935ee34))
|
|
733
|
+
* **proof:** regenerate after the jury claim landed in the ledger ([0753cb8](https://github.com/event4u-app/agent-config/commit/0753cb8d43fd86a396129a47c415534696b19913))
|
|
734
|
+
* **roadmaps:** resolve three blockers on admissible-council-seats ([bb8cef5](https://github.com/event4u-app/agent-config/commit/bb8cef53fe4814c94b25f0fe3926a06e127c74b9))
|
|
735
|
+
* **adr:** record that an unpaid route may propose and score, never decide ([10c8c16](https://github.com/event4u-app/agent-config/commit/10c8c169c4c6c2c76f0aeea4e57dd925b81e789c))
|
|
736
|
+
|
|
737
|
+
### Chores
|
|
738
|
+
|
|
739
|
+
* **evidence:** refresh the ADR evidence census after the main merge ([a2544fc](https://github.com/event4u-app/agent-config/commit/a2544fc61d45d9c90578633b49e84398269f28c9))
|
|
740
|
+
* **baselines:** carry the merge reconciliation that was never committed ([33e811f](https://github.com/event4u-app/agent-config/commit/33e811f330ba41f9e81dafeda2bba9d047ab427c))
|
|
741
|
+
* **evidence:** record the 14.20.0 findings ledger ([3bfb9b5](https://github.com/event4u-app/agent-config/commit/3bfb9b540e588358b06182bad3e60694b557d24f))
|
|
742
|
+
* **install:** rebuild the install bundle for the merged capability field ([395c0b6](https://github.com/event4u-app/agent-config/commit/395c0b61d61a492b0a0b2bba9368521ccea879de))
|
|
743
|
+
* **roadmap:** archive road-to-bounded-reference-harvest-loop ([0b3d0a8](https://github.com/event4u-app/agent-config/commit/0b3d0a8af6bad3f76f44b8c7857a8807c405bd50))
|
|
744
|
+
* **generated:** regenerate projections, catalogs and artefact counts ([1187cd6](https://github.com/event4u-app/agent-config/commit/1187cd6932b28d42ebea49b576ba4edb885b1138))
|
|
745
|
+
* **proof:** regenerate docs/proof.md for the re-scoped humanizer claim ([86951f2](https://github.com/event4u-app/agent-config/commit/86951f26bab10dfd83b8955e137b273c6c5608bd))
|
|
746
|
+
* **adr:** regenerate the evidence census for ADR-256 ([f3b0054](https://github.com/event4u-app/agent-config/commit/f3b00549b87b7f04f82849738233c211655d15e5))
|
|
747
|
+
* **index:** regenerate for the /humanize description change ([97d1b1d](https://github.com/event4u-app/agent-config/commit/97d1b1d61a2857166b7e2f755018979038e39613))
|
|
748
|
+
* **estate:** claim the one dimension this change grows ([8203323](https://github.com/event4u-app/agent-config/commit/8203323a620c1a7a855ae62cd6f38c6292e3c26d))
|
|
749
|
+
* **roadmap:** archive road-to-asked-not-parked ([952a011](https://github.com/event4u-app/agent-config/commit/952a01120d29eab49091e087b5921dfbd0c3e202))
|
|
750
|
+
* **host-capability:** project the contract edit and escape the artefact pointer ([9331bbf](https://github.com/event4u-app/agent-config/commit/9331bbf59e872983ada34cfeb34e41894abe191b))
|
|
751
|
+
* **census:** refresh the ADR evidence census for ADR-256 ([9379a5b](https://github.com/event4u-app/agent-config/commit/9379a5b278e5a33469ec7e3a017afc50c5f6c1bb))
|
|
752
|
+
* **baselines:** lower check_source_size_budget 18,062 -> 18,061 ([51708b1](https://github.com/event4u-app/agent-config/commit/51708b18f7f06853ca5936eaf6b7ce4c8d28f596))
|
|
753
|
+
* **roadmaps:** archive road-to-admissible-council-seats ([9a7ac52](https://github.com/event4u-app/agent-config/commit/9a7ac524922d65bfc85a476a0afdab039dfb415c))
|
|
754
|
+
|
|
755
|
+
### Other
|
|
756
|
+
|
|
757
|
+
* **measured-prose-tells:** archive, and correct the parent's stale note ([5c1baf5](https://github.com/event4u-app/agent-config/commit/5c1baf5cc78fdaf8747cae55601f6da3ad5b8f7b))
|
|
758
|
+
* **measured-prose-tells:** close all 25 boxes and resolve the blocker ([224de7f](https://github.com/event4u-app/agent-config/commit/224de7f7b7ed814894830a36ab0ba41fce0406b3))
|
|
759
|
+
* **humanizer:** split the fixture corpus into tune and holdout ([1c6f4ea](https://github.com/event4u-app/agent-config/commit/1c6f4eae62453d90d19086c97601c6d277be1bbf))
|
|
760
|
+
* **prose-tells:** publish run 1 and run 2, including two falsified predictions ([fb03dba](https://github.com/event4u-app/agent-config/commit/fb03dba730b86980e81203a3d3c16ee10100fa89))
|
|
761
|
+
* **prose-tells:** build the clean corpus and the per-rule FP instrument ([b1c95eb](https://github.com/event4u-app/agent-config/commit/b1c95eb4d9aabca793d52feb4d7679429e30d4d7))
|
|
762
|
+
* **prose-tells:** pre-register the false-positive instrument before measuring ([822b5b2](https://github.com/event4u-app/agent-config/commit/822b5b2ddcfc7f4f7de225b803941373d78d2e60))
|
|
763
|
+
* **asked-not-parked:** resolve both blockers and close every step ([1a8cb04](https://github.com/event4u-app/agent-config/commit/1a8cb04709314b7c19a4c7e2339e4901a062ad80))
|
|
764
|
+
|
|
765
|
+
Tests: 21855 (+249 since 14.20.0)
|
|
766
|
+
|
|
524
767
|
## [14.20.0](https://github.com/event4u-app/agent-config/compare/14.19.0...14.20.0) (2026-09-07)
|
|
525
768
|
|
|
526
769
|
### Release highlights
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [](https://www.npmjs.com/package/@event4u/agent-config) [](https://glama.ai/mcp/servers/event4u-app/agent-config) [](https://mcptoplist.com/server/glama%2Fevent4u-app%2Fagent-config)
|
|
6
6
|
|
|
7
|
-
[](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](dist/agent-src/personas/advisors/) <!-- claim:published-artifact-counts -->
|
|
8
8
|
|
|
9
9
|
<sub>**How these are counted** — one canonical counter, `agent-config` → `update_counts --check`, re-derives all six from the tree and fails CI on a drift of one. Two bases are not what the linked directory shows, so they are stated here rather than left to be inferred: **Commands 202** counts every command file **recursively** (the linked directory holds 61 at its top level), and **Rules 120** counts the **source** rules while the linked projection holds 119 — one rule is dormant and is not projected. **Personas 29** excludes the directory README. Counts are of files and directories: none of them measures quality, activation, or adoption. <!-- claim:published-artifact-counts --></sub>
|
|
10
10
|
|
|
@@ -393,6 +393,16 @@ members:
|
|
|
393
393
|
|
|
394
394
|
gemini:
|
|
395
395
|
enabled: false
|
|
396
|
+
# HONEST NULL, not a probe result (road-to-admissible-council-seats 1.2).
|
|
397
|
+
# `council:status` prints this line, so the seat is no longer silently off.
|
|
398
|
+
disabled_reason: >-
|
|
399
|
+
honest null 2026-09-07 — the CLI headless contract could not be
|
|
400
|
+
established: the free tier on the probing machine fails with
|
|
401
|
+
IneligibleTierError before the run reaches the point where a piped stdin
|
|
402
|
+
alone would decide it, so whether the gemini CLI stays non-interactive
|
|
403
|
+
without -p/--prompt is UNKNOWN, not false. The api transport for this
|
|
404
|
+
provider became live in the same change; this seat stays off until the
|
|
405
|
+
contract is observed on a machine that can reach it.
|
|
396
406
|
# not-listed: gemini — the `gemini` CLI is installed here and its `--help` exposes only `-m, --model <string>` — no listing subcommand and no documented "latest" alias, so no sentinel could be substituted. An honest null for this provider, not a guess.
|
|
397
407
|
# The pin is therefore stamped as-of the drain date with NO refresh claimed;
|
|
398
408
|
# `verified_at` records when a human last looked, which is the only thing it
|
|
@@ -22,7 +22,7 @@ packs:
|
|
|
22
22
|
Turn a file someone dropped in `agents/tmp/` into either a roadmap this repo can
|
|
23
23
|
execute, or a written reason it was dropped.
|
|
24
24
|
|
|
25
|
-
The sibling [`/analyze:
|
|
25
|
+
The sibling [`/analyze:repo`](repo.md) does this for an
|
|
26
26
|
**external** repository. This does it for a **local artifact** — a review, a
|
|
27
27
|
prompt, a feature spec, a transcript, a persona, a competitor teardown — and the
|
|
28
28
|
difference matters: an inbox file is a **frozen snapshot of an opinion about a
|