@event4u/agent-config 5.6.0 → 5.7.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 (103) hide show
  1. package/.agent-src/commands/cost-report.md +12 -7
  2. package/.agent-src/commands/prediction-pool.md +215 -0
  3. package/.agent-src/commands/set-cost-profile.md +8 -8
  4. package/.agent-src/commands/sync-agent-settings.md +2 -2
  5. package/.agent-src/presets/README.md +1 -1
  6. package/.agent-src/profiles/README.md +1 -1
  7. package/.agent-src/rules/non-destructive-by-default.md +2 -1
  8. package/.agent-src/skills/prediction-pool-optimizer/SKILL.md +196 -0
  9. package/.agent-src/skills/prediction-pool-optimizer/evals/triggers.json +18 -0
  10. package/.agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +80 -0
  11. package/.agent-src/templates/agent-settings.md +7 -7
  12. package/.agent-src/templates/agents/agent-project-settings.example.yml +2 -2
  13. package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +2 -1
  14. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +1 -1
  15. package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +9 -7
  16. package/.agent-src/templates/scripts/work_engine/hooks/settings.py +9 -10
  17. package/.agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +17 -4
  18. package/.claude-plugin/marketplace.json +3 -1
  19. package/CHANGELOG.md +57 -0
  20. package/README.md +2 -2
  21. package/config/agent-settings.template.yml +11 -2
  22. package/config/discovery/packs.yml +11 -0
  23. package/config/discovery/workspaces.yml +1 -1
  24. package/config/profiles/balanced.ini +1 -1
  25. package/config/profiles/full.ini +1 -1
  26. package/config/profiles/minimal.ini +1 -1
  27. package/dist/discovery/deprecation-report.md +1 -1
  28. package/dist/discovery/discovery-manifest.json +80 -14
  29. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  30. package/dist/discovery/discovery-manifest.summary.md +3 -2
  31. package/dist/discovery/orphan-report.md +1 -1
  32. package/dist/discovery/packs.json +34 -3
  33. package/dist/discovery/trust-report.md +2 -2
  34. package/dist/discovery/workspaces.json +13 -4
  35. package/dist/mcp/registry-manifest.json +3 -3
  36. package/dist/server/io/substituteTemplate.js +3 -3
  37. package/dist/server/io/substituteTemplate.js.map +1 -1
  38. package/dist/server/routes/settings.js +2 -2
  39. package/dist/server/routes/settings.js.map +1 -1
  40. package/dist/server/schemas/settings.js +4 -2
  41. package/dist/server/schemas/settings.js.map +1 -1
  42. package/dist/ui/assets/{index-DVsyUMZe.js → index-5lFqAKL0.js} +2 -2
  43. package/dist/ui/assets/index-5lFqAKL0.js.map +1 -0
  44. package/dist/ui/index.html +1 -1
  45. package/docs/architecture/current-onboard-baseline.md +3 -3
  46. package/docs/architecture.md +2 -2
  47. package/docs/catalog.md +7 -5
  48. package/docs/contracts/adr-level-6-productization.md +1 -1
  49. package/docs/contracts/config-presets.md +2 -2
  50. package/docs/contracts/cost-profile-defaults.md +5 -5
  51. package/docs/contracts/discovery-manifest.schema.json +1 -1
  52. package/docs/contracts/explain-trace.schema.json +3 -3
  53. package/docs/contracts/memory-visibility-v1.md +15 -7
  54. package/docs/contracts/profile-system.md +2 -2
  55. package/docs/contracts/settings-api.md +3 -3
  56. package/docs/contracts/value-report-schema.md +14 -1
  57. package/docs/customization.md +21 -5
  58. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +11 -11
  59. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +16 -2
  60. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +1 -1
  61. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +106 -0
  62. package/docs/decisions/ADR-037-cost-profile-untangle.md +117 -0
  63. package/docs/decisions/ADR-rule-kernel-and-router.md +1 -1
  64. package/docs/decisions/INDEX.md +2 -0
  65. package/docs/getting-started.md +2 -2
  66. package/docs/guidelines/agent-infra/layered-settings.md +2 -2
  67. package/docs/installation.md +3 -3
  68. package/docs/setup/mcp-client-config.md +1 -1
  69. package/docs/value.md +9 -7
  70. package/docs/wizard.md +1 -1
  71. package/package.json +1 -1
  72. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  73. package/scripts/_cli/cmd_explain.py +1 -1
  74. package/scripts/_cli/explain_last/inputs.py +11 -8
  75. package/scripts/_cli/explain_last/sections/inputs.py +1 -1
  76. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  77. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  78. package/scripts/_lib/agent_settings.py +2 -1
  79. package/scripts/_lib/value_ladder.py +99 -2
  80. package/scripts/_lib/value_report.py +30 -16
  81. package/scripts/ai_council/modes.py +1 -1
  82. package/scripts/audit_initial_context.py +16 -0
  83. package/scripts/check_skill_requires.py +143 -0
  84. package/scripts/condense.py +13 -2
  85. package/scripts/first-run.sh +11 -11
  86. package/scripts/install +14 -1
  87. package/scripts/install.py +127 -428
  88. package/scripts/install_anthropic_key.sh +1 -1
  89. package/scripts/install_openai_key.sh +1 -1
  90. package/scripts/lint_discovery_vocabulary.py +5 -5
  91. package/scripts/lint_value_dashboard.py +1 -1
  92. package/scripts/pack_mcp_content.py +1 -1
  93. package/scripts/prediction-pool/adapters/_schema.md +42 -0
  94. package/scripts/prediction-pool/adapters/kicktipp.yml +23 -0
  95. package/scripts/prediction-pool/poisson_sim.py +167 -0
  96. package/scripts/render_value_md.py +1 -0
  97. package/scripts/schemas/agent-settings.schema.json +77 -0
  98. package/scripts/schemas/skill.schema.json +7 -0
  99. package/scripts/smoke_quickstart.py +4 -4
  100. package/scripts/sync_agent_settings.py +4 -2
  101. package/scripts/validate_agent_settings.py +120 -0
  102. package/templates/minimal/.agent-settings.yml +1 -1
  103. package/dist/ui/assets/index-DVsyUMZe.js.map +0 -1
@@ -0,0 +1,80 @@
1
+ # EV fixtures — known-good rules + odds → tip
2
+
3
+ Sanity-check fixtures for `prediction-pool-optimizer` Step "Self-check". Each
4
+ fixture states a scoring rule, the (de-vigged) market probabilities, and
5
+ the expected-points-maximizing tip. If your method disagrees with a
6
+ fixture, your method is wrong — find the error before shipping a tip.
7
+
8
+ These are illustrative, not exhaustive. Add fixtures for any pool rule
9
+ shape you encounter so future runs catch the same class of drift.
10
+
11
+ ---
12
+
13
+ ## Fixture 1 — standard fixed points, goal "place well"
14
+
15
+ **Rule:** exact result = 4, goal-difference = 3, tendency = 2, else 0.
16
+ No quote rule. No strategy limit. Goal: place well.
17
+
18
+ **Match (football):** de-vigged market — Home 62% / Draw 24% / Away 14%.
19
+ Most plausible exact results (Poisson on market xG ≈ 1.7 : 0.8):
20
+ 2:1 ≈ 9%, 1:0 ≈ 9%, 2:0 ≈ 8%, 1:1 ≈ 8%, 3:1 ≈ 6%.
21
+
22
+ **Reasoning:** the single most likely *result* (2:1) and 1:0 both bank the
23
+ tendency (2) on a home win plus goal-difference (3) on many neighbours.
24
+ Expected points of "2:1" beats "tip the favourite to win 3:0" (lower hit
25
+ rate on diff/exact) and beats any draw/away tip (tendency rarely banks).
26
+
27
+ **Known-good tip:** **2:1 home.** (Risk: low.) **Not** contrarian — under
28
+ fixed points only your own tip scores, so deviating costs EV.
29
+
30
+ ---
31
+
32
+ ## Fixture 2 — quote / rarity scoring
33
+
34
+ **Rule:** points = base × rarity multiplier (rarer correct tips score
35
+ more); tendency still banks a small base.
36
+
37
+ **Match (football):** same probabilities as Fixture 1.
38
+
39
+ **Reasoning:** the rarity multiplier can make a plausible-but-uncommon
40
+ exact result (e.g. 3:1, 2:2) outscore the modal 2:1 when
41
+ `payout(result) × P(result)` is higher. Compute EV per candidate including
42
+ the multiplier; take the max.
43
+
44
+ **Known-good tip:** the result with the highest `multiplier × probability`,
45
+ **not** the highest probability — typically a step rarer than 2:1
46
+ (e.g. 3:1 or 2:2 depending on the multiplier curve). (Risk: medium.)
47
+
48
+ ---
49
+
50
+ ## Fixture 3 — large pool, goal "win it"
51
+
52
+ **Rule:** standard fixed points. Pool N = 400. You are outside the top 20%.
53
+
54
+ **Match (football):** a near-coin-flip favourite, Home 52% / Draw 26% /
55
+ Away 22%.
56
+
57
+ **Reasoning:** with N ≥ 100 and you behind, pure EV converges with the
58
+ field and cannot create the gap you need. Add field-relative variance on a
59
+ *subset*: take a plausible underdog/draw where the consensus is heavy on
60
+ the favourite, sized by a rough Kelly fraction. On safe matches, still
61
+ tip EV-max.
62
+
63
+ **Known-good tip:** EV-max on the safe matches; **calculated underdog**
64
+ (e.g. 1:1 or away) on 2–4 high-consensus matches to manufacture upside.
65
+ (Risk: high — intentional.)
66
+
67
+ ---
68
+
69
+ ## Fixture 4 — basketball, no draws
70
+
71
+ **Rule:** correct winner = 3, correct margin bucket = +2.
72
+
73
+ **Match (basketball):** market spread Home −6.5, moneyline Home 78%.
74
+ Margin modelled Gaussian, mean ≈ 6.5, sd ≈ 11.
75
+
76
+ **Reasoning:** no draw term exists; optimize winner first (Home banks 3 at
77
+ 78%), then the margin bucket from the Gaussian (most mass straddles the
78
+ spread). Tip the winner plus the modal margin bucket.
79
+
80
+ **Known-good tip:** **Home win, margin ~5–9.** (Risk: low on winner.)
@@ -6,7 +6,7 @@ settings.
6
6
 
7
7
  ## File format
8
8
 
9
- **YAML**, with a single top-level scalar (`cost_profile`) plus one level of
9
+ **YAML**, with a single top-level scalar (`rule_loading_tier`) plus one level of
10
10
  grouped sections (`personal`, `project`, `github`, `eloquent`, `pipelines`,
11
11
  `subagents`). Comments with `#`.
12
12
 
@@ -57,7 +57,7 @@ made by the user directly or by the agent on request, following the
57
57
  # highest token cost. Pick this when working on agent-config
58
58
  # itself or when you need every behavioural rule active.
59
59
  # custom = ignore profile — every matrix value must be set explicitly.
60
- cost_profile: balanced
60
+ rule_loading_tier: balanced
61
61
 
62
62
  # --- Personal preferences ---
63
63
  personal:
@@ -132,7 +132,7 @@ eloquent:
132
132
  # agent session can be resumed. See scripts/chat_history.py for the API.
133
133
  #
134
134
  # Defaults below are placeholders — scripts/install.py substitutes them
135
- # per cost_profile (see config/profiles/*.ini).
135
+ # per rule_loading_tier (see config/profiles/*.ini).
136
136
  chat_history:
137
137
  # Log chat events to disk (true, false)
138
138
  enabled: true
@@ -199,7 +199,7 @@ pipelines:
199
199
  # Skill improvement pipeline (true, false)
200
200
  # true = after meaningful tasks, propose learning capture and improvements (default)
201
201
  # false = silent, no post-task analysis
202
- # Included by every cost_profile except `custom`.
202
+ # Included by every rule_loading_tier except `custom`.
203
203
  skill_improvement: true
204
204
 
205
205
  # --- Roadmap execution ---
@@ -460,7 +460,7 @@ the canonical narrative lives in
460
460
 
461
461
  | Key path | Values | Default | Description |
462
462
  |---|---|---|---|
463
- | `cost_profile` | `minimal`, `balanced`, `full`, `custom` | `minimal` | Selects which agent surfaces are active. See [Cost profiles](#cost-profiles). |
463
+ | `rule_loading_tier` | `minimal`, `balanced`, `full`, `custom` | `minimal` | Selects which agent surfaces are active. See [Cost profiles](#cost-profiles). |
464
464
  | `personal.ide` | `code`, `phpstorm`, `cursor` | _(empty)_ | CLI command to open files in the IDE |
465
465
  | `personal.open_edited_files` | `true`, `false` | `false` | Auto-open edited files in the IDE after edits |
466
466
  | `personal.user_name` | first name | _(empty)_ | User's first name, used to address the user personally. Captured by `/onboard`. |
@@ -527,7 +527,7 @@ Applied automatically when `scripts/install` finds a legacy `.agent-settings`
527
527
 
528
528
  | Legacy flat key | New YAML path |
529
529
  |---|---|
530
- | `cost_profile` | `cost_profile` |
530
+ | `rule_loading_tier` | `rule_loading_tier` |
531
531
  | `ide` | `personal.ide` |
532
532
  | `open_edited_files` | `personal.open_edited_files` |
533
533
  | `user_name` | `personal.user_name` |
@@ -550,7 +550,7 @@ so nothing is silently dropped; the migration log points them out.
550
550
 
551
551
  ## Cost profiles
552
552
 
553
- The `cost_profile` setting selects which agent surfaces are active. See
553
+ The `rule_loading_tier` setting selects which agent surfaces are active. See
554
554
  `docs/customization.md` for the authoritative description.
555
555
 
556
556
  | Profile | Description |
@@ -7,7 +7,7 @@
7
7
  # Precedence (lowest → highest):
8
8
  # 1. Package defaults (shipped by event4u/agent-config)
9
9
  # 2. ~/.event4u/agent-config/agent-settings.yml — user-global DX-comfort
10
- # defaults (whitelist: name, ide, cost_profile, personal.bot_icon,
10
+ # defaults (whitelist: name, ide, rule_loading_tier, personal.bot_icon,
11
11
  # personal.autonomy, telegraph.speak_scope). Created on opt-in via
12
12
  # /onboard; project-local files always win. Legacy
13
13
  # ~/.config/agent-config/agent-settings.yml is read as a fallback.
@@ -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.py (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "4.3.0"
42
+ agent_config_version: "5.6.1"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -100,7 +100,8 @@ def _resolve_user_global_file() -> Path:
100
100
  MERGEABLE_KEYS: tuple[str, ...] = (
101
101
  "name",
102
102
  "ide",
103
- "cost_profile",
103
+ "rule_loading_tier",
104
+ "memory.cadence",
104
105
  "personal.bot_icon",
105
106
  "personal.autonomy",
106
107
  "telegraph.speak_scope",
@@ -64,7 +64,7 @@ def _build_hook_registry(args: argparse.Namespace) -> HookRegistry:
64
64
  gate_hook.register(registry)
65
65
  if settings.memory_visibility:
66
66
  MemoryVisibilityHook(
67
- cost_profile=settings.cost_profile,
67
+ memory_cadence=settings.memory_cadence,
68
68
  visibility_off=settings.memory_visibility_off,
69
69
  ).register(registry)
70
70
  if settings.chat_history_enabled:
@@ -43,10 +43,12 @@ class MemoryVisibilityHook:
43
43
 
44
44
  Parameters
45
45
  ----------
46
- cost_profile:
47
- Cadence profile from ``.agent-settings.yml`` (``lean`` /
48
- ``standard`` / ``verbose``). ``lean`` suppresses the line
49
- unless ``asks ≥ 3`` per the contract's cadence table.
46
+ memory_cadence:
47
+ Cadence from ``memory.cadence`` in ``.agent-settings.yml``
48
+ (``auto`` / ``always`` / ``never``). ``auto`` suppresses the
49
+ line unless ``asks ≥ 3``; ``never`` suppresses it entirely;
50
+ ``always`` (default) emits whenever ``asks ≥ 1`` per the
51
+ contract's cadence table.
50
52
  visibility_off:
51
53
  When ``True``, the hook stays silent — used to mirror
52
54
  ``memory.visibility: off`` in the consumer settings.
@@ -59,11 +61,11 @@ class MemoryVisibilityHook:
59
61
  def __init__(
60
62
  self,
61
63
  *,
62
- cost_profile: str = "standard",
64
+ memory_cadence: str = "always",
63
65
  visibility_off: bool = False,
64
66
  asked_types: Iterable[str] | None = None,
65
67
  ) -> None:
66
- self._cost_profile = cost_profile
68
+ self._memory_cadence = memory_cadence
67
69
  self._visibility_off = visibility_off
68
70
  self._asked_types = (
69
71
  tuple(asked_types) if asked_types is not None else DEFAULT_ASKED_TYPES
@@ -81,7 +83,7 @@ class MemoryVisibilityHook:
81
83
  summary = summarise_visibility(memory, asked_types=self._asked_types)
82
84
  if not should_emit(
83
85
  summary,
84
- cost_profile=self._cost_profile,
86
+ memory_cadence=self._memory_cadence,
85
87
  visibility_off=self._visibility_off,
86
88
  ):
87
89
  return
@@ -16,7 +16,7 @@ settings.py``):
16
16
 
17
17
  Per road-to-portable-dev-preferences P3, the YAML read goes through
18
18
  :func:`work_engine._lib.agent_settings.load_agent_settings`, which
19
- cascades the whitelisted ``cost_profile`` (and other DX-comfort keys)
19
+ cascades the whitelisted ``rule_loading_tier`` (and other DX-comfort keys)
20
20
  from ``~/.event4u/agent-config/agent-settings.yml`` (legacy
21
21
  ``~/.config/agent-config/agent-settings.yml`` read as fallback) when
22
22
  the project file omits them. Project values always win.
@@ -61,7 +61,7 @@ class HookSettings:
61
61
  decision_trace: bool = False
62
62
  memory_visibility: bool = False
63
63
  memory_visibility_off: bool = False
64
- cost_profile: str = "standard"
64
+ memory_cadence: str = "always"
65
65
  chat_history_enabled: bool = False
66
66
  chat_history_script: str = DEFAULT_CHAT_HISTORY_SCRIPT
67
67
  decision_engine: DecisionEngineSettings = DecisionEngineSettings()
@@ -82,8 +82,8 @@ def load_hook_settings(
82
82
  ``~/.event4u/agent-config/agent-settings.yml`` (with a read fallback
83
83
  to the legacy ``~/.config/agent-config/agent-settings.yml``) and
84
84
  only cascades the whitelisted DX-comfort keys (currently
85
- ``cost_profile``) when the project file omits them. See
86
- road-to-portable-dev-preferences P3.
85
+ ``rule_loading_tier`` and ``memory.cadence``) when the project file
86
+ omits them. See road-to-portable-dev-preferences P3.
87
87
  """
88
88
  path = Path(settings_path) if settings_path else Path(DEFAULT_SETTINGS_FILE)
89
89
  raw = load_agent_settings(
@@ -133,12 +133,16 @@ def _settings_from_raw(data: dict[str, Any]) -> HookSettings:
133
133
 
134
134
  memory_section = data.get("memory")
135
135
  visibility_off = False
136
+ memory_cadence = "always"
136
137
  if isinstance(memory_section, dict):
137
138
  raw = memory_section.get("visibility")
138
139
  if isinstance(raw, str) and raw.strip().lower() == "off":
139
140
  visibility_off = True
140
141
  elif isinstance(raw, bool) and raw is False:
141
142
  visibility_off = True
143
+ cadence_raw = memory_section.get("cadence")
144
+ if cadence_raw is not None:
145
+ memory_cadence = str(cadence_raw).strip().lower() or "always"
142
146
 
143
147
  memory_hooks = hooks.get("memory_visibility")
144
148
  if isinstance(memory_hooks, dict):
@@ -148,11 +152,6 @@ def _settings_from_raw(data: dict[str, Any]) -> HookSettings:
148
152
  else:
149
153
  memory_visibility_on = True
150
154
 
151
- cost_profile_raw = data.get("cost_profile") or "standard"
152
- cost_profile = (
153
- str(cost_profile_raw).strip().lower() or "standard"
154
- )
155
-
156
155
  return HookSettings(
157
156
  enabled=True,
158
157
  trace=_coerce_bool(hooks.get("trace"), False),
@@ -168,7 +167,7 @@ def _settings_from_raw(data: dict[str, Any]) -> HookSettings:
168
167
  decision_trace=decision_trace_on,
169
168
  memory_visibility=memory_visibility_on,
170
169
  memory_visibility_off=visibility_off,
171
- cost_profile=cost_profile,
170
+ memory_cadence=memory_cadence,
172
171
  chat_history_enabled=chat_block_enabled and global_chat_on,
173
172
  chat_history_script=chat_script,
174
173
  decision_engine=decision_engine_settings,
@@ -242,17 +242,30 @@ def format_changed_decisions_block(
242
242
  def should_emit(
243
243
  summary: dict[str, Any],
244
244
  *,
245
- cost_profile: str = "standard",
245
+ memory_cadence: str = "always",
246
246
  visibility_off: bool = False,
247
247
  ) -> bool:
248
- """Apply the cadence + opt-out gates from the contract."""
248
+ """Apply the cadence + opt-out gates from the contract.
249
+
250
+ ``memory_cadence`` is the ``memory.cadence`` cadence key:
251
+
252
+ * ``always`` (default) — emit whenever ``asks >= 1``.
253
+ * ``auto`` — emit only when ``asks >= 3`` (reduces noise on
254
+ shallow-retrieval steps).
255
+ * ``never`` — suppress the line entirely.
256
+
257
+ ``visibility_off`` is the legacy ``memory.visibility: off`` master
258
+ switch and still wins over any ``memory_cadence`` value.
259
+ """
249
260
  if visibility_off:
250
261
  return False
251
262
  asks = int(summary.get("asks", 0) or 0)
252
263
  if asks <= 0:
253
264
  return False
254
- profile = (cost_profile or "standard").strip().lower()
255
- if profile == "lean":
265
+ status = (memory_cadence or "always").strip().lower()
266
+ if status == "never":
267
+ return False
268
+ if status == "auto":
256
269
  return asks >= 3
257
270
  return True
258
271
 
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
9
- "version": "5.6.0",
9
+ "version": "5.7.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
@@ -292,6 +292,8 @@
292
292
  "./.claude/skills/post-as",
293
293
  "./.claude/skills/post-as-ghostwriter",
294
294
  "./.claude/skills/post-as-me",
295
+ "./.claude/skills/prediction-pool",
296
+ "./.claude/skills/prediction-pool-optimizer",
295
297
  "./.claude/skills/prepare-for-review",
296
298
  "./.claude/skills/privacy-review",
297
299
  "./.claude/skills/project-analysis-core",
package/CHANGELOG.md CHANGED
@@ -811,6 +811,63 @@ our recommendation order, not its support status.
811
811
  > that forces a new era split (`# Era: 5.5.x`, etc.) — see
812
812
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
813
813
 
814
+ ## [5.7.0](https://github.com/event4u-app/agent-config/compare/5.6.1...5.7.0) (2026-06-01)
815
+
816
+ ### Features
817
+
818
+ * **settings:** enum-validate value-bearing settings keys in CI ([b6c56d0](https://github.com/event4u-app/agent-config/commit/b6c56d088b1b8cfa549374e864bb3dcc203972fb))
819
+ * **value:** honest eager-vs-thin cost ladder in the value dashboard ([9a806c4](https://github.com/event4u-app/agent-config/commit/9a806c466e171f8a83e743990bc9350192745da5))
820
+ * **fun:** add /tippspiel command + tippspiel-optimizer skill in new pack-fun ([4c8fc65](https://github.com/event4u-app/agent-config/commit/4c8fc65473556ce3635a6fdcad67096c0c15886f))
821
+ * **skills:** add skill-composition graph + co-availability gate (roadmap 3.4) ([6db3afa](https://github.com/event4u-app/agent-config/commit/6db3afa8738331c2e85fb1f75dceb9943b2a2599))
822
+
823
+ ### Bug Fixes
824
+
825
+ * **install:** hand off global install to the browser wizard with zero terminal prompts ([0fc46e3](https://github.com/event4u-app/agent-config/commit/0fc46e3e29220bcebfe6c97316309502ee2b7ee4))
826
+ * **wizard:** disambiguate the rule-loading / budget / model step ([122244c](https://github.com/event4u-app/agent-config/commit/122244c859b0c9da61e60a58fa220fb6c8f699d1))
827
+ * **cost-report:** recommend the model tier before rule loading ([2545c27](https://github.com/event4u-app/agent-config/commit/2545c277e5cc930a1e493dbf78e3ef3fe11933aa))
828
+ * **condense:** quote frontmatter descriptions in cursor/windsurf rules ([c69c9bb](https://github.com/event4u-app/agent-config/commit/c69c9bbb56bce9c01284db90936fd7b432278ffb))
829
+ * **install:** always overwrite our own deployed files, drop foreign-file gate ([25b593d](https://github.com/event4u-app/agent-config/commit/25b593d96da87e61f29844db088b01a346d07d81))
830
+ * **ci:** mirror memory.cadence into the source loader + TS settings schema ([2a74eff](https://github.com/event4u-app/agent-config/commit/2a74eff244c76830745c9d1e319d6abd5fe1d80b))
831
+ * **memory:** give the visibility-line cadence its own memory.cadence key ([e792390](https://github.com/event4u-app/agent-config/commit/e792390f59b01190769cba1f369bb574c83847bd))
832
+ * **rules:** trim non-destructive description to the 190-char schema cap ([b2a489e](https://github.com/event4u-app/agent-config/commit/b2a489ecf9fcbadf5232417f2503fddbab657fdb))
833
+ * **rules:** make production-branch commits a Hard-Floor opt-in (kernel) ([31f49a9](https://github.com/event4u-app/agent-config/commit/31f49a9af7fc0fb495556e8570e0adbfcb031416))
834
+ * **discovery:** register 'fun' in discovery-manifest schema enum ([7b91f12](https://github.com/event4u-app/agent-config/commit/7b91f12fa4e1e805a121a0fd7c9adb2760f5f122))
835
+
836
+ ### Documentation
837
+
838
+ * **install:** record ADR-036 + roadmap Phase 6 for the browser-wizard handoff ([f3cc886](https://github.com/event4u-app/agent-config/commit/f3cc886618526b1c705a2a25c1ee98eb4063a188))
839
+ * **roadmap:** close + archive cost_profile untangle (phases 0-7; 4 items cancelled-with-follow-up) ([296b0da](https://github.com/event4u-app/agent-config/commit/296b0da47fc0ceed399438e4c5cb5801df0ea1b7))
840
+ * record cost_profile untangle (ADR-036 + BREAKING_CHANGES + disambiguation) ([efa658a](https://github.com/event4u-app/agent-config/commit/efa658acaef31bb1d1a9ddb565b5093b03f7d62e))
841
+ * **roadmap:** add cost_profile untangle roadmap ([708033c](https://github.com/event4u-app/agent-config/commit/708033cb5649c1d9583ea42a397795cf198b3493))
842
+
843
+ ### Refactoring
844
+
845
+ * **settings:** rename cost_profile to rule_loading_tier across the suite ([21a31cb](https://github.com/event4u-app/agent-config/commit/21a31cb9746996324e9a49d82ad87084fb605c87))
846
+ * **fun:** English command name + expanded triggers ([62c960e](https://github.com/event4u-app/agent-config/commit/62c960eac79cdbc2883ac4727fe05d651f9497b8))
847
+
848
+ ### Chores
849
+
850
+ * update agent work ([7ed0cbb](https://github.com/event4u-app/agent-config/commit/7ed0cbbe45e33757f8fa59048d6f9212110da8c1))
851
+ * sync agent-project-settings example pin to package.json (5.6.1) ([194a040](https://github.com/event4u-app/agent-config/commit/194a040628b21c2f61b1096f956f350eed131ec6))
852
+ * regenerate index + catalog after rename ([1c6dc68](https://github.com/event4u-app/agent-config/commit/1c6dc68416570f47bf8578d60c508f0acd185993))
853
+ * regenerate derived trees after merging main ([1f0ad58](https://github.com/event4u-app/agent-config/commit/1f0ad582d9a757acafd470d1fdd32adc362a2a49))
854
+ * regenerate derived trees for the prediction-pool rename ([bb3225f](https://github.com/event4u-app/agent-config/commit/bb3225fa91e78bfa640d33d501175b586cbd7de7))
855
+ * regenerate derived trees for pack-fun ([4125ba5](https://github.com/event4u-app/agent-config/commit/4125ba583cadd25ec29c23999287fc42fcc3d991))
856
+ * update condensation hashes after requires_skills frontmatter ([baf60e5](https://github.com/event4u-app/agent-config/commit/baf60e58328051176a519628dd56f879a5c4dd86))
857
+ * **roadmap:** re-examine lean-buildout disposition — 3.4 built, rest confirmed ([d88b633](https://github.com/event4u-app/agent-config/commit/d88b6332181013dc1757c317453519cadee3f63a))
858
+ * **roadmap:** close + archive lean-buildout roadmap (council-resolved) ([303ca6b](https://github.com/event4u-app/agent-config/commit/303ca6b6346298601fb789d08d003e023ab26ac4))
859
+
860
+ Tests: 5375 (+0 since 5.6.1)
861
+
862
+ ## [5.6.1](https://github.com/event4u-app/agent-config/compare/5.6.0...5.6.1) (2026-06-01)
863
+
864
+ ### Bug Fixes
865
+
866
+ * **mcp:** send bearer auth in post-deploy smoke probe ([9d12489](https://github.com/event4u-app/agent-config/commit/9d124894b03e5e962e8014171f965ce9367de58d))
867
+ * correct gzip kwarg in pack_mcp_content (condenselevel -> compresslevel) ([6d27677](https://github.com/event4u-app/agent-config/commit/6d2767736d6d20327a5853875fd4e9cb172babcc))
868
+
869
+ Tests: 5375 (+0 since 5.6.0)
870
+
814
871
  ## [5.6.0](https://github.com/event4u-app/agent-config/compare/5.5.0...5.6.0) (2026-05-31)
815
872
 
816
873
  ### Features
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![Smoke](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [![Public install smoke (3 OS × 2 Node)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [![npm](https://img.shields.io/npm/v/@event4u/agent-config?style=flat-square&label=npm&color=orange)](https://www.npmjs.com/package/@event4u/agent-config)
6
6
 
7
- [![Skills](https://img.shields.io/badge/Skills-222-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-79-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-145-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
7
+ [![Skills](https://img.shields.io/badge/Skills-223-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-79-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-146-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
8
8
 
9
9
  > **The Universal AI Agent OS for Founders, Content Creators, Consultants, Sales, Finance, and Engineering teams. Bring your own AI provider.**
10
10
 
@@ -369,7 +369,7 @@ When a prompt matches a command's purpose ("setze ticket ABC-123 um" → `/imple
369
369
  | [**Migration**](docs/MIGRATION.md) | Per-version upgrade steps |
370
370
  | [**Showcase**](docs/showcase.md) | More examples & expected behavior |
371
371
 
372
- Browse content: [all 145 commands](.agent-src/commands/) · [skills catalog](docs/skills-catalog.md) · [full catalog](docs/catalog.md) · [`llms.txt`](llms.txt).
372
+ Browse content: [all 146 commands](.agent-src/commands/) · [skills catalog](docs/skills-catalog.md) · [full catalog](docs/catalog.md) · [`llms.txt`](llms.txt).
373
373
 
374
374
  ---
375
375
 
@@ -28,7 +28,7 @@ agent_config_version: ""
28
28
  # balanced = kernel + tier-1 auto-rules (default — current behaviour superset).
29
29
  # full = kernel + tier-1 + tier-2 (everything, highest token cost).
30
30
  # custom = ignore profile — every matrix value must be set explicitly.
31
- cost_profile: __COST_PROFILE__
31
+ rule_loading_tier: __RULE_LOADING_TIER__
32
32
 
33
33
  # --- Lean projection (experimental, opt-in) ---
34
34
  #
@@ -220,7 +220,7 @@ pipelines:
220
220
  # Skill improvement pipeline (true, false)
221
221
  # true = after meaningful tasks, propose learning capture and improvements (default)
222
222
  # false = silent, no post-task analysis
223
- # Included by every cost_profile except `custom`. Flip to false here if you
223
+ # Included by every rule_loading_tier except `custom`. Flip to false here if you
224
224
  # want a silent agent; `custom` profile ignores this default entirely.
225
225
  skill_improvement: true
226
226
 
@@ -429,6 +429,15 @@ commands:
429
429
  # docs/contracts/agent-memory-contract.md for the on-disk shape and
430
430
  # .augment/skills/memory-consolidation/ for the four-phase loop.
431
431
  memory:
432
+ # Cadence for the "🧠 Memory: <hits>/<asks>" visibility line emitted
433
+ # after a memory-consulting step (see docs/contracts/memory-visibility-v1.md).
434
+ # always = (default) emit whenever at least one memory type was asked.
435
+ # auto = emit only when ≥ 3 memory types were consulted (less noise
436
+ # on shallow-retrieval steps).
437
+ # never = suppress the line entirely.
438
+ # The legacy `memory.visibility: off` master switch still wins over this.
439
+ cadence: always
440
+
432
441
  # Inline-review threshold for /memory load.
433
442
  # When the unreviewed intake stream contains more than this many
434
443
  # entries, /memory load surfaces a top-3 preview block before the
@@ -79,6 +79,7 @@
79
79
  label: Product Basic
80
80
  description: Core PO/PM artefacts (ticket refinement, AC, estimation).
81
81
  workspaces: [product]
82
+ requires_hint: [engineering-base]
82
83
  trust_level_default: professional
83
84
 
84
85
  - id: product-discovery
@@ -163,6 +164,16 @@
163
164
  example_workflow: scene-expander
164
165
  time_to_first_value_minutes: 12
165
166
 
167
+ - id: fun
168
+ label: Fun
169
+ description: Non-essential social/fun workflows (prediction-pool tips, etc.).
170
+ workspaces: [small-business]
171
+ trust_level_default: experimental
172
+ onboarding:
173
+ first_win_doc: FIRST_WIN.md
174
+ example_workflow: prediction-pool-optimizer
175
+ time_to_first_value_minutes: 6
176
+
166
177
  - id: meta
167
178
  label: Meta
168
179
  description: Artefacts that maintain this package (agent-config itself).
@@ -55,7 +55,7 @@
55
55
  description: Self-employed / SMB-shaped owner workflows.
56
56
  example_roles: [Owner, Freelancer]
57
57
  default_packs: [small-business]
58
- optional_packs: [ai-video]
58
+ optional_packs: [ai-video, fun]
59
59
 
60
60
  - id: construction
61
61
  label: Construction
@@ -7,7 +7,7 @@
7
7
  ; a shell command can be invoked via scripts/runtime_dispatcher.py.
8
8
  ; See docs/customization.md for the full profile description.
9
9
 
10
- cost_profile=balanced
10
+ rule_loading_tier=balanced
11
11
 
12
12
  ; Chat history (crash recovery) — balanced = phase-level traceability
13
13
  chat_history_frequency=per_phase
@@ -7,7 +7,7 @@
7
7
  ; read-only and opt-in per call. See docs/customization.md for the full
8
8
  ; profile description.
9
9
 
10
- cost_profile=full
10
+ rule_loading_tier=full
11
11
 
12
12
  ; Chat history (crash recovery) — full = tool-level traceability + summarize on overflow
13
13
  chat_history_frequency=per_tool
@@ -7,7 +7,7 @@
7
7
  ; profile description. scripts/install.py merges this file with
8
8
  ; config/agent-settings.template.ini to produce the user's .agent-settings.
9
9
 
10
- cost_profile=minimal
10
+ rule_loading_tier=minimal
11
11
 
12
12
  ; Chat history (crash recovery) — minimal = lightest footprint
13
13
  chat_history_frequency=per_turn
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-05-31T21:27:24Z`
3
+ - Generated: `2026-06-01T14:03:17Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._