@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,47 @@
|
|
|
1
|
+
<%
|
|
2
|
+
// #1127: Vitest browser-mode config for component testing with real Chromium.
|
|
3
|
+
// Uses Playwright as the browser provider for true DOM rendering (not jsdom).
|
|
4
|
+
const _fw = (typeof frontend !== 'undefined' && frontend && frontend.framework)
|
|
5
|
+
? frontend.framework : 'react'
|
|
6
|
+
%>
|
|
7
|
+
// vitest.browser.config.ts — generated by arbiter (#1127)
|
|
8
|
+
// Vitest Browser Mode — real Chromium via Playwright provider.
|
|
9
|
+
// Runs component tests in a real browser environment (not jsdom).
|
|
10
|
+
// See docs/GOVERNANCE/FE_DESIGN_PRINCIPLES.md P7 (Visual Verification).
|
|
11
|
+
// Run: npx vitest --config vitest.browser.config.ts
|
|
12
|
+
|
|
13
|
+
import { defineConfig } from 'vitest/config'
|
|
14
|
+
<% if (_fw === 'vue') { %>
|
|
15
|
+
import vue from '@vitejs/plugin-vue'
|
|
16
|
+
<% } else if (_fw === 'svelte') { %>
|
|
17
|
+
import { svelte } from '@sveltejs/vite-plugin-svelte'
|
|
18
|
+
<% } else { %>
|
|
19
|
+
import react from '@vitejs/plugin-react'
|
|
20
|
+
<% } %>
|
|
21
|
+
|
|
22
|
+
export default defineConfig({
|
|
23
|
+
plugins: [
|
|
24
|
+
<% if (_fw === 'vue') { %>
|
|
25
|
+
vue(),
|
|
26
|
+
<% } else if (_fw === 'svelte') { %>
|
|
27
|
+
svelte(),
|
|
28
|
+
<% } else { %>
|
|
29
|
+
react(),
|
|
30
|
+
<% } %>
|
|
31
|
+
],
|
|
32
|
+
test: {
|
|
33
|
+
// Use Playwright for real Chromium — not jsdom
|
|
34
|
+
browser: {
|
|
35
|
+
enabled: true,
|
|
36
|
+
name: 'chromium',
|
|
37
|
+
provider: 'playwright',
|
|
38
|
+
headless: true,
|
|
39
|
+
},
|
|
40
|
+
// Component tests under src/ — exclude unit tests (vitest.config.ts handles those)
|
|
41
|
+
include: ['src/**/*.browser.test.{ts,tsx,vue,svelte}'],
|
|
42
|
+
// VRT: screenshot comparison via toMatchScreenshot
|
|
43
|
+
// Baselines stored in __tests__/screenshots/
|
|
44
|
+
// Capture: npx vitest --config vitest.browser.config.ts --update-snapshots
|
|
45
|
+
setupFiles: ['./vitest.browser.setup.ts'],
|
|
46
|
+
},
|
|
47
|
+
})
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
coverage: {
|
|
6
|
+
provider: 'v8',
|
|
7
|
+
// json-summary writes coverage/coverage-summary.json, which the gate's
|
|
8
|
+
// greenfield-aware coverage check (scripts/lib/coverage-gate.mjs, #1319.8)
|
|
9
|
+
// parses at runtime to distinguish "no executable statements" from a real
|
|
10
|
+
// threshold miss.
|
|
11
|
+
reporter: ['text', 'html', 'lcov', 'json-summary'],
|
|
12
|
+
reportsDirectory: './coverage',
|
|
13
|
+
include: ['src/**'],
|
|
14
|
+
// Curated exclude list (#353, Phase 7A — prior-project parity).
|
|
15
|
+
// Every entry is intentionally excluded with a rationale; do NOT add
|
|
16
|
+
// bare paths. A future lint (`check-coverage-excludes-rationale.mjs`)
|
|
17
|
+
// will enforce the comment-per-entry rule.
|
|
18
|
+
exclude: [
|
|
19
|
+
// Generated type definitions — no executable code to cover.
|
|
20
|
+
'**/*.d.ts',
|
|
21
|
+
// Config files (vitest, eslint, tsup, etc.) — bootstrap-only, untestable.
|
|
22
|
+
'**/*.config.*',
|
|
23
|
+
// Barrel exports — re-export only; coverage is double-counted via the
|
|
24
|
+
// re-exported symbols themselves.
|
|
25
|
+
'**/index.ts',
|
|
26
|
+
// Test files exclude themselves by convention; listed for clarity.
|
|
27
|
+
'**/*.test.ts',
|
|
28
|
+
'**/*.spec.ts',
|
|
29
|
+
],
|
|
30
|
+
thresholds: {
|
|
31
|
+
// thresholdAutoUpdate:false prevents vitest from silently lowering the
|
|
32
|
+
// floor when coverage drops between runs — regressions must be an
|
|
33
|
+
// explicit edit, never auto-applied (#353, INV-30 spirit).
|
|
34
|
+
thresholdAutoUpdate: false,
|
|
35
|
+
// #1527 — all four keys mirror the SAME resolved floor as the check-all
|
|
36
|
+
// gate. `lines`/`functions`/`statements` share the line-coverage value
|
|
37
|
+
// (no mixed SSOT); `branches` uses the branch floor. The generator
|
|
38
|
+
// (src/generators/coverage.ts) overrides `thresholds` with the resolved
|
|
39
|
+
// values, so this never disagrees with the gate.
|
|
40
|
+
lines: <%= locals.thresholds ? locals.thresholds.lineCoverage : coverageThreshold %>,
|
|
41
|
+
functions: <%= locals.thresholds ? locals.thresholds.lineCoverage : coverageThreshold %>,
|
|
42
|
+
branches: <%= locals.thresholds ? locals.thresholds.branchCoverage : coverageThreshold %>,
|
|
43
|
+
statements: <%= locals.thresholds ? locals.thresholds.lineCoverage : coverageThreshold %>,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Coding Standards
|
|
2
|
+
|
|
3
|
+
_Generated by arbiter. Update to match your team's conventions._
|
|
4
|
+
|
|
5
|
+
## General
|
|
6
|
+
|
|
7
|
+
- Prefer immutable variables (const/val/final)
|
|
8
|
+
- Functions should have a single responsibility
|
|
9
|
+
- No magic numbers — use named constants
|
|
10
|
+
- Maximum cyclomatic complexity: 15
|
|
11
|
+
|
|
12
|
+
<% if (language === 'typescript') { %>
|
|
13
|
+
## TypeScript
|
|
14
|
+
|
|
15
|
+
- `strict: true` in tsconfig — mandatory
|
|
16
|
+
- No `any` type — use `unknown` and narrow, or create proper types
|
|
17
|
+
- Named exports preferred over default exports
|
|
18
|
+
- File naming: kebab-case.ts
|
|
19
|
+
- Linting: ESLint with `@typescript-eslint` ruleset
|
|
20
|
+
- Dead code: Knip (zero unused exports)
|
|
21
|
+
- Coverage threshold: 80% lines
|
|
22
|
+
|
|
23
|
+
<% } %>
|
|
24
|
+
<% if (language === 'java' || language === 'kotlin') { %>
|
|
25
|
+
## JVM
|
|
26
|
+
|
|
27
|
+
- Static analysis: SpotBugs — zero HIGH/CRITICAL findings
|
|
28
|
+
- Coverage: JaCoCo — 80% line coverage minimum
|
|
29
|
+
- Style: Checkstyle — Google Java Style Guide
|
|
30
|
+
- No raw types — use generics
|
|
31
|
+
- Checked exceptions only when caller must handle them
|
|
32
|
+
<% if (hasPublicApi) { %>
|
|
33
|
+
### Payload Size Limiting (API projects)
|
|
34
|
+
|
|
35
|
+
Spring Boot does not enforce a request body size limit by default. Add a
|
|
36
|
+
`OncePerRequestFilter` (or set `spring.servlet.multipart.max-request-size` for
|
|
37
|
+
multipart) to reject oversized payloads before they reach the controller layer.
|
|
38
|
+
Return HTTP 413 with an RFC 7807 problem-details body (`type`, `title`,
|
|
39
|
+
`status`, `detail`, `instance`). See the TypeScript reference implementation in
|
|
40
|
+
`src/middleware/payload-size-limit.ts` for the expected response shape.
|
|
41
|
+
<% } %>
|
|
42
|
+
<% } %>
|
|
43
|
+
<% if (language === 'python') { %>
|
|
44
|
+
## Python
|
|
45
|
+
|
|
46
|
+
- Type hints mandatory on all public functions (PEP 484)
|
|
47
|
+
- Black + isort for formatting (no manual exceptions)
|
|
48
|
+
- pylint/flake8 zero warnings
|
|
49
|
+
- Coverage threshold: 80% (pytest-cov)
|
|
50
|
+
- Docstrings for all public modules, classes, and functions (Google style)
|
|
51
|
+
|
|
52
|
+
<% } %>
|
|
53
|
+
<% if (language === 'go') { %>
|
|
54
|
+
## Go
|
|
55
|
+
|
|
56
|
+
- `go vet` and `staticcheck` — zero warnings
|
|
57
|
+
- `gofmt` applied before every commit
|
|
58
|
+
- Error wrapping: `fmt.Errorf("...: %w", err)` — no bare `errors.New`
|
|
59
|
+
- Coverage threshold: 80% (go test -cover)
|
|
60
|
+
- No global mutable state
|
|
61
|
+
|
|
62
|
+
<% } %>
|
|
63
|
+
<% if (language === 'rust') { %>
|
|
64
|
+
## Rust
|
|
65
|
+
|
|
66
|
+
- `clippy` at deny level — zero warnings
|
|
67
|
+
- No `unwrap()` in production code — use `?` or handle explicitly
|
|
68
|
+
- `rustfmt` applied before every commit
|
|
69
|
+
- Coverage threshold: 80% (cargo-tarpaulin or similar)
|
|
70
|
+
- Prefer `thiserror` for error types
|
|
71
|
+
|
|
72
|
+
<% } %>
|
|
73
|
+
<% if (isL3Plus) { %>
|
|
74
|
+
## L3 Governance
|
|
75
|
+
|
|
76
|
+
- All public APIs must have OpenAPI/Swagger documentation
|
|
77
|
+
- Breaking changes require an ADR
|
|
78
|
+
- Architectural decision records: `docs/adr/`
|
|
79
|
+
- Security review required for any auth, crypto, or external boundary changes
|
|
80
|
+
|
|
81
|
+
<% } %>
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# FEATURE_MATRIX — Product Truth RTM
|
|
2
|
+
|
|
3
|
+
_Generated by arbiter at governance level <%= governanceLevel %>. This is your project's
|
|
4
|
+
Product-Truth bible: the single authoritative record of what this project delivers, at what
|
|
5
|
+
level, with what evidence. Update this file as your implementation matures._
|
|
6
|
+
|
|
7
|
+
> **Gate:** `scripts/check-feature-matrix.mjs --check` (L1, fail-closed). Run
|
|
8
|
+
> `node scripts/check-feature-matrix.mjs --write` to regenerate the summary section.
|
|
9
|
+
>
|
|
10
|
+
> **Export:** (planned) CSV/XLSX export for PM/stakeholder views — not yet shipped as a CLI command.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Status vocabulary
|
|
15
|
+
|
|
16
|
+
| Status | Meaning | Required fields |
|
|
17
|
+
|--------|---------|-----------------|
|
|
18
|
+
| `Missing` | No implementation — tracked by issue | `issue_ref` in `#NNN` format |
|
|
19
|
+
| `Partial` | Code exists; test/doc incomplete | `code_ref` non-empty |
|
|
20
|
+
| `Done` | Code + test + doc all present | `code_ref` + `test_ref` + `doc_ref` non-empty and files exist |
|
|
21
|
+
| `Verified` | Full evidence chain — gate-checked | all four refs non-empty, `test_ref` title parsed |
|
|
22
|
+
|
|
23
|
+
Promotion is fail-closed (cannot skip a step).
|
|
24
|
+
|
|
25
|
+
`source_ref` (optional, 11th column): upward anchor(s) toward the
|
|
26
|
+
requirement's origin (`INV-NN`, `ADR-NNN`, `PRD §N(.M)*`, comma-separated).
|
|
27
|
+
Validated whenever non-empty, regardless of status. Non-canonical forms (an
|
|
28
|
+
issue reference, free prose, a legacy-declared anchor) are format-only and
|
|
29
|
+
never resolved (no false red). `test_ref` glob patterns (`*`/`**`) are
|
|
30
|
+
banned on `Done`/`Verified` rows unless grandfathered in the committed
|
|
31
|
+
ratchet baseline (`.feature-matrix-glob-baseline.json`, regenerated
|
|
32
|
+
deliberately via `--update-baseline`); a `Verified` row is never
|
|
33
|
+
baseline-exemptible.
|
|
34
|
+
|
|
35
|
+
`verification_tier` (optional, 12th column): `SCAFFOLD` | `GATE` | `E2E` —
|
|
36
|
+
the kind of proof this row needs to be fully qualified, independent of
|
|
37
|
+
`status` (a `Missing`/`Partial` row can correctly declare the tier its
|
|
38
|
+
eventual test must clear). `SCAFFOLD` = `arbiter init`/`update` produces the
|
|
39
|
+
expected artifact; `GATE` = your own L1/L2 unit+integration suite; `E2E` =
|
|
40
|
+
a real run of the generated project's own gate. Validated (enum only)
|
|
41
|
+
whenever non-empty.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
<!-- FEATURE_MATRIX_START -->
|
|
46
|
+
| feature_id | capability | kit_dims | level | status | code_ref | test_ref | doc_ref | issue_ref | note | source_ref | verification_tier |
|
|
47
|
+
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
48
|
+
| REQ-001 | Architecture enforcement | N01,N02,N03,N04,N05,N06,N07 | L2 | Missing | | | | #1 | Replace with your architecture enforcement ref |
|
|
49
|
+
| REQ-002 | Static analysis & linting | N09,N10,N11,N12,N13,N14,N15,N16 | L2 | Missing | | | | #2 | Replace with your static analysis ref |
|
|
50
|
+
| REQ-003 | Test framework | N17,N18,N19,N20,N21,N22,N23 | L2 | Missing | | | | #3 | Replace with your test framework ref |
|
|
51
|
+
| REQ-004 | Test profiles & coverage | N24,N25,N26 | L2 | Missing | | | | #4 | Replace with your coverage ref |
|
|
52
|
+
| REQ-005 | Integration & mutation testing | N27,N28,N29,N30,N31,N32,N33 | L2 | Missing | | | | #5 | Replace with your integration test ref |
|
|
53
|
+
| REQ-006 | CI/CD pipeline | N34,N35,N36,N37,N38,N39,N40 | L2 | Missing | | | | #6 | Replace with your CI/CD ref |
|
|
54
|
+
| REQ-007 | E2E & performance | N41,N42,N43,N44 | L2 | Missing | | | | #7 | Replace with your E2E ref |
|
|
55
|
+
| REQ-008 | Gate script validation | N45,N46,N47,N48,N49,N50 | L2 | Missing | | | | #8 | Replace with your gate scripts ref |
|
|
56
|
+
| REQ-009 | Quality gate scripts | N51,N52,N53,N54 | L2 | Missing | | | | #9 | Replace with your quality gates ref |
|
|
57
|
+
| REQ-010 | Security toolchain | N55,N56,N57,N58 | L2 | Missing | | | | #10 | Replace with your security ref |
|
|
58
|
+
| REQ-011 | Git/GitHub governance | N59,N60,N61,N62 | L2 | Missing | | | | #11 | Replace with your git governance ref |
|
|
59
|
+
| REQ-012 | Documentation | N63,N64,N65,N66,N67,N68 | L2 | Missing | | | | #12 | Replace with your docs ref |
|
|
60
|
+
| REQ-013 | Configuration | N69,N70,N71,N72 | L1 | Missing | | | | #13 | Replace with your config ref |
|
|
61
|
+
| REQ-014 | Module boundaries | N77 | L2 | Missing | | | | #14 | Replace with your boundary ref |
|
|
62
|
+
| REQ-015 | Audit trail | N08,N73,N74,N75 | L4 | Missing | | | | #15 | Replace with your audit trail ref |
|
|
63
|
+
| REQ-016 | Accessibility | N76 | L2 | Missing | | | | #16 | Replace with your a11y ref |
|
|
64
|
+
<!-- FEATURE_MATRIX_END -->
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Summary
|
|
69
|
+
|
|
70
|
+
| Status | Count |
|
|
71
|
+
|---|---|
|
|
72
|
+
| Verified | 0 |
|
|
73
|
+
| Done | 0 |
|
|
74
|
+
| Partial | 0 |
|
|
75
|
+
| Missing | 16 |
|
|
76
|
+
| **Total** | **16** |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Version history
|
|
81
|
+
|
|
82
|
+
| Version | Date | Changes |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| 1.0.0 | Initial | Scaffolded by arbiter at <%= governanceLevel %> |
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# GAP — Gap Register
|
|
2
|
+
|
|
3
|
+
_Generated by arbiter at governance level <%= governanceLevel %>. This is your project's
|
|
4
|
+
gap register: a derived view of what is incomplete per docs/FEATURE_MATRIX.md.
|
|
5
|
+
Update your FEATURE_MATRIX and run `node scripts/gen-gap.mjs --write` to refresh._
|
|
6
|
+
|
|
7
|
+
> **Gate:** `node scripts/gen-gap.mjs --check` (L2+, fail-closed) — every Partial/Missing
|
|
8
|
+
> feature_id in `docs/FEATURE_MATRIX.md` must be tracked below. Run
|
|
9
|
+
> `node scripts/gen-gap.mjs --write` to regenerate the Feature Gaps table.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<!-- GAP_START -->
|
|
14
|
+
|
|
15
|
+
## Feature Gaps
|
|
16
|
+
|
|
17
|
+
`blocks_v1: yes` marks a `Missing`-status row (no implementation yet, tracked by issue).
|
|
18
|
+
|
|
19
|
+
<!-- GAP_FEATURES_START -->
|
|
20
|
+
|
|
21
|
+
| feature_id | capability | status | severity | blocks_v1 | issue | notes |
|
|
22
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
23
|
+
| REQ-001 | Architecture enforcement | Missing | high | yes | #1 | Replace with your architecture enforcement ref |
|
|
24
|
+
| REQ-002 | Static analysis & linting | Missing | high | yes | #2 | Replace with your static analysis ref |
|
|
25
|
+
| REQ-003 | Test framework | Missing | high | yes | #3 | Replace with your test framework ref |
|
|
26
|
+
| REQ-004 | Test profiles & coverage | Missing | high | yes | #4 | Replace with your coverage ref |
|
|
27
|
+
| REQ-005 | Integration & mutation testing | Missing | high | yes | #5 | Replace with your integration test ref |
|
|
28
|
+
| REQ-006 | CI/CD pipeline | Missing | high | yes | #6 | Replace with your CI/CD ref |
|
|
29
|
+
| REQ-007 | E2E & performance | Missing | high | yes | #7 | Replace with your E2E ref |
|
|
30
|
+
| REQ-008 | Gate script validation | Missing | high | yes | #8 | Replace with your gate scripts ref |
|
|
31
|
+
| REQ-009 | Quality gate scripts | Missing | high | yes | #9 | Replace with your quality gates ref |
|
|
32
|
+
| REQ-010 | Security toolchain | Missing | high | yes | #10 | Replace with your security ref |
|
|
33
|
+
| REQ-011 | Git/GitHub governance | Missing | high | yes | #11 | Replace with your git governance ref |
|
|
34
|
+
| REQ-012 | Documentation | Missing | high | yes | #12 | Replace with your docs ref |
|
|
35
|
+
| REQ-013 | Configuration | Missing | high | yes | #13 | Replace with your config ref |
|
|
36
|
+
| REQ-014 | Module boundaries | Missing | high | yes | #14 | Replace with your boundary ref |
|
|
37
|
+
| REQ-015 | Audit trail | Missing | high | yes | #15 | Replace with your audit trail ref |
|
|
38
|
+
| REQ-016 | Accessibility | Missing | high | yes | #16 | Replace with your a11y ref |
|
|
39
|
+
|
|
40
|
+
<!-- GAP_FEATURES_END -->
|
|
41
|
+
|
|
42
|
+
## Known Debt
|
|
43
|
+
|
|
44
|
+
Not tracked by the portable gate (`scripts/gen-gap.mjs`) — arbiter's own richer register also
|
|
45
|
+
cross-references constraint-scan output and convergence reports, which have no stable
|
|
46
|
+
equivalent in an arbitrary target project. Track debt as GitHub issues / your own backlog.
|
|
47
|
+
|
|
48
|
+
<!-- GAP_END -->
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Usage
|
|
53
|
+
|
|
54
|
+
Run `node scripts/gen-gap.mjs --write` to regenerate the Feature Gaps table from
|
|
55
|
+
`docs/FEATURE_MATRIX.md`. `--check` fails if a Partial/Missing feature_id has been
|
|
56
|
+
dropped from this file without being resolved in the matrix first.
|
|
57
|
+
|
|
58
|
+
Governance level: **<%= governanceLevel %>**
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# ISO 27001:2022 Annex A Control Matrix
|
|
2
|
+
|
|
3
|
+
**Project:** <%= projectName %>
|
|
4
|
+
**Generated by:** arbiter (L3 governance)
|
|
5
|
+
**Last updated:** <%= new Date().toISOString().slice(0,10) %>
|
|
6
|
+
|
|
7
|
+
This matrix maps all 93 ISO 27001:2022 Annex A controls to project coverage.
|
|
8
|
+
Controls marked ✅ are satisfied by arbiter-generated artifacts. Controls marked ❌ require manual implementation.
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
| Section | Controls | Covered | Gap |
|
|
13
|
+
|---------|----------|---------|-----|
|
|
14
|
+
| A.5 Organizational | 37 | 4 | 33 |
|
|
15
|
+
| A.6 People | 8 | 0 | 8 |
|
|
16
|
+
| A.7 Physical | 14 | 0 | 14 |
|
|
17
|
+
| A.8 Technological | 34 | 8 | 26 |
|
|
18
|
+
| **Total** | **93** | **12** | **81** |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## A.5 — Organizational Controls
|
|
23
|
+
|
|
24
|
+
| Control | Title | Status | Evidence |
|
|
25
|
+
|---------|-------|--------|----------|
|
|
26
|
+
| A.5.1 | Policies for information security | ❌ Gap | Manual: define security policy |
|
|
27
|
+
| A.5.2 | Information security roles and responsibilities | ✅ Covered | CODEOWNERS, AGENTS.md §Authority Hierarchy |
|
|
28
|
+
| A.5.3 | Segregation of duties | ❌ Gap | Manual: org-level process |
|
|
29
|
+
| A.5.4 | Management responsibilities | ❌ Gap | Manual |
|
|
30
|
+
| A.5.5 | Contact with authorities | ❌ Gap | Manual |
|
|
31
|
+
| A.5.6 | Contact with special interest groups | ❌ Gap | Manual |
|
|
32
|
+
| A.5.7 | Threat intelligence | ❌ Gap | Manual |
|
|
33
|
+
| A.5.8 | Information security in project management | ❌ Gap | Manual |
|
|
34
|
+
| A.5.9 | Inventory of information and other associated assets | ❌ Gap | Manual |
|
|
35
|
+
| A.5.10 | Acceptable use of information and other assets | ❌ Gap | Manual |
|
|
36
|
+
| A.5.11 | Return of assets | ❌ Gap | Manual |
|
|
37
|
+
| A.5.12 | Classification of information | ❌ Gap | Manual |
|
|
38
|
+
| A.5.13 | Labelling of information | ❌ Gap | Manual |
|
|
39
|
+
| A.5.14 | Information transfer | ❌ Gap | Manual |
|
|
40
|
+
| A.5.15 | Access control | ❌ Gap | Manual |
|
|
41
|
+
| A.5.16 | Identity management | ❌ Gap | Manual |
|
|
42
|
+
| A.5.17 | Authentication information | ❌ Gap | Manual |
|
|
43
|
+
| A.5.18 | Access rights | ❌ Gap | Manual |
|
|
44
|
+
| A.5.19 | Information security in supplier relationships | ❌ Gap | Manual |
|
|
45
|
+
| A.5.20 | Addressing information security within supplier agreements | ❌ Gap | Manual |
|
|
46
|
+
| A.5.21 | Managing information security in the ICT supply chain | ❌ Gap | Manual |
|
|
47
|
+
| A.5.22 | Monitoring, review, and change management of supplier services | ❌ Gap | Manual |
|
|
48
|
+
| A.5.23 | Information security for use of cloud services | ❌ Gap | Manual |
|
|
49
|
+
| A.5.24 | Information security incident management planning and preparation | ❌ Gap | Manual |
|
|
50
|
+
| A.5.25 | Assessment and decision on information security events | ❌ Gap | Manual |
|
|
51
|
+
| A.5.26 | Response to information security incidents | ❌ Gap | Manual |
|
|
52
|
+
| A.5.27 | Learning from information security incidents | ❌ Gap | Manual |
|
|
53
|
+
| A.5.28 | Collection of evidence | ❌ Gap | Manual |
|
|
54
|
+
| A.5.29 | Information security during disruption | ❌ Gap | Manual |
|
|
55
|
+
| A.5.30 | ICT readiness for business continuity | ❌ Gap | Manual |
|
|
56
|
+
| A.5.31 | Legal, statutory, regulatory, and contractual requirements | ❌ Gap | Manual |
|
|
57
|
+
| A.5.32 | Intellectual property rights | ❌ Gap | Manual |
|
|
58
|
+
| A.5.33 | Protection of records | ❌ Gap | Manual |
|
|
59
|
+
| A.5.34 | Privacy and protection of PII | ✅ Covered | scripts/pii-scan.mjs + suppressions/pii-allowlist.json |
|
|
60
|
+
| A.5.35 | Independent review of information security | ❌ Gap | Manual |
|
|
61
|
+
| A.5.36 | Compliance with policies, rules, and standards | ✅ Covered | AGENTS.md invariants + check-all gate |
|
|
62
|
+
| A.5.37 | Documented operating procedures | ✅ Covered | AGENTS.md, docs/CODING_STANDARDS.md |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## A.6 — People Controls
|
|
67
|
+
|
|
68
|
+
| Control | Title | Status | Evidence |
|
|
69
|
+
|---------|-------|--------|----------|
|
|
70
|
+
| A.6.1 | Screening | ❌ Gap | Manual: HR process |
|
|
71
|
+
| A.6.2 | Terms and conditions of employment | ❌ Gap | Manual: HR process |
|
|
72
|
+
| A.6.3 | Information security awareness, education and training | ❌ Gap | Manual |
|
|
73
|
+
| A.6.4 | Disciplinary process | ❌ Gap | Manual: HR process |
|
|
74
|
+
| A.6.5 | Responsibilities after termination or change of employment | ❌ Gap | Manual: HR process |
|
|
75
|
+
| A.6.6 | Confidentiality or non-disclosure agreements | ❌ Gap | Manual: legal |
|
|
76
|
+
| A.6.7 | Remote working | ❌ Gap | Manual: policy |
|
|
77
|
+
| A.6.8 | Information security event reporting | ❌ Gap | Manual: incident process |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## A.7 — Physical Controls
|
|
82
|
+
|
|
83
|
+
| Control | Title | Status | Evidence |
|
|
84
|
+
|---------|-------|--------|----------|
|
|
85
|
+
| A.7.1 | Physical security perimeters | ❌ Gap | Manual: facilities |
|
|
86
|
+
| A.7.2 | Physical entry | ❌ Gap | Manual: facilities |
|
|
87
|
+
| A.7.3 | Securing offices, rooms and facilities | ❌ Gap | Manual: facilities |
|
|
88
|
+
| A.7.4 | Physical security monitoring | ❌ Gap | Manual: facilities |
|
|
89
|
+
| A.7.5 | Protecting against physical and environmental threats | ❌ Gap | Manual: facilities |
|
|
90
|
+
| A.7.6 | Working in secure areas | ❌ Gap | Manual: policy |
|
|
91
|
+
| A.7.7 | Clear desk and clear screen | ❌ Gap | Manual: policy |
|
|
92
|
+
| A.7.8 | Equipment siting and protection | ❌ Gap | Manual: facilities |
|
|
93
|
+
| A.7.9 | Security of assets off-premises | ❌ Gap | Manual: policy |
|
|
94
|
+
| A.7.10 | Storage media | ❌ Gap | Manual: policy |
|
|
95
|
+
| A.7.11 | Supporting utilities | ❌ Gap | Manual: facilities |
|
|
96
|
+
| A.7.12 | Cabling security | ❌ Gap | Manual: facilities |
|
|
97
|
+
| A.7.13 | Equipment maintenance | ❌ Gap | Manual: facilities |
|
|
98
|
+
| A.7.14 | Secure disposal or re-use of equipment | ❌ Gap | Manual: policy |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## A.8 — Technological Controls
|
|
103
|
+
|
|
104
|
+
| Control | Title | Status | Evidence |
|
|
105
|
+
|---------|-------|--------|----------|
|
|
106
|
+
| A.8.1 | User end point devices | ❌ Gap | Manual: device management |
|
|
107
|
+
| A.8.2 | Privileged access rights | ❌ Gap | Manual: IAM |
|
|
108
|
+
| A.8.3 | Information access restriction | ❌ Gap | Manual: IAM |
|
|
109
|
+
| A.8.4 | Access to source code | ✅ Covered | Branch protection rules, AGENTS.md INV-23 (no direct push to main) |
|
|
110
|
+
| A.8.5 | Secure authentication | ❌ Gap | Manual: IAM |
|
|
111
|
+
| A.8.6 | Capacity management | ❌ Gap | Manual |
|
|
112
|
+
| A.8.7 | Protection against malware | ❌ Gap | Manual: endpoint security |
|
|
113
|
+
| A.8.8 | Management of technical vulnerabilities | ✅ Covered | npm audit (L2 gate), gitleaks (L2 gate) |
|
|
114
|
+
| A.8.9 | Configuration management | ✅ Covered | arbiter-generated config files + check-all gate |
|
|
115
|
+
| A.8.10 | Information deletion | ❌ Gap | Manual: data retention policy |
|
|
116
|
+
| A.8.11 | Data masking | ❌ Gap | Manual: data layer |
|
|
117
|
+
| A.8.12 | Data leakage prevention | ✅ Covered | pii-scan.mjs (L2 gate, no grace) |
|
|
118
|
+
| A.8.13 | Information backup | ❌ Gap | Manual: infra |
|
|
119
|
+
| A.8.14 | Redundancy of information processing facilities | ❌ Gap | Manual: infra |
|
|
120
|
+
| A.8.15 | Logging | ❌ Gap | Manual: observability |
|
|
121
|
+
| A.8.16 | Monitoring activities | ❌ Gap | Manual: observability |
|
|
122
|
+
| A.8.17 | Clock synchronisation | ❌ Gap | Manual: infra |
|
|
123
|
+
| A.8.18 | Use of privileged utility programs | ❌ Gap | Manual |
|
|
124
|
+
| A.8.19 | Installation of software on operational systems | ❌ Gap | Manual: change management |
|
|
125
|
+
| A.8.20 | Networks security | ❌ Gap | Manual: network team |
|
|
126
|
+
| A.8.21 | Security of network services | ❌ Gap | Manual: network team |
|
|
127
|
+
| A.8.22 | Segregation of networks | ❌ Gap | Manual: network team |
|
|
128
|
+
| A.8.23 | Web filtering | ❌ Gap | Manual |
|
|
129
|
+
| A.8.24 | Use of cryptography | ❌ Gap | Manual: crypto policy |
|
|
130
|
+
| A.8.25 | Secure development life cycle | ✅ Covered | node scripts/check-all.mjs (L1/L2/L3 gates) |
|
|
131
|
+
| A.8.26 | Application security requirements | ✅ Covered | docs/SECURE_CODING_CHECKLIST.md + STRIDE threat model |
|
|
132
|
+
| A.8.27 | Secure system architecture and engineering principles | ✅ Covered | dependency-cruiser / ArchUnit arch boundary enforcement |
|
|
133
|
+
| A.8.28 | Secure coding | ✅ Covered | docs/CODING_STANDARDS.md + eslint-security rules |
|
|
134
|
+
| A.8.29 | Security testing in development and acceptance | ❌ Gap | Manual: pentest / DAST |
|
|
135
|
+
| A.8.30 | Outsourced development | ❌ Gap | Manual: contract |
|
|
136
|
+
| A.8.31 | Separation of development, test and production environments | ❌ Gap | Manual: infra |
|
|
137
|
+
| A.8.32 | Change management | ✅ Covered | PR + gate process, AGENTS.md INV-22/23 |
|
|
138
|
+
| A.8.33 | Test information | ❌ Gap | Manual: test data policy |
|
|
139
|
+
| A.8.34 | Protection of information systems during audit testing | ❌ Gap | Manual |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
*This matrix was auto-generated by arbiter. Update manually as controls are implemented.*
|
|
144
|
+
*Re-run `arbiter init` to regenerate the scaffold; edit this file to track manual control status.*
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Master Test Plan
|
|
2
|
+
|
|
3
|
+
_Generated by arbiter. Update to match your project's test strategy._
|
|
4
|
+
|
|
5
|
+
## Test Coverage Requirements
|
|
6
|
+
|
|
7
|
+
- **Minimum coverage threshold**: 80% line coverage
|
|
8
|
+
- All public APIs must have tests
|
|
9
|
+
- Tests run in CI on every PR
|
|
10
|
+
|
|
11
|
+
## Mandatory Test Patterns
|
|
12
|
+
|
|
13
|
+
Every feature implementation must include tests for each of the following patterns:
|
|
14
|
+
|
|
15
|
+
| Pattern | Description | Required |
|
|
16
|
+
|----------------------|--------------------------------------------------------------------|----------|
|
|
17
|
+
| Happy path | The primary success case with valid inputs | ✓ |
|
|
18
|
+
| Null / empty input | Behavior when required inputs are absent or empty | ✓ |
|
|
19
|
+
| Not found | Resource lookup when the target does not exist | ✓ |
|
|
20
|
+
| Business rule | Domain invariant violations (invalid state transitions, etc.) | ✓ |
|
|
21
|
+
| Auth / unauthorized | Access attempt without valid credentials or insufficient privilege | ✓ |
|
|
22
|
+
<% if (isL3Plus) { %>
|
|
23
|
+
| Tenant isolation | Data from tenant A must not leak to tenant B | ✓ |
|
|
24
|
+
| Concurrency | Concurrent access does not produce incorrect results | ✓ |
|
|
25
|
+
<% } %>
|
|
26
|
+
|
|
27
|
+
## Test Pyramid
|
|
28
|
+
|
|
29
|
+
| Level | Tool | When | Coverage Target |
|
|
30
|
+
|----------------|-----------------------|---------------|-----------------|
|
|
31
|
+
| Unit | language-specific | pre-commit | 80% |
|
|
32
|
+
| Integration | language-specific | pre-push | key paths |
|
|
33
|
+
| E2E | language-specific | CI / L3 | happy paths |
|
|
34
|
+
<% if (isL3Plus) { %>
|
|
35
|
+
| Chaos / Soak | language-specific | nightly | resilience |
|
|
36
|
+
<% } %>
|
|
37
|
+
|
|
38
|
+
## Review Checklist
|
|
39
|
+
|
|
40
|
+
Before marking a PR as ready for review, verify:
|
|
41
|
+
|
|
42
|
+
- [ ] Happy path test exists
|
|
43
|
+
- [ ] Null/empty input test exists
|
|
44
|
+
- [ ] Not-found test exists
|
|
45
|
+
- [ ] Business rule test exists
|
|
46
|
+
- [ ] Auth/unauthorized test exists
|
|
47
|
+
<% if (isL3Plus) { %>
|
|
48
|
+
- [ ] Tenant isolation test exists
|
|
49
|
+
- [ ] Concurrency test exists
|
|
50
|
+
<% } %>
|
|
51
|
+
- [ ] All tests pass locally
|
|
52
|
+
- [ ] Coverage threshold met (80%)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Post-Merge Review — YYYY-MM-DD
|
|
2
|
+
|
|
3
|
+
**Project:** <%= projectName %>
|
|
4
|
+
**Scope:** Tasks #NNN–#MMM (N worktrees, N commits)
|
|
5
|
+
**Reviewers:** N (security findings weighted 2×)
|
|
6
|
+
**Generated by:** arbiter (L<%= governanceLevel.slice(1) %> governance)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
| Bundle | Scope | Score | Verdict |
|
|
13
|
+
|--------|-------|-------|---------|
|
|
14
|
+
| #NNN | Feature description | 84/100 | PASS |
|
|
15
|
+
|
|
16
|
+
**Verdict thresholds:** PASS ≥75 | CONCERNS 60–74 | FAIL <60
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Bundle Details
|
|
21
|
+
|
|
22
|
+
### #NNN — Title (Score: 84/100)
|
|
23
|
+
|
|
24
|
+
**Findings:**
|
|
25
|
+
- P2: [description] — tracked as #XXX
|
|
26
|
+
- P4: [description] — deferred, icebox
|
|
27
|
+
|
|
28
|
+
**Known limitations (by design):**
|
|
29
|
+
- [description] — tracked in #YYY
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Finding Classification
|
|
34
|
+
|
|
35
|
+
| Class | Definition | Action |
|
|
36
|
+
|-------|------------|--------|
|
|
37
|
+
| P1 | Critical — security, data loss, correctness | Fix before merge; block release |
|
|
38
|
+
| P2 | Blocks next milestone | Create issue, fix before next sprint |
|
|
39
|
+
| P3 | Impactful, not blocking | Create issue, schedule |
|
|
40
|
+
| P4 | Nice to have | Create issue, icebox |
|
|
41
|
+
| P5 | Cosmetic / trivial | Optional follow-up |
|
|
42
|
+
| Known limitation | Phase trade-off | Document rationale, link tracking issue |
|
|
43
|
+
|
|
44
|
+
> **Security findings are weighted 2×** in the final bundle score.
|
|
45
|
+
> A P2 security finding counts as P1 for scoring purposes.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Retrospective Notes
|
|
50
|
+
|
|
51
|
+
*What went well:*
|
|
52
|
+
- [observation]
|
|
53
|
+
|
|
54
|
+
*What to improve:*
|
|
55
|
+
- [observation]
|
|
56
|
+
|
|
57
|
+
*Carry-forward to next batch:*
|
|
58
|
+
- [action item] — owner: @handle
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
*This document was generated from `docs/testing/POST_MERGE_REVIEW_TEMPLATE.md` by arbiter.*
|
|
63
|
+
*Fill in actual task numbers, scores, and findings after batch merge.*
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Secure Coding Checklist
|
|
2
|
+
|
|
3
|
+
_Generated by arbiter. Review before every PR merge._
|
|
4
|
+
|
|
5
|
+
## Input Validation
|
|
6
|
+
|
|
7
|
+
- [ ] All user input validated at system boundaries (no raw string interpolation in SQL/shell/HTML)
|
|
8
|
+
- [ ] Parameterized queries only — no string concatenation in database calls
|
|
9
|
+
- [ ] File uploads: validate type, size, and filename; store outside webroot
|
|
10
|
+
- [ ] JSON/XML input parsed with size limits
|
|
11
|
+
|
|
12
|
+
## Authentication & Authorization
|
|
13
|
+
|
|
14
|
+
- [ ] JWT tokens validated (signature + expiry + audience)
|
|
15
|
+
- [ ] No hardcoded credentials in source code or config files
|
|
16
|
+
- [ ] Default-deny authorization: explicit allow-list, not blocklist
|
|
17
|
+
- [ ] Session tokens invalidated on logout and password change
|
|
18
|
+
|
|
19
|
+
## Secrets
|
|
20
|
+
|
|
21
|
+
- [ ] No secrets in source code, logs, or version control
|
|
22
|
+
- [ ] Environment variables used for all configuration values
|
|
23
|
+
- [ ] Secret scanning gate passes (`gitleaks detect`)
|
|
24
|
+
- [ ] Secrets rotated if any exposure suspected
|
|
25
|
+
|
|
26
|
+
## Dependency Security
|
|
27
|
+
|
|
28
|
+
- [ ] `npm audit --omit=dev --audit-level=high` (or equivalent) passes
|
|
29
|
+
- [ ] No CVEs suppressed without justification + review date
|
|
30
|
+
- [ ] CVSS ≥ 9.0 CVEs must have written ADR before suppression
|
|
31
|
+
- [ ] Dependencies pinned to minor version or have lockfile
|
|
32
|
+
|
|
33
|
+
## Error Handling
|
|
34
|
+
|
|
35
|
+
- [ ] No stack traces in API responses (structured error format only)
|
|
36
|
+
- [ ] All Promise rejections handled (`.catch()` or `try/catch`)
|
|
37
|
+
- [ ] No swallowed exceptions (`catch {}` without logging or rethrow)
|
|
38
|
+
- [ ] Error codes documented — no magic numbers in error responses
|
|
39
|
+
|
|
40
|
+
## Logging & PII
|
|
41
|
+
|
|
42
|
+
- [ ] No PII in log output (names, emails, phone numbers, IDs)
|
|
43
|
+
- [ ] Correlation ID present in all service-to-service calls
|
|
44
|
+
- [ ] Log level appropriate: debug not in production by default
|
|
45
|
+
- [ ] PII scan gate passes (`node scripts/pii-scan.mjs`)
|
|
46
|
+
<% if (isL3Plus) { %>
|
|
47
|
+
|
|
48
|
+
## Tenant Isolation
|
|
49
|
+
|
|
50
|
+
- [ ] Cross-tenant data access impossible by design (tenant ID in every DB query)
|
|
51
|
+
- [ ] API responses filtered by tenant before serialization
|
|
52
|
+
- [ ] Background jobs scoped to single tenant; no shared state between tenants
|
|
53
|
+
- [ ] Tenant ID not guessable from public identifiers
|
|
54
|
+
|
|
55
|
+
## Cryptography
|
|
56
|
+
|
|
57
|
+
- [ ] Approved algorithms only: AES-256-GCM, RSA-2048+, SHA-256+
|
|
58
|
+
- [ ] No MD5/SHA-1 for security purposes (hash comparison, signatures)
|
|
59
|
+
- [ ] Key rotation policy documented and tested
|
|
60
|
+
- [ ] Random number generation uses `crypto.randomBytes` / `SecureRandom` — not `Math.random()`
|
|
61
|
+
<% } %>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# ADR-NNN: Title
|
|
2
|
+
|
|
3
|
+
**Project:** <%= projectName %>
|
|
4
|
+
**Date:** YYYY-MM-DD
|
|
5
|
+
**Status:** Proposed | Accepted | Deprecated | Superseded
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
What is the issue that we're seeing that motivates this decision or change?
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
What is the change that we're proposing and/or doing?
|
|
14
|
+
|
|
15
|
+
## Consequences
|
|
16
|
+
|
|
17
|
+
### Positive
|
|
18
|
+
|
|
19
|
+
- What becomes easier or possible because of this decision?
|
|
20
|
+
|
|
21
|
+
### Negative
|
|
22
|
+
|
|
23
|
+
- What becomes harder or is no longer possible?
|
|
24
|
+
|
|
25
|
+
## Links
|
|
26
|
+
|
|
27
|
+
- Related ADRs: ADR-NNN
|
|
28
|
+
- Issues: #NNN
|