@event4u/agent-config 2.12.0 → 2.14.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 (107) hide show
  1. package/.agent-src/commands/council/analysis.md +142 -0
  2. package/.agent-src/commands/council/debate.md +129 -0
  3. package/.agent-src/commands/council/default.md +8 -0
  4. package/.agent-src/commands/council/design.md +16 -12
  5. package/.agent-src/commands/council/optimize.md +16 -15
  6. package/.agent-src/commands/council/pr.md +12 -12
  7. package/.agent-src/commands/council.md +48 -2
  8. package/.agent-src/commands/memory/learn-low-impact.md +143 -0
  9. package/.agent-src/personas/advisors/contrarian.md +95 -0
  10. package/.agent-src/personas/advisors/executor.md +99 -0
  11. package/.agent-src/personas/advisors/expansionist.md +98 -0
  12. package/.agent-src/personas/advisors/first-principles.md +98 -0
  13. package/.agent-src/personas/advisors/outsider.md +102 -0
  14. package/.agent-src/rules/ask-when-uncertain.md +10 -6
  15. package/.agent-src/rules/copilot-routing.md +19 -0
  16. package/.agent-src/rules/devcontainer-routing.md +20 -0
  17. package/.agent-src/rules/external-reference-deep-dive.md +1 -1
  18. package/.agent-src/rules/fast-path-marker-visibility.md +38 -0
  19. package/.agent-src/rules/laravel-routing.md +20 -0
  20. package/.agent-src/rules/low-impact-corpus-privacy-floor.md +74 -0
  21. package/.agent-src/rules/symfony-routing.md +20 -0
  22. package/.agent-src/skills/ai-council/SKILL.md +388 -10
  23. package/.agent-src/skills/copilot-config/SKILL.md +1 -1
  24. package/.agent-src/skills/devcontainer/SKILL.md +1 -1
  25. package/.agent-src/skills/laravel/SKILL.md +1 -1
  26. package/.agent-src/skills/project-analysis-core/SKILL.md +1 -1
  27. package/.agent-src/skills/project-analyzer/SKILL.md +1 -1
  28. package/.agent-src/skills/symfony-workflow/SKILL.md +1 -1
  29. package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  30. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  31. package/.claude-plugin/marketplace.json +4 -1
  32. package/AGENTS.md +1 -1
  33. package/CHANGELOG.md +346 -124
  34. package/CONTRIBUTING.md +5 -0
  35. package/README.md +6 -6
  36. package/config/agent-settings.template.yml +5 -93
  37. package/config/gitignore-block.txt +6 -0
  38. package/docs/architecture/multi-tool-projection.md +53 -0
  39. package/docs/architecture/{compression.md → source-projection.md} +21 -3
  40. package/docs/architecture.md +15 -15
  41. package/docs/archive/CHANGELOG-pre-2.11.0.md +141 -0
  42. package/docs/catalog.md +25 -12
  43. package/docs/contracts/adr-architectural-consensus-mechanism.md +68 -0
  44. package/docs/contracts/adr-level-6-productization.md +7 -9
  45. package/docs/contracts/ai-council-config.md +658 -0
  46. package/docs/contracts/command-clusters.md +58 -2
  47. package/docs/contracts/command-surface-tiers.md +3 -2
  48. package/docs/contracts/cost-profile-defaults.md +5 -0
  49. package/docs/contracts/decision-engine-gates.md +5 -0
  50. package/docs/contracts/decision-trace-v1.md +2 -2
  51. package/docs/contracts/file-ownership-matrix.json +1735 -72
  52. package/docs/contracts/installed-tools-lockfile.md +2 -1
  53. package/docs/contracts/low-impact-corpus-format.md +95 -0
  54. package/docs/contracts/mcp-beta-criteria.md +6 -5
  55. package/docs/contracts/mcp-cloud-scope.md +5 -4
  56. package/docs/contracts/multi-tool-projection-fidelity.md +115 -0
  57. package/docs/contracts/release-trunk-sync.md +4 -3
  58. package/docs/contracts/tier-3-contrib-plugin.md +5 -6
  59. package/docs/getting-started.md +2 -2
  60. package/docs/guidelines/agent-infra/installed-tools-manifest.md +2 -1
  61. package/docs/installation.md +32 -0
  62. package/package.json +1 -1
  63. package/scripts/_archive/README.md +59 -0
  64. package/scripts/_cli/cmd_doctor.py +134 -0
  65. package/scripts/ai_council/_default_prices.py +10 -1
  66. package/scripts/ai_council/advisors.py +148 -0
  67. package/scripts/ai_council/airgap.py +165 -0
  68. package/scripts/ai_council/cli_hints.py +123 -0
  69. package/scripts/ai_council/clients.py +959 -5
  70. package/scripts/ai_council/compile_corpus.py +178 -0
  71. package/scripts/ai_council/confidence_gate.py +156 -0
  72. package/scripts/ai_council/config.py +1364 -0
  73. package/scripts/ai_council/consensus.py +329 -0
  74. package/scripts/ai_council/events_log.py +137 -0
  75. package/scripts/ai_council/learn_low_impact_preview.py +252 -0
  76. package/scripts/ai_council/low_impact.py +714 -0
  77. package/scripts/ai_council/low_impact_corpus.py +466 -0
  78. package/scripts/ai_council/low_impact_intake.py +163 -0
  79. package/scripts/ai_council/modes.py +6 -1
  80. package/scripts/ai_council/necessity.py +782 -0
  81. package/scripts/ai_council/orchestrator.py +872 -20
  82. package/scripts/ai_council/probation_gate.py +152 -0
  83. package/scripts/ai_council/prompts.py +335 -0
  84. package/scripts/ai_council/redact_low_impact_entry.py +155 -0
  85. package/scripts/ai_council/replay.py +155 -0
  86. package/scripts/ai_council/session.py +19 -1
  87. package/scripts/ai_council/shadow_dispatch.py +235 -0
  88. package/scripts/ai_council/solo_dispatch.py +226 -0
  89. package/scripts/audit_cloud_compatibility.py +74 -0
  90. package/scripts/audit_command_surface.py +363 -0
  91. package/scripts/check_compressed_paths.py +6 -1
  92. package/scripts/check_council_layout.py +11 -0
  93. package/scripts/ci_time_ratio.py +168 -0
  94. package/scripts/council_cli.py +2005 -30
  95. package/scripts/install.sh +12 -0
  96. package/scripts/measure_projection_bytes.py +159 -0
  97. package/scripts/measure_roadmap_trajectory.py +112 -0
  98. package/scripts/probe_projection_fidelity.py +202 -0
  99. package/scripts/score_skill_selection.py +198 -0
  100. package/scripts/skill_collision_clusters.py +162 -0
  101. /package/scripts/{_backfill_skill_domains.py → _archive/_backfill_skill_domains.py} +0 -0
  102. /package/scripts/{_bootstrap_tier_frontmatter.py → _archive/_bootstrap_tier_frontmatter.py} +0 -0
  103. /package/scripts/{_p43_bodies.py → _archive/_p43_bodies.py} +0 -0
  104. /package/scripts/{_p43_compress.py → _archive/_p43_compress.py} +0 -0
  105. /package/scripts/{_p4_migrate.py → _archive/_p4_migrate.py} +0 -0
  106. /package/scripts/{_phase2_shim_helper.py → _archive/_phase2_shim_helper.py} +0 -0
  107. /package/scripts/{_pilot_council_question.py → _archive/_pilot_council_question.py} +0 -0
package/CONTRIBUTING.md CHANGED
@@ -3,6 +3,11 @@
3
3
  Thanks for considering a contribution to `event4u/agent-config`. This file
4
4
  describes how to propose changes and what the package's conventions are.
5
5
 
6
+ > **This project is currently single-maintainer (`matze4u`).** Contributions
7
+ > are welcome; expect direct review and potentially slower response than
8
+ > multi-maintainer projects. The process below describes the target workflow
9
+ > as the contributor base grows.
10
+
6
11
  ## Status and scope
7
12
 
8
13
  The package is maintained by a small team at event4u:
package/README.md CHANGED
@@ -7,7 +7,7 @@ Give your AI agents an audit-disciplined orchestration contract — testing, Git
7
7
  > Your agent picks up the project's stack, runs tests, prepares PRs, fixes CI — and follows your team's coding standards while doing it. Stack-aware skill sets ship for PHP (Laravel · Symfony · Zend/Laminas), JavaScript (Next.js · React · Node), and cross-stack concerns (API · testing · security · observability).
8
8
 
9
9
  <p align="center">
10
- <strong>210 Skills</strong> · <strong>61 Rules</strong> · <strong>106 Commands</strong> · <strong>72 Guidelines</strong> · <strong>8 AI Tools</strong>
10
+ <strong>210 Skills</strong> · <strong>67 Rules</strong> · <strong>109 Commands</strong> · <strong>72 Guidelines</strong> · <strong>22 Personas</strong> · <strong>5 Advisors</strong> · <strong>8 AI Tools</strong>
11
11
  </p>
12
12
 
13
13
  ---
@@ -31,8 +31,8 @@ replay it. [Core Principles](#core-principles) names the four invariants.
31
31
  [What this package is — and what it isn't](#what-this-package-is--and-what-it-isnt)
32
32
  draws the scope boundary. [Documentation](#documentation) lists the
33
33
  contracts the package ships against, including
34
- [`memory-visibility-v1`](docs/contracts/memory-visibility-v1.md) and
35
- [`decision-trace-v1`](docs/contracts/decision-trace-v1.md).
34
+ [`memory-visibility-v1`](docs/contracts/memory-visibility-v1.md) (beta) and
35
+ [`decision-trace-v1`](docs/contracts/decision-trace-v1.md) (beta).
36
36
 
37
37
  ## Contribute
38
38
 
@@ -288,7 +288,7 @@ Install in the same project (dev-only):
288
288
  npm install --save-dev @event4u/agent-memory
289
289
  ```
290
290
 
291
- → [Memory contract & retrieval API](docs/contracts/agent-memory-contract.md) (beta) · [Built-in MCP server](docs/mcp-server.md) (experimental — local stdio access from Claude Desktop / Cursor / Zed / Continue, install with `task mcp:setup`; promotion to beta gated on [`mcp-beta-criteria.md`](docs/contracts/mcp-beta-criteria.md))
291
+ → [Memory contract & retrieval API](docs/contracts/agent-memory-contract.md) (beta) · [Built-in MCP server](docs/mcp-server.md) (experimental — local stdio access from Claude Desktop / Cursor / Zed / Continue, install with `task mcp:setup`; promotion to beta gated on `docs/contracts/mcp-beta-criteria.md`)
292
292
 
293
293
  ---
294
294
 
@@ -524,7 +524,7 @@ kernel set: [`docs/contracts/kernel-membership.md`](docs/contracts/kernel-member
524
524
  | [`/jira-ticket`](.agent-src/commands/jira-ticket.md) | Read ticket from branch, implement feature |
525
525
  | [`/compress`](.agent-src/commands/compress.md) | Compress skills for token efficiency |
526
526
 
527
- → [Browse all 106 active commands](.agent-src/commands/)
527
+ → [Browse all 109 active commands](.agent-src/commands/)
528
528
 
529
529
  ---
530
530
 
@@ -556,7 +556,7 @@ slash-commands) &nbsp; 📌 = informational marker only (no auto-discovery
556
556
  or manual wiring required)
557
557
 
558
558
  > **What this means in practice:** Claude Code gets the full project-scoped
559
- > package (rules + 210 skills + 106 native commands); Augment Code gets the
559
+ > package (rules + 210 skills + 109 native commands); Augment Code gets the
560
560
  > same content but only from a single global install at `~/.augment/`.
561
561
  > Cursor, Cline, Windsurf, Gemini CLI, GitHub Copilot, Roo Code, Codex CLI,
562
562
  > and Continue.dev only get the **rules** natively; skills and commands are
@@ -232,100 +232,12 @@ worktrees:
232
232
 
233
233
  # --- AI Council (external second-opinion network) ---
234
234
  #
235
- # When enabled, the /council command lets the agent poll independent
236
- # external models (OpenAI, Anthropic) for a neutral critique of a
237
- # roadmap, diff, prompt, or file set. Council members never see the
238
- # host agent's reasoning only the artefact + a neutral system prompt.
235
+ # Configuration moved to `agents/.ai-council.yml` as of the Step-2
236
+ # consolidation roadmap. Consumer projects opt in by copying the
237
+ # reference file from the package (`agents/.ai-council.yml`) into their
238
+ # own `agents/` tree and flipping `enabled: true` per provider.
239
239
  #
240
- # Tokens are NEVER stored here. They live in ~/.event4u/agent-config/
241
- # <provider>.key (mode 0600; legacy ~/.config/agent-config/<provider>.key
242
- # is read as a fallback), installed via:
243
- # bash scripts/install_anthropic_key.sh
244
- # bash scripts/install_openai_key.sh
245
- #
246
- # Cost note: every consultation makes real, paid API calls. The
247
- # autonomy directive does NOT silently spend tokens — the /council
248
- # command always asks before invoking, even under autonomy: on.
249
- ai_council:
250
- # Master switch (true, false). Default false — installing a key is
251
- # not the same as wanting the agent to spend money on it.
252
- enabled: false
253
-
254
- # Default transport mode for every member (overridable per-member
255
- # below, and per-invocation via `/council mode:<x>`).
256
- #
257
- # api = direct SDK call against the provider's API (billable).
258
- # manual = copy-paste loop, user is the transport (free).
259
- #
260
- # Precedence: invocation flag > per-member mode > global mode > "manual".
261
- mode: "manual"
262
-
263
- # Per-member configuration. Set enabled=true on the providers you want
264
- # to consult. The model field selects which model receives the query.
265
- # Optional `mode:` overrides the global setting for that member only.
266
- members:
267
- anthropic:
268
- enabled: false
269
- model: "claude-sonnet-4-5"
270
- # mode: "api" # uncomment to override ai_council.mode
271
- openai:
272
- enabled: false
273
- model: "gpt-4o"
274
- # mode: "manual" # uncomment to override ai_council.mode
275
-
276
- # Default number of debate rounds per /council invocation.
277
- #
278
- # Round 1 sees the artefact alone. Round 2+ sees the artefact plus
279
- # anonymised critiques from the previous round (provider/model
280
- # identity stripped per the neutrality Iron Law). Applies identically
281
- # to api and manual transports — manual mode runs round 1 across all
282
- # members, the host agent consolidates, then round 2 starts with the
283
- # anonymised round-1 critiques folded in.
284
- #
285
- # Default is 2 so council members critique each other at least once
286
- # before convergence. The agent does NOT ask "how many rounds?" when
287
- # the requested rounds <= min_rounds; pass `rounds:N` on the
288
- # invocation (or `--rounds N` to the CLI) to override.
289
- min_rounds: 2
290
-
291
- # Higher floor for deep-reasoning artefacts (architecture review,
292
- # refactoring proposals, bug-diagnosis runs). Activated when the
293
- # consuming rule, skill, or command declares `council_depth: deep`
294
- # in its frontmatter, or the user passes `--depth deep` to the CLI.
295
- # Effective rounds = max(deep_min_rounds, min_rounds), so this floor
296
- # is monotonic — lowering it below `min_rounds` has no effect.
297
- # Standard tasks keep `min_rounds`; cost rises only when an artefact
298
- # opts in. Set to `min_rounds` to disable the deep tier.
299
- deep_min_rounds: 3
300
-
301
- # Per-member output-token budget passed to every API call. The CLI
302
- # `--max-tokens` flag overrides this on a single invocation; the
303
- # cost estimator uses the same value as its worst-case ceiling.
304
- # `0` means "unlimited" — internally widened to the safe provider
305
- # ceiling (16384) because Anthropic rejects max_tokens=0. Raise
306
- # explicitly past 16384 only when a model genuinely supports more
307
- # and you want longer answers.
308
- max_output_tokens: 2048
309
-
310
- # Hard cost ceiling per /council invocation. The orchestrator pauses
311
- # before any member whose projected spend would breach a cap and asks
312
- # the user to continue. `max_total_usd: 0` disables the USD ceiling
313
- # (token caps still apply). Total spend = rounds * single-round cost.
314
- #
315
- # Prices come from `agents/.agent-prices.md` (gitignored, refreshed weekly
316
- # by `python3 scripts/update_prices.py`; bootstrapped from
317
- # scripts/ai_council/_default_prices.py on first run).
318
- cost_budget:
319
- max_input_tokens: 50000
320
- max_output_tokens: 20000
321
- max_calls: 10
322
- max_total_usd: 0.50
323
-
324
- # Retention for council artefacts. Files older than this in
325
- # `agents/council-{questions,responses,sessions}/` are pruned
326
- # automatically on the next `save()` and on `task council-prune`.
327
- # `0` disables pruning (keep forever — disk grows unbounded).
328
- session_retention_days: 7
240
+ # See `docs/contracts/ai-council-config.md` for the schema.
329
241
 
330
242
  # --- Onboarding ---
331
243
  #
@@ -37,6 +37,12 @@
37
37
  /agents/council-responses/
38
38
  /agents/council-sessions/
39
39
 
40
+ # Agent config — AI Council persistent events log (step-8 D3).
41
+ # Local JSONL audit trail for necessity / quota decisions. Hashes
42
+ # original_ask before write but is still considered private. Set
43
+ # AGENT_CONFIG_NO_EVENTS_LOG=1 to disable writes entirely.
44
+ /agents/council-events.log
45
+
40
46
  # Agent config — Tier 1 hook runtime state (context-hygiene.json,
41
47
  # onboarding-gate.json). Written by SessionStart / PostToolUse hooks
42
48
  # on Augment + Claude Code; regenerated on demand, never commit.
@@ -61,6 +61,56 @@ removes `.cursor/` on next `task generate-tools`.
61
61
  | Stale `.windsurfrules` after rule rename | concatenation cache | `task clean-tools && task generate-tools` |
62
62
  | Gemini CLI reads outdated content | `AGENTS.md` changed without re-symlink | `task generate-tools` |
63
63
 
64
+ ## Per-tool projection size
65
+
66
+ The previous "0.45 % reduction" headline was a wrong-boundary
67
+ measurement: that figure compares `.agent-src.uncompressed/` to
68
+ `.agent-src/`, but the pipeline's claimed function is *projection*, not
69
+ byte compression. The table below is produced by
70
+ [`scripts/measure_projection_bytes.py --regenerate`](../../scripts/measure_projection_bytes.py)
71
+ with every tool ID temporarily enabled in `.agent-tools.yml`.
72
+
73
+ | Surface | Files | Symlinks | Bytes materialized | Method |
74
+ |---|---:|---:|---:|---|
75
+ | `.agent-src.uncompressed/` | 596 | 0 | 3,253,997 | verbose source (input) |
76
+ | `.agent-src/` | 596 | 0 | 3,242,579 | source projection (path-rewrite + `.npmignore`) |
77
+ | `.augment/` | 61 | 7 | 136,146 | Augment Code — copies (rules) + symlinks (skills/cmds) |
78
+ | `.claude/` | 0 | 395 | 0 | Claude Code — pure symlinks |
79
+ | `.cursor/` | 61 | 189 | 124,741 | Cursor — per-rule `.mdc` materialized + symlinks |
80
+ | `.clinerules/` | 0 | 61 | 0 | Cline — pure symlinks |
81
+ | `.windsurf/` | 61 | 106 | 125,010 | Windsurf — per-rule wave-8 `.md` + symlinks |
82
+ | `.windsurfrules` | 1 | 0 | 114,263 | Windsurf legacy — concatenated single file |
83
+ | `GEMINI.md` | 0 | 1 | 0 | Gemini CLI — symlink → `AGENTS.md` |
84
+
85
+ **What the pipeline optimises**
86
+
87
+ - **Format fidelity** — each tool receives content in the format its host
88
+ reads natively (Cursor `.mdc` frontmatter, Windsurf Wave-8 frontmatter,
89
+ Claude / Cline symlinked into the source tree, Gemini single-file).
90
+ - **Path stability** — surface paths match the host vendor's
91
+ documentation so users opt in by enabling the tool, not by remapping.
92
+ - **Materialization minimization** — pure-symlink tools (`.claude/`,
93
+ `.clinerules/`, `GEMINI.md`) contribute zero bytes; tools that need a
94
+ format transform materialize only the transformed rule files.
95
+
96
+ **What the pipeline does not optimise**
97
+
98
+ - **Raw byte count** — `.cursor/` and `.windsurf/` *grow* the on-disk
99
+ footprint by ~125 KB each because their host formats require
100
+ per-rule frontmatter that cannot be supplied via symlink alone.
101
+ `.windsurfrules` materializes the rule set a second time as a
102
+ concatenated single file for users who prefer that surface.
103
+ - **Source dedup** — the same rule body appears in `.agent-src/rules/`
104
+ *and* in every tool's materialized projection. This is intentional:
105
+ removing the duplication would push format conversion into runtime.
106
+
107
+ Re-run the measurement after every change to the projection logic:
108
+
109
+ ```bash
110
+ python3 scripts/measure_projection_bytes.py --regenerate
111
+ python3 scripts/measure_projection_bytes.py --json # CI-friendly
112
+ ```
113
+
64
114
  ## Proving the pipeline
65
115
 
66
116
  - [`tests/test_modern_editor_formats.py`](../../tests/test_modern_editor_formats.py)
@@ -68,5 +118,8 @@ removes `.cursor/` on next `task generate-tools`.
68
118
  frontmatter; runs only when `task generate-tools` has been executed.
69
119
  - [`tests/test_compress.py`](../../tests/test_compress.py) — covers
70
120
  the shared compress / generate-tools entrypoint and `_filter_tool_dirs`.
121
+ - [`scripts/measure_projection_bytes.py`](../../scripts/measure_projection_bytes.py)
122
+ — per-tool byte / file / symlink count; the per-tool-size table above
123
+ is its output.
71
124
 
72
125
  ← [Architecture overview](../architecture.md)
@@ -1,7 +1,25 @@
1
- # Pipeline A — Compression
1
+ # Pipeline A — Source projection
2
2
 
3
- > **Scope:** transform verbose authoring source into the token-efficient
4
- > distribution payload that ships in the npm package.
3
+ > **Scope:** transform verbose authoring source into the deterministic
4
+ > distribution payload that ships in the npm package. The pipeline does
5
+ > path-rewriting, `.npmignore`-style filtering, hash-tracking, and (on
6
+ > selected files) caveman-style prose compression. The *primary* function
7
+ > is the source-to-dist projection itself; raw byte reduction is small
8
+ > (~0.35 % on the source/dist boundary: 3,253,997 B → 3,242,579 B across
9
+ > 596 files) because most files are 1:1-projected with only frontmatter
10
+ > and link rewrites. Per-tool size at the downstream projection
11
+ > boundaries (`.augment/`, `.claude/`, `.cursor/`, `.windsurf/`,
12
+ > `.clinerules/`, `.windsurfrules`, `GEMINI.md`) is measured separately
13
+ > — see [`multi-tool-projection.md § Per-tool projection size`](multi-tool-projection.md#per-tool-projection-size)
14
+ > for the table produced by [`scripts/measure_projection_bytes.py`](../../scripts/measure_projection_bytes.py).
15
+
16
+ > **Historical note.** This pipeline was previously labelled
17
+ > "Compression". Renamed in the v2.10.0 feedback follow-up after the
18
+ > council pointed out that the dominant function is projection, not
19
+ > byte compression. The script names (`scripts/compress.py`,
20
+ > `scripts/compress.sh`) are kept for now to avoid a large blast-radius
21
+ > refactor; the prose-compression sub-step (and the `/compress` slash
22
+ > command for caveman text compression) still earn the legacy name.
5
23
 
6
24
  ## Input → Transform → Output
7
25
 
@@ -10,19 +10,19 @@ Six layers, ordered from "how the package reaches a consumer" down to "what a co
10
10
  Distribution → npx-only runtime · install.sh · lockfile pin ← stable
11
11
  Governance → Kernel rules · tier-1/2 routing · command clusters ← stable
12
12
  Router-Kernel → router.json · always-loaded Iron Laws · char caps ← stable
13
- Projection → Compression · augment / multi-tool / cloud bundles ← stable
13
+ Projection → Source · augment / multi-tool / cloud bundles ← stable
14
14
  Execution Contracts → Skills · commands · work-engine · roadmap engine ← stable / beta
15
15
  MCP Lite/Full → Hosted read-only (Lite) · local stdio (Full) ← experimental
16
16
  ```
17
17
 
18
18
  | Layer | Canonical contract | Tier |
19
19
  |---|---|---|
20
- | **Distribution** | [`installed-tools-lockfile.md`](contracts/installed-tools-lockfile.md) + the "Distribution model" subsection below | stable |
21
- | **Governance** | [`command-clusters.md`](contracts/command-clusters.md) + [`command-surface-tiers.md`](contracts/command-surface-tiers.md) | stable |
22
- | **Router-Kernel** | [`kernel-membership.md`](contracts/kernel-membership.md) + [`rule-router.md`](contracts/rule-router.md) | stable |
23
- | **Projection** | [`architecture/compression.md`](architecture/compression.md), [`augment-projection.md`](architecture/augment-projection.md), [`multi-tool-projection.md`](architecture/multi-tool-projection.md), [`claude-bundle.md`](architecture/claude-bundle.md) | stable |
24
- | **Execution Contracts** | [`implement-ticket-flow.md`](contracts/implement-ticket-flow.md), [`orchestration-dsl-v1.md`](contracts/orchestration-dsl-v1.md), [`adr-product-ui-track.md`](contracts/adr-product-ui-track.md) | stable (skills · commands) / beta (work-engine · roadmap engine) |
25
- | **MCP Lite/Full** | [`mcp-phase-1-scope.md`](contracts/mcp-phase-1-scope.md), [`mcp-cloud-scope.md`](contracts/mcp-cloud-scope.md), [`mcp-beta-criteria.md`](contracts/mcp-beta-criteria.md) | experimental — promotion to beta gated on `mcp-beta-criteria.md` (six artefact gates, monitored by `agent-config doctor --check mcp-beta-readiness`) |
20
+ | **Distribution** | [`installed-tools-lockfile.md`](contracts/installed-tools-lockfile.md) + the "Distribution model" subsection below | (beta) |
21
+ | **Governance** | [`command-clusters.md`](contracts/command-clusters.md) + [`command-surface-tiers.md`](contracts/command-surface-tiers.md) | (beta) |
22
+ | **Router-Kernel** | [`kernel-membership.md`](contracts/kernel-membership.md) + [`rule-router.md`](contracts/rule-router.md) | (beta) |
23
+ | **Projection** | [`architecture/source-projection.md`](architecture/source-projection.md), [`augment-projection.md`](architecture/augment-projection.md), [`multi-tool-projection.md`](architecture/multi-tool-projection.md), [`claude-bundle.md`](architecture/claude-bundle.md) | stable |
24
+ | **Execution Contracts** | [`implement-ticket-flow.md`](contracts/implement-ticket-flow.md), [`orchestration-dsl-v1.md`](contracts/orchestration-dsl-v1.md), [`adr-product-ui-track.md`](contracts/adr-product-ui-track.md) | stable (adr-product-ui-track) / (beta) (implement-ticket-flow · orchestration-dsl-v1) |
25
+ | **MCP Lite/Full** | `docs/contracts/mcp-phase-1-scope.md`, `docs/contracts/mcp-cloud-scope.md`, `docs/contracts/mcp-beta-criteria.md` | experimental — promotion to beta gated on `mcp-beta-criteria.md` (six artefact gates, monitored by `agent-config doctor --check mcp-beta-readiness`) |
26
26
 
27
27
  Stability tiers follow [`docs/contracts/STABILITY.md`](contracts/STABILITY.md):
28
28
 
@@ -34,10 +34,10 @@ Stability tiers follow [`docs/contracts/STABILITY.md`](contracts/STABILITY.md):
34
34
 
35
35
  Four load-bearing additions reshaped the top of the model between 2.2.2 and the current release. They are listed here so the diagram above reads as the *current* package, not a historical accumulation:
36
36
 
37
- 1. **Router-Kernel** — the always-loaded Iron Laws collapsed into a 9-rule kernel with explicit per-rule character budgets enforced by `task lint-rule-budget`; everything else routes via tier-1/2 (`.agent-src/router.json`). Contract: [`kernel-membership.md`](contracts/kernel-membership.md) + [`rule-router.md`](contracts/rule-router.md).
38
- 2. **MCP Lite/Full** — replaces the old "Tool Adapters" layer at the top level. Lite is the hosted read-only surface (Claude.ai, Cloud agents); Full is the local stdio server consumers self-host. Promotion to beta is gated on six falsifiable artefacts in [`mcp-beta-criteria.md`](contracts/mcp-beta-criteria.md); the old GitHub / Jira adapters remain as an internal detail of the Execution Contracts layer (see Tool Adapters subsection below).
37
+ 1. **Router-Kernel** — the always-loaded Iron Laws collapsed into a 9-rule kernel with explicit per-rule character budgets enforced by `task lint-rule-budget`; everything else routes via tier-1/2 (`.agent-src/router.json`). Contract: [`kernel-membership.md`](contracts/kernel-membership.md) + [`rule-router.md`](contracts/rule-router.md) — both (beta).
38
+ 2. **MCP Lite/Full** — replaces the old "Tool Adapters" layer at the top level. Lite is the hosted read-only surface (Claude.ai, Cloud agents); Full is the local stdio server consumers self-host. Promotion to beta is gated on six falsifiable artefacts in `docs/contracts/mcp-beta-criteria.md`; the old GitHub / Jira adapters remain as an internal detail of the Execution Contracts layer (see Tool Adapters subsection below).
39
39
  3. **npx distribution** — Composer and `npm install` paths retired in favour of `npx @event4u/agent-config`, with the lockfile-equivalent role played by `agent_config_version` in `.agent-settings.yml`. Full rationale in the "Distribution model" subsection below.
40
- 4. **Command tiering** — `/`-commands now declare a `tier:` (0 / 1 / 2 / 3) that maps to invocation frequency and surface budget; tier-0 is the trimmed Tier-0 set surfaced in `agent-config --help` after the 2.7.x surface-discipline pass. Contract: [`command-surface-tiers.md`](contracts/command-surface-tiers.md) + [`command-clusters.md`](contracts/command-clusters.md).
40
+ 4. **Command tiering** — `/`-commands now declare a `tier:` (0 / 1 / 2 / 3) that maps to invocation frequency and surface budget; tier-0 is the trimmed Tier-0 set surfaced in `agent-config --help` after the 2.7.x surface-discipline pass. Contract: [`command-surface-tiers.md`](contracts/command-surface-tiers.md) + [`command-clusters.md`](contracts/command-clusters.md) — both (beta).
41
41
 
42
42
  > The previous "observability, feedback, lifecycle" layers were removed in
43
43
  > 1.5 — they were scaffolds without production consumers. The "Tool
@@ -64,7 +64,7 @@ the pipeline.
64
64
 
65
65
  | Pipeline | Page | Output |
66
66
  |---|---|---|
67
- | **A.** Compression | [`architecture/compression.md`](architecture/compression.md) | `.agent-src/` |
67
+ | **A.** Source projection | [`architecture/source-projection.md`](architecture/source-projection.md) | `.agent-src/` |
68
68
  | **B.** Augment projection | [`architecture/augment-projection.md`](architecture/augment-projection.md) | `.augment/` |
69
69
  | **C.** Multi-tool projection | [`architecture/multi-tool-projection.md`](architecture/multi-tool-projection.md) | `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`, `GEMINI.md` |
70
70
  | **D.** Claude.ai bundle | [`architecture/claude-bundle.md`](architecture/claude-bundle.md) | `dist/cloud/<skill>.zip` |
@@ -142,8 +142,8 @@ note, package-internal path-swap, description budget, and the
142
142
  | Layer | Count | Purpose |
143
143
  |---|---|---|
144
144
  | **Skills** | 210 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
145
- | **Rules** | 61 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
146
- | **Commands** | 106 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, … |
145
+ | **Rules** | 67 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
146
+ | **Commands** | 109 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, … |
147
147
  | **Guidelines** | 72 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
148
148
  | **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
149
149
  | **Contexts** | 5 | Shared knowledge about the system itself |
@@ -161,7 +161,7 @@ note, package-internal path-swap, description budget, and the
161
161
  - **Guidelines** → reference-only documentation
162
162
  - **Commands** → workflow orchestration
163
163
 
164
- Ensures: no guessing, analysis before action, real verification, consistent outputs. Canonical contracts: [`kernel-membership.md`](contracts/kernel-membership.md), [`rule-router.md`](contracts/rule-router.md), [`command-clusters.md`](contracts/command-clusters.md), [`command-surface-tiers.md`](contracts/command-surface-tiers.md).
164
+ Ensures: no guessing, analysis before action, real verification, consistent outputs. Canonical contracts (all (beta)): [`kernel-membership.md`](contracts/kernel-membership.md), [`rule-router.md`](contracts/rule-router.md), [`command-clusters.md`](contracts/command-clusters.md), [`command-surface-tiers.md`](contracts/command-surface-tiers.md).
165
165
 
166
166
  ### 2. Runtime Dispatcher — stable mechanism, pilot coverage
167
167
 
@@ -248,7 +248,7 @@ independent components with separate stability tiers.
248
248
 
249
249
  ### 4. Tool Adapters — experimental (internal detail; superseded at the top level by MCP)
250
250
 
251
- > **Position in the new model.** Tool Adapters no longer occupy a top-level layer — that slot is now **MCP Lite/Full**. The adapter classes still ship as the internal mechanism the Work Engine uses for inline GitHub/Jira reads, but external integration is meant to land via MCP going forward. See [`mcp-phase-1-scope.md`](contracts/mcp-phase-1-scope.md), [`mcp-cloud-scope.md`](contracts/mcp-cloud-scope.md), and [`mcp-beta-criteria.md`](contracts/mcp-beta-criteria.md) for the surface that replaces this layer at the top level.
251
+ > **Position in the new model.** Tool Adapters no longer occupy a top-level layer — that slot is now **MCP Lite/Full**. The adapter classes still ship as the internal mechanism the Work Engine uses for inline GitHub/Jira reads, but external integration is meant to land via MCP going forward. See `docs/contracts/mcp-phase-1-scope.md`, `docs/contracts/mcp-cloud-scope.md`, and `docs/contracts/mcp-beta-criteria.md` for the surface that replaces this layer at the top level.
252
252
 
253
253
  > **Status: scaffold + read-only GitHub calls.** With a `GITHUB_TOKEN` the
254
254
  > GitHub adapter performs real read calls; without one it returns scaffold
@@ -0,0 +1,141 @@
1
+ # Changelog Archive — pre-2.11.0
2
+
3
+ > Frozen snapshot of `event4u/agent-config` changelog entries from
4
+ > `2.10.0` and earlier (back to `2.7.0`), split out of the main
5
+ > [`CHANGELOG.md`](../../CHANGELOG.md) on 2026-05-15 once the active
6
+ > era's body crossed the 200-line drift cap enforced by
7
+ > `tests/test_changelog_eras.py`.
8
+ >
9
+ > **Read-only.** New entries land in `CHANGELOG.md` § "Era: 2.11.x".
10
+ > Entries here are not amended — git tags `2.10.0` and prior remain the
11
+ > canonical source for what shipped.
12
+ >
13
+ > Entry shape follows the conventions documented in
14
+ > [`docs/contracts/CHANGELOG-conventions.md`](../contracts/CHANGELOG-conventions.md).
15
+ > Earlier eras live in
16
+ > [`CHANGELOG-pre-2.7.0.md`](CHANGELOG-pre-2.7.0.md) and
17
+ > [`CHANGELOG-pre-2.2.0.md`](CHANGELOG-pre-2.2.0.md).
18
+
19
+ ## [2.10.0](https://github.com/event4u-app/agent-config/compare/2.9.0...2.10.0) (2026-05-14)
20
+
21
+ ### Features
22
+
23
+ * **ci:** lint-hook-concern-budget Tier-1 fail-closed gate ([8d60b8a](https://github.com/event4u-app/agent-config/commit/8d60b8ab464c4c5bdc6d072bb2a9b0123942e13b))
24
+ * **cli:** settings:check command + YAML subset contract ([638e740](https://github.com/event4u-app/agent-config/commit/638e74017ffea8d7c08073a949e86fde047db109))
25
+ * **hooks:** hooks:doctor + hooks:replay subcommands + fixture corpus ([3156e25](https://github.com/event4u-app/agent-config/commit/3156e25fd3253fc926a57b92e14b407a9ed54b58))
26
+ * **work-engine:** add decision-trace memory_visibility hook + scoring ([bf056ac](https://github.com/event4u-app/agent-config/commit/bf056ace877a696afa5fe758053ea1eb350e5dff))
27
+
28
+ ### Bug Fixes
29
+
30
+ * **roadmap:** point productization P6 gate at archived proof-not-features path ([35a1009](https://github.com/event4u-app/agent-config/commit/35a1009cffdfde28c7b0384c890c31a7e62b70cf))
31
+
32
+ ### Documentation
33
+
34
+ * **roadmap:** complete road-to-proof-not-features 16/16 + sync dashboard ([89af72d](https://github.com/event4u-app/agent-config/commit/89af72d5514b74c19d533b5a2e69ff7ddf16ecbc))
35
+ * **readme:** split README by audience + audience-order contract ([60a87c0](https://github.com/event4u-app/agent-config/commit/60a87c056555a80585d25555f3d5b87d54c7283a))
36
+
37
+ ### Refactoring
38
+
39
+ * **check-council-references:** structural carve-outs for immutable inputs and decision provenance ([3ed7784](https://github.com/event4u-app/agent-config/commit/3ed77841c42c5e3ebf4191611bb7fa4a52ed2fa0))
40
+
41
+ ### Chores
42
+
43
+ * **roadmap:** archive road-to-proof-not-features (16/16 done, Phase 1 deferred) ([9d05aed](https://github.com/event4u-app/agent-config/commit/9d05aed79a46023b1e95c5488a1e3d5e78748e67))
44
+
45
+ Tests: 3663 (+60 since 2.9.0)
46
+
47
+ ## [2.9.0](https://github.com/event4u-app/agent-config/compare/2.8.0...2.9.0) (2026-05-13)
48
+
49
+ ### Features
50
+
51
+ * tier-usage telemetry settings + report template ([22172f2](https://github.com/event4u-app/agent-config/commit/22172f2a59b530034633ff72226506006c5fd81b))
52
+ * mcp beta-readiness criteria with pending gate tests ([3653788](https://github.com/event4u-app/agent-config/commit/36537880e03546e9baf424b2fdd70aa69d41eb03))
53
+ * expand doctor diagnostic hub to 10 checks ([372c193](https://github.com/event4u-app/agent-config/commit/372c19362f8037c76f919a2d918780ae5ec9cb40))
54
+ * **roadmap:** add road-to-surface-discipline (council-reviewed) ([d9da987](https://github.com/event4u-app/agent-config/commit/d9da9870989ccdb7594cd693e9b18608b957ab79))
55
+ * **linter:** wing-4 cognition-boundary checks + spine slot vocab ([c4d9a4b](https://github.com/event4u-app/agent-config/commit/c4d9a4ba8e5c7184b9be0a58d4d8b220a60cab7c))
56
+
57
+ ### Bug Fixes
58
+
59
+ * **skills:** clear missing_inspect_step + bare_noun warnings ([0c88c6e](https://github.com/event4u-app/agent-config/commit/0c88c6ee45873e47fd8c7d356ec82b28b63b12c5))
60
+ * **docs:** drop roadmap-file pointers from wing-4 ADRs and handoff ([ccd7624](https://github.com/event4u-app/agent-config/commit/ccd7624127094d0a01eda0901fa41c31319f7bc5))
61
+ * **template:** bump agent_config_version pin to 2.8.0 ([f21e916](https://github.com/event4u-app/agent-config/commit/f21e916c6bb793fa6efe7d264a1e069e11ab4c62))
62
+ * **skills:** spine slot citations + finance-partner polish ([9072783](https://github.com/event4u-app/agent-config/commit/90727831b223bd970d8425d158940bf3e3bc104f))
63
+
64
+ ### Documentation
65
+
66
+ * archive surface-discipline roadmap + 2.8.0 changelog ([551e306](https://github.com/event4u-app/agent-config/commit/551e306e43fa82fffda9178bdaa690b19d8bec4e))
67
+ * 6-layer architecture refresh + thin-root sync ([91d25a8](https://github.com/event4u-app/agent-config/commit/91d25a80b37fb1c1782c2d5f00f23925ba6ec1b3))
68
+ * **roadmap:** complete road-to-money-strategy-ops phase 1 ([83cf9fe](https://github.com/event4u-app/agent-config/commit/83cf9fe99c034b71e146099eddc9ce5b3137f434))
69
+ * **contracts:** register wing-4 spine slots + marketplace entries ([75b829d](https://github.com/event4u-app/agent-config/commit/75b829d162bc18ab3dc2dda6614d15a087a4f32a))
70
+
71
+ ### Refactoring
72
+
73
+ * trim tier-0 surface from 13 to 7 commands ([a9eafd1](https://github.com/event4u-app/agent-config/commit/a9eafd1c5226c10209e3dee2b972f38d9c0f3dd9))
74
+
75
+ ### Chores
76
+
77
+ * **generated:** regenerate derived outputs for wing-4 additions ([54f3779](https://github.com/event4u-app/agent-config/commit/54f3779a6d2161ed06bfb327c3e416ec107b4016))
78
+
79
+ Tests: 3603 (+26 since 2.8.0)
80
+
81
+ ## [2.8.0](https://github.com/event4u-app/agent-config/compare/2.7.0...2.8.0) (2026-05-13)
82
+
83
+ ### Features
84
+
85
+ * **linter:** wing-scoped persona line budgets ([81c8cda](https://github.com/event4u-app/agent-config/commit/81c8cdaf08f243a61f848b2e53fad73305ec173d))
86
+ * **personas:** GTM roadmap I1-I4 — Wing-3 personas (CMO, RevOps, CS, Growth-PM) ([a05d49e](https://github.com/event4u-app/agent-config/commit/a05d49e1fd2076effd68dabce7a0789676b2bbf5))
87
+ * **skills:** GTM roadmap H8-H16 — RevOps, CS, Growth-PM clusters ([f79e7a1](https://github.com/event4u-app/agent-config/commit/f79e7a11f5447466c05c6be613a618b9c564a4b1))
88
+ * **gtm:** H3–H7 — complete CMO cluster skills (gtm-launch, editorial-calendar, content-funnel-design, voice-and-tone-design, fundraising-narrative) ([a905bea](https://github.com/event4u-app/agent-config/commit/a905bea811a02d973a682465525ca39d274d3342))
89
+ * **gtm:** H1+H2 — positioning + messaging-architecture senior skills ([00aeb27](https://github.com/event4u-app/agent-config/commit/00aeb279be9924c01dea998df7ee91442fd3ff88))
90
+ * **gtm:** G3 — Wing-3 handoff guideline + Block G closed ([15643da](https://github.com/event4u-app/agent-config/commit/15643da3e2e96a6b00a738e8f4b7ba10edd18187))
91
+ * **gtm:** G2 — Wing-3 cognition-boundary linter ([8445921](https://github.com/event4u-app/agent-config/commit/84459218a914dd5d39c524824e9e0a597c28daec))
92
+ * **gtm:** G1 — extend context-spine with Wing-3 slots ([853e653](https://github.com/event4u-app/agent-config/commit/853e6538fff24429ab0f4136f5eec5d4b992dda4))
93
+
94
+ ### Bug Fixes
95
+
96
+ * **refs:** drop roadmap-file citations from GTM ADR + handoff guideline ([092a01d](https://github.com/event4u-app/agent-config/commit/092a01d7bcd6b51c85d12bfcf83dc973b35c0fcc))
97
+ * **contracts:** add stability frontmatter to command-surface-tiers.md ([3ab2ffd](https://github.com/event4u-app/agent-config/commit/3ab2ffde4345b4ca30cc4d64926f571bce5ce7dd))
98
+ * **lint:** teach context-spine linter the Wing-3 GTM slots ([5bf81d5](https://github.com/event4u-app/agent-config/commit/5bf81d51864b652301d890eafb0574641d05b71a))
99
+ * **refs:** replace dangling skill backticks with plain phrasing in GTM skills ([9f20b06](https://github.com/event4u-app/agent-config/commit/9f20b0612b58f8ef0273bfbe5f830793f4dca131))
100
+ * **template:** bump agent_config_version to 2.7.0 in agent-project-settings template ([ac65734](https://github.com/event4u-app/agent-config/commit/ac657343a81879c3aee4664728e15233863016a5))
101
+
102
+ ### Refactoring
103
+
104
+ * **skill:** rename positioning → positioning-strategy ([be1a5c9](https://github.com/event4u-app/agent-config/commit/be1a5c9019ac18fabde14469784db42aa7588a14))
105
+
106
+ ### Chores
107
+
108
+ * **index:** regenerate after positioning → positioning-strategy rename ([9f42d91](https://github.com/event4u-app/agent-config/commit/9f42d9148f196d30635ae8288e9bba0feda66067))
109
+ * **changelog:** split era 2.2.x → pre-2.7.0 ([7158c30](https://github.com/event4u-app/agent-config/commit/7158c30db391f3464fd74f3c7e193698b869b82d))
110
+ * **generated:** refresh agents/index.md and docs/catalog.md for GTM skills/personas ([649b86e](https://github.com/event4u-app/agent-config/commit/649b86e287ecef7d0d28ce23ed2b0cbf43f2adc6))
111
+ * **generated:** regenerate .claude/ tool output + marketplace + compression hashes for GTM skills/personas ([bb7d56c](https://github.com/event4u-app/agent-config/commit/bb7d56cd8e7cafb9037a4e6ec0078e56154f9d5c))
112
+ * **roadmap:** archive road-to-gtm-and-growth — G+H+I all shipped ([dc48cdd](https://github.com/event4u-app/agent-config/commit/dc48cdd29e236c745e98b5f5fb8b45fa716a4c07))
113
+
114
+ Tests: 3577 (+11 since 2.7.0)
115
+
116
+ ## [2.7.0](https://github.com/event4u-app/agent-config/compare/2.6.1...2.7.0) (2026-05-13)
117
+
118
+ ### Features
119
+
120
+ * **install:** make augment global-only per ADR-007 amendment ([ea9a82f](https://github.com/event4u-app/agent-config/commit/ea9a82f2305a2a178b058ee66c40859790620d63))
121
+ * **mcp:** define mcp_scope lite vs full boundary in cloud-scope contract ([15a268c](https://github.com/event4u-app/agent-config/commit/15a268c9f86fabe677b4d70db9fd4e3d1726ef8a))
122
+ * **commands:** tier the slash + CLI command surface (Phase 4 of road-to-distribution-maturity) ([cc0102f](https://github.com/event4u-app/agent-config/commit/cc0102fe9677c936f703fd6e08b75cc99f758071))
123
+ * **distribution:** roadmap phases 1+2 — MCP auth-surface sync + verified-offline install ([a85c1af](https://github.com/event4u-app/agent-config/commit/a85c1afdc457c5fa4d939afc2d91649c67926501))
124
+
125
+ ### Bug Fixes
126
+
127
+ * **refs:** point evaluation-2-2-2-followups at archived roadmap location ([cde02e6](https://github.com/event4u-app/agent-config/commit/cde02e6fd3bfbb2d67e2a8e3976fe6794ea4de6c))
128
+
129
+ ### Documentation
130
+
131
+ * **architecture:** split docs/architecture.md into four pipeline sub-pages + drift test ([4f13cf5](https://github.com/event4u-app/agent-config/commit/4f13cf504c0b2d9b92661234a597b5515a7c54e8))
132
+ * **roadmap:** add distribution-maturity roadmap with council verdicts folded in ([14145cf](https://github.com/event4u-app/agent-config/commit/14145cff75ef34065358a2e99ee8c220ab0e59a0))
133
+
134
+ ### Chores
135
+
136
+ * **ci:** refresh compression hashes after cc0102fe tiering pass ([ca06729](https://github.com/event4u-app/agent-config/commit/ca06729d03bb8bd8d1536b7aecef1d1b134d8333))
137
+ * finalize roadmaps ([bb156ea](https://github.com/event4u-app/agent-config/commit/bb156ea4f52741d511c3e54cd87e3bcab2fbf107))
138
+ * **roadmap:** close road-to-distribution-maturity, archive ([d48e5d6](https://github.com/event4u-app/agent-config/commit/d48e5d64f9396f6b75b47bf336fd6ac129c8e254))
139
+ * **changelog:** split into eras, archive pre-2.2.0 entries ([e54c5cb](https://github.com/event4u-app/agent-config/commit/e54c5cbf0222de7f0f4c84a379118f4ea30b5a07))
140
+
141
+ Tests: 3566 (+36 since 2.6.1)