@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
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "typography-system",
|
|
3
|
+
"_calibration": "Behavioural fixtures (road-to-skill-eval-coverage Phase 2, rich set). Deterministic `contains` asserts the line-height output the skill produces; the rubric checks the scale is a computed modular scale (from the given ratio), not arbitrary px — the whole point of the skill.",
|
|
4
|
+
"scenarios": [
|
|
5
|
+
{
|
|
6
|
+
"id": "modular-scale-from-ratio",
|
|
7
|
+
"prompt": "Build a type scale from a 16px base and a 1.25 modular ratio: give the step sizes, line-heights, and weights for body, h3, h2, h1.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
{ "kind": "contains", "value": "line-height" },
|
|
10
|
+
{ "kind": "rubric", "criterion": "The step sizes are the 1.25 modular scale off 16px (≈16/20/25/31px), i.e. computed from the ratio, not arbitrary round numbers; each step carries a line-height and weight." }
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "unit-economics-modeling",
|
|
3
|
+
"_calibration": "Behavioural fixture (road-to-skill-eval-coverage Phase 2, default-surface). Deterministic assertions on a real output property where reliable; rubric pins the qualitative core as a known-limit (pass ratified in PR review, not a hidden judge). finding_floor n is a conservative floor, not a calibrated per-host number.",
|
|
4
|
+
"scenarios": [
|
|
5
|
+
{
|
|
6
|
+
"id": "saas-unit-economics",
|
|
7
|
+
"prompt": "SaaS: ARPA $500/mo, gross margin 80%, monthly churn 2%, fully-loaded CAC $2000. Are we unit-economic?",
|
|
8
|
+
"assertions": [
|
|
9
|
+
{
|
|
10
|
+
"kind": "contains",
|
|
11
|
+
"value": "LTV"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"kind": "contains",
|
|
15
|
+
"value": "CAC"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"kind": "rubric",
|
|
19
|
+
"criterion": "Computes LTV=ARPA·GM/churn (=20000), CAC payback=CAC/(ARPA·GM) (=5mo), and LTV:CAC (=10) with the SaaS formulas; states the payback + ratio, not one number."
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -141,6 +141,16 @@ Run the project's fastest test target. If the baseline **fails**, stop
|
|
|
141
141
|
and report — ask whether to fix main first or proceed. Never silently
|
|
142
142
|
continue with a red baseline.
|
|
143
143
|
|
|
144
|
+
**Optional `env-bootstrap` entry — stand-up beyond deps.** Some projects need
|
|
145
|
+
more than package install to stand up (start services, seed fixtures, generate
|
|
146
|
+
config). A project MAY declare a single bootstrap entry — an `env-bootstrap`
|
|
147
|
+
target in its runner file (`Taskfile.yml` / `Makefile` / `package.json`
|
|
148
|
+
`scripts`) or a documented equivalent. When one exists, **surface it as the
|
|
149
|
+
suggested next action** after the baseline — suggest, never auto-execute (no new
|
|
150
|
+
autonomous surface). Long-running work then reads one deterministic stand-up
|
|
151
|
+
entry instead of re-deriving it each session. If none exists, deps + baseline is
|
|
152
|
+
the whole stand-up.
|
|
153
|
+
|
|
144
154
|
## Multi-tool parallel work
|
|
145
155
|
|
|
146
156
|
Agents share the same `.git/` but get their own working directory. One
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "verify-completion-evidence",
|
|
3
|
+
"_calibration": "Behavioural fixture (road-to-skill-eval-coverage Phase 2, default-surface). Deterministic assertions on a real output property where reliable; rubric pins the qualitative core as a known-limit (pass ratified in PR review, not a hidden judge). finding_floor n is a conservative floor, not a calibrated per-host number.",
|
|
4
|
+
"scenarios": [
|
|
5
|
+
{
|
|
6
|
+
"id": "is-this-done",
|
|
7
|
+
"prompt": "I think the feature is done — the code looks right. Can we close it?",
|
|
8
|
+
"assertions": [
|
|
9
|
+
{
|
|
10
|
+
"kind": "rubric",
|
|
11
|
+
"criterion": "Refuses to claim done without fresh verification evidence (a run/test), not an eyeball of the code — names the exact command that would prove it."
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "vision-articulation",
|
|
3
|
+
"_calibration": "Behavioural fixture (road-to-skill-eval-coverage Phase 2, default-surface). Deterministic assertions on a real output property where reliable; rubric pins the qualitative core as a known-limit (pass ratified in PR review, not a hidden judge). finding_floor n is a conservative floor, not a calibrated per-host number.",
|
|
4
|
+
"scenarios": [
|
|
5
|
+
{
|
|
6
|
+
"id": "articulate-vision",
|
|
7
|
+
"prompt": "Articulate our product vision.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
{
|
|
10
|
+
"kind": "rubric",
|
|
11
|
+
"criterion": "States the bet in one sentence, why-now/why-us with evidence, and a counter-case — not an unopposed aspiration."
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "voice-and-tone-design",
|
|
3
|
+
"_calibration": "Behavioural fixture (road-to-skill-eval-coverage Phase 2, default-surface). Deterministic assertions on a real output property where reliable; rubric pins the qualitative core as a known-limit (pass ratified in PR review, not a hidden judge). finding_floor n is a conservative floor, not a calibrated per-host number.",
|
|
4
|
+
"scenarios": [
|
|
5
|
+
{
|
|
6
|
+
"id": "define-voice",
|
|
7
|
+
"prompt": "Define the brand voice and tone for our fintech product.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
{
|
|
10
|
+
"kind": "rubric",
|
|
11
|
+
"criterion": "Produces named voice attributes with do/don't examples and a tone-by-context matrix, grounded in the audience — not adjectives alone."
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: worktree-lifecycle
|
|
4
|
+
description: "Use when governing a worktree across its whole life — scope-lock declaration, merge-readiness status, scoped verification, and safe cleanup that refuses while unique unmerged commits exist."
|
|
5
|
+
domain: process
|
|
6
|
+
workspaces:
|
|
7
|
+
- engineering
|
|
8
|
+
packs:
|
|
9
|
+
- engineering-base
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# worktree-lifecycle
|
|
13
|
+
|
|
14
|
+
Governance layer for worktrees that already exist (or are about to).
|
|
15
|
+
Creation mechanics — directory convention, ignore-safety, clean
|
|
16
|
+
baseline — live in [`using-git-worktrees`](../using-git-worktrees/SKILL.md)
|
|
17
|
+
and are **referenced, never restated** here. This skill owns everything
|
|
18
|
+
after the spawn: what the worktree is allowed to touch, when it is
|
|
19
|
+
merge-ready, and when it may be removed.
|
|
20
|
+
|
|
21
|
+
## When to use
|
|
22
|
+
|
|
23
|
+
* Deciding whether a task should be isolated in a worktree at all
|
|
24
|
+
* Declaring **which paths a worktree owns** so parallel agents stay disjoint
|
|
25
|
+
* Answering "is this worktree merge-ready?" — status, dirty state,
|
|
26
|
+
ahead/behind, verification evidence
|
|
27
|
+
* Running the scoped verification for a worktree's declared change
|
|
28
|
+
* Removing a finished worktree without losing commits
|
|
29
|
+
|
|
30
|
+
Do NOT use when:
|
|
31
|
+
|
|
32
|
+
* Creating the worktree — that is [`using-git-worktrees`](../using-git-worktrees/SKILL.md)
|
|
33
|
+
(Iron Law: no worktree without verified ignore + clean baseline)
|
|
34
|
+
* Plain branch work (switch, rebase, PR) without worktree isolation —
|
|
35
|
+
[`git-workflow`](../git-workflow/SKILL.md)
|
|
36
|
+
* Picking a subagent-orchestration mode — `subagent-orchestration`
|
|
37
|
+
selects the mode; this skill governs the worktrees a chosen mode uses
|
|
38
|
+
|
|
39
|
+
## The Iron Law
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
EVERY GOVERNED WORKTREE DECLARES ITS SCOPE. NO REMOVAL WHILE
|
|
43
|
+
UNIQUE UNMERGED COMMITS EXIST. INHERITED COMMITS ARE NEVER DROPPED.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Procedure
|
|
47
|
+
|
|
48
|
+
### 1. Decide isolation
|
|
49
|
+
|
|
50
|
+
Isolate when **any** holds; otherwise stay on the current branch
|
|
51
|
+
(per the Do-NOT list in `using-git-worktrees`):
|
|
52
|
+
|
|
53
|
+
* Parallel agents/sessions must not share a working directory
|
|
54
|
+
* The current branch is mid-work and a stash/switch would risk state
|
|
55
|
+
* The change is exploratory and may be thrown away whole
|
|
56
|
+
* A long-running build/test occupies the current worktree
|
|
57
|
+
|
|
58
|
+
Then create via [`using-git-worktrees`](../using-git-worktrees/SKILL.md)
|
|
59
|
+
(or the host primitive — § Host-native mapping below), declare the
|
|
60
|
+
scope lock (§ 2), keep status honest (§ 3), and gate removal (§ 4).
|
|
61
|
+
|
|
62
|
+
### 2. Scope lock
|
|
63
|
+
|
|
64
|
+
At worktree start, write a `.worktree-scope.md` note at the worktree
|
|
65
|
+
root and keep it untracked via `.git/info/exclude` (shared exclude —
|
|
66
|
+
one line `.worktree-scope.md`, no commit needed):
|
|
67
|
+
|
|
68
|
+
## Scope lock
|
|
69
|
+
- branch: <branch-name>
|
|
70
|
+
- owns: <path or glob list — the ONLY paths this worktree edits>
|
|
71
|
+
- task: <one-line task statement>
|
|
72
|
+
- created: <ISO date>
|
|
73
|
+
|
|
74
|
+
The lock is the disjointness contract between parallel worktrees. A
|
|
75
|
+
diff that leaves the owned paths is scope creep — stop and surface,
|
|
76
|
+
per `scope-control`. Check mechanically:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git diff --name-only "$(git merge-base HEAD <base>)"..HEAD
|
|
80
|
+
# every path must match an `owns:` entry
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 3. Status / merge-ready checklist
|
|
84
|
+
|
|
85
|
+
A worktree is **merge-ready** only when ALL hold:
|
|
86
|
+
|
|
87
|
+
1. **Clean tree** — `git status --porcelain` is empty.
|
|
88
|
+
2. **Scope lock respected** — changed files ⊆ `owns:` paths (command above).
|
|
89
|
+
3. **Verification evidence attached** — the scoped probe for the
|
|
90
|
+
declared change ran fresh and passed (per `verify-before-complete`);
|
|
91
|
+
record command + result tail in the status report. No fresh
|
|
92
|
+
evidence → not merge-ready, regardless of how the diff looks.
|
|
93
|
+
4. **Ahead/behind known** — `git fetch origin --quiet` then
|
|
94
|
+
`git rev-list --left-right --count HEAD...origin/<base>`. Behind →
|
|
95
|
+
flag; divergent (both sides non-zero on a pushed branch) → route to
|
|
96
|
+
[`git-workflow § Divergent-State Recovery`](../git-workflow/SKILL.md#procedure-divergent-state-recovery).
|
|
97
|
+
5. **No inherited-commit drops** — commits on the branch that this
|
|
98
|
+
session did not author stay on the branch; never rebase-out,
|
|
99
|
+
reset-away, or exclude them (rule `git-history-discipline`,
|
|
100
|
+
shared-branch Iron Law).
|
|
101
|
+
|
|
102
|
+
### 4. Cleanup discipline
|
|
103
|
+
|
|
104
|
+
Removal gated by the deterministic helper (edge-case-tested: detached
|
|
105
|
+
HEAD, branch without remote, tag-only reachability, deleted remote
|
|
106
|
+
branch, untracked files, paths with spaces —
|
|
107
|
+
`tests/scripts/worktree_cleanup_check.test.ts`):
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
./scripts-run src/scripts/worktree_cleanup_check check <worktree-path>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Exit `0` → removal allowed; exit `1` → refuse, gates in order:
|
|
114
|
+
|
|
115
|
+
1. **Detached HEAD** — no branch to judge reachability for; resolve
|
|
116
|
+
manually first.
|
|
117
|
+
2. **Unsaved work** — `git status --porcelain` non-empty, untracked
|
|
118
|
+
files included (never answer with `--force`).
|
|
119
|
+
3. **Unique-commit check** — commits reachable from the worktree branch
|
|
120
|
+
but from **no other ref** (branches, remotes, AND tags — a tag counts
|
|
121
|
+
as reachability). Non-empty → **refuse removal**; the branch holds
|
|
122
|
+
work that exists nowhere else. Surface the commit list and hand
|
|
123
|
+
back — merging or preserving them is the user's call
|
|
124
|
+
(`git-history-discipline`).
|
|
125
|
+
|
|
126
|
+
Then: **remove, never delete** — `git worktree remove <path>`, then
|
|
127
|
+
`git worktree prune`. Branch deletion is a separate, permission-gated
|
|
128
|
+
step (`scope-control`); never force-delete (`-D`) as part of cleanup.
|
|
129
|
+
Cross-worktree scope-lock overlaps: `worktree_cleanup_check scope-overlap`
|
|
130
|
+
(surfaced by `/worktree status`).
|
|
131
|
+
|
|
132
|
+
## Host-native mapping
|
|
133
|
+
|
|
134
|
+
| Host capability | Use |
|
|
135
|
+
|---|---|
|
|
136
|
+
| Claude Code `EnterWorktree` / `ExitWorktree` | Enter/leave a governed worktree in-session; scope lock is written right after enter |
|
|
137
|
+
| Claude Code subagent `isolation: "worktree"` | Dispatch a slice into its own auto-managed worktree; unchanged worktrees are auto-cleaned by the host — the unique-commit gate still applies to any it leaves behind |
|
|
138
|
+
| No worktree primitive (other hosts) | Degrade to plain `git worktree add` per [`using-git-worktrees`](../using-git-worktrees/SKILL.md) § Procedure — same scope lock, same gates |
|
|
139
|
+
|
|
140
|
+
The mapping changes only who creates the directory. Scope lock,
|
|
141
|
+
merge-ready checklist, and cleanup gates are host-independent.
|
|
142
|
+
|
|
143
|
+
## Gotcha
|
|
144
|
+
|
|
145
|
+
* **`git log <branch> --not --all` is always empty** — `--all` includes
|
|
146
|
+
the branch itself, so the naive check never fires. The
|
|
147
|
+
`--exclude="refs/heads/<branch>" --all` variant is also unreliable
|
|
148
|
+
when combined with `--not` (observed on git 2.39). Use the
|
|
149
|
+
`for-each-ref` expansion above — it enumerates every ref except the
|
|
150
|
+
branch explicitly.
|
|
151
|
+
* **Scope note committed by accident** — `.worktree-scope.md` must be
|
|
152
|
+
in `.git/info/exclude`; `.gitignore` would be a tracked change
|
|
153
|
+
outside the scope lock.
|
|
154
|
+
* **"Unchanged worktree" ≠ "no unique commits"** — a host auto-clean
|
|
155
|
+
only covers worktrees with no changes; a worktree with committed but
|
|
156
|
+
unmerged work still needs the unique-commit gate.
|
|
157
|
+
* **Stale ahead/behind** — always `git fetch` before the
|
|
158
|
+
`rev-list --left-right` count; a cached view reports merge-ready on
|
|
159
|
+
a diverged branch.
|
|
160
|
+
|
|
161
|
+
## Output format
|
|
162
|
+
|
|
163
|
+
1. **Worktree** — path + branch, and the scope-lock `owns:` list
|
|
164
|
+
2. **State** — clean/dirty, ahead/behind vs base, merge-ready verdict
|
|
165
|
+
with the failing checklist item named when not ready
|
|
166
|
+
3. **Evidence** — verification command(s) run + result tail, or
|
|
167
|
+
"none attached" stated explicitly
|
|
168
|
+
4. **Next step** — merge path, missing verification, or cleanup verdict
|
|
169
|
+
(allowed / refused with the unique-commit list)
|
|
170
|
+
|
|
171
|
+
## Do NOT
|
|
172
|
+
|
|
173
|
+
* NEVER remove a worktree whose branch has commits on no other ref
|
|
174
|
+
* NEVER `git worktree remove --force` past a dirty tree
|
|
175
|
+
* NEVER drop, rebase-out, or reset-away inherited commits (rule
|
|
176
|
+
`git-history-discipline`)
|
|
177
|
+
* NEVER report merge-ready without fresh verification evidence
|
|
178
|
+
* NEVER edit outside the scope-lock `owns:` paths without surfacing it
|
|
179
|
+
|
|
180
|
+
## Handover
|
|
181
|
+
|
|
182
|
+
| Task | Skill / command |
|
|
183
|
+
|---|---|
|
|
184
|
+
| Creating the worktree (ignore-safety, baseline) | [`using-git-worktrees`](../using-git-worktrees/SKILL.md) |
|
|
185
|
+
| Divergence recovery, safe squash, PR flow | [`git-workflow`](../git-workflow/SKILL.md) |
|
|
186
|
+
| Finishing the branch | `finishing-a-development-branch` |
|
|
187
|
+
| Day-to-day operations | `/worktree create` · `status` · `verify` · `cleanup` |
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "worktree-lifecycle",
|
|
3
|
+
"_calibration": "Golden E2E task 1 (road-to-fable-feedback-5 Phase 4b; council 2026-07-10 ranked parallel-worktree overlap hazard highest signal/cost). Deterministic `contains` assertions pin the surfaced hazard vocabulary; rubric pins the qualitative core (pass ratified in PR review, not a hidden judge). Baseline: authored 2026-07-10, pending first host-scored run.",
|
|
4
|
+
"scenarios": [
|
|
5
|
+
{
|
|
6
|
+
"id": "wtl-parallel-overlap-hazard",
|
|
7
|
+
"prompt": "Two tasks run in parallel worktrees of the same repo. Worktree A (branch feat/rate-limit) carries a .worktree-scope.md with owns: [src/middleware/**, src/config/rate-limit.ts]. Worktree B (branch feat/request-logging) is being created now for the task 'add request logging to the middleware stack', which needs to edit src/middleware/stack.ts and src/logging/**. Create worktree B's scope lock and report merge-readiness status across both worktrees.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
{
|
|
10
|
+
"kind": "contains",
|
|
11
|
+
"value": ".worktree-scope.md"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"kind": "contains",
|
|
15
|
+
"value": "src/middleware"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"kind": "rubric",
|
|
19
|
+
"criterion": "The overlap between A's owns (src/middleware/**) and B's needed paths (src/middleware/stack.ts) is DETECTED and surfaced as a scope conflict BEFORE both worktrees edit the shared file — surfaced to the user as a decision (split ownership, sequence the tasks, or re-cut scope), never silently double-owned and never auto-merged."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"kind": "rubric",
|
|
23
|
+
"criterion": "Merge-readiness reporting treats the unresolved overlap as NOT ready: neither worktree is reported merge-ready while the same path is owned or edited by both; readiness cites the scope locks, not gut feel."
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "wtl-cleanup-refusal-is-success",
|
|
29
|
+
"prompt": "Clean up the worktree at .claude/worktrees/spike-cache (branch spike/cache-layer). git status in that worktree shows an untracked file scratch-notes.md, and spike/cache-layer holds two commits reachable from no other ref.",
|
|
30
|
+
"assertions": [
|
|
31
|
+
{
|
|
32
|
+
"kind": "rubric",
|
|
33
|
+
"criterion": "Cleanup REFUSES: it names both blockers (untracked file = unsaved work; commits unique to the branch), deletes nothing, uses neither --force nor branch -D, and presents the refusal as a successful safety outcome with the concrete next steps (commit/stash the file, merge or explicitly discard the commits)."
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "worktree-lifecycle",
|
|
3
|
+
"last_eval": "2026-07-10",
|
|
4
|
+
"description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger covers DE + EN phrasings for worktree governance (scope lock, merge-readiness status, scoped verification, safe cleanup). Should-not-trigger covers the near-miss neighbours (plain branch switch, git-worktree info question, subagent-orchestration mode selection, worktree creation mechanics, remote branch deletion) whose vocabulary overlaps.",
|
|
5
|
+
"queries": [
|
|
6
|
+
{
|
|
7
|
+
"q": "declare a scope lock for this worktree before I start editing",
|
|
8
|
+
"trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"q": "is this worktree merge-ready? check dirty state, ahead/behind and verification evidence",
|
|
12
|
+
"trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"q": "clean up the finished worktrees but make sure no unmerged commits get lost",
|
|
16
|
+
"trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"q": "welche Worktrees sind noch aktiv, und welche Pfade gehören welchem Worktree?",
|
|
20
|
+
"trigger": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"q": "run the scoped verification for the change in this worktree, not the full CI",
|
|
24
|
+
"trigger": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"q": "switch to the feature branch and continue working there",
|
|
28
|
+
"trigger": false,
|
|
29
|
+
"note": "plain branch switch, no worktree governance → git-workflow"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"q": "what does the output of git worktree list mean?",
|
|
33
|
+
"trigger": false,
|
|
34
|
+
"note": "git info question, not lifecycle governance"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"q": "which subagent-orchestration mode should I pick for these three independent tasks?",
|
|
38
|
+
"trigger": false,
|
|
39
|
+
"note": "mode selection → subagent-orchestration; worktrees only enter after a mode is chosen"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"q": "spawn a worktree with ignore-safety checks and a clean test baseline for this refactor",
|
|
43
|
+
"trigger": false,
|
|
44
|
+
"note": "creation mechanics → using-git-worktrees"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"q": "delete the old release branch on origin",
|
|
48
|
+
"trigger": false,
|
|
49
|
+
"note": "remote branch deletion, no worktree involved → git-workflow (permission-gated)"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -549,6 +549,7 @@ the canonical narrative lives in
|
|
|
549
549
|
| `project.improvement_pr_branch_prefix` | string | `improve/agent-` | Branch prefix for agent improvement PRs. |
|
|
550
550
|
| `github.pr_reply_method` | `replies_endpoint`, `create_review_comment`, `auto` | `create_review_comment` | GitHub API method for replying to PR review comments. `auto` detects on first use. |
|
|
551
551
|
| `eloquent.access_style` | `getters_setters`, `get_attribute`, `magic_properties` | `getters_setters` | How to access Eloquent model attributes. See `eloquent` skill for details. |
|
|
552
|
+
| `code_style.docblocks` | `minimal`, `full` | `minimal` | Consumed by the `code-comment-discipline` rule. `minimal`: no signature-mirroring docblocks; docblocks only for machine-relevant precision (generics, array shapes) or genuine why-context. `full`: exported public library surface may carry one-line summary docblocks; the redundancy ban still holds. |
|
|
552
553
|
| `chat_history.enabled` | `true`, `false` | `true` | Persist chat events to `agents/runtime/.agent-chat-history` (JSONL) for crash recovery. |
|
|
553
554
|
| `chat_history.frequency` | `per_turn`, `per_phase`, `per_tool` | per profile | Logging granularity. Defaults: `minimal`→`per_turn`, `balanced`→`per_phase`, `full`→`per_tool`. |
|
|
554
555
|
| `chat_history.max_size_kb` | integer | per profile | Max file size before overflow handling. Defaults: `minimal`→`128`, `balanced`→`256`, `full`→`512`. |
|
|
@@ -594,8 +595,8 @@ the canonical narrative lives in
|
|
|
594
595
|
| `telemetry.artifact_engagement.output.path` | path | `.agent-engagement.jsonl` | Append-only JSONL log path, relative to the project root. Always gitignored. |
|
|
595
596
|
| `linked_projects` | list of `{path, include}` | `[]` | IDE-attached sibling repos in scope for proactive cross-repo awareness. **Belongs in `.agent-settings.local.yml` (in agents/settings/)** (per-machine, gitignored). See [cross-repo guide](../../docs/guides/cross-repo-linked-projects.md) + ADR-032. |
|
|
596
597
|
| `linked_projects_max_files` | integer | `20000` | File-count ceiling above which a detected sibling is flagged `large` (awareness only). Never excludes. |
|
|
597
|
-
| `knowledge.global_sharing.enabled` | `true`, `false` | `
|
|
598
|
-
| `knowledge.global_sharing.allowed_tiers` | list of `public`,`vendor`,`proprietary` | `[public
|
|
598
|
+
| `knowledge.global_sharing.enabled` | `true`, `false` | `true` | **User-global** (keep in `~/.event4u/agent-config/agent-settings.yml`). Master switch for the file-first global knowledge-card store (ADR-100; default-ON per ADR-119, the council-validated bounded-downside flip superseding ADR-103 — adversarially spot-checked redaction incl. hidden-unicode hardening, narrowest tier default, pre-registered demotion trigger). `false` fully no-ops the layer (single-key revert); v1 project-local cards unaffected. |
|
|
599
|
+
| `knowledge.global_sharing.allowed_tiers` | list of `public`,`vendor`,`proprietary` | `[public]` | Origin tiers auto-eligible to cross a project boundary. Narrowest default per ADR-119; `vendor` is a deliberate opt-in widening. `proprietary` is manual-only regardless (the gate hard-codes it). |
|
|
599
600
|
| `knowledge.global_sharing.redaction.enabled` | `true`, `false` | `true` | Run the privacy-floor + source-confidentiality scan before any card goes global. |
|
|
600
601
|
| `knowledge.global_sharing.redaction.halt_on_trigger` | `true`, `false` | `true` | Halt-and-surface on a confidential-pattern hit; never silent-share, never auto-rewrite. |
|
|
601
602
|
| `knowledge.global_sharing.auto_promote_threshold` | integer | `2` | Distinct-repo count that triggers a promotion **suggestion** (never a silent write). |
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.ts (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "8.
|
|
42
|
+
agent_config_version: "8.11.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -198,6 +198,20 @@ ghostwriter:
|
|
|
198
198
|
# but still validated by the lint.
|
|
199
199
|
aliases: true
|
|
200
200
|
|
|
201
|
+
# Humanize audit for write-engine consumers (/ghostwriter:write,
|
|
202
|
+
# /post-as:me, /post-as:ghostwriter) — write-engine contract § 4b.
|
|
203
|
+
# Default-on inside the engine; per-run opt-out via --raw. Off
|
|
204
|
+
# everywhere else: this block never restyles chat replies or repo docs.
|
|
205
|
+
humanizer:
|
|
206
|
+
# Run the step-4b humanize audit in write-engine drafts.
|
|
207
|
+
write_engine: on
|
|
208
|
+
# Weighted cluster-score cap per 500 words (detect_ai_tells.ts).
|
|
209
|
+
max_cluster_score: 3
|
|
210
|
+
# Em/en-dash density cap per 500 words (CP1 parity, not zero).
|
|
211
|
+
max_dash_density: 2
|
|
212
|
+
# Pattern language: en | de | auto (auto sniffs from the draft).
|
|
213
|
+
language: auto
|
|
214
|
+
|
|
201
215
|
# --- Quality pipeline (optional) ---
|
|
202
216
|
#
|
|
203
217
|
# Per-language gate tools the `/fix quality` command invokes. Empty
|
|
@@ -216,6 +216,20 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
|
|
|
216
216
|
`task lint-roadmap-complexity` warns on human-gate step patterns,
|
|
217
217
|
human-gate phase headings, and human-approval exit criteria.
|
|
218
218
|
|
|
219
|
+
23. **Optional `verify:` step-field — machine-checkable flip.** A
|
|
220
|
+
behavior-changing step MAY carry a named verification command on its
|
|
221
|
+
own inline-annotation line, e.g.
|
|
222
|
+
`- [ ] Add the tenant-scope guard <!-- verify: task test -- --filter=TenantScopeTest -->`.
|
|
223
|
+
When declared, `/roadmap:process-*` will not accept its `[x]` flip
|
|
224
|
+
without a **fresh green run of that exact command** in the same run
|
|
225
|
+
(flip-guard, see
|
|
226
|
+
[`roadmap-process-loop § 5b`](../contexts/execution/roadmap-process-loop.md)).
|
|
227
|
+
The machine-checkable tightening of rule 22's agent-decidable signals —
|
|
228
|
+
bind it on **behavior-changing** steps (a new guard, migration, wired
|
|
229
|
+
endpoint); doc-only / prose steps leave it off. Keep the command
|
|
230
|
+
**narrow** (targeted test / grep / build of the touched surface),
|
|
231
|
+
never the full CI pipeline (`roadmap-ci-steps-policy`).
|
|
232
|
+
|
|
219
233
|
---
|
|
220
234
|
|
|
221
235
|
## Quality Gates (remote CI by default)
|
|
@@ -33,19 +33,9 @@ import { readFileSync, writeFileSync } from 'node:fs';
|
|
|
33
33
|
import { sep } from 'node:path';
|
|
34
34
|
import { z } from 'zod';
|
|
35
35
|
import { logger } from '../log/logger.js';
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
* Domain-specific floors (Phase D council verdict — tuned to the trigger
|
|
40
|
-
* pattern each skill shows, not a single global pair). A reference task wants
|
|
41
|
-
* near-perfect precision; a judgment task tolerates a looser one. Skills
|
|
42
|
-
* absent here fall back to {@link DEFAULT_FLOOR}.
|
|
43
|
-
*/
|
|
44
|
-
const DOMAIN_FLOORS = {
|
|
45
|
-
'image-generation': { minRecall: 1.0, minPrecision: 0.85 },
|
|
46
|
-
iconography: { minRecall: 1.0, minPrecision: 0.9 },
|
|
47
|
-
'brand-strategy': { minRecall: 0.9, minPrecision: 0.7 },
|
|
48
|
-
};
|
|
36
|
+
// Floors shared with the weekly canary rotation (ADR-118 §4) — values
|
|
37
|
+
// unchanged, single source of truth.
|
|
38
|
+
import { floor_for } from '../../scripts/_lib/trigger_eval_floors.js';
|
|
49
39
|
/** Subset of `skill_trigger_eval.py`'s `EvalResult` we depend on. */
|
|
50
40
|
const EvalResultSchema = z.object({
|
|
51
41
|
skill: z.string().optional(),
|
|
@@ -97,7 +87,7 @@ function expectedSkillFromManifest(manifestPath) {
|
|
|
97
87
|
}
|
|
98
88
|
/** Resolve the floor: explicit opts win, then the per-skill floor, then the default. */
|
|
99
89
|
function resolveFloor(skill, opts) {
|
|
100
|
-
const domain = (skill
|
|
90
|
+
const domain = floor_for(skill);
|
|
101
91
|
return {
|
|
102
92
|
minRecall: opts.minRecall ?? domain.minRecall,
|
|
103
93
|
minPrecision: opts.minPrecision ?? domain.minPrecision,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordTriggerEval.js","sourceRoot":"","sources":["../../../src/cli/commands/recordTriggerEval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"recordTriggerEval.js","sourceRoot":"","sources":["../../../src/cli/commands/recordTriggerEval.ts"],"names":[],"mappings":"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"}
|