@event4u/agent-config 5.6.1 → 5.8.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/.agent-src/commands/agent-handoff.md +1 -1
- package/.agent-src/commands/agent-status.md +1 -1
- package/.agent-src/commands/agents/audit.md +1 -1
- package/.agent-src/commands/agents/init.md +1 -1
- package/.agent-src/commands/agents/user/accept.md +3 -3
- package/.agent-src/commands/agents/user/init.md +4 -4
- package/.agent-src/commands/agents/user/show.md +3 -3
- package/.agent-src/commands/agents/user/update.md +3 -3
- package/.agent-src/commands/agents/user.md +1 -1
- package/.agent-src/commands/agents.md +1 -1
- package/.agent-src/commands/analytics/prune.md +1 -1
- package/.agent-src/commands/analytics/show.md +1 -1
- package/.agent-src/commands/analytics.md +1 -1
- package/.agent-src/commands/bug-fix.md +1 -1
- package/.agent-src/commands/challenge-me.md +1 -1
- package/.agent-src/commands/chat-history/import.md +1 -1
- package/.agent-src/commands/chat-history/learn.md +1 -1
- package/.agent-src/commands/chat-history/show.md +1 -1
- package/.agent-src/commands/chat-history.md +1 -1
- package/.agent-src/commands/check-current-md.md +1 -1
- package/.agent-src/commands/condense.md +1 -1
- package/.agent-src/commands/context.md +1 -1
- package/.agent-src/commands/cost-report.md +13 -8
- package/.agent-src/commands/council.md +3 -3
- package/.agent-src/commands/create-pr/description-only.md +1 -1
- package/.agent-src/commands/create-pr.md +1 -1
- package/.agent-src/commands/e2e-heal.md +1 -1
- package/.agent-src/commands/e2e-plan.md +1 -1
- package/.agent-src/commands/feature.md +1 -1
- package/.agent-src/commands/fix/ci.md +1 -1
- package/.agent-src/commands/fix/portability.md +1 -1
- package/.agent-src/commands/fix/pr-bot-comments.md +1 -1
- package/.agent-src/commands/fix/pr-comments.md +1 -1
- package/.agent-src/commands/fix/pr-developer-comments.md +1 -1
- package/.agent-src/commands/fix/refs.md +1 -1
- package/.agent-src/commands/fix/seeder.md +1 -1
- package/.agent-src/commands/fix.md +1 -1
- package/.agent-src/commands/judge.md +1 -1
- package/.agent-src/commands/knowledge/cross-repo.md +1 -1
- package/.agent-src/commands/knowledge/forget.md +1 -1
- package/.agent-src/commands/knowledge/ingest.md +1 -1
- package/.agent-src/commands/knowledge/list.md +1 -1
- package/.agent-src/commands/knowledge.md +1 -1
- package/.agent-src/commands/memory/add.md +1 -1
- package/.agent-src/commands/memory/learn-low-impact.md +1 -1
- package/.agent-src/commands/memory/load.md +1 -1
- package/.agent-src/commands/memory/mine-session.md +1 -1
- package/.agent-src/commands/memory/promote.md +1 -1
- package/.agent-src/commands/memory/propose.md +1 -1
- package/.agent-src/commands/memory.md +1 -1
- package/.agent-src/commands/mode.md +1 -1
- package/.agent-src/commands/optimize/agents-dir.md +1 -1
- package/.agent-src/commands/optimize/augmentignore.md +1 -1
- package/.agent-src/commands/optimize/rtk.md +1 -1
- package/.agent-src/commands/optimize/skills.md +1 -1
- package/.agent-src/commands/optimize.md +1 -1
- package/.agent-src/commands/orchestrate.md +1 -1
- package/.agent-src/commands/override/create.md +1 -1
- package/.agent-src/commands/override/manage.md +1 -1
- package/.agent-src/commands/override.md +1 -1
- package/.agent-src/commands/package-reset.md +1 -1
- package/.agent-src/commands/prediction-pool.md +234 -0
- package/.agent-src/commands/profile/activate.md +81 -0
- package/.agent-src/commands/profile/deactivate.md +68 -0
- package/.agent-src/commands/profile/show.md +70 -0
- package/.agent-src/commands/profile.md +68 -0
- package/.agent-src/commands/project-health.md +1 -1
- package/.agent-src/commands/quality-fix.md +1 -1
- package/.agent-src/commands/roadmap/process-full.md +1 -1
- package/.agent-src/commands/roadmap/process-phase.md +1 -1
- package/.agent-src/commands/roadmap/process-step.md +1 -1
- package/.agent-src/commands/roadmap.md +1 -1
- package/.agent-src/commands/set-cost-profile.md +9 -9
- package/.agent-src/commands/skill/preview.md +3 -3
- package/.agent-src/commands/skill.md +1 -1
- package/.agent-src/commands/skills/discover.md +1 -1
- package/.agent-src/commands/skills.md +1 -1
- package/.agent-src/commands/sync-agent-settings.md +3 -3
- package/.agent-src/commands/sync-gitignore/fix.md +1 -1
- package/.agent-src/commands/sync-gitignore.md +1 -1
- package/.agent-src/commands/update-form-request-messages.md +1 -1
- package/.agent-src/presets/README.md +1 -1
- package/.agent-src/profiles/README.md +1 -1
- package/.agent-src/rules/non-destructive-by-default.md +2 -1
- package/.agent-src/skills/check-refs/SKILL.md +1 -1
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +1 -1
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/jira-integration/SKILL.md +1 -1
- package/.agent-src/skills/markitdown/SKILL.md +1 -1
- package/.agent-src/skills/prediction-pool-optimizer/SKILL.md +314 -0
- package/.agent-src/skills/prediction-pool-optimizer/evals/triggers.json +20 -0
- package/.agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +175 -0
- package/.agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +109 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
- package/.agent-src/skills/script-writing/SKILL.md +1 -1
- package/.agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -1
- package/.agent-src/templates/agent-settings.md +7 -7
- package/.agent-src/templates/agents/agent-project-settings.example.yml +2 -2
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +54 -6
- package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +1 -1
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +9 -7
- package/.agent-src/templates/scripts/work_engine/hooks/settings.py +9 -10
- package/.agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +17 -4
- package/.claude-plugin/marketplace.json +370 -364
- package/CHANGELOG.md +108 -0
- package/README.md +2 -2
- package/config/agent-settings.template.yml +11 -2
- package/config/discovery/packs.yml +11 -0
- package/config/discovery/session-profiles.yml +37 -0
- package/config/discovery/workspaces.yml +1 -1
- package/config/profiles/balanced.ini +1 -1
- package/config/profiles/full.ini +1 -1
- package/config/profiles/minimal.ini +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +254 -100
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -3
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +41 -6
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +19 -6
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/server/io/substituteTemplate.js +3 -3
- package/dist/server/io/substituteTemplate.js.map +1 -1
- package/dist/server/routes/settings.js +2 -2
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/{index-DVsyUMZe.js → index-5lFqAKL0.js} +2 -2
- package/dist/ui/assets/index-5lFqAKL0.js.map +1 -0
- package/dist/ui/index.html +1 -1
- package/docs/architecture/current-onboard-baseline.md +3 -3
- package/docs/architecture.md +2 -2
- package/docs/catalog.md +11 -5
- package/docs/contracts/adr-level-6-productization.md +1 -1
- package/docs/contracts/command-clusters.md +2 -0
- package/docs/contracts/config-presets.md +2 -2
- package/docs/contracts/cost-profile-defaults.md +5 -5
- package/docs/contracts/discovery-manifest.schema.json +1 -1
- package/docs/contracts/explain-trace.schema.json +3 -3
- package/docs/contracts/memory-visibility-v1.md +15 -7
- package/docs/contracts/profile-system.md +2 -2
- package/docs/contracts/session-profile-overlay.md +120 -0
- package/docs/contracts/settings-api.md +3 -3
- package/docs/contracts/value-report-schema.md +14 -1
- package/docs/customization.md +47 -5
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +47 -11
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +16 -2
- package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +1 -1
- package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +106 -0
- package/docs/decisions/ADR-037-cost-profile-untangle.md +117 -0
- package/docs/decisions/ADR-038-canonical-settings-path.md +66 -0
- package/docs/decisions/ADR-039-claude-skills-untracked.md +139 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +1 -1
- package/docs/decisions/INDEX.md +4 -0
- package/docs/development.md +12 -0
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/layered-settings.md +10 -4
- package/docs/installation.md +3 -3
- package/docs/setup/mcp-client-config.md +1 -1
- package/docs/skills-catalog.md +5 -1
- package/docs/value.md +9 -7
- package/docs/wizard.md +1 -1
- package/llms.txt +4 -0
- package/package.json +1 -1
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_cli/cmd_doctor.py +3 -2
- package/scripts/_cli/cmd_explain.py +1 -1
- package/scripts/_cli/cmd_versions.py +2 -2
- package/scripts/_cli/explain_last/inputs.py +11 -8
- package/scripts/_cli/explain_last/sections/inputs.py +1 -1
- package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
- package/scripts/_lib/agent_settings.py +54 -6
- package/scripts/_lib/agent_src.py +30 -0
- package/scripts/_lib/value_ladder.py +99 -2
- package/scripts/_lib/value_report.py +30 -16
- package/scripts/ai_council/modes.py +1 -1
- package/scripts/ai_council/session.py +5 -1
- package/scripts/audit_command_surface.py +7 -1
- package/scripts/audit_initial_context.py +26 -2
- package/scripts/check_gate_paths.py +117 -0
- package/scripts/check_references.py +51 -2
- package/scripts/check_skill_requires.py +143 -0
- package/scripts/check_test_coverage_diff.py +180 -0
- package/scripts/compile_router.py +5 -1
- package/scripts/condense.py +92 -4
- package/scripts/config/session_profiles.py +492 -0
- package/scripts/council_cli.py +5 -1
- package/scripts/first-run.sh +11 -11
- package/scripts/hook_manifest.yaml +15 -7
- package/scripts/hooks/dispatch_hook.py +8 -0
- package/scripts/install +14 -1
- package/scripts/install-hooks.sh +2 -1
- package/scripts/install.py +203 -433
- package/scripts/install_anthropic_key.sh +1 -1
- package/scripts/install_openai_key.sh +1 -1
- package/scripts/inventory_abstraction_budget.py +6 -1
- package/scripts/lint_agents_md.py +11 -4
- package/scripts/lint_discovery_vocabulary.py +5 -5
- package/scripts/lint_hook_concern_budget.py +5 -1
- package/scripts/lint_marketplace.py +18 -7
- package/scripts/lint_roadmap_ci_steps.py +5 -1
- package/scripts/lint_roadmap_complexity.py +5 -1
- package/scripts/lint_value_dashboard.py +1 -1
- package/scripts/mcp_server/prompts.py +5 -1
- package/scripts/prediction-pool/adapters/_schema.md +42 -0
- package/scripts/prediction-pool/adapters/kicktipp.yml +23 -0
- package/scripts/prediction-pool/poisson_sim.py +167 -0
- package/scripts/prediction-pool/pool_winsim.py +236 -0
- package/scripts/prediction-pool/score_ev.py +188 -0
- package/scripts/profile_staleness_hook.py +69 -0
- package/scripts/render_value_md.py +1 -0
- package/scripts/roadmap_progress_hook.py +56 -6
- package/scripts/schemas/agent-settings.schema.json +77 -0
- package/scripts/schemas/skill.schema.json +7 -0
- package/scripts/smoke_quickstart.py +7 -6
- package/scripts/sync_agent_settings.py +12 -5
- package/scripts/validate_agent_settings.py +124 -0
- package/scripts/validate_decision_engine.py +5 -1
- package/templates/minimal/.agent-settings.yml +1 -1
- package/dist/ui/assets/index-DVsyUMZe.js.map +0 -1
- package/scripts/measure_roadmap_trajectory.py +0 -112
- package/scripts/verify_roadmap_closure.py +0 -327
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<meta name="robots" content="noindex" />
|
|
7
7
|
<title>agent-config</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-5lFqAKL0.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-BbWWuFrF.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
@@ -27,7 +27,7 @@ inert — no settings file, no flow.
|
|
|
27
27
|
| 4 | `personal.ide` (+ auto-detect via `ps aux`) and `personal.open_edited_files` | IDE id, auto-open flag | unset |
|
|
28
28
|
| 5 | `personal.pr_comment_bot_icon` | bool | always (no detection possible) |
|
|
29
29
|
| 6 | `personal.rtk_installed` (via `which rtk`) | bool + install action | rtk not found |
|
|
30
|
-
| 7 | `
|
|
30
|
+
| 7 | `rule_loading_tier` and `pipelines.skill_improvement` | profile id, learning bool | always (one summary screen) |
|
|
31
31
|
| 8 | Mark `onboarding.onboarded: true` | — | always |
|
|
32
32
|
| 9 | Write user-global `~/.event4u/agent-config/agent-settings.yml` | six whitelisted keys | step 2 captured "yes" |
|
|
33
33
|
| 10 | Summary block | — | always |
|
|
@@ -65,7 +65,7 @@ personal:
|
|
|
65
65
|
open_edited_files: true|false # step 4
|
|
66
66
|
pr_comment_bot_icon: true|false # step 5
|
|
67
67
|
rtk_installed: true|false # step 6
|
|
68
|
-
|
|
68
|
+
rule_loading_tier: "balanced" # step 7 (default unchanged)
|
|
69
69
|
pipelines:
|
|
70
70
|
skill_improvement: true # step 7 (default unchanged)
|
|
71
71
|
onboarding:
|
|
@@ -74,7 +74,7 @@ onboarding:
|
|
|
74
74
|
|
|
75
75
|
User-global file (step 9, opt-in): the six whitelisted keys in
|
|
76
76
|
[`scripts/_lib/agent_settings.py`](../../scripts/_lib/agent_settings.py)
|
|
77
|
-
— `name`, `ide`, `
|
|
77
|
+
— `name`, `ide`, `rule_loading_tier`, `personal.bot_icon`,
|
|
78
78
|
`personal.autonomy`, `telegraph.speak_scope`.
|
|
79
79
|
|
|
80
80
|
## Iron Laws today
|
package/docs/architecture.md
CHANGED
|
@@ -146,9 +146,9 @@ note, package-internal path-swap, description budget, and the
|
|
|
146
146
|
|
|
147
147
|
| Layer | Count | Purpose |
|
|
148
148
|
|---|---|---|
|
|
149
|
-
| **Skills** |
|
|
149
|
+
| **Skills** | 223 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
|
|
150
150
|
| **Rules** | 79 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
|
|
151
|
-
| **Commands** |
|
|
151
|
+
| **Commands** | 150 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/condense`, … |
|
|
152
152
|
| **Guidelines** | 73 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
|
|
153
153
|
| **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
|
|
154
154
|
| **Contexts** | 5 | Shared knowledge about the system itself |
|
package/docs/catalog.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# agent-config — Public Catalog
|
|
2
2
|
|
|
3
|
-
Consumer-facing catalog of all **
|
|
3
|
+
Consumer-facing catalog of all **524 public artefacts** shipped by
|
|
4
4
|
this package. Internal package-maintenance rules and deprecation shims
|
|
5
5
|
are excluded.
|
|
6
6
|
|
|
7
7
|
> **Regenerate:** `python3 scripts/generate_index.py`
|
|
8
8
|
> Auto-generated — do not edit manually.
|
|
9
9
|
|
|
10
|
-
## Skills (
|
|
10
|
+
## Skills (223)
|
|
11
11
|
|
|
12
12
|
| kind | name | extra | description |
|
|
13
13
|
|---|---|---|---|
|
|
@@ -157,6 +157,7 @@ are excluded.
|
|
|
157
157
|
| skill | [`playwright-testing`](../.agent-src/skills/playwright-testing/SKILL.md) | | Use when writing Playwright E2E tests — browser automation, visual regression testing, Page Objects, fixtures, and reliable test patterns. |
|
|
158
158
|
| skill | [`po-discovery`](../.agent-src/skills/po-discovery/SKILL.md) | | Use when shaping a fuzzy product ask into a refined backlog item — problem framing, user-story rewrite, AC tightening — even if the user just says 'help me write this ticket'. |
|
|
159
159
|
| skill | [`positioning-strategy`](../.agent-src/skills/positioning-strategy/SKILL.md) | | Use when locking the market frame — category, segment, alternative, point-of-view — before messaging, launch, or pricing rides on it. Triggers on 'who are we for', 'opposable audit'. |
|
|
160
|
+
| skill | [`prediction-pool-optimizer`](../.agent-src/skills/prediction-pool-optimizer/SKILL.md) | | Optimize prediction-pool tips (kicktipp etc.): rules + multi-book consensus odds → expected-points-max answer for every question, scores AND bonus. Triggers 'optimize my pool tips', 'predict'. |
|
|
160
161
|
| skill | [`privacy-review`](../.agent-src/skills/privacy-review/SKILL.md) | | Use when reviewing data flows, support macros, refund templates for GDPR/CCPA/HIPAA fit — regime, consent, PII redaction (email, order-id), breach triage. Triggers 'is this GDPR-safe', 'PII redact'. |
|
|
161
162
|
| skill | [`project-analysis-core`](../.agent-src/skills/project-analysis-core/SKILL.md) | | Raw discovery primitives — project discovery, version resolution, docs loading, architecture mapping, execution flow. Called by `universal-project-analysis`. Single-pass scan → `project-analyzer`. |
|
|
162
163
|
| skill | [`project-analysis-hypothesis-driven`](../.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md) | | Use when a bug has multiple plausible causes across layers — competing hypotheses, validation loops, evidence-based conclusions — even when the user just says 'why is this happening?'. |
|
|
@@ -285,7 +286,7 @@ are excluded.
|
|
|
285
286
|
| rule | [`no-decorative-emojis-in-git-surfaces`](../.agent-src/rules/no-decorative-emojis-in-git-surfaces.md) | auto | Generating PR/issue/commit titles or PR/issue comments — forbids decorative emojis; allowed in PR/issue descriptions + commit bodies only when matched by an in-artifact legend |
|
|
286
287
|
| rule | [`no-pr-progress-comments`](../.agent-src/rules/no-pr-progress-comments.md) | auto | Posting comments on an open PR — refuses unsolicited progress / status / CI-fix narration unless personal.pr_progress_comments is true |
|
|
287
288
|
| rule | [`no-roadmap-references`](../.agent-src/rules/no-roadmap-references.md) | auto | Linking transient files (agents/roadmaps/, agents/runtime/council/*/) from a stable artifact — both layers expire; promote findings |
|
|
288
|
-
| rule | [`non-destructive-by-default`](../.agent-src/rules/non-destructive-by-default.md) | always |
|
|
289
|
+
| rule | [`non-destructive-by-default`](../.agent-src/rules/non-destructive-by-default.md) | always | Hard Floor: agent asks before prod-trunk commits/merges, deploys, pushes, prod data/infra, bulk deletions/infra commits; verify branch before each commit; no autonomy or roadmap bypass |
|
|
289
290
|
| rule | [`onboarding-gate`](../.agent-src/rules/onboarding-gate.md) | auto | First turn — if onboarding.onboarded is false in .agent-settings.yml, instruct dev to run `agent-config setup` before any request |
|
|
290
291
|
| rule | [`package-ci-checks`](../.agent-src/rules/package-ci-checks.md) | manual | Before pushing to remote or creating a PR in the agent-config package — run all CI checks locally first |
|
|
291
292
|
| rule | [`persona-governance`](../.agent-src/rules/persona-governance.md) | auto | Creating/editing/proposing personas — enforce per-domain cap (≤ 2 specialists), ≥ 1 skill citation, deprecation path |
|
|
@@ -317,7 +318,7 @@ are excluded.
|
|
|
317
318
|
| rule | [`user-interrupt-priority`](../.agent-src/rules/user-interrupt-priority.md) | always | User interrupts override the current task — STOP, complete new task in full, then ASK before resuming; never silently return to prior work |
|
|
318
319
|
| rule | [`verify-before-complete`](../.agent-src/rules/verify-before-complete.md) | always | Verify before completion — run tests and quality tools before claiming done |
|
|
319
320
|
|
|
320
|
-
## Commands (
|
|
321
|
+
## Commands (150)
|
|
321
322
|
|
|
322
323
|
| kind | name | cluster | description |
|
|
323
324
|
|---|---|---|---|
|
|
@@ -428,7 +429,12 @@ are excluded.
|
|
|
428
429
|
| command | [`post-as`](../.agent-src/commands/post-as.md) | cluster: post-as | Consumer-facing write entry points — :me drafts in the maintainer's own voice from .agent-user.md (no disclosure); :ghostwriter is a thin alias for /ghostwriter:write (mandatory disclosure footer). |
|
|
429
430
|
| command | [`post-as:ghostwriter`](../.agent-src/commands/post-as/ghostwriter.md) | cluster: post-as | Thin alias for /ghostwriter:write — drafts a copyable markdown post in a captured public-figure voice with the mandatory non-removable disclosure footer. |
|
|
430
431
|
| command | [`post-as:me`](../.agent-src/commands/post-as/me.md) | cluster: post-as | Draft a copyable markdown post in the maintainer's own voice (style source = .agent-user.md.voice_sample). No disclosure footer — the user is the author. |
|
|
432
|
+
| command | [`prediction-pool`](../.agent-src/commands/prediction-pool.md) | | Fill a prediction pool (kicktipp, football/basketball WM): optimize expected points under the rules, enter tips via Playwright. Triggers 'Tippspiel', 'kicktipp', 'predict the pool'. |
|
|
431
433
|
| command | [`prepare-for-review`](../.agent-src/commands/prepare-for-review.md) | | Prepare a PR branch for local review — updates main and merges the full branch chain so the branch is up to date |
|
|
434
|
+
| command | [`profile`](../.agent-src/commands/profile.md) | cluster: profile | Session-profile orchestrator — activate / deactivate / show the active packs for this session (recommendation-bias surface filter, no persistence) |
|
|
435
|
+
| command | [`profile:activate`](../.agent-src/commands/profile/activate.md) | cluster: profile | Activate a session profile — surface only the named profile/pack closure plus core artefacts, no persistence |
|
|
436
|
+
| command | [`profile:deactivate`](../.agent-src/commands/profile/deactivate.md) | cluster: profile | Deactivate the session profile — clear the overlay (or drop named packs) so the full surface returns |
|
|
437
|
+
| command | [`profile:show`](../.agent-src/commands/profile/show.md) | cluster: profile | Show the active session profile — active packs and surfaced/hidden command+skill counts (observability surface) |
|
|
432
438
|
| command | [`project-analyze`](../.agent-src/commands/project-analyze.md) | | Full project analysis — detect stack, inventory modules, audit docs, create missing contexts |
|
|
433
439
|
| command | [`project-health`](../.agent-src/commands/project-health.md) | | Quick project health check — show status of docs, modules, contexts, and roadmaps without creating anything |
|
|
434
440
|
| command | [`quality-fix`](../.agent-src/commands/quality-fix.md) | | Run quality pipeline (PHP and/or JS/TS) and fix all errors — auto-detects language from changed files |
|
|
@@ -445,7 +451,7 @@ are excluded.
|
|
|
445
451
|
| command | [`roadmap:process-phase`](../.agent-src/commands/roadmap/process-phase.md) | cluster: roadmap | Autonomously process every open step in the next or current phase of a roadmap, then stop. Default execution scope of the /roadmap cluster. |
|
|
446
452
|
| command | [`roadmap:process-step`](../.agent-src/commands/roadmap/process-step.md) | cluster: roadmap | Autonomously process the single next open step of a roadmap and stop. Smallest execution scope of the /roadmap cluster — one step in, one step out. |
|
|
447
453
|
| command | [`rule-compliance-audit`](../.agent-src/commands/rule-compliance-audit.md) | | Audit rule trigger quality, simulate activation, detect overlaps, and find never-activating rules |
|
|
448
|
-
| command | [`set-cost-profile`](../.agent-src/commands/set-cost-profile.md) | | Change the
|
|
454
|
+
| command | [`set-cost-profile`](../.agent-src/commands/set-cost-profile.md) | | Change the rule_loading_tier in .agent-settings.yml — shows each profile's meaning and applies the selection |
|
|
449
455
|
| command | [`skill`](../.agent-src/commands/skill.md) | cluster: skill | Single-skill orchestrator — routes to preview. Non-destructive "what will this skill do?" before you run it. |
|
|
450
456
|
| command | [`skill:preview`](../.agent-src/commands/skill/preview.md) | cluster: skill | Non-destructive preview of a skill — its declared steps, execution type, allowed tools, and file/command targets — before you run it. Read-only, no execution. |
|
|
451
457
|
| command | [`skills`](../.agent-src/commands/skills.md) | cluster: skills | Skill discovery orchestrator — routes to discover. Local, explained skill recommendations over the catalog + role shortlists + optional local analytics. |
|
|
@@ -38,7 +38,7 @@ stability: stable
|
|
|
38
38
|
- README "Quickstart" block — install → `/onboard` → `/work "first
|
|
39
39
|
real task"`, contributor detail moved below the `## For contributors`
|
|
40
40
|
fold.
|
|
41
|
-
- Default `
|
|
41
|
+
- Default `rule_loading_tier` flipped from `minimal` to `balanced`;
|
|
42
42
|
rationale in [`cost-profile-defaults.md`](cost-profile-defaults.md).
|
|
43
43
|
- `/onboard` step 11 prints the Quickstart command list inline.
|
|
44
44
|
- CI gate: `task smoke-quickstart` runs the installer into a tmpdir
|
|
@@ -55,6 +55,8 @@ column 1 of this table.
|
|
|
55
55
|
| `skill` | — | `preview` | new cluster 2026-05-30 (`road-to-leaner-core-and-discovery` Phase 5) — non-destructive skill/command preview: surfaces the declared steps + files/commands a skill would touch before it runs, per [`skill-dry-run`](skill-dry-run.md). Singular `skill` (one target) vs plural `skills` (the catalog) by design. |
|
|
56
56
|
| `image` | — | `analyse` · `create` · `verify` | new cluster 2026-05-31 (`road-to-character-image-fidelity` Phase 4) — character-image fidelity surface mirroring `/video:*`. `:analyse` extracts a per-feature spec from an image and diffs it against a Canon Spec down to the smallest mole (OCR for lettered tattoos, per-section severity scores, canon-breaking hard gate); `:create` assembles a max-fidelity anchors-first generation prompt from the Canon Spec, governance- + provider-gated, `AIV_DRYRUN=true` default; `:verify` runs the analyser in loop mode against a candidate and reports the gate verdict + remaining diff with plateau/oscillation/budget stop conditions. Skills: [`image-analyser`](../../skills/image-analyser/SKILL.md) + [`image-creator`](../../skills/image-creator/SKILL.md); schema/rubric/loop in [`canon-spec.md`](../../skills/image-analyser/canon-spec.md). |
|
|
57
57
|
|
|
58
|
+
| `profile` | — | `activate` · `deactivate` · `show` | new cluster 2026-06-02 (`road-to-session-profile-activation`) — session-profile activation: an ephemeral `runtime.active_packs` overlay that biases the surfaced command/skill set to the active pack closure, with no persistence and no execution-gating (recommendation-bias MVP). `:activate <name…>` resolves an alias (`config/discovery/session-profiles.yml`) or a raw pack id, fails fast on a not-installed pack, expands the `requires_hint` closure, and writes the overlay atomically to `agents/settings/.agent-settings.local.yml`; `:deactivate [name…]` clears it (or drops named packs, keeping deps a still-active pack needs); `:show` is the observability surface (active packs + surfaced/hidden counts). Overlay = runtime modulation of the existing `pack` axis, not a fifth axis (ADR-010 addendum). Library: `scripts/config/session_profiles.py`; schema in [`session-profile-overlay`](session-profile-overlay.md). |
|
|
59
|
+
|
|
58
60
|
**Net change:** Phase 1 collapsed 15 atomics → 3 clusters; Phase 2
|
|
59
61
|
collapses 26 atomics → 11 sub-command clusters. Sub-commands use
|
|
60
62
|
colon syntax (`/cluster:sub`) so Claude Code's command palette can
|
|
@@ -10,7 +10,7 @@ keep-beta-until: 2026-08-14
|
|
|
10
10
|
> Schema and semantics for the **Config Preset** axis introduced in
|
|
11
11
|
> step-15 Phase 1 item 4. Records the **Cost Enforcement** model
|
|
12
12
|
> (Council v3 action #3 prerequisite) so the preset loader can ship.
|
|
13
|
-
> Boundary against `profile.id`, `pack.id`, and `
|
|
13
|
+
> Boundary against `profile.id`, `pack.id`, and `rule_loading_tier`:
|
|
14
14
|
> [`ADR-010`](../decisions/ADR-010-profile-pack-preset-boundary.md).
|
|
15
15
|
|
|
16
16
|
## Decision
|
|
@@ -136,7 +136,7 @@ no other axis may write preset-owned knobs.
|
|
|
136
136
|
|
|
137
137
|
## Non-goals
|
|
138
138
|
|
|
139
|
-
- This contract does **not** define profiles, packs, or `
|
|
139
|
+
- This contract does **not** define profiles, packs, or `rule_loading_tier`.
|
|
140
140
|
See the corresponding contracts.
|
|
141
141
|
- It does **not** ship a UI. CLI-first (`agent-config cost`,
|
|
142
142
|
`agent-config preset set <id>`).
|
|
@@ -7,9 +7,9 @@ keep-beta-until: 2026-08-13
|
|
|
7
7
|
|
|
8
8
|
> **Status:** beta · **Owner:** package maintainer · **Last reviewed:** 2026-05-14
|
|
9
9
|
>
|
|
10
|
-
> Normative contract for the **default `
|
|
10
|
+
> Normative contract for the **default `rule_loading_tier`** new installs receive.
|
|
11
11
|
> Profile semantics themselves are documented in
|
|
12
|
-
> [`docs/customization.md` §
|
|
12
|
+
> [`docs/customization.md` § rule_loading_tier](../customization.md) and
|
|
13
13
|
> [`docs/contracts/rule-router.md`](rule-router.md); this file owns only the
|
|
14
14
|
> **default-selection decision** and the rationale behind it.
|
|
15
15
|
|
|
@@ -20,7 +20,7 @@ DEFAULT_PROFILE = "balanced"
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
`scripts/install.py` and `npx @event4u/agent-config init` write
|
|
23
|
-
`
|
|
23
|
+
`rule_loading_tier: balanced` into `.agent-settings.yml` for fresh installs
|
|
24
24
|
unless the user passes `--profile=minimal` or `--profile=full`.
|
|
25
25
|
|
|
26
26
|
## Profile table
|
|
@@ -64,7 +64,7 @@ at `balanced`:
|
|
|
64
64
|
Token-budget pressure → flip in `.agent-settings.yml`:
|
|
65
65
|
|
|
66
66
|
```yaml
|
|
67
|
-
|
|
67
|
+
rule_loading_tier: minimal
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
…or pass `--profile=minimal` to `npx @event4u/agent-config init`.
|
|
@@ -77,7 +77,7 @@ CI must keep three surfaces in sync:
|
|
|
77
77
|
|
|
78
78
|
- `scripts/install.py` — `DEFAULT_PROFILE` constant.
|
|
79
79
|
- `config/agent-settings.template.yml` — comment block on the
|
|
80
|
-
`
|
|
80
|
+
`rule_loading_tier:` key.
|
|
81
81
|
- `docs/customization.md` — cost-profile table default column.
|
|
82
82
|
|
|
83
83
|
Reviewer guidance: a PR that changes any one of these must touch the
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"product-basic", "product-discovery",
|
|
65
65
|
"finance-basic", "finance-advanced",
|
|
66
66
|
"gtm-sales", "gtm-marketing",
|
|
67
|
-
"ops-people", "founder-strategy", "small-business", "construction", "ai-video", "meta"
|
|
67
|
+
"ops-people", "founder-strategy", "small-business", "construction", "ai-video", "fun", "meta"
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
70
|
"lifecycle": {
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
},
|
|
43
43
|
"inputs": {
|
|
44
44
|
"type": ["object", "null"],
|
|
45
|
-
"description": "Profile / preset /
|
|
46
|
-
"required": ["profile", "preset", "
|
|
45
|
+
"description": "Profile / preset / rule_loading_tier resolution chain. Null when the loader could not resolve any of them (broken settings).",
|
|
46
|
+
"required": ["profile", "preset", "rule_loading_tier", "source_per_knob"],
|
|
47
47
|
"additionalProperties": false,
|
|
48
48
|
"properties": {
|
|
49
49
|
"profile": {"type": ["string", "null"]},
|
|
50
50
|
"preset": {"type": ["string", "null"]},
|
|
51
|
-
"
|
|
51
|
+
"rule_loading_tier": {"type": ["string", "null"]},
|
|
52
52
|
"source_per_knob": {
|
|
53
53
|
"type": "object",
|
|
54
54
|
"description": "Map<knob, source>; source ∈ pack | profile | preset | user | env | runtime | default.",
|
|
@@ -88,14 +88,22 @@ counts and ids for downstream metrics.
|
|
|
88
88
|
|
|
89
89
|
## Cadence interaction
|
|
90
90
|
|
|
91
|
-
|
|
|
91
|
+
| `memory.cadence` | Visibility line |
|
|
92
92
|
|---|---|
|
|
93
|
-
| `
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
93
|
+
| `auto` | suppress unless `asks ≥ 3` |
|
|
94
|
+
| `always` | always when `asks ≥ 1` |
|
|
95
|
+
| `never` | suppress entirely |
|
|
96
|
+
|
|
97
|
+
Cadence lookup respects `.agent-settings.yml`'s `memory.cadence` key.
|
|
98
|
+
Default is `always`. The legacy `memory.visibility: off` master switch
|
|
99
|
+
(above) still wins over any `memory.cadence` value.
|
|
100
|
+
|
|
101
|
+
> **History.** Before the 2026-06-01 `cost_profile` untangle this
|
|
102
|
+
> cadence was keyed off `cost_profile` with the values
|
|
103
|
+
> `lean | standard | verbose` — a collision with the rule-loading
|
|
104
|
+
> `cost_profile` (`minimal | balanced | full`) that made the `lean`
|
|
105
|
+
> branch unreachable on every real install. The cadence now owns its
|
|
106
|
+
> own `memory.cadence` key.
|
|
99
107
|
|
|
100
108
|
## End-of-run "Memory changed decisions" block
|
|
101
109
|
|
|
@@ -11,7 +11,7 @@ keep-beta-until: 2026-08-14
|
|
|
11
11
|
> Phase 1 item 1. Profile answers *who is the user?* — audience
|
|
12
12
|
> taxonomy that selects the default skill/command surface, README
|
|
13
13
|
> entry-paragraph, and persona pre-selection. Boundary against
|
|
14
|
-
> `preset.id`, `pack.id`, and `
|
|
14
|
+
> `preset.id`, `pack.id`, and `rule_loading_tier`:
|
|
15
15
|
> [`ADR-010`](../decisions/ADR-010-profile-pack-preset-boundary.md).
|
|
16
16
|
|
|
17
17
|
## Decision
|
|
@@ -128,7 +128,7 @@ Only changes to the **seed set** require an ADR.
|
|
|
128
128
|
- This contract does **not** define preset knobs. See
|
|
129
129
|
[`config-presets.md`](config-presets.md).
|
|
130
130
|
- It does **not** define packs. See `workflow-packs.md` (Phase 2 item 7).
|
|
131
|
-
- It does **not** override `
|
|
131
|
+
- It does **not** override `rule_loading_tier`. The rule-tier loader keeps
|
|
132
132
|
its independent axis per
|
|
133
133
|
[`cost-profile-defaults.md`](cost-profile-defaults.md).
|
|
134
134
|
- It does **not** ship a UI. Profile selection happens in `/onboard`
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: beta
|
|
3
|
+
keep-beta-until: 2026-09-02
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Session-profile overlay — contract
|
|
7
|
+
|
|
8
|
+
> **Status:** beta · **Owner:** package maintainer · **Last reviewed:** 2026-06-02
|
|
9
|
+
>
|
|
10
|
+
> Schema and semantics for the `runtime.active_packs` overlay shipped by the
|
|
11
|
+
> `/profile` command cluster. The overlay lets a developer activate a
|
|
12
|
+
> profile for the **current session** so only the matching packs'
|
|
13
|
+
> commands/skills are the surfaced set, then switch freely without
|
|
14
|
+
> persisting the choice. Locked decisions: the session-profile-activation
|
|
15
|
+
> roadmap Phase 0. Axis boundary: the
|
|
16
|
+
> [ADR-010 addendum](../decisions/ADR-010-profile-pack-preset-boundary.md).
|
|
17
|
+
|
|
18
|
+
## Decision
|
|
19
|
+
|
|
20
|
+
The overlay is an **ephemeral, runtime modulation of the `pack` axis** — an
|
|
21
|
+
instance of the resolution chain's existing
|
|
22
|
+
`… → user/env/runtime overrides` link. It is **not** a fifth axis.
|
|
23
|
+
|
|
24
|
+
It selects which already-installed packs are *surfaced* this session; it
|
|
25
|
+
never installs, never persists, never gates execution.
|
|
26
|
+
|
|
27
|
+
## On-disk shape
|
|
28
|
+
|
|
29
|
+
Written to `agents/settings/.agent-settings.local.yml` (gitignored,
|
|
30
|
+
deepest-winning cascade layer) — **never** the committed `.agent-settings.yml`.
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
runtime:
|
|
34
|
+
active_packs: [engineering-base, laravel, php] # expanded closure, sorted
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- `runtime.active_packs` — a list of installed pack ids: the transitive
|
|
38
|
+
`requires_hint` closure of the activated profile/pack seed set.
|
|
39
|
+
- Absent / empty / wrong-type → **no overlay** (full surface).
|
|
40
|
+
|
|
41
|
+
## Activatable tokens
|
|
42
|
+
|
|
43
|
+
`/profile activate <name…>` accepts, for each name:
|
|
44
|
+
|
|
45
|
+
1. a **session-profile alias** from `config/discovery/session-profiles.yml`
|
|
46
|
+
(`developer`, `po`, `finance`, `gtm`, `content`) → its seed pack list, or
|
|
47
|
+
2. a **raw pack id** from `config/discovery/packs.yml` (`laravel`, `php`, …).
|
|
48
|
+
|
|
49
|
+
Multiple names union their closures. The seed set's transitive
|
|
50
|
+
`requires_hint` closure is expanded before writing. **Only installed packs
|
|
51
|
+
are activatable** — a not-installed seed pack fails fast (exit 2). Installed
|
|
52
|
+
set = the top-level `packs:` block in settings, or the full vocabulary when
|
|
53
|
+
no block is present (maintainer repo / base-only install).
|
|
54
|
+
|
|
55
|
+
## Surface filter (recommendation-bias)
|
|
56
|
+
|
|
57
|
+
For each `command` / `skill` artefact in `dist/discovery/discovery-manifest.json`:
|
|
58
|
+
|
|
59
|
+
- **always surfaced** when it is **core-trust** (`trust.level == "core"`) or
|
|
60
|
+
unscoped (no `packs`);
|
|
61
|
+
- otherwise **surfaced iff** `packs ∩ active_packs ≠ ∅`;
|
|
62
|
+
- **no overlay → everything surfaced.**
|
|
63
|
+
|
|
64
|
+
Execution is **never gated**: an inactive-pack artefact still runs, with a
|
|
65
|
+
one-line "from inactive pack X" notice. Hard execution-gating is deferred
|
|
66
|
+
(host-dependent — see
|
|
67
|
+
[`session-host-capability-audit`](../../agents/settings/contexts/session-host-capability-audit.md)).
|
|
68
|
+
|
|
69
|
+
## Lifecycle (locked: option a)
|
|
70
|
+
|
|
71
|
+
- **Activate / switch / deactivate** are explicit `/profile` sub-commands.
|
|
72
|
+
- The overlay **survives an IDE restart** (task-scoped). A new session emits
|
|
73
|
+
a **staleness notice** via the `profile-staleness` `session_start` hook —
|
|
74
|
+
it never silently resets (the registry-refresh Catch-22).
|
|
75
|
+
- **Kill-switch:** delete `runtime.active_packs` (or the local file).
|
|
76
|
+
|
|
77
|
+
## Robustness invariants
|
|
78
|
+
|
|
79
|
+
- **Fail-open read** — a corrupt / unparseable / schema-invalid overlay is
|
|
80
|
+
ignored; the full surface returns. A misconfigured overlay never hides
|
|
81
|
+
artefacts.
|
|
82
|
+
- **Atomic write** — the helper writes via a temp file + `os.replace`, so a
|
|
83
|
+
concurrent reader never sees a half-written overlay.
|
|
84
|
+
- **Closure self-heal** — a closure dependency that is not installed is
|
|
85
|
+
dropped from the written set with a note, never blocking activation.
|
|
86
|
+
|
|
87
|
+
## Reconciliation with the existing `--profile=<id>` install flag
|
|
88
|
+
|
|
89
|
+
The install/CLI flag `--profile=<minimal|balanced|full>`
|
|
90
|
+
(`scripts/install.py`) is a **legacy alias for `rule_loading_tier`** — it
|
|
91
|
+
sets the rule-loading cost tier, not an audience profile. The word
|
|
92
|
+
"profile" is overloaded across three distinct, orthogonal things; this
|
|
93
|
+
command does **not** add a fourth meaning:
|
|
94
|
+
|
|
95
|
+
| Surface | What it sets | Axis | Persists? |
|
|
96
|
+
|---|---|---|---|
|
|
97
|
+
| `install --profile=<minimal\|balanced\|full>` | `rule_loading_tier` (cost tier) | rule_loading_tier | yes |
|
|
98
|
+
| `profile.id` in settings (`founder`/`developer`/…) | audience identity → default surface + personas ([`profile-system`](profile-system.md)) | profile | yes |
|
|
99
|
+
| **`/profile activate <name>`** (this command) | `runtime.active_packs` — which installed packs are *surfaced* this session | pack (runtime overlay) | **no** |
|
|
100
|
+
|
|
101
|
+
The session overlay answers *which installed packs are surfaced right now?*.
|
|
102
|
+
It does **not** change `rule_loading_tier`, does **not** change
|
|
103
|
+
`profile.id`, and writes only the gitignored local file. The naming
|
|
104
|
+
collision is pre-existing; the overlay deliberately keeps to the `pack`
|
|
105
|
+
axis (ADR-010 addendum) so it adds no new axis despite sharing the word.
|
|
106
|
+
|
|
107
|
+
## Implementation
|
|
108
|
+
|
|
109
|
+
- Library + CLI: `scripts/config/session_profiles.py`
|
|
110
|
+
(`activate` · `deactivate` · `show` · `surface` · `stale-notice`).
|
|
111
|
+
- Aliases: `config/discovery/session-profiles.yml`.
|
|
112
|
+
- Hook: `scripts/profile_staleness_hook.py` (session_start staleness notice).
|
|
113
|
+
- Tests: `tests/test_session_profiles.py`.
|
|
114
|
+
|
|
115
|
+
## See also
|
|
116
|
+
|
|
117
|
+
- [`ADR-010 addendum`](../decisions/ADR-010-profile-pack-preset-boundary.md) — overlay ≠ fifth axis.
|
|
118
|
+
- [`profile-system`](profile-system.md) — the profile (audience) axis the overlay is reconciled against.
|
|
119
|
+
- [`command-clusters`](command-clusters.md) — the `/profile` cluster registration.
|
|
120
|
+
- [`session-host-capability-audit`](../../agents/settings/contexts/session-host-capability-audit.md) — why hard-gating + true session-reset are deferred.
|
|
@@ -58,7 +58,7 @@ defaults (config/agent-settings.template.yml)
|
|
|
58
58
|
< project (<projectRoot>/settings/.agent-settings.yml, optional)
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
Defaults come from the package template with `
|
|
61
|
+
Defaults come from the package template with `__RULE_LOADING_TIER__` /
|
|
62
62
|
`__USER_TYPE__` placeholders substituted for their permissive defaults
|
|
63
63
|
(`balanced` / `""`). Global and project layers are read with the typed
|
|
64
64
|
subdir preferred over the legacy flat path. The route mirrors
|
|
@@ -69,7 +69,7 @@ Response (200):
|
|
|
69
69
|
|
|
70
70
|
```json
|
|
71
71
|
{
|
|
72
|
-
"values": { "
|
|
72
|
+
"values": { "rule_loading_tier": "balanced", "...": "..." },
|
|
73
73
|
"lastModified": 1747749791842,
|
|
74
74
|
"path": "settings/.agent-settings.yml",
|
|
75
75
|
"legacyHints": { "user_name": "Matze" }
|
|
@@ -106,7 +106,7 @@ changes** modal. Request:
|
|
|
106
106
|
}
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
Response (200): `{ "changes": [{ "path": "
|
|
109
|
+
Response (200): `{ "changes": [{ "path": "rule_loading_tier", "from": "minimal", "to": "balanced" }, ...] }`.
|
|
110
110
|
|
|
111
111
|
Errors: **409** on mtime drift; **422** on validation failure (`fields`
|
|
112
112
|
populated).
|
|
@@ -49,9 +49,13 @@ cost_ladder:
|
|
|
49
49
|
token_delta: <signed int> # per-request input token delta
|
|
50
50
|
eur_delta: <float> # priced at reference_scale
|
|
51
51
|
cumulative_pct: <signed float> # % of baseline.input_tokens_per_request
|
|
52
|
-
confidence: measured | estimated | vendor-claim | pending
|
|
52
|
+
confidence: measured | estimated | vendor-claim | pending | available
|
|
53
53
|
source_report: <relative path> # raw report this was derived from
|
|
54
54
|
footnote: "<optional caveat>" # e.g. "Thin-Root files excluded"
|
|
55
|
+
- id: thin
|
|
56
|
+
... # the thin-projection lever; ships behind
|
|
57
|
+
... # the lean_projection.mode kill-switch
|
|
58
|
+
... # (default eager-all) → confidence: available
|
|
55
59
|
- id: condense
|
|
56
60
|
...
|
|
57
61
|
- id: rtk
|
|
@@ -127,6 +131,15 @@ the cumulative (its raw value is the renderer's best guess from the
|
|
|
127
131
|
raw report; it MUST NOT influence the headline until it flips to
|
|
128
132
|
`measured`).
|
|
129
133
|
|
|
134
|
+
A rung with `confidence: available` is **measured** but ships behind a
|
|
135
|
+
default-off kill-switch (e.g. the `thin` rung gated on
|
|
136
|
+
`lean_projection.mode`, default `eager-all`). Its measured `token_delta`
|
|
137
|
+
is displayed, but — like `pending` — it contributes `0` to the default
|
|
138
|
+
cumulative / NETTO: the headline reflects what actually ships by default,
|
|
139
|
+
not the best achievable after an opt-in flip. The footnote states the
|
|
140
|
+
would-be total and the validation state. Only `measured`, `estimated`,
|
|
141
|
+
and `vendor-claim` rungs count toward the cumulative.
|
|
142
|
+
|
|
130
143
|
## Markdown shape (informational human dump)
|
|
131
144
|
|
|
132
145
|
The `.md` sibling of every `value-v1.json` is informational — a
|
package/docs/customization.md
CHANGED
|
@@ -63,7 +63,7 @@ mergeable from the user-global file; every other key is silently ignored:
|
|
|
63
63
|
```
|
|
64
64
|
name
|
|
65
65
|
ide
|
|
66
|
-
|
|
66
|
+
rule_loading_tier
|
|
67
67
|
personal.bot_icon
|
|
68
68
|
personal.autonomy
|
|
69
69
|
telegraph.speak_scope
|
|
@@ -95,7 +95,7 @@ user-global layer. Non-root in-project layers (intermediate +
|
|
|
95
95
|
``<CWD>``) carry arbitrary keys — they live inside the project
|
|
96
96
|
boundary, are tracked in git, and reviewed in PRs like any other
|
|
97
97
|
config. Use a subdirectory `.agent-settings.yml` to scope a single
|
|
98
|
-
field (e.g. a `
|
|
98
|
+
field (e.g. a `rule_loading_tier` override for `services/heavy-ml/`) without
|
|
99
99
|
duplicating the root file.
|
|
100
100
|
|
|
101
101
|
The user-global file is created **only on explicit opt-in via the
|
|
@@ -169,7 +169,7 @@ is recovered on the next server boot.
|
|
|
169
169
|
| Setting | Default | Description |
|
|
170
170
|
|---|---|---|
|
|
171
171
|
| `agent_config_version` | *(empty)* | Exact semver pin of the agent-config release (see above). Empty = unpinned. |
|
|
172
|
-
| `
|
|
172
|
+
| `rule_loading_tier` | `balanced` | Token budget (`minimal`, `balanced`, `full`, `custom`) — rationale: [`docs/contracts/cost-profile-defaults.md`](contracts/cost-profile-defaults.md) |
|
|
173
173
|
| `personal.user_name` | *(empty)* | User's first name for personalized responses |
|
|
174
174
|
| `personal.minimal_output` | `true` | Suppress intermediate output |
|
|
175
175
|
| `personal.play_by_play` | `false` | Share intermediate findings during analysis |
|
|
@@ -202,7 +202,23 @@ if the key file's permissions drift.
|
|
|
202
202
|
|
|
203
203
|
### Cost profiles
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
> **Four "cost" concepts — don't confuse them.** Several settings sound like
|
|
206
|
+
> they steer spend; only one is the rule-loading footprint:
|
|
207
|
+
>
|
|
208
|
+
> | Concept | What it controls | What it's a lever for |
|
|
209
|
+
> |---|---|---|
|
|
210
|
+
> | `rule_loading_tier` *(this setting)* | How many behavioural rule tiers load each session | Token footprint of the rule layer (small, ~once per session) |
|
|
211
|
+
> | `memory.cadence` | Whether the `🧠 Memory: …` visibility line renders (`auto`/`always`/`never`) | Output noise — **not** spend |
|
|
212
|
+
> | `model.auto_switch` + a skill's `model_tier` | Which Claude model runs a skill (lite/medium/high → haiku/sonnet/opus) | The **dominant** per-turn spend lever (~10× delta) |
|
|
213
|
+
> | `/cost:report` + `cost.budgets` | Tracking actual token/USD spend + optional ceilings | Budget enforcement |
|
|
214
|
+
>
|
|
215
|
+
> Before the 2026-06-01 untangle, `rule_loading_tier` was named `cost_profile`
|
|
216
|
+
> **and** the same key also carried the `memory.cadence` values — one key, two
|
|
217
|
+
> colliding meanings. The rename split them so each lever owns its name. When
|
|
218
|
+
> a budget is tight, reach for the **model** lever first — lowering the rule
|
|
219
|
+
> tier saves little and drops guardrails.
|
|
220
|
+
|
|
221
|
+
`rule_loading_tier` is the master switch for rule-tier loading. The kernel
|
|
206
222
|
(always-loaded Iron-Law floor, ≤ 26k chars across 9 rules) ships in every
|
|
207
223
|
profile. Tier-1 and tier-2 rules are gated by profile and resolved at
|
|
208
224
|
session start from `dist/router.json` (compiled by `scripts/compile_router.py`).
|
|
@@ -413,6 +429,32 @@ packs at install time via `npx @event4u/agent-config install` and the
|
|
|
413
429
|
resulting `.agent-settings.yml` records which packs the project opted
|
|
414
430
|
into.
|
|
415
431
|
|
|
432
|
+
### Session profiles — surface one audience for the current session
|
|
433
|
+
|
|
434
|
+
Install every pack once, then **activate a profile per session** so only
|
|
435
|
+
the matching packs' commands/skills are the surfaced set:
|
|
436
|
+
|
|
437
|
+
- `/profile activate laravel` — surface the Laravel closure
|
|
438
|
+
(`laravel` + `php` + `engineering-base`) + core artefacts; everything
|
|
439
|
+
else is hidden from `/help` and the skill surface.
|
|
440
|
+
- `/profile activate po` — switch to the product-owner surface.
|
|
441
|
+
- `/profile show` — active packs + surfaced/hidden counts.
|
|
442
|
+
- `/profile deactivate` — full surface returns.
|
|
443
|
+
|
|
444
|
+
The activatable name is a session-profile alias
|
|
445
|
+
(`config/discovery/session-profiles.yml`: `developer`, `po`, `finance`,
|
|
446
|
+
`gtm`, `content`) or a raw pack id. It is **recommendation-bias only** —
|
|
447
|
+
an inactive-pack command still runs (with a one-line notice); execution is
|
|
448
|
+
never blocked. The choice is **ephemeral**: it writes
|
|
449
|
+
`runtime.active_packs` to the gitignored `agents/settings/.agent-settings.local.yml`,
|
|
450
|
+
never the committed config, and is cleared with `/profile deactivate`.
|
|
451
|
+
A new session emits a staleness reminder if a profile is still active.
|
|
452
|
+
|
|
453
|
+
This is a runtime view over the existing **pack** axis, not a new axis,
|
|
454
|
+
and is unrelated to the install `--profile=<minimal|balanced|full>` flag
|
|
455
|
+
(which sets `rule_loading_tier`). Full contract:
|
|
456
|
+
[`session-profile-overlay`](contracts/session-profile-overlay.md).
|
|
457
|
+
|
|
416
458
|
---
|
|
417
459
|
|
|
418
460
|
## Update check
|
|
@@ -497,7 +539,7 @@ Sample Markdown output:
|
|
|
497
539
|
- [x] api-rate-limit-is-100rpm — accepted in step `refine`
|
|
498
540
|
```
|
|
499
541
|
|
|
500
|
-
Disable for `
|
|
542
|
+
Disable for `rule_loading_tier: minimal` CI runs by setting `explain.enable_last: false`
|
|
501
543
|
in `.agent-settings.yml`; the command then exits 0 with a one-line
|
|
502
544
|
notice instead of producing a trace. Exit codes: `0` rendered or
|
|
503
545
|
disabled · `1` no recent run found · `2` invocation error.
|