@getarbiter/cli 0.5.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/CHANGELOG.md +713 -0
- package/LICENSE +202 -0
- package/NOTICE +31 -0
- package/PRIVACY.md +111 -0
- package/README.md +237 -0
- package/THIRD_PARTY_LICENSES.md +472 -0
- package/dist/.src-manifest.json +1 -0
- package/dist/capabilities/host-probe.js +3 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +87 -0
- package/dist/commands/adopt-policy.js +3 -0
- package/dist/commands/configure-interactive.js +3 -0
- package/dist/commands/configure.js +5 -0
- package/dist/commands/cross-model-review.js +3 -0
- package/dist/commands/diff.js +20 -0
- package/dist/commands/doc-set.js +3 -0
- package/dist/commands/doctor/clean.js +2 -0
- package/dist/commands/doctor/fail-open-census.js +12 -0
- package/dist/commands/doctor/health.js +11 -0
- package/dist/commands/doctor/prove-gates.js +13 -0
- package/dist/commands/doctor/recover-lock.js +12 -0
- package/dist/commands/doctor/repair-state.js +6 -0
- package/dist/commands/doctor/tool-pin-extract.js +4 -0
- package/dist/commands/doctor/tool-pins.js +9 -0
- package/dist/commands/doctor-interactive.js +2 -0
- package/dist/commands/doctor.js +2 -0
- package/dist/commands/explain.js +19 -0
- package/dist/commands/gate-exec.js +4 -0
- package/dist/commands/gold-audit.js +14 -0
- package/dist/commands/graph.js +5 -0
- package/dist/commands/init/build-arbiter-config.js +1 -0
- package/dist/commands/init/generate.js +42 -0
- package/dist/commands/init/github-setup.js +5 -0
- package/dist/commands/init/maturity-gates.js +10 -0
- package/dist/commands/init/resolve-config.js +3 -0
- package/dist/commands/init/toolchain.js +10 -0
- package/dist/commands/init/types.js +1 -0
- package/dist/commands/init.js +17 -0
- package/dist/commands/method-interactive.js +4 -0
- package/dist/commands/method.js +11 -0
- package/dist/commands/obsidian.js +2 -0
- package/dist/commands/plugin.js +8 -0
- package/dist/commands/pr-merged.js +2 -0
- package/dist/commands/retire-policy.js +3 -0
- package/dist/commands/review-diff.js +3 -0
- package/dist/commands/settings.js +7 -0
- package/dist/commands/ship-config.js +2 -0
- package/dist/commands/ship-profile.js +2 -0
- package/dist/commands/ship-review.js +1 -0
- package/dist/commands/ship-tier.js +2 -0
- package/dist/commands/ship-train.js +2 -0
- package/dist/commands/task-mark.js +2 -0
- package/dist/commands/task-note.js +3 -0
- package/dist/commands/task-record-red.js +2 -0
- package/dist/commands/task-record-tech-debt.js +4 -0
- package/dist/commands/task-ship.js +3 -0
- package/dist/commands/task-state.js +6 -0
- package/dist/commands/task.js +59 -0
- package/dist/commands/update.js +60 -0
- package/dist/commands/upgrade-level-interactive.js +2 -0
- package/dist/commands/upgrade-level.js +7 -0
- package/dist/commands/verify-plan.js +8 -0
- package/dist/commands/verify-tdd.js +2 -0
- package/dist/commands/verify.js +7 -0
- package/dist/commands/wizard/coherence.js +1 -0
- package/dist/commands/worktree-prune.js +4 -0
- package/dist/commands/worktree.js +39 -0
- package/dist/compatibility/cross-language-matrix.json +540 -0
- package/dist/compatibility/index.d.ts +4 -0
- package/dist/compatibility/index.js +2 -0
- package/dist/compatibility/matcher.js +1 -0
- package/dist/compatibility/matrix.json +27 -0
- package/dist/compatibility/parsers.d.ts +38 -0
- package/dist/compatibility/parsers.js +1 -0
- package/dist/compatibility/probe.d.ts +41 -0
- package/dist/compatibility/probe.js +4 -0
- package/dist/compatibility/report.js +2 -0
- package/dist/compatibility/schema.d.ts +80 -0
- package/dist/compatibility/schema.js +1 -0
- package/dist/compatibility/skills-matrix.json +98 -0
- package/dist/compatibility/skills-validator.d.ts +30 -0
- package/dist/compatibility/skills-validator.js +4 -0
- package/dist/compatibility/tooling-proposals.json +5 -0
- package/dist/config/arbiter-ignore.js +3 -0
- package/dist/config/collaboration-mode-defaults.js +1 -0
- package/dist/config/diff.js +1 -0
- package/dist/config/env-overrides.js +3 -0
- package/dist/config/env-registry.js +2 -0
- package/dist/config/levels.js +1 -0
- package/dist/config/migrations/index.js +2 -0
- package/dist/config/migrations/v0-to-v1.js +2 -0
- package/dist/config/migrations/v1-to-v2.js +2 -0
- package/dist/config/migrations/v2-to-v3.js +2 -0
- package/dist/config/migrations/v3-to-v4.js +2 -0
- package/dist/config/override-resolver.js +2 -0
- package/dist/config/resolve-project-config.js +2 -0
- package/dist/config/resolve-project-name.js +2 -0
- package/dist/config/schema.d.ts +480 -0
- package/dist/config/schema.js +1 -0
- package/dist/config/test-pyramid-profiles.js +1 -0
- package/dist/config/thresholds.js +2 -0
- package/dist/conformance/dimensions.js +3 -0
- package/dist/conformance/engine.js +7 -0
- package/dist/conformance/gate-proofs.js +4 -0
- package/dist/conformance/shared.js +2 -0
- package/dist/detectors/axis.js +1 -0
- package/dist/detectors/build.js +2 -0
- package/dist/detectors/existing.js +2 -0
- package/dist/detectors/external-model.js +2 -0
- package/dist/detectors/framework.js +2 -0
- package/dist/detectors/git.js +11 -0
- package/dist/detectors/github.js +2 -0
- package/dist/detectors/lanes.js +5 -0
- package/dist/detectors/language-hooks.js +117 -0
- package/dist/detectors/language.js +2 -0
- package/dist/detectors/package-manager.js +2 -0
- package/dist/detectors/package.js +2 -0
- package/dist/detectors/scaffold-wiring.js +2 -0
- package/dist/detectors/workflow-collision.js +4 -0
- package/dist/evidence/gate-binding.js +4 -0
- package/dist/evidence/git-checks.js +3 -0
- package/dist/evidence/load.js +2 -0
- package/dist/evidence/provenance.js +2 -0
- package/dist/evidence/summary.js +2 -0
- package/dist/evidence/tdd-reexecute.js +2 -0
- package/dist/evidence/tdd.js +4 -0
- package/dist/experimental/index.js +2 -0
- package/dist/experimental/parse-argv.js +2 -0
- package/dist/experimental/registry.js +2 -0
- package/dist/generators/agents-claude.js +2 -0
- package/dist/generators/agents-md.js +2 -0
- package/dist/generators/anti-drift-validators.js +3 -0
- package/dist/generators/anti-proforma.js +2 -0
- package/dist/generators/api-e2e.js +2 -0
- package/dist/generators/api-middleware.js +2 -0
- package/dist/generators/archunit.js +2 -0
- package/dist/generators/audit-toolchain.js +2 -0
- package/dist/generators/auth.js +2 -0
- package/dist/generators/behavioral-tests.js +2 -0
- package/dist/generators/boundaries.js +2 -0
- package/dist/generators/check-all.js +2 -0
- package/dist/generators/check-stack-conformity.js +2 -0
- package/dist/generators/ci-five-lane.js +2 -0
- package/dist/generators/ci-tier.js +2 -0
- package/dist/generators/claude.js +3 -0
- package/dist/generators/codex-hooks.js +2 -0
- package/dist/generators/codex-known-limitations.js +2 -0
- package/dist/generators/codex.js +15 -0
- package/dist/generators/commit-footer.js +2 -0
- package/dist/generators/compliance-menu.js +2 -0
- package/dist/generators/compliance.js +2 -0
- package/dist/generators/conformance.js +2 -0
- package/dist/generators/contract-testing.js +2 -0
- package/dist/generators/coverage.js +2 -0
- package/dist/generators/debt-gates.js +24 -0
- package/dist/generators/debt-ratchet.js +2 -0
- package/dist/generators/derived-class.js +2 -0
- package/dist/generators/doc-set.js +4 -0
- package/dist/generators/docs.js +2 -0
- package/dist/generators/duplication.js +2 -0
- package/dist/generators/e2e-constitution.js +2 -0
- package/dist/generators/env-template.js +2 -0
- package/dist/generators/evidence-retention.js +2 -0
- package/dist/generators/feature-matrix.js +2 -0
- package/dist/generators/frontend-governance.js +2 -0
- package/dist/generators/frontend-quality.js +2 -0
- package/dist/generators/gap.js +2 -0
- package/dist/generators/gdpr.js +2 -0
- package/dist/generators/githooks.js +2 -0
- package/dist/generators/github-setup.js +2 -0
- package/dist/generators/github.js +2 -0
- package/dist/generators/gitignore.js +2 -0
- package/dist/generators/global-invariants.js +3 -0
- package/dist/generators/go-boundaries.js +2 -0
- package/dist/generators/gold-kit.js +2 -0
- package/dist/generators/infra.js +2 -0
- package/dist/generators/integration-testing.js +7 -0
- package/dist/generators/iso27001.js +2 -0
- package/dist/generators/iso9001.js +2 -0
- package/dist/generators/labels.js +2 -0
- package/dist/generators/local-wrapper.js +2 -0
- package/dist/generators/modulith.js +2 -0
- package/dist/generators/mutation.js +2 -0
- package/dist/generators/observability.js +2 -0
- package/dist/generators/operations.js +2 -0
- package/dist/generators/perf-k6.js +2 -0
- package/dist/generators/pharma.js +2 -0
- package/dist/generators/playwright-python.js +2 -0
- package/dist/generators/playwright-ts.js +2 -0
- package/dist/generators/pr-tooling.js +2 -0
- package/dist/generators/python-boundaries.js +2 -0
- package/dist/generators/quality.js +2 -0
- package/dist/generators/registry.js +2 -0
- package/dist/generators/regulated.js +2 -0
- package/dist/generators/resilience.js +2 -0
- package/dist/generators/risk-register.js +2 -0
- package/dist/generators/root.js +2 -0
- package/dist/generators/rust-boundaries.js +2 -0
- package/dist/generators/safety-class.js +2 -0
- package/dist/generators/security.js +2 -0
- package/dist/generators/seed.js +2 -0
- package/dist/generators/self-validation.js +2 -0
- package/dist/generators/ship-driver.js +2 -0
- package/dist/generators/skill-names.json +17 -0
- package/dist/generators/skills.js +2 -0
- package/dist/generators/smoke-journeys.js +2 -0
- package/dist/generators/solo-exception.js +2 -0
- package/dist/generators/ssot.js +2 -0
- package/dist/generators/stride-enforcement.js +2 -0
- package/dist/generators/suppressions.js +2 -0
- package/dist/generators/test-pyramid-manifest.js +3 -0
- package/dist/generators/test-taxonomy.js +2 -0
- package/dist/generators/wiki.js +2 -0
- package/dist/github/branch-protection.js +2 -0
- package/dist/github/classify-gh-error.js +2 -0
- package/dist/github/labels.js +2 -0
- package/dist/github/project-board.js +2 -0
- package/dist/graph/builders/adr.js +4 -0
- package/dist/graph/builders/ast.js +3 -0
- package/dist/graph/builders/canon.js +2 -0
- package/dist/graph/builders/evidence.js +2 -0
- package/dist/graph/builders/inv.js +1 -0
- package/dist/graph/builders/req.js +3 -0
- package/dist/graph/builders/test-nodes.js +3 -0
- package/dist/graph/builders/utils.js +2 -0
- package/dist/graph/load.js +2 -0
- package/dist/graph/model.js +2 -0
- package/dist/graph/query.js +3 -0
- package/dist/graph/store.js +1 -0
- package/dist/i18n/en.json +293 -0
- package/dist/i18n/index.js +4 -0
- package/dist/i18n/types.js +2 -0
- package/dist/integrations/companions.js +2 -0
- package/dist/integrations/external-review.js +10 -0
- package/dist/integrations/plugin-schema.js +2 -0
- package/dist/integrations/skill-detector.js +7 -0
- package/dist/integrations/skills-matrix.js +2 -0
- package/dist/integrations/types.d.ts +23 -0
- package/dist/integrations/types.js +2 -0
- package/dist/internal/cli-deprecation-registry.js +2 -0
- package/dist/internal/deprecate.js +3 -0
- package/dist/internal/experimental-warn.js +3 -0
- package/dist/invariants/catalog.d.ts +2 -0
- package/dist/invariants/catalog.js +1 -0
- package/dist/invariants/filter.d.ts +28 -0
- package/dist/invariants/filter.js +1 -0
- package/dist/invariants/index.d.ts +4 -0
- package/dist/invariants/index.js +2 -0
- package/dist/invariants/tiers.js +1 -0
- package/dist/invariants/types.d.ts +1 -0
- package/dist/invariants/types.js +1 -0
- package/dist/kit/applicability.js +3 -0
- package/dist/kit/audit-report.js +3 -0
- package/dist/kit/brownfield-detect.js +4 -0
- package/dist/kit/canonical-mapping.json +1 -0
- package/dist/kit/catalog.js +2 -0
- package/dist/kit/catalog.json +1 -0
- package/dist/kit/derived.json +1 -0
- package/dist/kit/emit-issues.js +8 -0
- package/dist/kit/measure.js +5 -0
- package/dist/kit/redaction.js +3 -0
- package/dist/kit/schema.js +2 -0
- package/dist/kit/taxonomy.js +2 -0
- package/dist/kit/thresholds.d.ts +12 -0
- package/dist/kit/thresholds.js +2 -0
- package/dist/kit/wave-engine.js +1 -0
- package/dist/recipes/loader.js +6 -0
- package/dist/recipes/schema.js +2 -0
- package/dist/risk/classifier.js +2 -0
- package/dist/risk/sha-check.js +2 -0
- package/dist/state/backups.js +2 -0
- package/dist/state/envelope.js +2 -0
- package/dist/state/generated-manifest.js +3 -0
- package/dist/state/manifest-key.js +2 -0
- package/dist/state/migrations/index.js +1 -0
- package/dist/state/migrations/v0-to-v1.js +2 -0
- package/dist/state/retired-renders.js +2 -0
- package/dist/templates/.nvmrc.ejs +1 -0
- package/dist/templates/HANDOFF.template.md +45 -0
- package/dist/templates/__tests__/contract/error-shape.contract.test.ts.ejs +47 -0
- package/dist/templates/agents-md/AGENTS.md.ejs +517 -0
- package/dist/templates/api-e2e/README.md.ejs +33 -0
- package/dist/templates/api-e2e/go-httptest.go.ejs +43 -0
- package/dist/templates/api-e2e/java-restassured.java.ejs +28 -0
- package/dist/templates/api-e2e/kotlin-restassured.kt.ejs +30 -0
- package/dist/templates/api-e2e/manifest.json.ejs +8 -0
- package/dist/templates/api-e2e/postman.collection.json.ejs +30 -0
- package/dist/templates/api-e2e/python-httpx.py.ejs +17 -0
- package/dist/templates/api-e2e/run.sh.ejs +61 -0
- package/dist/templates/api-e2e/ts-supertest.test.ts.ejs +18 -0
- package/dist/templates/archunit/AntiCyclicTest.java.ejs +29 -0
- package/dist/templates/archunit/AntiProformaExempt.java.ejs +35 -0
- package/dist/templates/archunit/AntiProformaTest.java.ejs +104 -0
- package/dist/templates/archunit/ArchitectureTest.java.ejs +87 -0
- package/dist/templates/archunit/DependencyFlowTest.java.ejs +55 -0
- package/dist/templates/archunit/DomainPurityTest.java.ejs +47 -0
- package/dist/templates/archunit/NamingConventionsTest.java.ejs +54 -0
- package/dist/templates/archunit/NoH2ArchTest.java.ejs +30 -0
- package/dist/templates/archunit/NoMockMvcTest.java.ejs +71 -0
- package/dist/templates/archunit/PortsIndependenceTest.java.ejs +55 -0
- package/dist/templates/archunit/RestAssuredArchTest.java.ejs +32 -0
- package/dist/templates/archunit/RestAssuredBaseIT.java.ejs +66 -0
- package/dist/templates/archunit/TestCoverageArchTest.java.ejs +29 -0
- package/dist/templates/archunit/arch-test-deps-maven.md.ejs +42 -0
- package/dist/templates/archunit/arch-test-deps.gradle.ejs +14 -0
- package/dist/templates/audit/gdpr/check-gdpr-controls.mjs.ejs +102 -0
- package/dist/templates/audit/gdpr/controls-to-gates.md.ejs +42 -0
- package/dist/templates/audit/gdpr/data-flow-map.md.ejs +30 -0
- package/dist/templates/audit/gdpr/dpia.md.ejs +45 -0
- package/dist/templates/audit/generic/audit-gate-rules.md.ejs +24 -0
- package/dist/templates/audit/generic/audit-trail-policy.md.ejs +38 -0
- package/dist/templates/audit/iso27001/iso27001-controls-gate-map.md.ejs +60 -0
- package/dist/templates/auth/setup.md.ejs +661 -0
- package/dist/templates/behavioral-tests/ExampleBehavioralTest.java.ejs +67 -0
- package/dist/templates/behavioral-tests/TESTING_POLICY.md.ejs +116 -0
- package/dist/templates/behavioral-tests/bdd/ExampleBddIT.java.ejs +19 -0
- package/dist/templates/behavioral-tests/bdd/ExampleSteps.java.ejs +61 -0
- package/dist/templates/behavioral-tests/bdd/example.feature.ejs +14 -0
- package/dist/templates/behavioral-tests/bdd/example.steps.ts.ejs +37 -0
- package/dist/templates/behavioral-tests/bdd/example_bdd_test.rs.ejs +64 -0
- package/dist/templates/behavioral-tests/bdd/example_test.go.ejs +80 -0
- package/dist/templates/behavioral-tests/bdd/test_example_bdd.py.ejs +47 -0
- package/dist/templates/behavioral-tests/eslint-playwright.json.ejs +10 -0
- package/dist/templates/behavioral-tests/eslint.config.playwright.mjs.ejs +29 -0
- package/dist/templates/behavioral-tests/example.behavioral.test.ts.ejs +47 -0
- package/dist/templates/behavioral-tests/example_behavioral_test.go.ejs +51 -0
- package/dist/templates/behavioral-tests/example_behavioral_test.rs.ejs +47 -0
- package/dist/templates/behavioral-tests/test_example_behavioral.py.ejs +40 -0
- package/dist/templates/boundaries/.eslintrc-boundaries.cjs.ejs +81 -0
- package/dist/templates/boundaries/.eslintrc-frontend-spa.cjs.ejs +79 -0
- package/dist/templates/boundaries/.importlinter.ejs +48 -0
- package/dist/templates/boundaries/check-boundaries-go.mjs.ejs +94 -0
- package/dist/templates/boundaries/check-boundaries-python.mjs.ejs +118 -0
- package/dist/templates/boundaries/check-boundaries-rust.mjs.ejs +111 -0
- package/dist/templates/boundaries/check-boundaries.mjs.ejs +34 -0
- package/dist/templates/boundaries/clippy.toml.ejs +50 -0
- package/dist/templates/boundaries/deny.toml.ejs +56 -0
- package/dist/templates/boundaries/eslint.config.boundaries.mjs.ejs +112 -0
- package/dist/templates/boundaries/eslint.config.frontend-spa.mjs.ejs +93 -0
- package/dist/templates/boundaries/golangci-boundaries.yml.ejs +70 -0
- package/dist/templates/boundaries/ruff-boundaries.toml.ejs +32 -0
- package/dist/templates/claude/CLAUDE.md.ejs +78 -0
- package/dist/templates/claude/agents/agent-write-classes.json +30 -0
- package/dist/templates/claude/agents/bridge-reviewer.md.ejs +68 -0
- package/dist/templates/claude/agents/codebase-scanner.md.ejs +69 -0
- package/dist/templates/claude/agents/context-checker.md.ejs +73 -0
- package/dist/templates/claude/agents/red-team.md.ejs +134 -0
- package/dist/templates/claude/commands/close-gold-gap.md.ejs +43 -0
- package/dist/templates/claude/commands/drain.md.ejs +81 -0
- package/dist/templates/claude/commands/gold-audit.md.ejs +43 -0
- package/dist/templates/claude/commands/impact.md.ejs +39 -0
- package/dist/templates/claude/commands/levelup.md.ejs +61 -0
- package/dist/templates/claude/commands/ship.md.ejs +902 -0
- package/dist/templates/claude/commands/tabletop.md.ejs +46 -0
- package/dist/templates/claude/commands/task.md.ejs +87 -0
- package/dist/templates/claude/commands/wt-close.md.ejs +58 -0
- package/dist/templates/claude/commands/wt-list.md.ejs +48 -0
- package/dist/templates/claude/commands/wt-open.md.ejs +61 -0
- package/dist/templates/claude/commands/wt-prune.md.ejs +38 -0
- package/dist/templates/claude/hooks/check-circular-deps.mjs.ejs +56 -0
- package/dist/templates/claude/hooks/check-no-orphan-todo.mjs.ejs +45 -0
- package/dist/templates/claude/hooks/check-no-pii.mjs.ejs +121 -0
- package/dist/templates/claude/hooks/check-no-placeholders.mjs.ejs +71 -0
- package/dist/templates/claude/hooks/check-no-skipped-tests.mjs +80 -0
- package/dist/templates/claude/hooks/check-no-unused-exports.mjs +62 -0
- package/dist/templates/claude/hooks/closer-mode-guard.mjs.ejs +102 -0
- package/dist/templates/claude/hooks/debug-state-on-failure.mjs.ejs +98 -0
- package/dist/templates/claude/hooks/enforce-gate-before-pr.mjs +142 -0
- package/dist/templates/claude/hooks/enforce-read-only.mjs +28 -0
- package/dist/templates/claude/hooks/exitplanmode-banner.mjs.ejs +43 -0
- package/dist/templates/claude/hooks/guard-done-evidence.mjs.ejs +85 -0
- package/dist/templates/claude/hooks/guard-task-completion.mjs.ejs +56 -0
- package/dist/templates/claude/hooks/hooks.mjs.ejs +127 -0
- package/dist/templates/claude/hooks/lib.mjs.ejs +523 -0
- package/dist/templates/claude/hooks/post-brainstorm-stop.mjs +48 -0
- package/dist/templates/claude/hooks/post-commit-check.mjs.ejs +65 -0
- package/dist/templates/claude/hooks/post-commit-checklists/go/backend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/go/docs.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/go/frontend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/java/backend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/java/docs.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/java/frontend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/python/backend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/python/docs.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/python/frontend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/rust/backend.ejs +5 -0
- package/dist/templates/claude/hooks/post-commit-checklists/rust/docs.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/rust/frontend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/ts/backend.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/ts/docs.ejs +4 -0
- package/dist/templates/claude/hooks/post-commit-checklists/ts/frontend.ejs +5 -0
- package/dist/templates/claude/hooks/post-edit-dispatch.mjs.ejs +73 -0
- package/dist/templates/claude/hooks/post-subagent-release.mjs +80 -0
- package/dist/templates/claude/hooks/pre-compact.mjs.ejs +79 -0
- package/dist/templates/claude/hooks/pre-edit-plan-anchor.mjs.ejs +225 -0
- package/dist/templates/claude/hooks/pre-edit-ssot-guard.mjs +204 -0
- package/dist/templates/claude/hooks/pre-spawn-worktree-guard.mjs +129 -0
- package/dist/templates/claude/hooks/skill-forced-eval.mjs.ejs +281 -0
- package/dist/templates/claude/hooks/stop-dangerous.mjs +86 -0
- package/dist/templates/claude/hooks/stop-evidence-guard.mjs.ejs +245 -0
- package/dist/templates/claude/hooks/stop-finding-loss.mjs.ejs +168 -0
- package/dist/templates/claude/hooks/wiki-on-commit.mjs.ejs +38 -0
- package/dist/templates/claude/knowledge-map.json.ejs +26 -0
- package/dist/templates/claude/rules/05-agent-lifecycle.md +7 -0
- package/dist/templates/claude/rules/25-todo-folder-policy.md +5 -0
- package/dist/templates/claude/rules/40-context-economy.md +32 -0
- package/dist/templates/claude/rules/45-mcp-fallback.md +25 -0
- package/dist/templates/claude/rules/50-batch-execution.md +75 -0
- package/dist/templates/claude/rules/55-brainstorm-terminal-state.md +44 -0
- package/dist/templates/claude/rules/60-incidental-capture.md +43 -0
- package/dist/templates/claude/rules/75-impact-vault-reading.md +43 -0
- package/dist/templates/claude/rules/90-exec-protocol.md.ejs +40 -0
- package/dist/templates/claude/rules/95-closer-mode.md +45 -0
- package/dist/templates/claude/settings.json.ejs +165 -0
- package/dist/templates/claude/skills/architect-review/SKILL.md.ejs +82 -0
- package/dist/templates/claude/skills/brainstorming/SKILL.md.ejs +86 -0
- package/dist/templates/claude/skills/clean-code/SKILL.md.ejs +39 -0
- package/dist/templates/claude/skills/close-gold-gap/SKILL.md.ejs +58 -0
- package/dist/templates/claude/skills/codebase-audit/SKILL.md.ejs +88 -0
- package/dist/templates/claude/skills/configure/SKILL.md.ejs +72 -0
- package/dist/templates/claude/skills/epic-decompose/SKILL.md.ejs +86 -0
- package/dist/templates/claude/skills/gold-audit/SKILL.md.ejs +91 -0
- package/dist/templates/claude/skills/impact/SKILL.md.ejs +104 -0
- package/dist/templates/claude/skills/levelup/SKILL.md.ejs +146 -0
- package/dist/templates/claude/skills/tabletop/SKILL.md.ejs +118 -0
- package/dist/templates/claude/skills/tdd/SKILL.md.ejs +157 -0
- package/dist/templates/claude/skills/understand-code/SKILL.md.ejs +93 -0
- package/dist/templates/claude/skills/verification/SKILL.md.ejs +68 -0
- package/dist/templates/claude/skills/wave-drain/SKILL.md.ejs +491 -0
- package/dist/templates/codex/CODEX.md.ejs +140 -0
- package/dist/templates/codex/codex-adapter.mjs +132 -0
- package/dist/templates/codex/config.toml.ejs +189 -0
- package/dist/templates/compliance/compliance-mapping.md.ejs +124 -0
- package/dist/templates/compliance/compliance-menu.md.ejs +89 -0
- package/dist/templates/contract-testing/CONTRACTS_POLICY.md.ejs +30 -0
- package/dist/templates/contract-testing/api-snapshots/config-keys-baseline.json.ejs +1 -0
- package/dist/templates/contract-testing/api-snapshots/config-response-baseline.json.ejs +1 -0
- package/dist/templates/contract-testing/api-snapshots/enum-values-baseline.json.ejs +1 -0
- package/dist/templates/contract-testing/api-snapshots/error-shape-baseline.json.ejs +6 -0
- package/dist/templates/contract-testing/api-snapshots/openapi-baseline.json.ejs +12 -0
- package/dist/templates/contract-testing/api-snapshots/openapi-content-types-baseline.json.ejs +3 -0
- package/dist/templates/contract-testing/api-snapshots/openapi-paths-baseline.json.ejs +1 -0
- package/dist/templates/contract-testing/api-snapshots/openapi-required-fields-baseline.json.ejs +1 -0
- package/dist/templates/contract-testing/api-snapshots/openapi-response-status-baseline.json.ejs +3 -0
- package/dist/templates/contract-testing/api-snapshots/test-snapshot.json.ejs +4 -0
- package/dist/templates/contract-testing/env/.env.pact.ejs +4 -0
- package/dist/templates/contract-testing/graphql/GraphqlSchemaTest.java.ejs +29 -0
- package/dist/templates/contract-testing/graphql/graphql-inspector.test.ts.ejs +20 -0
- package/dist/templates/contract-testing/graphql/graphql_schema_test.go.ejs +27 -0
- package/dist/templates/contract-testing/graphql/graphql_schema_test.rs.ejs +27 -0
- package/dist/templates/contract-testing/graphql/test_graphql_schema.py.ejs +21 -0
- package/dist/templates/contract-testing/grpc/GrpcContractTest.java.ejs +23 -0
- package/dist/templates/contract-testing/grpc/buf-breaking.yml.ejs +6 -0
- package/dist/templates/contract-testing/grpc/buf.yaml.ejs +11 -0
- package/dist/templates/contract-testing/grpc/grpc-contract.test.ts.ejs +16 -0
- package/dist/templates/contract-testing/grpc/grpc_contract_test.go.ejs +22 -0
- package/dist/templates/contract-testing/grpc/grpc_contract_test.rs.ejs +22 -0
- package/dist/templates/contract-testing/grpc/test_grpc_contract.py.ejs +18 -0
- package/dist/templates/contract-testing/message-queue/SchemaRegistryCheckIT.java.ejs +44 -0
- package/dist/templates/contract-testing/message-queue/schema-registry-check.ts.ejs +42 -0
- package/dist/templates/contract-testing/message-queue/schema_registry_test.go.ejs +71 -0
- package/dist/templates/contract-testing/message-queue/schema_registry_test.rs.ejs +61 -0
- package/dist/templates/contract-testing/message-queue/test_schema_registry.py.ejs +31 -0
- package/dist/templates/contract-testing/pact-samples/assignment-response.json.ejs +7 -0
- package/dist/templates/contract-testing/pact-samples/availability-response.json.ejs +13 -0
- package/dist/templates/contract-testing/pact-samples/availability-rule-response.json.ejs +8 -0
- package/dist/templates/contract-testing/pact-samples/capacity-response.json.ejs +11 -0
- package/dist/templates/contract-testing/pact-samples/fully-booked-response.json.ejs +6 -0
- package/dist/templates/contract-testing/pact-samples/schedule-override-response.json.ejs +7 -0
- package/dist/templates/contract-testing/rest-owned/PactVerificationIT.java.ejs +31 -0
- package/dist/templates/contract-testing/rest-owned/pact-consumer.test.ts.ejs +36 -0
- package/dist/templates/contract-testing/rest-owned/pact-deps.gradle.ejs +15 -0
- package/dist/templates/contract-testing/rest-owned/pact_consumer_test.go.ejs +48 -0
- package/dist/templates/contract-testing/rest-owned/pact_consumer_test.rs.ejs +23 -0
- package/dist/templates/contract-testing/rest-owned/test_pact_consumer.py.ejs +35 -0
- package/dist/templates/contract-testing/rest-public/OpenApiDiffIT.java.ejs +44 -0
- package/dist/templates/contract-testing/rest-public/export-openapi-java.gradle.ejs +13 -0
- package/dist/templates/contract-testing/rest-public/export-openapi.mjs.ejs +21 -0
- package/dist/templates/contract-testing/rest-public/export_openapi.go.ejs +30 -0
- package/dist/templates/contract-testing/rest-public/export_openapi.py.ejs +27 -0
- package/dist/templates/contract-testing/rest-public/export_openapi.rs.ejs +32 -0
- package/dist/templates/contract-testing/rest-public/openapi-diff.ts.ejs +42 -0
- package/dist/templates/contract-testing/rest-public/openapi_diff_test.go.ejs +35 -0
- package/dist/templates/contract-testing/rest-public/openapi_diff_test.rs.ejs +36 -0
- package/dist/templates/contract-testing/rest-public/test_openapi_diff.py.ejs +32 -0
- package/dist/templates/coverage/.coveragerc.ejs +26 -0
- package/dist/templates/coverage/.tarpaulin.toml.ejs +30 -0
- package/dist/templates/coverage/Cargo.toml.profile.release.ejs +24 -0
- package/dist/templates/coverage/jacoco-maven-setup.md.ejs +72 -0
- package/dist/templates/coverage/jacoco.gradle.ejs +49 -0
- package/dist/templates/coverage/kover.gradle.ejs +35 -0
- package/dist/templates/coverage/vitest.browser.config.ts.ejs +47 -0
- package/dist/templates/coverage/vitest.config.ts.ejs +47 -0
- package/dist/templates/docs/CODING_STANDARDS.md.ejs +81 -0
- package/dist/templates/docs/FEATURE_MATRIX.md.ejs +84 -0
- package/dist/templates/docs/GAP.md.ejs +58 -0
- package/dist/templates/docs/ISO27001_ANNEX_A.md.ejs +144 -0
- package/dist/templates/docs/MASTER_TEST_PLAN.md.ejs +52 -0
- package/dist/templates/docs/POST_MERGE_REVIEW_TEMPLATE.md.ejs +63 -0
- package/dist/templates/docs/SECURE_CODING_CHECKLIST.md.ejs +61 -0
- package/dist/templates/docs/adr/ADR-000_template.md.ejs +28 -0
- package/dist/templates/docs/bugs/bug-analysis.md.ejs +47 -0
- package/dist/templates/docs/bugs/bug-report.md.ejs +51 -0
- package/dist/templates/docs/bugs/bug-verification.md.ejs +42 -0
- package/dist/templates/docs/runbooks/deployment.md.ejs +119 -0
- package/dist/templates/docs/runbooks/prod-checklist.md.ejs +90 -0
- package/dist/templates/docs/runbooks/rollback.md.ejs +124 -0
- package/dist/templates/docs/runbooks/troubleshooting.md.ejs +130 -0
- package/dist/templates/docs/skeletons/arc42-canvas.md.ejs +46 -0
- package/dist/templates/docs/skeletons/arc42-full.md.ejs +59 -0
- package/dist/templates/docs/skeletons/decision-registry.md.ejs +38 -0
- package/dist/templates/docs/skeletons/er-model.md.ejs +19 -0
- package/dist/templates/docs/skeletons/glossary.md.ejs +8 -0
- package/dist/templates/docs/skeletons/governance.md.ejs +13 -0
- package/dist/templates/docs/skeletons/slo.md.ejs +21 -0
- package/dist/templates/docs/skeletons/technical-debt.md.ejs +8 -0
- package/dist/templates/docs/skeletons/test-strategy.md.ejs +14 -0
- package/dist/templates/docs/skeletons/threat-model-4q.md.ejs +20 -0
- package/dist/templates/docs/skeletons/threat-model-stride.md.ejs +22 -0
- package/dist/templates/docs/specs/atomic-task-list.md.ejs +57 -0
- package/dist/templates/docs/steering/product.md.ejs +44 -0
- package/dist/templates/docs/steering/structure.md.ejs +49 -0
- package/dist/templates/docs/steering/tech.md.ejs +53 -0
- package/dist/templates/documentation/cli-catalog.md.ejs +21 -0
- package/dist/templates/e2e/E2E_CONSTITUTION.md.ejs +77 -0
- package/dist/templates/e2e/playwright-python/conftest.py.ejs +22 -0
- package/dist/templates/e2e/playwright-python/run_axe.py.ejs +99 -0
- package/dist/templates/e2e/playwright-python/test_a11y.py.ejs +38 -0
- package/dist/templates/e2e/playwright-python/test_smoke.py.ejs +28 -0
- package/dist/templates/e2e/playwright-ts/a11y.spec.ts.ejs +20 -0
- package/dist/templates/e2e/playwright-ts/render-smoke.spec.ts.ejs +90 -0
- package/dist/templates/e2e/playwright-ts/run-axe.ts.ejs +74 -0
- package/dist/templates/e2e/smoke-journeys/journeys.spec.ts.ejs +53 -0
- package/dist/templates/evidence-files.json.ejs +13 -0
- package/dist/templates/frontend/FE_DESIGN_PRINCIPLES.md.ejs +115 -0
- package/dist/templates/frontend/FRONTEND_CONSTITUTION.md.ejs +170 -0
- package/dist/templates/frontend/design-tokens.json.ejs +107 -0
- package/dist/templates/frontend/vrt-setup.md.ejs +83 -0
- package/dist/templates/githooks/commit-msg.ejs +60 -0
- package/dist/templates/githooks/pre-commit.ejs +95 -0
- package/dist/templates/githooks/pre-push.ejs +251 -0
- package/dist/templates/githooks/setup-hooks.sh.ejs +8 -0
- package/dist/templates/github/PULL_REQUEST_TEMPLATE.md +37 -0
- package/dist/templates/github/PULL_REQUEST_TEMPLATE.md.ejs +52 -0
- package/dist/templates/github/actions/build-cache/action.yml.ejs +84 -0
- package/dist/templates/github/actions/nas-ssh/action.yml.ejs +53 -0
- package/dist/templates/github/actions/setup-java-maven/action.yml.ejs +53 -0
- package/dist/templates/github/actions/setup-node-pnpm/action.yml.ejs +39 -0
- package/dist/templates/github/actions/sign-and-attest/action.yml.ejs +53 -0
- package/dist/templates/github/dependabot.yml.ejs +66 -0
- package/dist/templates/github/extended-ci-paths.txt.ejs +38 -0
- package/dist/templates/github/issue-templates/bug-report.yml +72 -0
- package/dist/templates/github/issue-templates/compliance-item.yml.ejs +75 -0
- package/dist/templates/github/issue-templates/config.yml +2 -0
- package/dist/templates/github/issue-templates/epic.yml +66 -0
- package/dist/templates/github/issue-templates/feature-request.yml +24 -0
- package/dist/templates/github/issue-templates/task-brief.yml.ejs +125 -0
- package/dist/templates/github/labels.yml.ejs +161 -0
- package/dist/templates/github/scripts/sticky-failure-issue.sh.ejs +61 -0
- package/dist/templates/github/workflows/01-pr-fast.yml.ejs +1089 -0
- package/dist/templates/github/workflows/02-pr-extended.yml.ejs +512 -0
- package/dist/templates/github/workflows/03-human-approval.yml.ejs +76 -0
- package/dist/templates/github/workflows/04-deploy-test.yml.ejs +425 -0
- package/dist/templates/github/workflows/05-release.yml.ejs +813 -0
- package/dist/templates/github/workflows/06-nightly-lite.yml.ejs +125 -0
- package/dist/templates/github/workflows/06-nightly.yml.ejs +25 -0
- package/dist/templates/github/workflows/07-weekly-lite.yml.ejs +221 -0
- package/dist/templates/github/workflows/07-weekly.yml.ejs +23 -0
- package/dist/templates/github/workflows/08-monthly.yml.ejs +23 -0
- package/dist/templates/github/workflows/09-heartbeat.yml.ejs +268 -0
- package/dist/templates/github/workflows/10-deploy-prod.yml.ejs +144 -0
- package/dist/templates/github/workflows/11-k6-on-demand.yml.ejs +43 -0
- package/dist/templates/github/workflows/12-mutation-scheduled.yml.ejs +100 -0
- package/dist/templates/github/workflows/13-archunit-extended.yml.ejs +33 -0
- package/dist/templates/github/workflows/14-license-scan.yml.ejs +45 -0
- package/dist/templates/github/workflows/15-codeql.yml.ejs +117 -0
- package/dist/templates/github/workflows/16-frontend-quality.yml.ejs +154 -0
- package/dist/templates/github/workflows/17-ossf-scorecard.yml.ejs +46 -0
- package/dist/templates/github/workflows/18-frontend-lane.yml.ejs +50 -0
- package/dist/templates/github/workflows/_ai-draft-check.yml.ejs +44 -0
- package/dist/templates/github/workflows/_contract-postman.yml.ejs +93 -0
- package/dist/templates/github/workflows/_cosign-copy/aws-ecs.ejs +90 -0
- package/dist/templates/github/workflows/_cosign-copy/azure-container-app.ejs +97 -0
- package/dist/templates/github/workflows/_cosign-copy/gcp-cloud-run.ejs +102 -0
- package/dist/templates/github/workflows/_cosign-copy/ghcr.ejs +76 -0
- package/dist/templates/github/workflows/_cosign-copy/nas-compose.ejs +69 -0
- package/dist/templates/github/workflows/_deploy/aws-ecs.ejs +78 -0
- package/dist/templates/github/workflows/_deploy/azure-container-app.ejs +59 -0
- package/dist/templates/github/workflows/_deploy/gcp-cloud-run.ejs +71 -0
- package/dist/templates/github/workflows/_deploy/ghcr.ejs +19 -0
- package/dist/templates/github/workflows/_deploy/nas-compose.ejs +45 -0
- package/dist/templates/github/workflows/_k6-runner.yml.ejs +107 -0
- package/dist/templates/github/workflows/_label-on-approve.yml.ejs +44 -0
- package/dist/templates/github/workflows/_label-sync.yml.ejs +58 -0
- package/dist/templates/github/workflows/_monthly.yml.ejs +343 -0
- package/dist/templates/github/workflows/_nightly.yml.ejs +826 -0
- package/dist/templates/github/workflows/_notify.yml.ejs +96 -0
- package/dist/templates/github/workflows/_partials/macos-keychain-bypass.ejs +6 -0
- package/dist/templates/github/workflows/_partials/macos-keychain-restore.ejs +6 -0
- package/dist/templates/github/workflows/_partials/scheduled-heavy-jobs.ejs +117 -0
- package/dist/templates/github/workflows/_partials/sigstore-preflight.ejs +8 -0
- package/dist/templates/github/workflows/_partials/trivy-fs-java.ejs +27 -0
- package/dist/templates/github/workflows/_post-merge-notify.yml.ejs +228 -0
- package/dist/templates/github/workflows/_pr-staleness.yml.ejs +85 -0
- package/dist/templates/github/workflows/_shared-security.yml.ejs +132 -0
- package/dist/templates/github/workflows/_sigstore-retry-sign.yml.ejs +102 -0
- package/dist/templates/github/workflows/_weekly.yml.ejs +313 -0
- package/dist/templates/github/workflows/drift-shadow.yml.ejs +51 -0
- package/dist/templates/github/workflows/five-lane/ci.yml.ejs +54 -0
- package/dist/templates/github/workflows/five-lane/nightly.yml.ejs +70 -0
- package/dist/templates/github/workflows/five-lane/release.yml.ejs +53 -0
- package/dist/templates/github/workflows/five-lane/weekly.yml.ejs +72 -0
- package/dist/templates/github/workflows/issue-state.yml.ejs +93 -0
- package/dist/templates/global-invariants/GLOBAL_INVARIANTS.md.ejs +34 -0
- package/dist/templates/governance/RACI.md.ejs +21 -0
- package/dist/templates/governance/ci-mental-model.md.ejs +268 -0
- package/dist/templates/governance/contract-integrity-policy.md.ejs +116 -0
- package/dist/templates/governance/enterprise-compliance-baseline.md.ejs +111 -0
- package/dist/templates/governance/evidence-retention.md.ejs +43 -0
- package/dist/templates/governance/gdpr-erasure-runbook.md.ejs +165 -0
- package/dist/templates/governance/qa-audit-phases.md.ejs +129 -0
- package/dist/templates/governance/risk-assessment-template.md.ejs +105 -0
- package/dist/templates/governance/risk-register.md.ejs +76 -0
- package/dist/templates/governance/solo-dev-exception.md.ejs +96 -0
- package/dist/templates/governance/validation-evidence.md.ejs +131 -0
- package/dist/templates/infra/azure/containerapp.tpl.yaml.ejs +74 -0
- package/dist/templates/infra/nas-compose/deploy.sh.ejs +114 -0
- package/dist/templates/integration-testing/AbstractIntegrationTest.java.ejs +36 -0
- package/dist/templates/integration-testing/NoH2ArchTest.java.ejs +24 -0
- package/dist/templates/integration-testing/conftest.py.ejs +20 -0
- package/dist/templates/integration-testing/db_fixture.rs.ejs +48 -0
- package/dist/templates/integration-testing/eslint-no-fake-db.json.ejs +19 -0
- package/dist/templates/integration-testing/eslint.config.no-fake-db.mjs.ejs +46 -0
- package/dist/templates/integration-testing/main_test.go.ejs +53 -0
- package/dist/templates/integration-testing/main_test_sqlite.go.ejs +37 -0
- package/dist/templates/integration-testing/test-setup.ts.ejs +26 -0
- package/dist/templates/integration-testing/testcontainers-deps.gradle.ejs +9 -0
- package/dist/templates/java/DeprecationInterceptor.java.ejs +50 -0
- package/dist/templates/java/archunit-hexagonal.ejs +69 -0
- package/dist/templates/java/modulith/ApplicationModulesTest.java.ejs +21 -0
- package/dist/templates/java/modulith/modulith-deps.gradle.ejs +13 -0
- package/dist/templates/java/modulith/modulith-maven-setup.md.ejs +21 -0
- package/dist/templates/java/pharma/AuditEvent.java.ejs +138 -0
- package/dist/templates/java/pharma/AuditMapper.java.ejs +60 -0
- package/dist/templates/java/pharma/archunit-pharma.ejs +128 -0
- package/dist/templates/kit/GLOBAL_KIT.md.ejs +11 -0
- package/dist/templates/kit/dim.md.ejs +33 -0
- package/dist/templates/llms-txt.config.json.ejs +22 -0
- package/dist/templates/local-wrapper/.env.example.ejs +15 -0
- package/dist/templates/local-wrapper/Makefile.ejs +44 -0
- package/dist/templates/local-wrapper/run.sh.ejs +5 -0
- package/dist/templates/middleware/410-gone-handler.ts.ejs +41 -0
- package/dist/templates/middleware/correlation-id.ts.ejs +32 -0
- package/dist/templates/middleware/deprecation.ts.ejs +45 -0
- package/dist/templates/middleware/error-handler.ts.ejs +73 -0
- package/dist/templates/middleware/payload-size-limit.ts.ejs +51 -0
- package/dist/templates/mutation/README.md.ejs +67 -0
- package/dist/templates/mutation/cargo-mutants.toml.ejs +9 -0
- package/dist/templates/mutation/mutmut-config.toml.ejs +7 -0
- package/dist/templates/mutation/parse-mutants.mjs.ejs +44 -0
- package/dist/templates/mutation/parse-mutmut.py.ejs +44 -0
- package/dist/templates/mutation/pitest-l2-setup.md.ejs +66 -0
- package/dist/templates/mutation/pitest-maven-setup.md.ejs +64 -0
- package/dist/templates/mutation/pitest.gradle.ejs +23 -0
- package/dist/templates/mutation/stryker.conf.json.ejs +17 -0
- package/dist/templates/observability/setup.md.ejs +495 -0
- package/dist/templates/operations/handbook.md.ejs +217 -0
- package/dist/templates/perf/bundle-budget.json.ejs +29 -0
- package/dist/templates/perf/k6/reports/csv-report.py.ejs +91 -0
- package/dist/templates/perf/k6/reports/html-report.py.ejs +114 -0
- package/dist/templates/perf/k6/reports/json-report.py.ejs +74 -0
- package/dist/templates/perf/k6/scenarios/breakpoint.js.ejs +26 -0
- package/dist/templates/perf/k6/scenarios/burst.js.ejs +43 -0
- package/dist/templates/perf/k6/scenarios/endurance.js.ejs +36 -0
- package/dist/templates/perf/k6/scenarios/load.js.ejs +26 -0
- package/dist/templates/perf/k6/scenarios/ramp-down.js.ejs +29 -0
- package/dist/templates/perf/k6/scenarios/ramp-up.js.ejs +32 -0
- package/dist/templates/perf/k6/scenarios/smoke.js.ejs +23 -0
- package/dist/templates/perf/k6/scenarios/soak.js.ejs +26 -0
- package/dist/templates/perf/k6/scenarios/spike.js.ejs +29 -0
- package/dist/templates/perf/k6/scenarios/steady-state.js.ejs +31 -0
- package/dist/templates/perf/k6/scenarios/stress.js.ejs +29 -0
- package/dist/templates/perf/k6/scenarios/volume.js.ejs +36 -0
- package/dist/templates/perf/k6/seed/test-data.sql.ejs +59 -0
- package/dist/templates/perf/lighthouserc.json.ejs +41 -0
- package/dist/templates/quality/iso9001/CAPA_LOG.md.ejs +36 -0
- package/dist/templates/quality/iso9001/DOCUMENT_CONTROL.md.ejs +36 -0
- package/dist/templates/quality/iso9001/REQUIREMENTS_TRACEABILITY.md.ejs +61 -0
- package/dist/templates/regulated/overlay.json.ejs +26 -0
- package/dist/templates/regulated/regulated-overlay.md.ejs +40 -0
- package/dist/templates/resilience/RESILIENCE.md.ejs +310 -0
- package/dist/templates/root/.gitignore.ejs +85 -0
- package/dist/templates/root/CODEOWNERS.ejs +18 -0
- package/dist/templates/root/CONTRIBUTING.md.ejs +62 -0
- package/dist/templates/root/SECURITY.md.ejs +19 -0
- package/dist/templates/root/TEST_TAXONOMY.md.ejs +100 -0
- package/dist/templates/root/commitlint.config.js.ejs +4 -0
- package/dist/templates/root/docs/METHOD/CANONICAL_PATHS.md.ejs +24 -0
- package/dist/templates/root/docs/METHOD/ENGINEERING_DEFAULTS.md.ejs +136 -0
- package/dist/templates/root/docs/METHOD/KNOWLEDGE_MAP.md.ejs +90 -0
- package/dist/templates/root/docs/METHOD/PATTERNS_CATALOG.md.ejs +51 -0
- package/dist/templates/root/docs/METHOD/REUSE_REGISTRY.md.ejs +26 -0
- package/dist/templates/root/docs/METHOD/REUSE_REGISTRY_SPEC.md.ejs +80 -0
- package/dist/templates/root/docs/METHOD/SSOT_CORE_SET.md.ejs +62 -0
- package/dist/templates/root/docs/METHOD/TRACK_ROUTER.md.ejs +39 -0
- package/dist/templates/root/docs/SYSTEM/CANON.md.ejs +359 -0
- package/dist/templates/root/docs/SYSTEM/FAIL_CLOSED.md.ejs +171 -0
- package/dist/templates/root/editorconfig.ejs +39 -0
- package/dist/templates/root/tsconfig.json.ejs +21 -0
- package/dist/templates/rust/clippy.toml.ejs +14 -0
- package/dist/templates/schemas/milestone.schema.json.ejs +164 -0
- package/dist/templates/schemas/rtm-verdict.schema.json.ejs +52 -0
- package/dist/templates/schemas/source-record.schema.json.ejs +91 -0
- package/dist/templates/schemas/tabletop-evidence.schema.json.ejs +53 -0
- package/dist/templates/schemas/use-case.schema.json.ejs +59 -0
- package/dist/templates/scripts/apply-branch-protection.mjs.ejs +70 -0
- package/dist/templates/scripts/audit-toolchain.mjs.ejs +112 -0
- package/dist/templates/scripts/bg-run.sh.ejs +59 -0
- package/dist/templates/scripts/capacity-probe.mjs.ejs +147 -0
- package/dist/templates/scripts/capture-debt-baseline.mjs.ejs +99 -0
- package/dist/templates/scripts/check-acceptance.mjs.ejs +298 -0
- package/dist/templates/scripts/check-action-pins.mjs.ejs +215 -0
- package/dist/templates/scripts/check-agent-return.mjs.ejs +177 -0
- package/dist/templates/scripts/check-all.mjs.ejs +1746 -0
- package/dist/templates/scripts/check-anti-fake-green.mjs.ejs +80 -0
- package/dist/templates/scripts/check-anti-proforma.mjs.ejs +547 -0
- package/dist/templates/scripts/check-api-e2e.mjs.ejs +106 -0
- package/dist/templates/scripts/check-arc42-slots.mjs.ejs +25 -0
- package/dist/templates/scripts/check-assertion-delta.mjs.ejs +287 -0
- package/dist/templates/scripts/check-audit-dry-pass.mjs.ejs +176 -0
- package/dist/templates/scripts/check-bundle-size.mjs.ejs +151 -0
- package/dist/templates/scripts/check-canonical-paths.mjs.ejs +39 -0
- package/dist/templates/scripts/check-ci-tiers.mjs.ejs +111 -0
- package/dist/templates/scripts/check-claude-md-lint.mjs.ejs +142 -0
- package/dist/templates/scripts/check-collab-mode-wired.mjs.ejs +60 -0
- package/dist/templates/scripts/check-commit-footer-rationale.mjs.ejs +170 -0
- package/dist/templates/scripts/check-constraint-scan.mjs.ejs +681 -0
- package/dist/templates/scripts/check-consumer-audit.mjs.ejs +414 -0
- package/dist/templates/scripts/check-continue-on-error.mjs.ejs +227 -0
- package/dist/templates/scripts/check-cross-model-review.mjs.ejs +458 -0
- package/dist/templates/scripts/check-decision-registry.mjs.ejs +101 -0
- package/dist/templates/scripts/check-doc-freshness.mjs.ejs +17 -0
- package/dist/templates/scripts/check-doc-links.mjs.ejs +98 -0
- package/dist/templates/scripts/check-doc-set.mjs.ejs +18 -0
- package/dist/templates/scripts/check-docs.mjs.ejs +71 -0
- package/dist/templates/scripts/check-domain-api-surface.mjs.ejs +80 -0
- package/dist/templates/scripts/check-drift.mjs.ejs +167 -0
- package/dist/templates/scripts/check-duplication.mjs.ejs +45 -0
- package/dist/templates/scripts/check-e2e-escalation.mjs.ejs +199 -0
- package/dist/templates/scripts/check-e2e-quarantine.mjs.ejs +68 -0
- package/dist/templates/scripts/check-emission-parity.mjs.ejs +91 -0
- package/dist/templates/scripts/check-exit-code-contract.mjs.ejs +138 -0
- package/dist/templates/scripts/check-fail-closed-audit.mjs.ejs +389 -0
- package/dist/templates/scripts/check-fe-boundaries.mjs.ejs +184 -0
- package/dist/templates/scripts/check-feature-matrix.mjs.ejs +835 -0
- package/dist/templates/scripts/check-frontend-lane.mjs.ejs +73 -0
- package/dist/templates/scripts/check-grace-window.mjs.ejs +102 -0
- package/dist/templates/scripts/check-handoff-doc.mjs.ejs +192 -0
- package/dist/templates/scripts/check-hook-routing.mjs.ejs +224 -0
- package/dist/templates/scripts/check-image-pins.mjs.ejs +90 -0
- package/dist/templates/scripts/check-inline-suppressions.mjs.ejs +153 -0
- package/dist/templates/scripts/check-iso9001.mjs.ejs +146 -0
- package/dist/templates/scripts/check-knowledge-map.mjs.ejs +49 -0
- package/dist/templates/scripts/check-local-ci-parity.mjs.ejs +382 -0
- package/dist/templates/scripts/check-m16-handoff.mjs.ejs +112 -0
- package/dist/templates/scripts/check-merge-method.mjs.ejs +92 -0
- package/dist/templates/scripts/check-milestones.mjs.ejs +678 -0
- package/dist/templates/scripts/check-min-test-execution.mjs.ejs +225 -0
- package/dist/templates/scripts/check-muted-test.mjs.ejs +270 -0
- package/dist/templates/scripts/check-no-stub-redirects.mjs.ejs +154 -0
- package/dist/templates/scripts/check-no-tracked-artifacts.mjs.ejs +134 -0
- package/dist/templates/scripts/check-oracle-discrimination.mjs.ejs +244 -0
- package/dist/templates/scripts/check-pii-scan.mjs.ejs +67 -0
- package/dist/templates/scripts/check-pipe-tee-hazard.mjs.ejs +85 -0
- package/dist/templates/scripts/check-pr-size-gate.mjs.ejs +85 -0
- package/dist/templates/scripts/check-refutation-verdicts.mjs.ejs +256 -0
- package/dist/templates/scripts/check-regulated-overlay.mjs.ejs +158 -0
- package/dist/templates/scripts/check-render-smoke.mjs.ejs +100 -0
- package/dist/templates/scripts/check-reuse-registry.mjs.ejs +44 -0
- package/dist/templates/scripts/check-review-completion.mjs.ejs +708 -0
- package/dist/templates/scripts/check-safety-adopt-ratchet.mjs.ejs +142 -0
- package/dist/templates/scripts/check-secret-presence.mjs.ejs +191 -0
- package/dist/templates/scripts/check-secret-scan.mjs.ejs +82 -0
- package/dist/templates/scripts/check-skip-critical-e2e.mjs.ejs +142 -0
- package/dist/templates/scripts/check-smoke-journeys.mjs.ejs +272 -0
- package/dist/templates/scripts/check-solo-reactivation.mjs.ejs +102 -0
- package/dist/templates/scripts/check-sources.mjs.ejs +245 -0
- package/dist/templates/scripts/check-ssot-core.mjs.ejs +45 -0
- package/dist/templates/scripts/check-stack-conformity.mjs.ejs +160 -0
- package/dist/templates/scripts/check-stride-traceability.mjs.ejs +101 -0
- package/dist/templates/scripts/check-suppression-expiry.mjs.ejs +79 -0
- package/dist/templates/scripts/check-suppression-rationale.mjs.ejs +76 -0
- package/dist/templates/scripts/check-suppressions.mjs.ejs +150 -0
- package/dist/templates/scripts/check-tabletop-evidence.mjs.ejs +499 -0
- package/dist/templates/scripts/check-tdd-evidence.mjs.ejs +381 -0
- package/dist/templates/scripts/check-test-naming.mjs.ejs +151 -0
- package/dist/templates/scripts/check-test-pyramid.mjs.ejs +170 -0
- package/dist/templates/scripts/check-test-scope-tier.mjs.ejs +208 -0
- package/dist/templates/scripts/check-tier-coverage.mjs.ejs +71 -0
- package/dist/templates/scripts/check-todo-max-age.mjs.ejs +205 -0
- package/dist/templates/scripts/check-touched-vs-manifest.mjs.ejs +179 -0
- package/dist/templates/scripts/check-unwired-guards.mjs.ejs +367 -0
- package/dist/templates/scripts/check-use-cases.mjs.ejs +345 -0
- package/dist/templates/scripts/check-validator-helptext.mjs.ejs +80 -0
- package/dist/templates/scripts/check-wiki-lint.mjs.ejs +162 -0
- package/dist/templates/scripts/check-workflow-docs-sync.mjs.ejs +91 -0
- package/dist/templates/scripts/check-workflow-job-naming.mjs.ejs +102 -0
- package/dist/templates/scripts/check-workflow-perms.mjs.ejs +54 -0
- package/dist/templates/scripts/check-workflow-runners.mjs.ejs +87 -0
- package/dist/templates/scripts/check-workflow-sha-pinning.mjs.ejs +89 -0
- package/dist/templates/scripts/check-workflow-test-integrity.mjs.ejs +235 -0
- package/dist/templates/scripts/checks/check-rust-no-unsafe.mjs.ejs +58 -0
- package/dist/templates/scripts/checks/check-rust-no-unwrap.mjs.ejs +61 -0
- package/dist/templates/scripts/ci-classify-changes.mjs.ejs +119 -0
- package/dist/templates/scripts/conformance.mjs.ejs +37 -0
- package/dist/templates/scripts/constraint-map.json.ejs +25 -0
- package/dist/templates/scripts/debt-lib.mjs.ejs +1015 -0
- package/dist/templates/scripts/debt-report.mjs.ejs +199 -0
- package/dist/templates/scripts/domain-api-surface.json.ejs +23 -0
- package/dist/templates/scripts/done-evidence.mjs.ejs +359 -0
- package/dist/templates/scripts/evidence-collect.mjs.ejs +264 -0
- package/dist/templates/scripts/evidence-prune.mjs.ejs +96 -0
- package/dist/templates/scripts/evidence-rotate.mjs.ejs +53 -0
- package/dist/templates/scripts/evidence-writer.sh.ejs +220 -0
- package/dist/templates/scripts/gate-registry.yml.ejs +286 -0
- package/dist/templates/scripts/gen-doc-index.mjs.ejs +19 -0
- package/dist/templates/scripts/gen-gap.mjs.ejs +153 -0
- package/dist/templates/scripts/gen-llms-txt.mjs.ejs +18 -0
- package/dist/templates/scripts/gen-wiki.mjs.ejs +196 -0
- package/dist/templates/scripts/gh-cleanup-expired-artifacts.mjs.ejs +134 -0
- package/dist/templates/scripts/gold-audit.mjs.ejs +19 -0
- package/dist/templates/scripts/i18n-literal-scanner.mjs.ejs +175 -0
- package/dist/templates/scripts/ingest-zap-report.mjs.ejs +107 -0
- package/dist/templates/scripts/inject-pact-samples.sh.ejs +96 -0
- package/dist/templates/scripts/issue-readiness.mjs.ejs +84 -0
- package/dist/templates/scripts/knowledge-map-update.mjs.ejs +32 -0
- package/dist/templates/scripts/lib/acceptance-criteria.mjs.ejs +213 -0
- package/dist/templates/scripts/lib/agent-return-validate.mjs.ejs +481 -0
- package/dist/templates/scripts/lib/coverage-gate.mjs.ejs +54 -0
- package/dist/templates/scripts/lib/e2e-reliability.mjs.ejs +207 -0
- package/dist/templates/scripts/lib/ephemeral-server.mjs.ejs +148 -0
- package/dist/templates/scripts/lib/evidence-binding.mjs.ejs +140 -0
- package/dist/templates/scripts/lib/exact-sha-policy.mjs.ejs +233 -0
- package/dist/templates/scripts/lib/gate-args.mjs.ejs +20 -0
- package/dist/templates/scripts/lib/gate-evidence.mjs.ejs +622 -0
- package/dist/templates/scripts/lib/gate-mutex.mjs.ejs +340 -0
- package/dist/templates/scripts/lib/glob-walk.mjs.ejs +148 -0
- package/dist/templates/scripts/lib/run-helpers.mjs.ejs +416 -0
- package/dist/templates/scripts/lib/seed-common.sh.ejs +105 -0
- package/dist/templates/scripts/lib/waiter-count.mjs.ejs +62 -0
- package/dist/templates/scripts/muted-tests-baseline.json.ejs +4 -0
- package/dist/templates/scripts/optional-emissions.json.ejs +117 -0
- package/dist/templates/scripts/oracle-discrimination-baseline.json.ejs +6 -0
- package/dist/templates/scripts/pid-watch.sh.ejs +78 -0
- package/dist/templates/scripts/pii-scan.mjs.ejs +125 -0
- package/dist/templates/scripts/pr-merge-watch.mjs.ejs +445 -0
- package/dist/templates/scripts/record-agent-return.mjs.ejs +279 -0
- package/dist/templates/scripts/record-journey-evidence.mjs.ejs +69 -0
- package/dist/templates/scripts/rework-log.mjs.ejs +172 -0
- package/dist/templates/scripts/run-postman-tests.sh.ejs +112 -0
- package/dist/templates/scripts/schemas/agent-return-external.schema.json +74 -0
- package/dist/templates/scripts/schemas/agent-return.schema.json.ejs +181 -0
- package/dist/templates/scripts/schemas/cross-model-dispatch.schema.json +95 -0
- package/dist/templates/scripts/seed-test-data.sh.ejs +99 -0
- package/dist/templates/scripts/self-validation.mjs.ejs +126 -0
- package/dist/templates/scripts/setup-repo.sh.ejs +78 -0
- package/dist/templates/scripts/spotbugs-baseline.json.ejs +4 -0
- package/dist/templates/scripts/test-gate-layering.mjs.ejs +92 -0
- package/dist/templates/scripts/validate-api-snapshots.mjs.ejs +86 -0
- package/dist/templates/scripts/validate-k6-scenarios.mjs.ejs +96 -0
- package/dist/templates/scripts/validate-openapi-field-types.mjs.ejs +124 -0
- package/dist/templates/scripts/validate-postman-collection.mjs.ejs +159 -0
- package/dist/templates/scripts/verify-fe-coverage.mjs.ejs +138 -0
- package/dist/templates/scripts/verify-i18n-parity.mjs.ejs +114 -0
- package/dist/templates/scripts/verify-module-coverage.mjs.ejs +207 -0
- package/dist/templates/scripts/verify-mutation-baseline.mjs.ejs +209 -0
- package/dist/templates/scripts/verify-spotbugs.mjs.ejs +216 -0
- package/dist/templates/scripts/verify-tokens.mjs.ejs +177 -0
- package/dist/templates/security/RISK_ASSESSMENT.md.ejs +35 -0
- package/dist/templates/security/STRIDE.md.ejs +24 -0
- package/dist/templates/security/gitleaks.toml.ejs +21 -0
- package/dist/templates/security/zap/baseline-auth.context.ejs +58 -0
- package/dist/templates/security/zap/rules.tsv.ejs +100 -0
- package/dist/templates/ship/TICK_PROMPT.md.ejs +55 -0
- package/dist/templates/ship/supervisor.sh.ejs +46 -0
- package/dist/templates/smoke-journeys/manifest.json.ejs +1 -0
- package/dist/templates/sonar-project.properties.ejs +25 -0
- package/dist/templates/standards/doc-profile.ejs +27 -0
- package/dist/templates/standards/gold-doc-set.yml.ejs +528 -0
- package/dist/templates/standards/gold-registry.java.yml.ejs +266 -0
- package/dist/templates/standards/gold-registry.typescript.yml.ejs +104 -0
- package/dist/templates/standards/gold-registry.yml.ejs +119 -0
- package/dist/templates/standards/thresholds.yml.ejs +86 -0
- package/dist/templates/static-analysis/.dependency-cruiser.cjs.ejs +78 -0
- package/dist/templates/static-analysis/.golangci.yml.ejs +70 -0
- package/dist/templates/static-analysis/.shellcheckrc.ejs +13 -0
- package/dist/templates/static-analysis/.yamllint.yml.ejs +41 -0
- package/dist/templates/static-analysis/checkstyle.xml.ejs +83 -0
- package/dist/templates/static-analysis/detekt.yml.ejs +26 -0
- package/dist/templates/static-analysis/eslint.config.mjs.ejs +54 -0
- package/dist/templates/static-analysis/eslint.config.static.mjs.ejs +38 -0
- package/dist/templates/static-analysis/eslintrc-static.json.ejs +30 -0
- package/dist/templates/static-analysis/jscpd.json.ejs +25 -0
- package/dist/templates/static-analysis/knip.json.ejs +26 -0
- package/dist/templates/static-analysis/pmd-ruleset.xml.ejs +92 -0
- package/dist/templates/static-analysis/prettierignore.ejs +59 -0
- package/dist/templates/static-analysis/prettierrc.json.ejs +10 -0
- package/dist/templates/static-analysis/requirements-dev.txt.ejs +11 -0
- package/dist/templates/static-analysis/ruff.toml.ejs +40 -0
- package/dist/templates/static-analysis/rustfmt.toml.ejs +3 -0
- package/dist/templates/static-analysis/spotbugs-exclude.xml.ejs +120 -0
- package/dist/templates/static-analysis/spotbugs.gradle.ejs +18 -0
- package/dist/templates/static-analysis/spotless.gradle.ejs +38 -0
- package/dist/templates/static-analysis/stylelintrc.json.ejs +16 -0
- package/dist/templates/suppressions/archunit-baseline.json.ejs +1 -0
- package/dist/templates/suppressions/consumer-audit-allowlist.json.ejs +1 -0
- package/dist/templates/suppressions/gitleaksignore.ejs +20 -0
- package/dist/templates/suppressions/pii-allowlist.json.ejs +1 -0
- package/dist/templates/suppressions/suppressions-schema.json.ejs +39 -0
- package/dist/templates/suppressions/trivyignore.ejs +17 -0
- package/dist/templates/testing/test-taxonomy.md.ejs +120 -0
- package/dist/test/example.behavioral.test.js +2 -0
- package/dist/types/memory.d.ts +19 -0
- package/dist/types/memory.js +1 -0
- package/dist/types/plan.d.ts +102 -0
- package/dist/types/plan.js +2 -0
- package/dist/types/plugin.d.ts +45 -0
- package/dist/types/plugin.js +1 -0
- package/dist/utils/canon-loader.js +2 -0
- package/dist/utils/channel.js +1 -0
- package/dist/utils/config.d.ts +79 -0
- package/dist/utils/config.js +5 -0
- package/dist/utils/confirm-downgrade.js +5 -0
- package/dist/utils/env.js +2 -0
- package/dist/utils/error-catalog.js +2 -0
- package/dist/utils/errors.js +2 -0
- package/dist/utils/evidence-log.js +3 -0
- package/dist/utils/file-lock.js +2 -0
- package/dist/utils/first-run.js +8 -0
- package/dist/utils/fs.js +3 -0
- package/dist/utils/github-issue-helper.js +4 -0
- package/dist/utils/gradle.js +21 -0
- package/dist/utils/json-output.js +2 -0
- package/dist/utils/logger-config.js +4 -0
- package/dist/utils/logger.js +3 -0
- package/dist/utils/maturity-check.js +2 -0
- package/dist/utils/pkg.js +3 -0
- package/dist/utils/platform.js +2 -0
- package/dist/utils/plugin-loader.js +2 -0
- package/dist/utils/plugin-worker.js +2 -0
- package/dist/utils/prettier-format.js +2 -0
- package/dist/utils/profiler.js +2 -0
- package/dist/utils/render.js +2 -0
- package/dist/utils/replay.js +3 -0
- package/dist/utils/run-cli.js +6 -0
- package/dist/utils/run-id.js +3 -0
- package/dist/utils/safe-read.js +2 -0
- package/dist/utils/task-id.js +2 -0
- package/dist/utils/today.js +2 -0
- package/dist/utils/tty.js +2 -0
- package/dist/utils/walk-dir.js +2 -0
- package/dist/verify/rules/drive-by-scope.js +1 -0
- package/dist/verify/rules/orphan-todos.js +1 -0
- package/dist/verify/rules/registry.js +1 -0
- package/dist/verify/rules/skip-patterns.js +1 -0
- package/dist/verify/rules/types.d.ts +15 -0
- package/dist/verify/rules/types.js +1 -0
- package/dist/verify/rules/ui-language.js +1 -0
- package/dist/verify/run.js +3 -0
- package/dist/wizard/archetype-defaults.js +1 -0
- package/dist/wizard/presets.js +1 -0
- package/dist/wizard/prompts.js +44 -0
- package/dist/wizard/types.d.ts +637 -0
- package/dist/wizard/types.js +1 -0
- package/dist/worktree/harvest.js +2 -0
- package/dist/worktree/links.js +2 -0
- package/dist/worktree/paths.js +2 -0
- package/dist/worktree/validate.js +3 -0
- package/package.json +124 -0
- package/scripts/check-arc42-slots.mjs +738 -0
- package/scripts/check-doc-freshness.mjs +236 -0
- package/scripts/check-doc-set.mjs +243 -0
- package/scripts/check-doc-style.mjs +228 -0
- package/scripts/gold-audit.mjs +319 -0
- package/scripts/lib/doc-gate-allowlist.mjs +123 -0
- package/scripts/lib/doc-set-resolve.mjs +274 -0
- package/scripts/lib/glob-walk.mjs +148 -0
- package/scripts/lib/gold-audit-lib.mjs +1260 -0
- package/scripts/lib/run-helpers.mjs +413 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: close-gold-gap
|
|
3
|
+
description: Use when the gold-audit reports an N/P gap (or a manual check) and you want the deterministic remediation recipe — scaffold/test/config/process — that closes it for a REAL reason, never by faking it.
|
|
4
|
+
title: 'Close Gold Gap'
|
|
5
|
+
doc_version: '1.0.0'
|
|
6
|
+
status: active
|
|
7
|
+
last_review: '2026-06-16'
|
|
8
|
+
owner: ''
|
|
9
|
+
canonical_id: ''
|
|
10
|
+
tags: ['audience/agent', 'audience/dev', 'kind/internal']
|
|
11
|
+
related: ['gold-audit', 'tdd']
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Close Gold Gap
|
|
15
|
+
|
|
16
|
+
Turn one gold-audit gap into a concrete, deterministic remediation **recipe** — then carry it out.
|
|
17
|
+
This skill **never fakes a close**: a recipe is a plan of real work, not a shortcut to flip a verdict.
|
|
18
|
+
|
|
19
|
+
## When to use
|
|
20
|
+
|
|
21
|
+
After `arbiter gold-audit` reports a gap (an `N` or `P` check, or a `manual` check that a human must
|
|
22
|
+
attest). Pick the gap's `id` and ask for its recipe.
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
1. Run the audit to list the gaps:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx @getarbiter/cli gold-audit
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
2. Classify the gap by **category** — what does the failed check actually verify? There is no
|
|
33
|
+
separate recipe engine; the category table below **is** the recipe.
|
|
34
|
+
|
|
35
|
+
3. Execute the recipe's steps yourself. Each step is typed by **category**:
|
|
36
|
+
|
|
37
|
+
| Category | What the recipe does | Honest outcome |
|
|
38
|
+
| ----------- | ------------------------------------------------------------------------------ | -------------- |
|
|
39
|
+
| **doc-set** | Scaffold the missing doc (`check-doc-set --generate`) **then fill real content** | `P` → `Y` only after real content |
|
|
40
|
+
| **test** | Write the missing test(s) TDD-first (loads the `tdd` skill) | `Y` when the real metric meets the bar |
|
|
41
|
+
| **config** | Wire the real tool/config the check verifies | `Y` when the tool genuinely runs |
|
|
42
|
+
| **process** | Human-only action for a `manual` check — **no code recipe** | `NV` (code cannot verify it) |
|
|
43
|
+
|
|
44
|
+
## Anti-fake-green (hard rules)
|
|
45
|
+
|
|
46
|
+
- A doc **stub** proves presence, not closure — a scaffold-only step is `P`, **never** `Y`. Fill it
|
|
47
|
+
with real content before claiming the check.
|
|
48
|
+
- A `manual` check is `NV`: code cannot verify it. There is **no** code recipe — a human performs and
|
|
49
|
+
records the real-world action. Never try to make code "pass" a manual check.
|
|
50
|
+
- **No suppression** — a recipe never contains `--no-verify`, `eslint-disable`, `skip`, or `ignore`.
|
|
51
|
+
- **No marker-stuffing** — never write the matched `pattern`/`equals` literal as the sole action; wire
|
|
52
|
+
the behavior the check is verifying.
|
|
53
|
+
|
|
54
|
+
## Re-audit
|
|
55
|
+
|
|
56
|
+
After executing a recipe, re-run `npx @getarbiter/cli gold-audit` and confirm the gap flipped for a real
|
|
57
|
+
reason — the genuine metric improved or real content/config now exists. If it only flipped because a
|
|
58
|
+
threshold moved or a literal was pasted in, that is fake-green: revert and do the real work.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-audit
|
|
3
|
+
description: Use when running a comprehensive codebase verification. Dispatches parallel agents across disjoint scopes to check invariant compliance, dead code, test coverage gaps, and naming consistency.
|
|
4
|
+
title: "Codebase Audit"
|
|
5
|
+
doc_version: "1.0.0"
|
|
6
|
+
status: active
|
|
7
|
+
last_review: "2026-05-20"
|
|
8
|
+
owner: ""
|
|
9
|
+
canonical_id: ""
|
|
10
|
+
tags: ['audience/agent', 'audience/dev', 'kind/internal']
|
|
11
|
+
related: []
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Codebase Audit
|
|
15
|
+
|
|
16
|
+
**Purpose:** Systematic whole-codebase verification using parallel read-only agents.
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
- Before a major release
|
|
21
|
+
- After a large refactor
|
|
22
|
+
- Periodic health checks
|
|
23
|
+
- Onboarding to an unfamiliar codebase
|
|
24
|
+
|
|
25
|
+
## Audit Scopes
|
|
26
|
+
|
|
27
|
+
Divide the codebase into disjoint scopes and delegate each to a `codebase-scanner` agent:
|
|
28
|
+
|
|
29
|
+
| Scope | What to Check |
|
|
30
|
+
|-------|--------------|
|
|
31
|
+
| **Dead code** | Unused exports, unreachable functions, commented-out blocks |
|
|
32
|
+
| **Naming consistency** | Conventions followed (camelCase, snake_case per layer) |
|
|
33
|
+
| **Test coverage gaps** | Source files without a corresponding test file |
|
|
34
|
+
| **Error handling** | Unchecked errors, swallowed exceptions, missing fallbacks |<% if (language === 'typescript') { %>
|
|
35
|
+
| **Type safety** | `any` usage, missing return types on public functions |<% } %><% if (language === 'java') { %>
|
|
36
|
+
| **Null safety** | `null` returns without `Optional`, unchecked `get()` calls |
|
|
37
|
+
| **Layer violations** | Domain importing from infrastructure, controller importing repository |<% } %>
|
|
38
|
+
|
|
39
|
+
## Execution
|
|
40
|
+
|
|
41
|
+
For each scope, delegate to `codebase-scanner`:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Delegate to codebase-scanner:
|
|
45
|
+
"Find all <scope> issues in src/"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Run scopes in parallel when possible.
|
|
49
|
+
|
|
50
|
+
## Output Format
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
## Codebase Audit Report
|
|
54
|
+
|
|
55
|
+
**Date:** <date>
|
|
56
|
+
**Scope:** Full / Partial (<modules>)
|
|
57
|
+
|
|
58
|
+
### Dead Code
|
|
59
|
+
- <file:line — description>
|
|
60
|
+
|
|
61
|
+
### Naming Inconsistencies
|
|
62
|
+
- <file:line — convention violated>
|
|
63
|
+
|
|
64
|
+
### Test Coverage Gaps
|
|
65
|
+
- <source file without test>
|
|
66
|
+
|
|
67
|
+
### Error Handling Gaps
|
|
68
|
+
- <file:line — description><% if (language === 'typescript') { %>
|
|
69
|
+
|
|
70
|
+
### Type Safety Issues
|
|
71
|
+
- <file:line — description><% } %><% if (language === 'java') { %>
|
|
72
|
+
|
|
73
|
+
### Null Safety Issues
|
|
74
|
+
- <file:line — description>
|
|
75
|
+
|
|
76
|
+
### Layer Violations
|
|
77
|
+
- <file:line — description><% } %>
|
|
78
|
+
|
|
79
|
+
### Summary
|
|
80
|
+
- Total issues found: <N>
|
|
81
|
+
- Critical: <N>
|
|
82
|
+
- Recommended actions: <list>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Constraints
|
|
86
|
+
|
|
87
|
+
- Read-only. No edits during audit.
|
|
88
|
+
- Do not fix issues inline — create task briefs for fixes.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: configure
|
|
3
|
+
description: Use when the user wants to change arbiter.json settings (governance level, feature flags, thresholds) without re-running the full wizard.
|
|
4
|
+
title: "Arbiter Configure"
|
|
5
|
+
doc_version: "1.0.0"
|
|
6
|
+
status: active
|
|
7
|
+
last_review: "2026-05-20"
|
|
8
|
+
owner: ""
|
|
9
|
+
canonical_id: ""
|
|
10
|
+
tags: ['audience/agent', 'audience/dev', 'kind/internal']
|
|
11
|
+
related: []
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Arbiter Configure
|
|
15
|
+
|
|
16
|
+
Modify `arbiter.json` configuration fields without re-running `arbiter init`.
|
|
17
|
+
|
|
18
|
+
## Supported Paths
|
|
19
|
+
|
|
20
|
+
**Feature flags** (`true` / `false`):
|
|
21
|
+
- `features.debtGates`
|
|
22
|
+
- `features.securityScanning`
|
|
23
|
+
- `features.mutationTesting`
|
|
24
|
+
- `features.contractTesting`
|
|
25
|
+
- `features.suppressions`
|
|
26
|
+
- `features.evidenceHarness`
|
|
27
|
+
|
|
28
|
+
**AI tools** (comma-separated list: `claude`, `codex`):
|
|
29
|
+
- `tools`
|
|
30
|
+
|
|
31
|
+
**Thresholds** (numbers):
|
|
32
|
+
- `thresholds.lineCoverage` (1–100)
|
|
33
|
+
- `thresholds.branchCoverage` (1–100)
|
|
34
|
+
- `thresholds.mutationScore` (1–100)
|
|
35
|
+
- `thresholds.cyclomaticComplexity` (positive)
|
|
36
|
+
- `thresholds.methodLength` (positive)
|
|
37
|
+
- `thresholds.maxParams` (positive)
|
|
38
|
+
|
|
39
|
+
## Workflow
|
|
40
|
+
|
|
41
|
+
1. Ask the user which setting they want to change and the new value.
|
|
42
|
+
2. Run the configure command:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
<% if (tools.includes('claude')) { %>npx @getarbiter/cli configure --set <path>=<value><% } %>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
3. If the change affects generated files, offer to run `arbiter update`:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npx @getarbiter/cli update
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Disable mutation testing
|
|
58
|
+
npx @getarbiter/cli configure --set features.mutationTesting=false
|
|
59
|
+
|
|
60
|
+
# Raise line coverage target
|
|
61
|
+
npx @getarbiter/cli configure --set thresholds.lineCoverage=90
|
|
62
|
+
|
|
63
|
+
# Multiple changes at once
|
|
64
|
+
npx @getarbiter/cli configure --set features.debtGates=true --set thresholds.cyclomaticComplexity=10
|
|
65
|
+
|
|
66
|
+
# Change AI tools
|
|
67
|
+
npx @getarbiter/cli configure --set tools=claude,codex
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Current Config
|
|
71
|
+
|
|
72
|
+
Read the current `arbiter.json` to show the user the current values before asking what to change.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: epic-decompose
|
|
3
|
+
description: Use when breaking down a large feature (epic) into independently deliverable tasks. Produces a sequenced task list with dependencies, acceptance criteria, and size estimates.
|
|
4
|
+
argument-hint: "<epic title or description>"
|
|
5
|
+
title: "Epic Decompose"
|
|
6
|
+
doc_version: "1.0.0"
|
|
7
|
+
status: active
|
|
8
|
+
last_review: "2026-05-20"
|
|
9
|
+
owner: ""
|
|
10
|
+
canonical_id: ""
|
|
11
|
+
tags: ['audience/agent', 'audience/dev', 'kind/internal']
|
|
12
|
+
related: []
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Epic Decompose
|
|
16
|
+
|
|
17
|
+
**Purpose:** Break a large feature into independently shippable tasks.
|
|
18
|
+
|
|
19
|
+
## Step 1: Understand the Epic
|
|
20
|
+
|
|
21
|
+
Read the epic description carefully. Identify:
|
|
22
|
+
- The user-visible outcome
|
|
23
|
+
- The technical surface area (which layers are affected)
|
|
24
|
+
- External dependencies (third-party APIs, migrations, infra changes)
|
|
25
|
+
- Risk areas (security, performance, backwards compatibility)
|
|
26
|
+
|
|
27
|
+
## Step 2: Identify Seams
|
|
28
|
+
|
|
29
|
+
Find natural boundaries where the work can be split:
|
|
30
|
+
- **Vertical slices** — thin end-to-end slices (preferred)
|
|
31
|
+
- **Horizontal layers** — domain first, then API, then UI
|
|
32
|
+
- **Data migrations** — always a separate task, run before or after code
|
|
33
|
+
|
|
34
|
+
## Step 3: Sequence Tasks
|
|
35
|
+
|
|
36
|
+
Order tasks by:
|
|
37
|
+
1. Foundation first (data models, migrations, shared types)
|
|
38
|
+
2. Core behavior second (business logic, domain layer)
|
|
39
|
+
3. Integration third (API endpoints, event handlers)
|
|
40
|
+
4. UI/UX last (if applicable)
|
|
41
|
+
5. Cleanup/polish (dead code removal, documentation)
|
|
42
|
+
|
|
43
|
+
## Step 4: Write Task Briefs
|
|
44
|
+
|
|
45
|
+
For each task:
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
### Task N: <title>
|
|
49
|
+
|
|
50
|
+
**Goal:** <one sentence — what does this task deliver?>
|
|
51
|
+
**Depends on:** Task N-1 (or "none")
|
|
52
|
+
**Acceptance criteria:**
|
|
53
|
+
- [ ] <testable criterion 1>
|
|
54
|
+
- [ ] <testable criterion 2>
|
|
55
|
+
**Size:** XS / S / M / L
|
|
56
|
+
**Risk:** Low / Medium / High
|
|
57
|
+
**Notes:** <edge cases, gotchas, open questions>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Size Reference
|
|
61
|
+
|
|
62
|
+
| Size | Scope |
|
|
63
|
+
|------|-------|
|
|
64
|
+
| XS | < 1 hour, 1-2 files |
|
|
65
|
+
| S | Half day, 3-5 files |
|
|
66
|
+
| M | 1-2 days, 5-10 files |
|
|
67
|
+
| L | 3-5 days, 10+ files or multiple layers |
|
|
68
|
+
|
|
69
|
+
Tasks larger than M should be split further.
|
|
70
|
+
|
|
71
|
+
## Output Format
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
## Epic: <title>
|
|
75
|
+
|
|
76
|
+
**Summary:** <2-3 sentences>
|
|
77
|
+
**Total tasks:** <N>
|
|
78
|
+
**Estimated total:** <size>
|
|
79
|
+
|
|
80
|
+
### Tasks
|
|
81
|
+
<task briefs in sequence>
|
|
82
|
+
|
|
83
|
+
### Open Questions
|
|
84
|
+
- <question 1>
|
|
85
|
+
- <question 2>
|
|
86
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gold-audit
|
|
3
|
+
description: Use when the user wants to measure how close the project is to gold-standard quality — runs the deterministic `arbiter gold-audit` engine and reports the level band plus a prioritized list of what is missing. Read-only; never changes code.
|
|
4
|
+
title: "Gold Audit (measure)"
|
|
5
|
+
doc_version: "1.0.0"
|
|
6
|
+
status: active
|
|
7
|
+
last_review: "2026-06-16"
|
|
8
|
+
owner: ""
|
|
9
|
+
canonical_id: ""
|
|
10
|
+
tags: ['audience/agent', 'audience/dev', 'kind/internal', 'kind/analysis']
|
|
11
|
+
related: ['ship', 'gap']
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Gold Audit (measure)
|
|
15
|
+
|
|
16
|
+
**Goal:** tell the user where the project sits against the gold-standard registry —
|
|
17
|
+
its level band (`L0`–`L3`), its score, and a prioritized "what's missing" list — so
|
|
18
|
+
they know exactly what to close next.
|
|
19
|
+
|
|
20
|
+
**Read-only.** This skill MEASURES; it never changes a single file. It runs the
|
|
21
|
+
existing deterministic engine and presents the result. It does NOT re-score, re-rank,
|
|
22
|
+
or "estimate" anything with the model — the verdicts come straight from the engine.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Step 1 — Run the engine
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx @getarbiter/cli gold-audit --json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The CLI auto-detects the project's brownfield class and degrades gracefully when no
|
|
33
|
+
registry is installed. Capture stdout as the payload.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Step 2 — Handle the graceful fallback
|
|
38
|
+
|
|
39
|
+
The engine prints a non-JSON SKIP line (it does not start with `{`) when there is no
|
|
40
|
+
registry/engine installed. In that case do NOT invent a score. Tell the user the
|
|
41
|
+
gold registry isn't wired up yet and point them at:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx @getarbiter/cli init # new project — sets up the registry + gates
|
|
45
|
+
npx @getarbiter/cli update # existing arbiter project — refreshes the generated kit
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then stop.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Step 3 — Read the payload verbatim
|
|
53
|
+
|
|
54
|
+
When stdout is JSON, parse it and read these fields **as-is** (no re-scoring):
|
|
55
|
+
|
|
56
|
+
| Field | Use |
|
|
57
|
+
| -------------- | ------------------------------------------------------------- |
|
|
58
|
+
| `level.level` | Current band: `L0` / `L1` / `L2` / `L3` |
|
|
59
|
+
| `level.nextLevel` / `level.toNextLevel` | Next band + how many points away |
|
|
60
|
+
| `level.brownfieldClass` | The detected class the band is keyed to |
|
|
61
|
+
| `score` | Overall score |
|
|
62
|
+
| `yCount` / `totals.checks` | Checks fully satisfied vs total |
|
|
63
|
+
| `riskyCount` | Count of risky (N/P on high-risk) checks |
|
|
64
|
+
| `checks[]` | Per-check `id` / `dimension` / `title` / `type` / `verdict` / `weight` / `evidence` |
|
|
65
|
+
| `gaps[]` | The "what's missing" families: N/P checks grouped by `dimension` |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Step 4 — Present the level band + prioritized gaps
|
|
70
|
+
|
|
71
|
+
Lead with the band, then the gap list grouped by family (`dimension`):
|
|
72
|
+
|
|
73
|
+
1. **Level line** — `<level> (<brownfieldClass>) · score <score> · <toNextLevel> to <nextLevel> · Y <yCount>/<totals.checks> · RISKY <riskyCount>`.
|
|
74
|
+
2. **What's missing** — iterate `gaps[]`. For each `dimension` family, list its N/P
|
|
75
|
+
checks as `<verdict> <id> <title>` with the `evidence.file`/`evidence.detail` when
|
|
76
|
+
present. These are the concrete, deterministic next actions.
|
|
77
|
+
3. If `gaps[]` is empty, report that every applicable check is `Y`.
|
|
78
|
+
|
|
79
|
+
Prioritize the families with the most `N` (missing entirely) and highest-risk checks
|
|
80
|
+
first — but the ordering reflects the engine's verdicts, not a model opinion.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Hard rules
|
|
85
|
+
|
|
86
|
+
- **Deterministic, no AI scoring.** Same repo + same registry ⇒ identical output. The
|
|
87
|
+
level and every verdict come from the engine payload; never substitute a guess.
|
|
88
|
+
- **Read-only.** Measure and report. Closing a gap is a separate, explicit action —
|
|
89
|
+
this skill never edits code, config, or docs.
|
|
90
|
+
- **Graceful when absent.** No registry ⇒ point at `arbiter init` / `arbiter update`,
|
|
91
|
+
never a fabricated score.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: impact
|
|
3
|
+
description: Use when you need the blast radius of a change — "who calls X", "what breaks if I touch Y", upstream/downstream dependents of a symbol or file. Opt-in graph-first: if the optional `graphify` knowledge graph is present and fresh, query it (deterministic, no-LLM, ~1000x fewer tokens than grep-and-read); otherwise fall back to ripgrep. Never required — degrades gracefully when graphify is absent.
|
|
4
|
+
argument-hint: '<symbol-or-file>'
|
|
5
|
+
title: 'Impact (blast radius)'
|
|
6
|
+
doc_version: '1.0.0'
|
|
7
|
+
status: active
|
|
8
|
+
last_review: '2026-06-15'
|
|
9
|
+
owner: ''
|
|
10
|
+
canonical_id: ''
|
|
11
|
+
tags: ['audience/agent', 'audience/dev', 'kind/internal', 'kind/analysis']
|
|
12
|
+
related: ['ssot-navigation', 'understand-code', 'ship']
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Impact (blast radius)
|
|
16
|
+
|
|
17
|
+
**Goal:** answer "what depends on X?" — the upstream/downstream blast radius of a symbol or
|
|
18
|
+
file — accurately and cheaply, before you change it.
|
|
19
|
+
|
|
20
|
+
**Opt-in, graph-first.** arbiter does not require any graph tool. But if the optional
|
|
21
|
+
[`graphify`](https://github.com/) knowledge graph is installed and a `graphify-out/graph.json`
|
|
22
|
+
exists in the repo, this skill queries the graph **first** — it is deterministic (no LLM),
|
|
23
|
+
pre-computes the dependency edges, and answers a blast-radius query in ~1000x fewer tokens than
|
|
24
|
+
loading every grep hit. When the graph is absent or the symbol is not in it, the skill falls
|
|
25
|
+
back to ripgrep. Either way you get an answer; the graph just makes it cheap and complete.
|
|
26
|
+
|
|
27
|
+
> This is the analysis sibling of `/ship`: run `/impact` to scope a change before planning, and
|
|
28
|
+
> in `/ship`'s plan/red-team phases to validate that the plan touched everything the change
|
|
29
|
+
> actually reaches.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Step 0 — Detect availability (graceful)
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
command -v graphify >/dev/null 2>&1 && test -f graphify-out/graph.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- **Available** → continue with the graph path (Steps 1–3).
|
|
40
|
+
- **Not available** → skip to **Fallback (ripgrep)**. Do NOT fail; graphify is optional. If the
|
|
41
|
+
user wants the cheap path, tell them once: install the `graphify` CLI (a `uv tool`) and run
|
|
42
|
+
`graphify update .` to build `graphify-out/`.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Step 1 — Ensure the graph is fresh (deterministic, no-LLM)
|
|
47
|
+
|
|
48
|
+
The graph is a derived artifact; it is only trustworthy when it matches the working tree.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Stale if the recorded build commit != HEAD, or tracked code changed in the working tree.
|
|
52
|
+
build_commit="$(sed -n 's/^build_commit: *//p' graphify-out/GRAPH_REPORT.md 2>/dev/null)"
|
|
53
|
+
head="$(git rev-parse HEAD)"
|
|
54
|
+
if [ "$build_commit" != "$head" ] || ! git diff --quiet; then
|
|
55
|
+
graphify update . # deterministic refresh; no model involved
|
|
56
|
+
fi
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Refreshing is cheap and never asks a model anything — it re-extracts edges from source.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Step 2 — Query the blast radius
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
graphify explain "<symbol>" --graph graphify-out/graph.json # upstream + downstream dependents
|
|
67
|
+
graphify path "<A>" "<B>" --graph graphify-out/graph.json # shortest dependency chain A→B
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
- Treat `EXTRACTED` edges (found in real code) as reliable.
|
|
71
|
+
- Flag `INFERRED` edges (model-guessed at graph-build time) as "verify by hand" in any
|
|
72
|
+
review/red-team note — do not trust them blindly.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Step 3 — Report
|
|
77
|
+
|
|
78
|
+
Summarize: the changed symbol/file, its **direct** dependents, the **transitive** reach
|
|
79
|
+
(modules/files), and any `INFERRED` edges that need manual confirmation. Feed this into the plan
|
|
80
|
+
(which files the change must touch) and the red-team (what it might have missed).
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Fallback (ripgrep)
|
|
85
|
+
|
|
86
|
+
When graphify is unavailable or returns "not in graph" (a miss), use ripgrep — correct, just
|
|
87
|
+
more tokens:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
rg -n --no-heading -w "<symbol>" -g '!**/dist/**' -g '!**/node_modules/**'
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Then read the hits to separate definitions from call sites. This is the historical default and
|
|
94
|
+
is always available; the graph is purely an optimization on top of it.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Hard rules
|
|
99
|
+
|
|
100
|
+
- **Optional, never fatal.** No gate, plan, or `/ship` phase may _require_ graphify. Absence ⇒
|
|
101
|
+
fall back, never error.
|
|
102
|
+
- **Deterministic graph only.** Graph build/refresh (`graphify update`) is no-LLM; never "guess"
|
|
103
|
+
a blast radius and present it as graph output.
|
|
104
|
+
- **Freshness before trust.** A stale graph is worse than none — always run Step 1 first.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: levelup
|
|
3
|
+
description: Use when the user wants to raise a governed project's gold level honestly — runs /gold-audit, composes a remediation wave that closes each gap for a REAL reason via /close-gold-gap, then re-audits with the no-regress ratchet + anti-fake-green guards. The level rises only by a real verdict flip; un-closeable gaps become needs-human, never faked.
|
|
4
|
+
argument-hint: '[--target L0|L1|L2|L3] [--max-waves N]'
|
|
5
|
+
title: 'Level Up (raise the gold level honestly)'
|
|
6
|
+
doc_version: '1.0.0'
|
|
7
|
+
status: active
|
|
8
|
+
last_review: '2026-06-16'
|
|
9
|
+
owner: ''
|
|
10
|
+
canonical_id: ''
|
|
11
|
+
tags: ['audience/agent', 'audience/dev', 'kind/internal', 'kind/orchestration']
|
|
12
|
+
related: ['gold-audit', 'close-gold-gap', 'wave-drain', 'tdd', 'verification']
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Level Up (raise the gold level honestly)
|
|
16
|
+
|
|
17
|
+
**Goal:** raise this project's gold-audit **level band** toward `--target` (default the
|
|
18
|
+
top band, `L3` — the "gold" standard) by closing real gaps. Every point gained is backed by
|
|
19
|
+
real config / test / doc work; the level **only** rises by a real verdict flip.
|
|
20
|
+
|
|
21
|
+
**Mental model:** you are the **orchestrator**. `/levelup` does not invent a score and does
|
|
22
|
+
not implement gaps by hand inline — it **measures** with `/gold-audit`, **composes a
|
|
23
|
+
remediation wave** (the `/drain` fan-out shape), **closes each gap honestly** with
|
|
24
|
+
`/close-gold-gap`, then **re-audits behind the ratchet + anti-fake-green guards**. It reuses
|
|
25
|
+
existing engines and skills — there is **no new TS engine** and **no new `arbiter` CLI verb**.
|
|
26
|
+
|
|
27
|
+
> `/gold-audit` measures (read-only). `/close-gold-gap` gives one gap its real recipe.
|
|
28
|
+
> `/levelup` is the loop that ties them together and drives the band up, wave by wave.
|
|
29
|
+
|
|
30
|
+
## Primitives
|
|
31
|
+
|
|
32
|
+
| Primitive | Role here |
|
|
33
|
+
| ----------------------------------------- | -------------------------------------------------------------------- |
|
|
34
|
+
| Skill `gold-audit` | Measure the band + the prioritized `gaps[]` (read-only, no AI score) |
|
|
35
|
+
| `arbiter gold-audit --json` | The deterministic engine payload `/gold-audit` reads |
|
|
36
|
+
| `arbiter gold-audit --check` | No-regress ratchet gate — locks each gain, fails on any regress |
|
|
37
|
+
| Skill `close-gold-gap` | The typed, honest recipe (doc-set / test / config / process) per gap |
|
|
38
|
+
| Skill `wave-drain` | The fan-out shape for the remediation wave (groups, parallel agents) |
|
|
39
|
+
| Skill `tdd` | Red → green → refactor for every `test`-category gap |
|
|
40
|
+
| Skill `verification` | Claim-based verification before the re-audit gate |
|
|
41
|
+
| `scripts/check-all.mjs` | The anti-fake-green aggregate — fail-closed disarm-proof verdict |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Phase 0 — Measure the starting band
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx @getarbiter/cli gold-audit --json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Load the **`gold-audit`** skill and read the payload verbatim — `level.level`,
|
|
52
|
+
`level.nextLevel`, `score`, and `gaps[]` (the N/P checks grouped by `dimension`). Record this
|
|
53
|
+
as the **before** snapshot. If the engine emits a SKIP line (no registry installed), do NOT
|
|
54
|
+
invent a score: point the user at `npx @getarbiter/cli init` / `npx @getarbiter/cli update` and stop.
|
|
55
|
+
|
|
56
|
+
Parse `--target` (a level band `L0`–`L3`, default the top band `L3`). If the current band is
|
|
57
|
+
already `>= --target`, report "already at target" and stop.
|
|
58
|
+
|
|
59
|
+
## Phase 1 — Compose a remediation wave
|
|
60
|
+
|
|
61
|
+
From `gaps[]`, build a **wave** of the gaps that move the band fastest, prioritized by:
|
|
62
|
+
|
|
63
|
+
1. **brownfield class + risk** — high-risk N (missing entirely) checks first;
|
|
64
|
+
2. **ratchet value** — the checks whose `weight` contributes most to the next band;
|
|
65
|
+
3. **closeability** — `config` / `test` / `doc-set` gaps (code-closeable) ahead of `process`
|
|
66
|
+
gaps (`manual`, `NV` — human-only, no code recipe).
|
|
67
|
+
|
|
68
|
+
Partition the wave into **groups** of module-coherent gaps (the `/drain` rule: two agents
|
|
69
|
+
never edit the same file concurrently). Independent groups are parallelizable.
|
|
70
|
+
|
|
71
|
+
## Phase 2 — Close each gap honestly
|
|
72
|
+
|
|
73
|
+
For each gap, derive its recipe and carry it out. Load the **`close-gold-gap`** skill and execute the
|
|
74
|
+
recipe by **category** — the category table below **is** the recipe (no separate engine call):
|
|
75
|
+
|
|
76
|
+
| Category | Real work | Honest outcome |
|
|
77
|
+
| ----------- | -------------------------------------------------------------- | -------------------------------------- |
|
|
78
|
+
| **doc-set** | scaffold the doc, **then fill real content** | `P` → `Y` only after real content |
|
|
79
|
+
| **test** | write the missing test(s) **TDD-first** (load the `tdd` skill) | `Y` when the real metric meets the bar |
|
|
80
|
+
| **config** | wire the real tool/config the check verifies | `Y` when the tool genuinely runs |
|
|
81
|
+
| **process** | human-only action for a `manual` check — **no code recipe** | `NV` → routes to needs-human |
|
|
82
|
+
|
|
83
|
+
A gap that cannot be closed honestly — a `manual`/`process` check, a gap blocked on a human
|
|
84
|
+
decision, or one needing an external account/service — becomes **`needs-human`** with a stated
|
|
85
|
+
blocker reason. It is **NEVER** faked, suppressed, or marker-stuffed. It does not block the
|
|
86
|
+
wave: the rest proceeds.
|
|
87
|
+
|
|
88
|
+
## Phase 3 — Re-audit behind the ratchet + anti-fake-green guards (fail-closed)
|
|
89
|
+
|
|
90
|
+
After the wave's gaps are closed, gate the gain. The level rises **only** by a real verdict
|
|
91
|
+
flip — never by a moved threshold, a pasted literal, or a disabled check:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# 1. No-regress ratchet — locks the gain; exit 1 if score/Y regressed below baseline.
|
|
95
|
+
npx @getarbiter/cli gold-audit --check
|
|
96
|
+
|
|
97
|
+
# 2. Anti-fake-green aggregate — disarm-proof; a broken guard (exit 2) fails unconditionally.
|
|
98
|
+
node scripts/check-all.mjs
|
|
99
|
+
|
|
100
|
+
# 3. Re-measure the band and compare to the before snapshot.
|
|
101
|
+
npx @getarbiter/cli gold-audit --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Fail-closed semantics (structural anti-fake-green):**
|
|
105
|
+
|
|
106
|
+
- `gold-audit --check` exit **1** (regress) → a gap was un-closed or a real metric dropped:
|
|
107
|
+
**REJECT** the wave, revert the cheated change, re-do the real work.
|
|
108
|
+
- `check-all.mjs` exit **1** (hard fail) or exit **2** (a broken/disarmed guard)
|
|
109
|
+
→ **HALT** the wave. A guard you cannot trust is a stop, not a pass — you cannot disarm a
|
|
110
|
+
guard by breaking it.
|
|
111
|
+
- The re-audit must show the band rose **for a real reason** (genuine metric improved, real
|
|
112
|
+
content/config now exists). A green that appears only because a literal was pasted or a
|
|
113
|
+
threshold moved is **fake-green**: revert and do the real work.
|
|
114
|
+
|
|
115
|
+
Only when all three pass and the band genuinely rose do you **commit the new
|
|
116
|
+
`.gold-audit-baseline.json`**, which ratchets the gain monotonically — the next wave can only
|
|
117
|
+
go up from here.
|
|
118
|
+
|
|
119
|
+
## Phase 4 — Repeat to target, then report
|
|
120
|
+
|
|
121
|
+
Repeat Phase 1 → Phase 3 until the band reaches `--target` or no further gap can be closed
|
|
122
|
+
honestly (every remaining gap is `needs-human`). Cap the loop at `--max-waves` (default 5) to
|
|
123
|
+
stay bounded; if the target is not reached within the cap, report the remaining gaps and stop.
|
|
124
|
+
|
|
125
|
+
Emit the **final report**:
|
|
126
|
+
|
|
127
|
+
- **before → after** — starting band + score vs final band + score.
|
|
128
|
+
- **gaps closed** — each `gapId`, its category, and the **evidence** (the real file/test/config
|
|
129
|
+
that flipped it `Y`).
|
|
130
|
+
- **gaps needs-human** — each `gapId` with its **blocker reason** (manual check, external
|
|
131
|
+
dependency, human decision).
|
|
132
|
+
- **ratchet verification** — the committed `.gold-audit-baseline.json` and the `--check`
|
|
133
|
+
exit-0 that locks the gain monotonically.
|
|
134
|
+
|
|
135
|
+
## Hard rules (anti-fake-green)
|
|
136
|
+
|
|
137
|
+
- **The level rises only by a real verdict flip.** Same repo + same registry ⇒ identical
|
|
138
|
+
engine verdicts; a band that "rose" without real work did not rise.
|
|
139
|
+
- **Fail-closed.** A broken guard (exit 2) or a hard-fail (exit 1) **halts the wave** — never
|
|
140
|
+
`--no-verify`, never skip, never disable a guard to pass it.
|
|
141
|
+
- **No fake green, ever.** No suppression (`--no-verify`, `eslint-disable`, `skip`, `ignore`),
|
|
142
|
+
no marker-stuffing (pasting the matched `pattern`/`equals` literal as the sole action), no
|
|
143
|
+
doc stub claimed as `Y`. A gap that can't be closed honestly → **`needs-human`**.
|
|
144
|
+
- **No new engine, no new CLI verb.** `/levelup` is a skill + slash command; it composes
|
|
145
|
+
`arbiter gold-audit` and the `close-gold-gap` skill — it never re-implements scoring or the
|
|
146
|
+
no-regress check.
|