@event4u/agent-config 8.9.0 → 8.11.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +189 -0
- package/README.md +5 -5
- package/dist/agent-src/commands/challenge-me/vision.md +121 -32
- package/dist/agent-src/commands/challenge-me/with-docs.md +21 -8
- package/dist/agent-src/commands/commit/in-chunks.md +1 -1
- package/dist/agent-src/commands/commit.md +2 -1
- package/dist/agent-src/commands/cost/report.md +14 -3
- package/dist/agent-src/commands/feature/dev.md +4 -4
- package/dist/agent-src/commands/humanize.md +101 -0
- package/dist/agent-src/commands/jira-ticket.md +2 -2
- package/dist/agent-src/commands/memory/load.md +15 -0
- package/dist/agent-src/commands/optimize/project.md +12 -0
- package/dist/agent-src/commands/roadmap/create.md +12 -11
- package/dist/agent-src/commands/tests/create.md +29 -7
- package/dist/agent-src/commands/work.md +33 -0
- package/dist/agent-src/commands/worktree/cleanup.md +83 -0
- package/dist/agent-src/commands/worktree/create.md +64 -0
- package/dist/agent-src/commands/worktree/status.md +75 -0
- package/dist/agent-src/commands/worktree/verify.md +70 -0
- package/dist/agent-src/commands/worktree.md +85 -0
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +66 -0
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +1 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +91 -34
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +14 -0
- package/dist/agent-src/contexts/execution/roadmap-writing-source-derived.md +65 -0
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +84 -0
- package/dist/agent-src/rules/autonomous-execution.md +7 -37
- package/dist/agent-src/rules/broken-access-control.md +7 -45
- package/dist/agent-src/rules/code-comment-discipline.md +148 -0
- package/dist/agent-src/rules/context-hygiene.md +14 -0
- package/dist/agent-src/rules/delegation-policy.md +10 -8
- package/dist/agent-src/rules/design-fidelity.md +44 -0
- package/dist/agent-src/rules/git-history-discipline.md +4 -79
- package/dist/agent-src/rules/legal-safety-floor.md +11 -55
- package/dist/agent-src/rules/roadmap-progress-sync.md +5 -56
- package/dist/agent-src/rules/spreadsheet-source-quality.md +61 -0
- package/dist/agent-src/rules/think-before-action.md +10 -0
- package/dist/agent-src/rules/verify-before-complete.md +12 -0
- package/dist/agent-src/skills/accessibility-auditor/evals/evals.json +15 -0
- package/dist/agent-src/skills/agent-docs-writing/SKILL.md +13 -12
- package/dist/agent-src/skills/ai-council/SKILL.md +19 -9
- package/dist/agent-src/skills/analysis-skill-router/evals/evals.json +13 -0
- package/dist/agent-src/skills/api-design/SKILL.md +7 -5
- package/dist/agent-src/skills/api-testing/SKILL.md +16 -2
- package/dist/agent-src/skills/authz-review/SKILL.md +59 -2
- package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +19 -16
- package/dist/agent-src/skills/character-consistency/evals/evals.json +16 -0
- package/dist/agent-src/skills/code-refactoring/SKILL.md +9 -9
- package/dist/agent-src/skills/command-routing/evals/evals.json +14 -0
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -0
- package/dist/agent-src/skills/dashboard-design/evals/evals.json +16 -0
- package/dist/agent-src/skills/data-flow-mapper/SKILL.md +1 -1
- package/dist/agent-src/skills/dcf-modeling/evals/evals.json +20 -0
- package/dist/agent-src/skills/decision-record/evals/evals.json +20 -0
- package/dist/agent-src/skills/defense-in-depth/SKILL.md +2 -2
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +7 -7
- package/dist/agent-src/skills/design-intelligence/SKILL.md +8 -8
- package/dist/agent-src/skills/design-intelligence/evals/evals.json +14 -0
- package/dist/agent-src/skills/design-review/SKILL.md +29 -2
- package/dist/agent-src/skills/design-system-capture/SKILL.md +21 -0
- package/dist/agent-src/skills/design-system-capture/evals/evals.json +15 -0
- package/dist/agent-src/skills/developer-like-execution/evals/evals.json +16 -0
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +29 -0
- package/dist/agent-src/skills/doc-coauthoring/evals/evals.json +16 -0
- package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -0
- package/dist/agent-src/skills/editorial-calendar/evals/domain-truth.json +16 -0
- package/dist/agent-src/skills/editorial-calendar/evals/evals.json +16 -0
- package/dist/agent-src/skills/estimate-ticket/evals/evals.json +16 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +30 -0
- package/dist/agent-src/skills/existing-ui-audit/evals/triggers.json +47 -0
- package/dist/agent-src/skills/fe-design/SKILL.md +43 -14
- package/dist/agent-src/skills/fe-design/evals/triggers.json +47 -0
- package/dist/agent-src/skills/forecasting/evals/evals.json +20 -0
- package/dist/agent-src/skills/fundraising-narrative/evals/domain-truth.json +16 -0
- package/dist/agent-src/skills/fundraising-narrative/evals/evals.json +16 -0
- package/dist/agent-src/skills/git-workflow/SKILL.md +86 -0
- package/dist/agent-src/skills/html-deck/SKILL.md +27 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +147 -0
- package/dist/agent-src/skills/humanizer/data/patterns.md +190 -0
- package/dist/agent-src/skills/humanizer/evals/triggers.json +17 -0
- package/dist/agent-src/skills/iconography/SKILL.md +24 -0
- package/dist/agent-src/skills/incident-commander/evals/domain-truth.json +16 -0
- package/dist/agent-src/skills/incident-commander/evals/evals.json +20 -0
- package/dist/agent-src/skills/laravel/SKILL.md +14 -1
- package/dist/agent-src/skills/launch-readiness/SKILL.md +20 -19
- package/dist/agent-src/skills/launch-readiness/evals/evals.json +21 -0
- package/dist/agent-src/skills/legal-practice-profile/SKILL.md +126 -0
- package/dist/agent-src/skills/logging-monitoring/SKILL.md +1 -1
- package/dist/agent-src/skills/logging-monitoring/evals/evals.json +16 -0
- package/dist/agent-src/skills/mcp/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +14 -1
- package/dist/agent-src/skills/messaging-architecture/evals/domain-truth.json +16 -0
- package/dist/agent-src/skills/messaging-architecture/evals/evals.json +16 -0
- package/dist/agent-src/skills/migration-architect/SKILL.md +2 -1
- package/dist/agent-src/skills/perf-feedback-craft/evals/evals.json +16 -0
- package/dist/agent-src/skills/performance/SKILL.md +1 -1
- package/dist/agent-src/skills/pest-testing/SKILL.md +1 -1
- package/dist/agent-src/skills/php-debugging/SKILL.md +17 -0
- package/dist/agent-src/skills/playwright-testing/SKILL.md +16 -0
- package/dist/agent-src/skills/prompt-engineering-patterns/evals/evals.json +16 -0
- package/dist/agent-src/skills/readme-writing/SKILL.md +2 -0
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -0
- package/dist/agent-src/skills/refine-prompt/evals/evals.json +16 -0
- package/dist/agent-src/skills/refine-ticket/evals/evals.json +16 -0
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -0
- package/dist/agent-src/skills/release-comms/evals/evals.json +16 -0
- package/dist/agent-src/skills/rice-prioritization/evals/evals.json +20 -0
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +22 -51
- package/dist/agent-src/skills/runway-cognition/evals/evals.json +20 -0
- package/dist/agent-src/skills/scenario-modeling/evals/evals.json +20 -0
- package/dist/agent-src/skills/security-audit/SKILL.md +6 -9
- package/dist/agent-src/skills/sentry-integration/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +8 -0
- package/dist/agent-src/skills/source-discovery/SKILL.md +26 -24
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +98 -0
- package/dist/agent-src/skills/spreadsheet-authoring/evals/triggers.json +47 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +55 -46
- package/dist/agent-src/skills/subagent-orchestration/evals/evals.json +42 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +10 -0
- package/dist/agent-src/skills/systematic-debugging/evals/evals.json +20 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +118 -0
- package/dist/agent-src/skills/test-case-discovery/evals/triggers.json +52 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +32 -6
- package/dist/agent-src/skills/test-driven-development/evals/evals.json +16 -0
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +7 -6
- package/dist/agent-src/skills/threat-modeling/evals/evals.json +21 -0
- package/dist/agent-src/skills/typography-system/evals/evals.json +14 -0
- package/dist/agent-src/skills/unit-economics-modeling/evals/evals.json +24 -0
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +10 -0
- package/dist/agent-src/skills/verify-completion-evidence/evals/evals.json +16 -0
- package/dist/agent-src/skills/vision-articulation/evals/evals.json +16 -0
- package/dist/agent-src/skills/voice-and-tone-design/evals/evals.json +16 -0
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +187 -0
- package/dist/agent-src/skills/worktree-lifecycle/evals/evals.json +38 -0
- package/dist/agent-src/skills/worktree-lifecycle/evals/triggers.json +52 -0
- package/dist/agent-src/templates/agent-settings.md +3 -2
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +15 -1
- package/dist/agent-src/templates/roadmaps.md +14 -0
- package/dist/cli/commands/recordTriggerEval.js +4 -14
- package/dist/cli/commands/recordTriggerEval.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +374 -88
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +9 -9
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +30 -18
- package/dist/discovery/trust-report.md +5 -5
- package/dist/discovery/workspaces.json +31 -15
- package/dist/install/install.mjs +12 -7
- package/dist/mcp/registry-manifest.json +4 -4
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/claude_settings_hooks.js +8 -0
- package/dist/scripts/_lib/claude_settings_hooks.js.map +1 -1
- package/dist/scripts/_lib/trigger_eval_floors.js +24 -0
- package/dist/scripts/_lib/trigger_eval_floors.js.map +1 -0
- package/dist/scripts/condense.js +12 -2
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +5 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/CLAIMS.md +24 -3
- package/docs/architecture.md +3 -3
- package/docs/benchmark.md +51 -0
- package/docs/catalog.md +23 -9
- package/docs/command-flows.md +7 -1
- package/docs/contracts/CHANGELOG-conventions.md +6 -0
- package/docs/contracts/ai-council-config.md +92 -0
- package/docs/contracts/command-clusters.md +1 -0
- package/docs/contracts/design-artifact-lifecycle.md +93 -0
- package/docs/contracts/design-artifact-verification.md +30 -1
- package/docs/contracts/evidence-based-pruning.md +1 -0
- package/docs/contracts/hook-architecture-v1.md +25 -0
- package/docs/contracts/kernel-membership.md +35 -0
- package/docs/contracts/measurement-baseline.md +1 -0
- package/docs/contracts/release-pr-gating.md +26 -0
- package/docs/contracts/release-sizing.md +107 -0
- package/docs/contracts/surface-agent-contracts.md +153 -0
- package/docs/contracts/write-engine.md +38 -1
- package/docs/customization.md +12 -0
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +11 -0
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +11 -0
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +1 -1
- package/docs/decisions/ADR-028-root-layout.md +1 -1
- package/docs/decisions/ADR-038-canonical-settings-path.md +10 -0
- package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +29 -5
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +1 -1
- package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +7 -0
- package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +2 -2
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +1 -1
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +11 -0
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +1 -1
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +11 -1
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +2 -1
- package/docs/decisions/ADR-118-loop-engineering-boundaries.md +162 -0
- package/docs/decisions/ADR-119-global-knowledge-default-on.md +104 -0
- package/docs/decisions/ADR-200-python-to-typescript-migration.md +11 -1
- package/docs/decisions/ADR-rule-kernel-and-router.md +11 -0
- package/docs/decisions/INDEX.md +11 -9
- package/docs/design/cross-model-parity-eval.md +82 -0
- package/docs/design/length-neutral-judge-rerun.md +92 -0
- package/docs/distribution/consumer-matrix.md +96 -0
- package/docs/featured-skills.md +2 -2
- package/docs/getting-started-by-role.md +1 -1
- package/docs/getting-started.md +2 -2
- package/docs/governance-advantage.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +80 -5
- package/docs/guidelines/code-clarity.md +106 -1
- package/docs/guidelines/design-antipatterns.md +20 -0
- package/docs/guidelines/php/php-coding-patterns.md +12 -2
- package/docs/proof.md +21 -15
- package/docs/release-runbook.md +3 -0
- package/docs/self-review-gate.md +51 -0
- package/docs/wedge/production-validator/production-validator.md +27 -0
- package/package.json +1 -1
- package/src/config/agent-settings.template.yml +29 -9
- package/src/scripts/_cli/cmd_doctor.ts +34 -1
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +87 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +8 -0
- package/src/scripts/_lib/knowledge_global.ts +6 -2
- package/src/scripts/_lib/knowledge_global_redaction.ts +42 -4
- package/src/scripts/_lib/lexical_index.ts +15 -2
- package/src/scripts/_lib/orchestration_record.ts +27 -0
- package/src/scripts/_lib/orchestration_savings.ts +52 -0
- package/src/scripts/_lib/trigger_eval_floors.ts +31 -0
- package/src/scripts/ai_council/chairman.ts +90 -0
- package/src/scripts/ai_council/clients.ts +18 -3
- package/src/scripts/ai_council/config.ts +157 -0
- package/src/scripts/ai_council/debate_gates.ts +89 -0
- package/src/scripts/ai_council/orchestrator.ts +65 -2
- package/src/scripts/ai_council/prompts.ts +121 -11
- package/src/scripts/ai_council/replay.ts +17 -0
- package/src/scripts/ai_council/stance_tally.ts +184 -0
- package/src/scripts/ai_tells_rules.ts +433 -0
- package/src/scripts/bench_humanizer_eval.ts +240 -0
- package/src/scripts/build_discovery_manifest.ts +6 -0
- package/src/scripts/build_proof.ts +21 -9
- package/src/scripts/check_claims.ts +40 -0
- package/src/scripts/check_release_adjacent_health.ts +121 -0
- package/src/scripts/check_rule_invariants.ts +282 -0
- package/src/scripts/condense.ts +16 -2
- package/src/scripts/consumer_matrix.ts +392 -0
- package/src/scripts/council_cli.ts +147 -0
- package/src/scripts/detect_ai_tells.ts +312 -0
- package/src/scripts/generate_index.ts +3 -2
- package/src/scripts/install.ts +12 -0
- package/src/scripts/knowledge_global_cli.ts +1 -1
- package/src/scripts/lint_changelog_rollback.ts +293 -0
- package/src/scripts/lint_framework_leakage.ts +88 -7
- package/src/scripts/lint_framework_leakage_allowlist.json +59 -572
- package/src/scripts/lint_knowledge_scale.ts +30 -0
- package/src/scripts/lint_originality_shingles.ts +210 -0
- package/src/scripts/orchestration_record.ts +17 -0
- package/src/scripts/orchestration_savings_report.ts +36 -3
- package/src/scripts/schemas/agent-settings.schema.json +11 -0
- package/src/scripts/second_brain_retrieval.ts +44 -2
- package/src/scripts/self_review_gate.test.ts +65 -0
- package/src/scripts/self_review_gate.ts +298 -0
- package/src/scripts/skill_eval_coverage.ts +71 -3
- package/src/scripts/skill_linter.ts +1 -0
- package/src/scripts/trigger_eval_grandfather.json +223 -224
- package/src/scripts/trigger_eval_rotation.ts +344 -0
- package/src/scripts/update_counts.ts +5 -17
- package/src/scripts/worktree_cleanup_check.ts +263 -0
- package/src/server/schemas/settings.ts +8 -3
- package/src/scripts/analysis_freshness.ts +0 -362
- package/src/scripts/export_replay_corpus.ts +0 -208
|
@@ -80,6 +80,27 @@ the feature-PR floor by adding:
|
|
|
80
80
|
| `release-validation.yml` (Phase B) | `release-shape` | shape detector — fails closed if diff exits the allowlist |
|
|
81
81
|
| `release-validation.yml` (Phase B) | `changelog-entry` | CHANGELOG carries an entry matching the head-branch version |
|
|
82
82
|
| `release-validation.yml` (Phase B) | `version-consistency` | `package.json` / `marketplace.json` / pack manifests agree on the version |
|
|
83
|
+
| `consumer-matrix.yml` | `consumer-matrix` · `publish-dry-run` · `mcp-worker-dry-run` · `plugin-bootstrap` | pack-based consumer E2E + pre-tag dry-runs of the release-adjacent workflows — see the exemption note below |
|
|
84
|
+
|
|
85
|
+
## Consumer-matrix exemption — the tarball window
|
|
86
|
+
|
|
87
|
+
The cut surface above rests on "release PRs cannot regress install or
|
|
88
|
+
runtime behaviour by construction". That argument covers the **source
|
|
89
|
+
diff** — it is blind to the **published tarball**. Every historical
|
|
90
|
+
packaging incident (tarball missing `src/install/` across two minors,
|
|
91
|
+
`tsx` absent from the package, npm-pin drift, the MCP worker deploy red
|
|
92
|
+
across five releases) entered `main` on ordinary PRs and manifested only
|
|
93
|
+
at publish time — exactly the window between merge and tag where nothing
|
|
94
|
+
pack-based ran.
|
|
95
|
+
|
|
96
|
+
[`consumer-matrix.yml`](../../.github/workflows/consumer-matrix.yml) is
|
|
97
|
+
therefore **exempt from the release-PR skip and runs ON release PRs** (its
|
|
98
|
+
primary trigger), packing the tarball and exercising it as a consumer,
|
|
99
|
+
plus dry-running `publish-npm.yml` and `deploy-mcp-worker.yml` before the
|
|
100
|
+
tag exists. Contract + counterfactual map:
|
|
101
|
+
[`docs/distribution/consumer-matrix.md`](../distribution/consumer-matrix.md).
|
|
102
|
+
The source-level skips above stay unchanged — the exemption adds the
|
|
103
|
+
tarball dimension, it does not reopen the source matrices.
|
|
83
104
|
|
|
84
105
|
## Rollback trigger — fail-closed
|
|
85
106
|
|
|
@@ -122,3 +143,8 @@ name alone never bypasses the heavy matrix.
|
|
|
122
143
|
release-branch naming convention.
|
|
123
144
|
- [`ADR-113`](../decisions/ADR-113-ci-native-release-label-trigger.md) — the
|
|
124
145
|
CI-native (`release`-label) entry point into the same script.
|
|
146
|
+
- [`docs/distribution/consumer-matrix.md`](../distribution/consumer-matrix.md) —
|
|
147
|
+
pack-based consumer E2E; the documented exemption from the cut surface.
|
|
148
|
+
- [`release-sizing.md`](release-sizing.md) — release scope floor: one primary
|
|
149
|
+
goal per minor, `Rollback:` lines for new / reworked subsystems (gate:
|
|
150
|
+
`src/scripts/lint_changelog_rollback.ts`).
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: beta
|
|
3
|
+
keep-beta-until: 2026-09-10
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Release Sizing
|
|
7
|
+
|
|
8
|
+
> **Status:** active · v0 / beta · 2026-07-10. Governs how much a
|
|
9
|
+
> minor release may carry and what every shipped subsystem owes the
|
|
10
|
+
> reader: one primary goal, a disable path, and a named rollback.
|
|
11
|
+
> No version numbers appear here as commitments — this contract
|
|
12
|
+
> shapes releases, it does not schedule them.
|
|
13
|
+
|
|
14
|
+
## One primary product goal per minor release
|
|
15
|
+
|
|
16
|
+
Every minor release names **exactly one primary product goal** — the
|
|
17
|
+
one-sentence answer to "why does this release exist?". Secondary
|
|
18
|
+
changes may ride along, but the release notes lead with the primary
|
|
19
|
+
goal, and a release that cannot name one is not ready to cut.
|
|
20
|
+
Scope discipline, not a ratio: what qualifies is a judgment call the
|
|
21
|
+
maintainer makes when labeling the release PR
|
|
22
|
+
([`release-pr-gating.md`](release-pr-gating.md)).
|
|
23
|
+
|
|
24
|
+
### Primary goal declaration
|
|
25
|
+
|
|
26
|
+
Every release PR body carries one literal line:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Primary-Goal: <one sentence>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
A release bundling multiple major themes anyway annotates the
|
|
33
|
+
**exception + reason** in the release notes ("this release bundles N
|
|
34
|
+
themes because <reason>; future releases return to one primary goal").
|
|
35
|
+
The declaration keeps the norm visible and the exception deliberate.
|
|
36
|
+
|
|
37
|
+
Explicitly REJECTED (council, anthropic/claude-sonnet-4-5 +
|
|
38
|
+
openai/gpt-4o, 2026-07-10): a mechanical subsystem-count lint on the
|
|
39
|
+
release PR. A file→subsystem map is its own maintenance burden, and
|
|
40
|
+
changed-file counts are a bad proxy for scope (a one-line kernel change
|
|
41
|
+
has a larger blast radius than 50 lines in a niche skill). Sizing stays
|
|
42
|
+
a norm enforced by declaration + human judgment; if the maintainer
|
|
43
|
+
wrote a nine-theme release, the maintainer already judged it — the
|
|
44
|
+
header makes that judgment explicit, not automatic.
|
|
45
|
+
|
|
46
|
+
## Major subsystems are independently disableable where feasible
|
|
47
|
+
|
|
48
|
+
A major subsystem shipped or substantially reworked in a release is
|
|
49
|
+
**independently disableable** where feasible — a settings key in
|
|
50
|
+
`.agent-settings.yml`, a pack that can stay uninstalled, or an
|
|
51
|
+
explicit opt-in flag. The release notes **name the flag / config
|
|
52
|
+
key** so a consumer who hits a regression can switch the subsystem
|
|
53
|
+
off without downgrading the whole package. "Where feasible" is a
|
|
54
|
+
real qualifier: kernel rules and the install skeleton have no
|
|
55
|
+
sensible off-switch; everything above that floor should.
|
|
56
|
+
|
|
57
|
+
## Rollback path — the `Rollback:` line
|
|
58
|
+
|
|
59
|
+
Every CHANGELOG entry that **introduces or substantially reworks a
|
|
60
|
+
subsystem** names its rollback path in the entry itself via a
|
|
61
|
+
`Rollback:` line:
|
|
62
|
+
|
|
63
|
+
```md
|
|
64
|
+
* **workspace:** task-orchestration layer behind `/work` ([abc1234](…))
|
|
65
|
+
Rollback: set `workspace.enabled: false` in `.agent-settings.yml`.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The rollback path is the disable flag from the section above, a
|
|
69
|
+
revert instruction, or a downgrade note — whatever actually undoes
|
|
70
|
+
the subsystem for a consumer. Enforced mechanically:
|
|
71
|
+
`src/scripts/lint_changelog_rollback.ts` fails when a new minor /
|
|
72
|
+
major section (`## [X.Y.0]`) contains no `Rollback:` line. The gate
|
|
73
|
+
only fires for versions **strictly greater** than the version in
|
|
74
|
+
`package.json` at lint time, so historical sections never retro-fail;
|
|
75
|
+
entry shape stays governed by
|
|
76
|
+
[`CHANGELOG-conventions.md`](CHANGELOG-conventions.md).
|
|
77
|
+
|
|
78
|
+
## Consumer matrix is the floor for every release
|
|
79
|
+
|
|
80
|
+
The pack-based consumer matrix —
|
|
81
|
+
[`../distribution/consumer-matrix.md`](../distribution/consumer-matrix.md)
|
|
82
|
+
(authored in parallel; forward link) — is the **floor** for every
|
|
83
|
+
release: no release ships a change that knowingly breaks a supported
|
|
84
|
+
cell of that matrix without the break being declared under
|
|
85
|
+
`### BREAKING CHANGES` and reflected in the matrix in the same
|
|
86
|
+
release.
|
|
87
|
+
|
|
88
|
+
## REJECTED — consumer-facing effort ratio
|
|
89
|
+
|
|
90
|
+
The proposed meta-ratio *"≥ 2/3 of effort per release must be
|
|
91
|
+
consumer-facing"* was **CUT by council 2026-07-10**
|
|
92
|
+
(claude-sonnet-4-5 + gpt-4o, unanimous) as a **gameable vanity
|
|
93
|
+
metric**: effort is unmeasurable at review time, "consumer-facing"
|
|
94
|
+
is reclassifiable at will, and the ratio punishes necessary
|
|
95
|
+
infrastructure releases. Recorded here so it is not re-proposed;
|
|
96
|
+
re-opening it requires new evidence per the decision-revisit gate.
|
|
97
|
+
|
|
98
|
+
## Cross-references
|
|
99
|
+
|
|
100
|
+
- [`CHANGELOG-conventions.md`](CHANGELOG-conventions.md) — entry
|
|
101
|
+
shape the `Rollback:` line extends.
|
|
102
|
+
- [`release-pr-gating.md`](release-pr-gating.md) — release-PR shape
|
|
103
|
+
detection; the sizing judgment happens at labeling time.
|
|
104
|
+
- [`../release-runbook.md`](../release-runbook.md) — the cut
|
|
105
|
+
procedure this contract's pre-flight check lives in.
|
|
106
|
+
- `src/scripts/lint_changelog_rollback.ts` — the mechanized
|
|
107
|
+
`Rollback:` gate (run `--selftest` for its fixture proof).
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Surface-Agent Contracts — medium invariants, not one generic agent
|
|
2
|
+
|
|
3
|
+
Backbone for `road-to-surface-specific-agent-contracts`.
|
|
4
|
+
One generic agent does every medium badly. Each **surface** (spreadsheet, deck,
|
|
5
|
+
document, browser, mobile/chat, code, …) has non-negotiable local invariants and
|
|
6
|
+
its own verification truth source. This contract names them, maps them to owner
|
|
7
|
+
skills, and defines how the agent detects a surface, resolves conflicts, and
|
|
8
|
+
hands off between surfaces — advisory first (staged rollout below).
|
|
9
|
+
|
|
10
|
+
Capability + honest-degrade for the *verification* primitives these contracts
|
|
11
|
+
rely on is the sibling [`design-artifact-verification`](design-artifact-verification.md)
|
|
12
|
+
(browser / screenshot / pdf_render / doc_export / image_decode / static_inspect);
|
|
13
|
+
this contract adds the office/data primitives and the surface-routing layer.
|
|
14
|
+
|
|
15
|
+
## Iron Law — the medium's truth source verifies the work
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
EACH SURFACE HAS A NON-NEGOTIABLE INVARIANT AND ITS OWN TRUTH SOURCE.
|
|
19
|
+
VERIFY WITH THE MEDIUM'S TRUTH SOURCE — A FORMULA READ-BACK, A RENDERED SLIDE,
|
|
20
|
+
A FETCHED PAGE — NEVER A GENERIC "LOOKS RIGHT". WHEN THE SURFACE TOOL IS
|
|
21
|
+
ABSENT, SAY WHAT COULD NOT BE VERIFIED — NEVER PRETEND THE MEDIUM STEP RAN.
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Surface detection — before applying any surface rule
|
|
25
|
+
|
|
26
|
+
Resolve the surface from these signals, in priority order:
|
|
27
|
+
|
|
28
|
+
1. **Explicit file type** — `.xlsx`/`.csv` → spreadsheet, `.pptx`/`.key` → deck, `.docx`/`.md` → document, `.ipynb` → notebook.
|
|
29
|
+
2. **Requested output format** — "as a deck", "export to PDF", "a spreadsheet".
|
|
30
|
+
3. **Named tool / plugin / connector** — a named app connector wins over generic browsing.
|
|
31
|
+
4. **User environment** — mobile/chat host vs desktop IDE vs CI.
|
|
32
|
+
5. **Data shape** — tabular/numeric → spreadsheet; slides → deck; prose → document.
|
|
33
|
+
6. **Task verb** — "chart", "model", "present", "browse", "refactor".
|
|
34
|
+
7. **Target deliverable** — what the user will actually use.
|
|
35
|
+
|
|
36
|
+
**Ambiguity handling.** When ≥2 surfaces plausibly apply and the choice changes
|
|
37
|
+
the work materially, ask ONE compact question (per
|
|
38
|
+
[`ask-when-uncertain`](../../src/rules/ask-when-uncertain.md)); when the user
|
|
39
|
+
already constrained it, proceed and state the surface assumption.
|
|
40
|
+
|
|
41
|
+
## Surface conflict rule
|
|
42
|
+
|
|
43
|
+
When the user asks for output **native to a different connected surface**,
|
|
44
|
+
delegate to (or ask to enable) that surface — do not force a local workaround.
|
|
45
|
+
A request for a spreadsheet answered with a markdown table, or a deck answered
|
|
46
|
+
with prose, is a surface violation. Prefer the connected surface; if it is
|
|
47
|
+
unavailable, say so and offer the degraded form explicitly as degraded.
|
|
48
|
+
|
|
49
|
+
## Surface taxonomy
|
|
50
|
+
|
|
51
|
+
Each surface records: **owner** skills/commands · **allowed** tools · **forbidden**
|
|
52
|
+
shortcuts · **truth source** (how the medium verifies) · **handoff** in/out ·
|
|
53
|
+
**trigger** examples · **capability** requirement · **degrade** language.
|
|
54
|
+
|
|
55
|
+
| Surface | Owner skills | Forbidden shortcut | Truth source | Capability → degrade |
|
|
56
|
+
|---|---|---|---|---|
|
|
57
|
+
| **code** | `scope-control`/`verify-before-complete` (rules), stack skills | edit unread files; broad refactor around a fix | tests + type-checker + fresh run | local exec → static-only caveat |
|
|
58
|
+
| **design** | `fe-design`, `design-review`, `existing-ui-audit` | taste before inspecting the system | rendered artifact ([design-artifact-verification](design-artifact-verification.md)) | browser/screenshot → static caveat |
|
|
59
|
+
| **spreadsheet** | `spreadsheet-authoring` (Phase 2) | hardcode a computed value; unofficial financial source unmarked | formula read-back after write | native tooling → exported-file only → "cannot verify" |
|
|
60
|
+
| **document** | `doc-coauthoring`, `markitdown` | rasterize selectable text to PDF | open/export readback | doc parser → format caveat |
|
|
61
|
+
| **deck** | `html-deck` | build slides before an outline; tiny text | export + slide render | deck export → outline-only caveat |
|
|
62
|
+
| **browser** | `browser` surface (Phase 4), MCP fetch | invent a URL; fetch when not needed | the fetched page itself | fetch → "not fetched, cannot confirm" |
|
|
63
|
+
| **mobile/chat** | interaction floor (Phase 5) | markdown tables in narrow chat; multi-question walls | the host's rendering | tappable UI → concise text choices |
|
|
64
|
+
| **research** | `research:deep`/`research:report` | claim without a retrieved source | per-part grounding + disconfirmation | — |
|
|
65
|
+
| **visualizer/diagram** | `html-deck`, image skills | decorative chart over the data's shape | the rendered diagram | render → described-structure caveat |
|
|
66
|
+
| **cowork/dispatch** | `subagent-orchestration` | one agent doing parallel-safe work serially | verified subagent returns | spawn primitive → in-session |
|
|
67
|
+
| **MCP/app connector** | `mcp` | generic web search when a connector fits | the connector's own result | connector present → suggest/opt-in |
|
|
68
|
+
|
|
69
|
+
This taxonomy table **is** the canonical work-surface map. (Note: the existing
|
|
70
|
+
`src/config/surface-matrix.yml` is a *different* concept — per-tool **install-surface**
|
|
71
|
+
de-duplication, set-equality-enforced against `install.ts::USER_SCOPE_PATHS` by
|
|
72
|
+
`lint_surface_matrix`; extending it with *work* surfaces would break that
|
|
73
|
+
linter, so the work-surface map lives here, not there.) Host verification
|
|
74
|
+
capability is `src/config/host-capabilities.yml` +
|
|
75
|
+
[`design-artifact-verification`](design-artifact-verification.md). Carrier
|
|
76
|
+
choice vs host capability vs these invariants stay aligned with the
|
|
77
|
+
artifact-routing work — do not let the three diverge.
|
|
78
|
+
|
|
79
|
+
## Staged rollout
|
|
80
|
+
|
|
81
|
+
Each surface contract: **advisory** (skills reference the invariant) →
|
|
82
|
+
**routed** (owner skills updated + eval fixtures pass) → **default-on** only
|
|
83
|
+
once the host capability/degrade behaviour is documented for that surface. A
|
|
84
|
+
contract is never default-on for a host class that cannot run the surface's
|
|
85
|
+
truth-source check — it stays advisory + caveat there.
|
|
86
|
+
|
|
87
|
+
## Cross-surface handoff envelope
|
|
88
|
+
|
|
89
|
+
When work moves between surfaces (spreadsheet → deck, research → document,
|
|
90
|
+
browser evidence → report, design prototype → production code), the source
|
|
91
|
+
surface emits a **handoff envelope** the target consumes instead of redoing
|
|
92
|
+
work:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
source_surface · target_surface · user_goal · assets/files ·
|
|
96
|
+
constraints · verification_already_done · pending_checks ·
|
|
97
|
+
capability_limits · assumptions · privacy/source_restrictions
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- The target surface **trusts `verification_already_done`** and does not repeat
|
|
101
|
+
it; it runs only `pending_checks`.
|
|
102
|
+
- The target honours `privacy/source_restrictions` — a source-specific
|
|
103
|
+
restriction (e.g. an internal-only dataset) is never widened by the handoff.
|
|
104
|
+
- **Degrade:** if the target surface's tooling is absent, the envelope remains a
|
|
105
|
+
durable **plan** (what to do + what is verified) — never a faked generated
|
|
106
|
+
artifact.
|
|
107
|
+
|
|
108
|
+
## Mobile/chat interaction floor
|
|
109
|
+
|
|
110
|
+
Interaction style is host-sensitive, not one verbose desktop default.
|
|
111
|
+
|
|
112
|
+
- **Narrow-chat output.** Avoid markdown tables in a narrow chat host; use short
|
|
113
|
+
prose/bullets. Keep post-tool summaries short.
|
|
114
|
+
- **Ask at most one compact question**, and only when it changes the work:
|
|
115
|
+
- **No options** when the user asked for the agent's *analysis* of A vs B — give the recommendation (fixture `ssac-a-or-b-analysis`).
|
|
116
|
+
- **Offer options** when *eliciting a preference* — tappable choices where the host supports them, degrading to concise text choices otherwise (fixture `ssac-preference-elicitation`).
|
|
117
|
+
- **Proceed on stated constraints** when the prompt already fixes them — no redundant questions (fixture `ssac-enough-constraints-no-question`).
|
|
118
|
+
|
|
119
|
+
## Code surface — audit dispositions (Phase 6)
|
|
120
|
+
|
|
121
|
+
The external code-prompt mechanisms, audited against existing rules — **covered**
|
|
122
|
+
(cite the owner, do not duplicate), **tightened** (a note added), or **rejected**
|
|
123
|
+
(host-specific):
|
|
124
|
+
|
|
125
|
+
| Mechanism | Disposition | Owner / note |
|
|
126
|
+
|---|---|---|
|
|
127
|
+
| Read before proposing | **covered** | `think-before-action`, `source-discovery-gate` (fixture `ssac-edit-unread-file`) |
|
|
128
|
+
| Minimal scoped changes | **covered** | `minimal-safe-diff` (fixture `ssac-broad-refactor-around-bugfix`) |
|
|
129
|
+
| Todo/task visibility | **covered** | host task tooling + roadmap loop; no new rule |
|
|
130
|
+
| Parallel independent exploration | **tighten** | note in `subagent-orchestration` / this contract's cowork row — sequential independent reads when parallel is available is a miss |
|
|
131
|
+
| Specialized tools over shell | **covered** | `mcp` § tool-tier ladder (execution-discipline harvest) |
|
|
132
|
+
| No shell as user communication | **covered** | `output-discipline` / `direct-answers` |
|
|
133
|
+
| Line-specific references | **covered** | `file_path:line` convention in host instructions |
|
|
134
|
+
| No time estimates | **covered** | `direct-answers` § no-duration (execution-discipline harvest) |
|
|
135
|
+
| Fresh verification before "done" | **covered** | `verify-before-complete` (fixture `ssac-claim-done-without-verification`) |
|
|
136
|
+
|
|
137
|
+
No new code-surface rule is created — the deltas are already owned; the one
|
|
138
|
+
**tighten** (parallel-safe exploration) is recorded here + in the cowork row. No
|
|
139
|
+
Codex/host-specific phrasing is adopted.
|
|
140
|
+
|
|
141
|
+
## Rejected (host/vendor-specific — not adopted)
|
|
142
|
+
|
|
143
|
+
Vendor-specific tool names, per-host UI affordance details, and single-provider
|
|
144
|
+
prompt phrasings from the source family are **not** adopted here — this contract
|
|
145
|
+
encodes surface invariants, not one vendor's tooling. Per-phase rejects are
|
|
146
|
+
recorded in the roadmap.
|
|
147
|
+
|
|
148
|
+
## Related
|
|
149
|
+
|
|
150
|
+
- [`design-artifact-verification`](design-artifact-verification.md) — verification-primitive capability + honest-degrade (design surface).
|
|
151
|
+
- [`design-artifact-lifecycle`](design-artifact-lifecycle.md) — the design surface's own lifecycle.
|
|
152
|
+
- [`host-capability-manifest`](../../src/agent-src/contexts/execution/host-capability-manifest.md) — subagent primitives (cowork/dispatch surface).
|
|
153
|
+
- [`tests/surface-contracts/eval-fixtures.md`](../../tests/surface-contracts/eval-fixtures.md) — the surface-contract eval fixtures.
|
|
@@ -65,7 +65,8 @@ One question per turn, in this order:
|
|
|
65
65
|
Modifiers may be supplied via flags (`--tone=casual --length=200
|
|
66
66
|
--channel=linkedin-post --audience="early-stage founders"`) to skip
|
|
67
67
|
the interactive interview. `--as=<slug>` selects the ghostwriter
|
|
68
|
-
non-interactively for `/ghostwriter:write` and the alias.
|
|
68
|
+
non-interactively for `/ghostwriter:write` and the alias. `--raw`
|
|
69
|
+
skips the step-4b humanize audit for this run (see § 4b).
|
|
69
70
|
|
|
70
71
|
#### Per-channel defaults
|
|
71
72
|
|
|
@@ -102,6 +103,42 @@ Emit the body as a single fenced markdown block. The body MUST:
|
|
|
102
103
|
- Respect `style.fingerprint.hashtag_rules` and `emoji_rules`.
|
|
103
104
|
- Stay within ±15% of the requested length.
|
|
104
105
|
|
|
106
|
+
### 4b. Humanize audit (default-on, `--raw` opts out)
|
|
107
|
+
|
|
108
|
+
After drafting and before the footer, run the AI-tell audit from the
|
|
109
|
+
[`humanizer`](../../src/skills/humanizer/SKILL.md) skill against the
|
|
110
|
+
draft body:
|
|
111
|
+
|
|
112
|
+
1. Ask: "What makes this draft read AI-generated?" — audit against the
|
|
113
|
+
pattern catalog (`src/skills/humanizer/data/patterns.md`), counting
|
|
114
|
+
clusters, never isolated hits.
|
|
115
|
+
2. Revise the draft to clear the audit findings while preserving the
|
|
116
|
+
step-4 fingerprint constraints and full coverage.
|
|
117
|
+
3. Where a runtime is available, verify the final body with
|
|
118
|
+
`npx tsx src/scripts/detect_ai_tells.ts --stdin --fail` under the
|
|
119
|
+
thresholds from the consumer's `humanizer:` block in
|
|
120
|
+
`.agent-project-settings.yml` (defaults: hard 0, cluster score 3 per
|
|
121
|
+
500 words, dash density 2 per 500 words). No runtime → the prose
|
|
122
|
+
audit in (1) is the pass; do not skip it.
|
|
123
|
+
|
|
124
|
+
Precedence and scope rules (binding, not judgment calls):
|
|
125
|
+
|
|
126
|
+
- **Fingerprint wins.** When the profile's captured voice legitimately
|
|
127
|
+
uses a watched pattern (a figure who genuinely writes in em dashes,
|
|
128
|
+
`emoji_rules: allowed`, hashtag rules), the step-4 fingerprint
|
|
129
|
+
constraint is authoritative and the corresponding tell is suppressed
|
|
130
|
+
for that run.
|
|
131
|
+
- **The disclosure footer (§ 5) is exempt.** It is a literal template
|
|
132
|
+
string appended after this step — the audit never inspects, rewords,
|
|
133
|
+
or removes it.
|
|
134
|
+
- **Technical/reference output is excluded.** When the requested
|
|
135
|
+
artifact is reference or technical documentation, skip step 4b and
|
|
136
|
+
say so — neutral, plain prose is the correct register there.
|
|
137
|
+
- **`--raw` opts out per run.** The flag skips step 4b entirely (for
|
|
138
|
+
deliberate neutral-register output); it never touches the footer
|
|
139
|
+
rules. Default is on for every engine consumer
|
|
140
|
+
(`humanizer.write_engine: on`).
|
|
141
|
+
|
|
105
142
|
### 5. Append the disclosure footer (ghostwriter only)
|
|
106
143
|
|
|
107
144
|
For ghostwriter consumers, append on its own line, separated by a
|
package/docs/customization.md
CHANGED
|
@@ -406,6 +406,18 @@ agents/
|
|
|
406
406
|
Full classification (git policy, retention, owner) for every allowed entry:
|
|
407
407
|
[`docs/contracts/agents-layout.md`](contracts/agents-layout.md).
|
|
408
408
|
|
|
409
|
+
#### Environment bootstrap (optional)
|
|
410
|
+
|
|
411
|
+
If standing up your project takes more than a package install — starting
|
|
412
|
+
services, seeding fixtures, generating config — declare a single **`env-bootstrap`**
|
|
413
|
+
entry in your runner file (a `Taskfile.yml` / `Makefile` target or a
|
|
414
|
+
`package.json` script named `env-bootstrap`). When present, the agent surfaces
|
|
415
|
+
it as the suggested first action at worktree/session stand-up (see the
|
|
416
|
+
`using-git-worktrees` skill § 5) — **suggest-only, never auto-run**. This gives
|
|
417
|
+
long-running work one deterministic stand-up entry instead of re-deriving it
|
|
418
|
+
each session. Purely optional: with no entry, dependency install + a green
|
|
419
|
+
baseline is the whole stand-up.
|
|
420
|
+
|
|
409
421
|
#### User inbox workflow (`agents/tmp/` → `agents/tmp.old/`)
|
|
410
422
|
|
|
411
423
|
Drop a note or draft into `agents/tmp/` and point a command at it
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 002
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-05-06
|
|
5
|
+
decision: kernel-bucket-overrides
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: road-to-kernel-and-router · P2.2
|
|
9
|
+
type: structural
|
|
10
|
+
---
|
|
11
|
+
|
|
1
12
|
# ADR-002 — Kernel-Bucket Cap Raise (25k → 26k) and Per-Rule Iron-Law Overrides
|
|
2
13
|
|
|
3
14
|
- **Status:** Accepted (2026-05-06)
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 003
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-05-07
|
|
5
|
+
decision: flat-cluster-subs-and-colon-syntax
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: command-cluster contract (Phase 2 follow-up)
|
|
9
|
+
type: structural
|
|
10
|
+
---
|
|
11
|
+
|
|
1
12
|
# ADR-003 — Flat Cluster Sub-Commands and Colon-Canonical Invocation
|
|
2
13
|
|
|
3
14
|
- **Status:** Accepted (2026-05-07)
|
|
@@ -5,7 +5,7 @@ date: 2026-05-09
|
|
|
5
5
|
decision: skill-tools-python-pilot-pass
|
|
6
6
|
supersedes: —
|
|
7
7
|
superseded_by: —
|
|
8
|
-
phase: road-to-better-skills-and-profiles · Block D (D1–D5)
|
|
8
|
+
phase: road-to-better-skills-and-profiles · Block D (D1–D5) — historical: Python pilot; zero .py remains post-ADR-200
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# ADR-006 — Skill-Tools Python Pilot: Outcome and Decision
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 038
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-06-01
|
|
5
|
+
decision: canonical-settings-path
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
type: structural
|
|
9
|
+
---
|
|
10
|
+
|
|
1
11
|
# ADR-038: Canonical settings path is `agents/settings/.agent-settings.yml`
|
|
2
12
|
|
|
3
13
|
- **Status:** Accepted
|
|
@@ -29,13 +29,16 @@ question with the Phase-3 investigation evidence.
|
|
|
29
29
|
Investigation findings (`road-to-metadata-and-command-surface-leanness`, Phase 3):
|
|
30
30
|
|
|
31
31
|
- **Integer-`tier` readers are internal:** `src/cli/commands/commands.ts`
|
|
32
|
-
(fallback after `visibility`), `src/scripts/audit_command_surface.
|
|
33
|
-
(report column + budget fallback), `src/scripts/build_discovery_manifest.
|
|
34
|
-
(**dual-emits `tier`** into the manifest). `src/cli/python/workspace_hosts.
|
|
32
|
+
(fallback after `visibility`), `src/scripts/audit_command_surface.ts`
|
|
33
|
+
(report column + budget fallback), `src/scripts/build_discovery_manifest.ts`
|
|
34
|
+
(**dual-emits `tier`** into the manifest). `src/cli/python/workspace_hosts.ts`
|
|
35
35
|
uses a semantically unrelated host-inventory tier.
|
|
36
|
+
<!-- paths updated 2026-07-12: every reader migrated to TS during the
|
|
37
|
+
completed ADR-200 py2ts migration; the original .py list is preserved in
|
|
38
|
+
git history. -->
|
|
36
39
|
- **The discovery manifest is a published npm artifact** — `package.json`
|
|
37
40
|
`files` + `build:discovery` in `prepack` + `prepublishOnly:
|
|
38
|
-
check_release_includes_discovery.
|
|
41
|
+
check_release_includes_discovery.ts`. It dual-emits the integer `tier`.
|
|
39
42
|
**External npm consumers that read the integer key are unknown.**
|
|
40
43
|
- The defer rests on a **Runtime Risk that cannot be ruled out** (a consumer
|
|
41
44
|
may register/branch on the integer `tier`), not on evidence that such a
|
|
@@ -75,7 +78,7 @@ forcing function so it cannot calcify into permanent debt:
|
|
|
75
78
|
## Consequences
|
|
76
79
|
|
|
77
80
|
- The `tier:` ⇄ `visibility:` dual-field persists during the deferral;
|
|
78
|
-
drift is mitigated by the `lint_command_tiers.
|
|
81
|
+
drift is mitigated by the `lint_command_tiers.ts` consistency check (when
|
|
79
82
|
both present, they must agree).
|
|
80
83
|
- The removal is **cheaply reversible** if ever executed: restoring the `tier`
|
|
81
84
|
field is a manifest schema patch (< 1h to publish), far below the rollback
|
|
@@ -84,6 +87,27 @@ forcing function so it cannot calcify into permanent debt:
|
|
|
84
87
|
- `road-to-tier-removal.md` institutionalises the trigger so the defer stays
|
|
85
88
|
visible in planning rather than becoming folklore.
|
|
86
89
|
|
|
90
|
+
## Addendum (2026-07-12) — re-open mechanism mid-flight
|
|
91
|
+
|
|
92
|
+
Recorded during `road-to-opt-decision-flips` Phase 2; not a re-litigation —
|
|
93
|
+
this ADR's own forcing function is executing:
|
|
94
|
+
|
|
95
|
+
- **All integer-`tier` readers are now TypeScript** (ADR-200 migration landed
|
|
96
|
+
on `main`; the reader list above updated in place).
|
|
97
|
+
- **Re-open mechanism #1 shipped:** `build_discovery_manifest.ts` emits the
|
|
98
|
+
machine-readable `deprecations` block + `sunset` field announcing the
|
|
99
|
+
`tier` deprecation (road-to-tier-removal Phase 1). Verified in the
|
|
100
|
+
**released** artifact: npm `8.10.0` (published 2026-07-10) ships
|
|
101
|
+
`dist/discovery/discovery-manifest.json` with
|
|
102
|
+
`deprecations[0] = {key: tier, replacement: visibility, since: ADR-092,
|
|
103
|
+
sunset: null}`.
|
|
104
|
+
- **Soak status:** the soak clock runs since publish; zero tier-related
|
|
105
|
+
breakage reports (issue sweep 2026-07-12). The unknown-external-consumer
|
|
106
|
+
hard stop is NOT lifted by the notice alone — the soak must elapse.
|
|
107
|
+
- **Execution continues in `road-to-tier-removal.md`**, revived from
|
|
108
|
+
`later/` to active on 2026-07-12 with the soak evidence cited in its
|
|
109
|
+
banner (portfolio-consolidation Phase 2).
|
|
110
|
+
|
|
87
111
|
## References
|
|
88
112
|
|
|
89
113
|
- [ADR-090](ADR-090-visibility-command-frontmatter-field.md) — the deferred
|
|
@@ -11,6 +11,13 @@ type: structural
|
|
|
11
11
|
|
|
12
12
|
# ADR-100 — Global cross-project knowledge-card sharing
|
|
13
13
|
|
|
14
|
+
> **Partial supersession (clarified 2026-07-12):** this ADR supersedes
|
|
15
|
+
> ADR-098 **Decision-10 only** (the measure-then-decide gate for the
|
|
16
|
+
> global layer); every other ADR-098 decision stands. The frontmatter
|
|
17
|
+
> `supersedes:` field carries the bare number because the index
|
|
18
|
+
> link-checker validates it; this note is the qualifier's home.
|
|
19
|
+
|
|
20
|
+
|
|
14
21
|
## Status
|
|
15
22
|
|
|
16
23
|
Accepted (2026-06-15). Council-designed (claude-sonnet-4-5 + gpt-4o, design
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 114
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-07-08
|
|
5
|
+
decision: commit-policy-iron-law-override
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: kernel-budget overrides (extends ADR-002)
|
|
9
|
+
type: structural
|
|
10
|
+
---
|
|
11
|
+
|
|
1
12
|
# ADR-114 — commit-policy Iron-Law Override (per-rule cap 2.5k → ceiling 4.0k)
|
|
2
13
|
|
|
3
14
|
- **Status:** Accepted (2026-07-08)
|
|
@@ -85,7 +85,7 @@ not exploit: **nesting `bug-fix` as `bug/fix` keeps the invoked slug
|
|
|
85
85
|
|
|
86
86
|
- `docs/contracts/command-clusters.md` — locked table (Phase 4 rows) + the
|
|
87
87
|
new "Bare invocation" section.
|
|
88
|
-
- `agents/roadmaps/road-to-command-structure-optimization.md` — inventory,
|
|
88
|
+
- `agents/roadmaps/archive/road-to-command-structure-optimization.md` — inventory,
|
|
89
89
|
council verdicts, phases.
|
|
90
90
|
- ADR-003 (flat clusters), ADR-041 (controlled verbs), ADR-044 (path-derived
|
|
91
91
|
hyphen slugs).
|
|
@@ -5,11 +5,21 @@ date: 2026-07-08
|
|
|
5
5
|
decision: memory-tripwire-activation-path
|
|
6
6
|
supersedes: —
|
|
7
7
|
superseded_by: —
|
|
8
|
-
phase: road-to-memory-retrieval-economy · Phase 6
|
|
8
|
+
phase: road-to-memory-retrieval-economy · Phase 6 (amended — see 2026-07-12 note)
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# ADR-116 — Memory scale-tripwire activation path: one engine, measured at fire time
|
|
12
12
|
|
|
13
|
+
> **Amended in practice (recorded 2026-07-12):** the SQLite-FTS5 engine
|
|
14
|
+
> this ADR pre-decided was never built. The activation path was
|
|
15
|
+
> re-resolved by road-to-retrieval-substrate-hardening B2 (done
|
|
16
|
+
> 2026-07-09): a hand-rolled stdlib BM25 + trigram prefilter in
|
|
17
|
+
> `src/scripts/_lib/lexical_index.ts` (no SQLite, ADR-061 honoured),
|
|
18
|
+
> dormant until the `lint_knowledge_scale` tripwire fires (200/type,
|
|
19
|
+
> 500 total). The tripwire thresholds and measurement-at-activation
|
|
20
|
+
> discipline of this ADR stand unchanged; only the engine choice moved.
|
|
21
|
+
|
|
22
|
+
|
|
13
23
|
- **Deciders:** maintainer + AI council (anthropic/claude-sonnet-4-5 +
|
|
14
24
|
openai/gpt-4o; disposition debate 2 rounds + engine tie-break 2 rounds,
|
|
15
25
|
2026-07-08 — tie-break converged after the in-repo `node:sqlite`
|
|
@@ -3,10 +3,11 @@ adr: 117
|
|
|
3
3
|
status: accepted
|
|
4
4
|
date: 2026-07-09
|
|
5
5
|
decision: subagents-auto-default-on
|
|
6
|
-
supersedes:
|
|
6
|
+
supersedes: —
|
|
7
7
|
superseded_by: —
|
|
8
8
|
phase: auto-subagent-orchestration
|
|
9
9
|
type: structural
|
|
10
|
+
amends: 105 (Decision 2 only — the shipped default; the contract itself stands)
|
|
10
11
|
---
|
|
11
12
|
|
|
12
13
|
# ADR-117 — Flip `subagents.auto` shipped default to `on` (host-gated) on bounded-downside re-evaluation
|