@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,540 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Machine-readable maturity index for the cross-language enforcement matrix. Values: proven | beta | unsafe | unavailable. Consumed by src/utils/maturity-check.ts.",
|
|
3
|
+
"_lastUpdated": "2026-05-18",
|
|
4
|
+
"static_analysis": {
|
|
5
|
+
"java": {
|
|
6
|
+
"tool": "checkstyle+pmd+spotbugs+spotless",
|
|
7
|
+
"maturity": "proven",
|
|
8
|
+
"reason": "All four tools wired into L1/L2 gate; production-grade rulesets"
|
|
9
|
+
},
|
|
10
|
+
"typescript": {
|
|
11
|
+
"tool": "eslint+prettier",
|
|
12
|
+
"maturity": "proven",
|
|
13
|
+
"reason": "Comprehensive static rules + format check wired into L1 gate"
|
|
14
|
+
},
|
|
15
|
+
"rust": {
|
|
16
|
+
"tool": "clippy",
|
|
17
|
+
"maturity": "proven",
|
|
18
|
+
"reason": "cargo clippy -D warnings wired into L1; pedantic deny rules in clippy.toml for hexagonal archetype"
|
|
19
|
+
},
|
|
20
|
+
"go": {
|
|
21
|
+
"tool": "golangci-lint",
|
|
22
|
+
"maturity": "proven",
|
|
23
|
+
"reason": "Full linter suite (gocyclo/gosec/errcheck/staticcheck) wired into L1 gate"
|
|
24
|
+
},
|
|
25
|
+
"python": {
|
|
26
|
+
"tool": "ruff",
|
|
27
|
+
"maturity": "proven",
|
|
28
|
+
"reason": "Comprehensive rules (complexity/unused/security) wired into L1 gate"
|
|
29
|
+
},
|
|
30
|
+
"kotlin": {
|
|
31
|
+
"tool": "detekt",
|
|
32
|
+
"maturity": "beta",
|
|
33
|
+
"reason": "detekt is the de facto Kotlin static-analysis tool; Gradle/Maven plugins stable, severity mapping still maturing vs Java Checkstyle/PMD"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"mutation": {
|
|
37
|
+
"java": {
|
|
38
|
+
"tool": "pitest",
|
|
39
|
+
"maturity": "proven",
|
|
40
|
+
"reason": "pitest is the de-facto Java mutation testing standard; stable API, broad adoption"
|
|
41
|
+
},
|
|
42
|
+
"typescript": {
|
|
43
|
+
"tool": "stryker",
|
|
44
|
+
"maturity": "proven",
|
|
45
|
+
"reason": "Stryker 8.x is well-maintained with first-class Vitest integration"
|
|
46
|
+
},
|
|
47
|
+
"rust": {
|
|
48
|
+
"tool": "cargo-mutants",
|
|
49
|
+
"maturity": "beta",
|
|
50
|
+
"reason": "cargo-mutants threshold gating is unstable; passes on some versions, fails silently on others"
|
|
51
|
+
},
|
|
52
|
+
"go": {
|
|
53
|
+
"tool": "go-mutesting",
|
|
54
|
+
"maturity": "unsafe",
|
|
55
|
+
"reason": "go-mutesting is abandoned upstream and hangs on Go 1.23 module graphs"
|
|
56
|
+
},
|
|
57
|
+
"python": {
|
|
58
|
+
"tool": "mutmut",
|
|
59
|
+
"maturity": "beta",
|
|
60
|
+
"reason": "mutmut runtime can exceed 6h on mid-sized codebases; no reliable timeout-per-mutant control"
|
|
61
|
+
},
|
|
62
|
+
"kotlin": {
|
|
63
|
+
"tool": "pitest",
|
|
64
|
+
"maturity": "beta",
|
|
65
|
+
"reason": "pitest operates on JVM bytecode; Kotlin compilation transparent but not yet fixture-verified"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"contract": {
|
|
69
|
+
"java": {
|
|
70
|
+
"tool": "pact-jvm",
|
|
71
|
+
"maturity": "proven",
|
|
72
|
+
"reason": "pact-jvm has stable consumer + provider verification; widely adopted in Spring Boot"
|
|
73
|
+
},
|
|
74
|
+
"typescript": {
|
|
75
|
+
"tool": "@pact-foundation/pact",
|
|
76
|
+
"maturity": "proven",
|
|
77
|
+
"reason": "Pact JS library is well-maintained with Node 18+ support"
|
|
78
|
+
},
|
|
79
|
+
"rust": {
|
|
80
|
+
"tool": "pact_consumer",
|
|
81
|
+
"maturity": "beta",
|
|
82
|
+
"reason": "pact_consumer for Rust is a community crate; provider verification is experimental"
|
|
83
|
+
},
|
|
84
|
+
"go": {
|
|
85
|
+
"tool": "pact_consumer (Go)",
|
|
86
|
+
"maturity": "beta",
|
|
87
|
+
"reason": "Pact Go SDK wraps the Rust core via FFI; occasional FFI panics on newer Go runtimes"
|
|
88
|
+
},
|
|
89
|
+
"python": {
|
|
90
|
+
"tool": "pact-python",
|
|
91
|
+
"maturity": "beta",
|
|
92
|
+
"reason": "pact-python lacks provider-verification parity with pact-jvm; V4 migration in progress"
|
|
93
|
+
},
|
|
94
|
+
"kotlin": {
|
|
95
|
+
"tool": "pact-jvm",
|
|
96
|
+
"maturity": "beta",
|
|
97
|
+
"reason": "pact-jvm works on compiled Kotlin; consumer/provider flow not yet fixture-verified"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"coverage": {
|
|
101
|
+
"java": {
|
|
102
|
+
"tool": "jacoco",
|
|
103
|
+
"maturity": "proven",
|
|
104
|
+
"reason": "JaCoCo is the standard Java coverage tool with Gradle and Maven integration"
|
|
105
|
+
},
|
|
106
|
+
"typescript": {
|
|
107
|
+
"tool": "@vitest/coverage-v8",
|
|
108
|
+
"maturity": "proven",
|
|
109
|
+
"reason": "vitest --coverage with @vitest/coverage-v8 (the v8 provider) is stable and fast"
|
|
110
|
+
},
|
|
111
|
+
"rust": {
|
|
112
|
+
"tool": "cargo-tarpaulin",
|
|
113
|
+
"maturity": "proven",
|
|
114
|
+
"reason": "cargo-tarpaulin produces reliable line/branch coverage on stable Rust"
|
|
115
|
+
},
|
|
116
|
+
"go": {
|
|
117
|
+
"tool": "go test -cover",
|
|
118
|
+
"maturity": "proven",
|
|
119
|
+
"reason": "Built-in Go coverage is stable; no external tooling required"
|
|
120
|
+
},
|
|
121
|
+
"python": {
|
|
122
|
+
"tool": "pytest-cov",
|
|
123
|
+
"maturity": "proven",
|
|
124
|
+
"reason": "pytest-cov with coverage.py is the standard Python coverage stack"
|
|
125
|
+
},
|
|
126
|
+
"kotlin": {
|
|
127
|
+
"tool": "kover",
|
|
128
|
+
"maturity": "beta",
|
|
129
|
+
"reason": "Kotlin-native coverage (JetBrains Kover); Gradle-native, report shape differs from JaCoCo so thresholds need validation"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"architecture": {
|
|
133
|
+
"java": {
|
|
134
|
+
"tool": "ArchUnit",
|
|
135
|
+
"maturity": "proven",
|
|
136
|
+
"reason": "ArchUnit has stable API and is widely used in Spring Boot monoliths"
|
|
137
|
+
},
|
|
138
|
+
"typescript": {
|
|
139
|
+
"tool": "eslint-plugin-boundaries",
|
|
140
|
+
"maturity": "proven",
|
|
141
|
+
"reason": "eslint-plugin-boundaries provides reliable import boundary checking"
|
|
142
|
+
},
|
|
143
|
+
"rust": {
|
|
144
|
+
"tool": "cargo-deny + clippy",
|
|
145
|
+
"maturity": "proven",
|
|
146
|
+
"reason": "cargo-deny and clippy provide reliable static checks for Rust"
|
|
147
|
+
},
|
|
148
|
+
"go": {
|
|
149
|
+
"tool": "golangci-lint (depguard)",
|
|
150
|
+
"maturity": "proven",
|
|
151
|
+
"reason": "depguard (golangci-lint) provides reliable static checks for Go, consistent with M22b pattern"
|
|
152
|
+
},
|
|
153
|
+
"python": {
|
|
154
|
+
"tool": "import-linter + ruff",
|
|
155
|
+
"maturity": "proven",
|
|
156
|
+
"reason": "import-linter enforces import contracts; ruff handles style"
|
|
157
|
+
},
|
|
158
|
+
"kotlin": {
|
|
159
|
+
"tool": "ArchUnit",
|
|
160
|
+
"maturity": "beta",
|
|
161
|
+
"reason": "ArchUnit inspects compiled JVM bytecode so it works on Kotlin; not yet exercised across Kotlin fixtures"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"e2e": {
|
|
165
|
+
"java": {
|
|
166
|
+
"tool": "RestAssured IT",
|
|
167
|
+
"maturity": "proven",
|
|
168
|
+
"reason": "RestAssured integration tests are widely used for Spring Boot E2E"
|
|
169
|
+
},
|
|
170
|
+
"typescript": {
|
|
171
|
+
"tool": "Playwright",
|
|
172
|
+
"maturity": "proven",
|
|
173
|
+
"reason": "Playwright is the industry standard for browser E2E testing"
|
|
174
|
+
},
|
|
175
|
+
"rust": {
|
|
176
|
+
"tool": "N/A",
|
|
177
|
+
"maturity": "unavailable",
|
|
178
|
+
"reason": "No E2E testing equivalent for Rust CLI projects; use integration level instead"
|
|
179
|
+
},
|
|
180
|
+
"go": {
|
|
181
|
+
"tool": "N/A",
|
|
182
|
+
"maturity": "unavailable",
|
|
183
|
+
"reason": "No E2E testing equivalent for Go CLI projects; use integration level instead"
|
|
184
|
+
},
|
|
185
|
+
"python": {
|
|
186
|
+
"tool": "Playwright / pytest-playwright",
|
|
187
|
+
"maturity": "proven",
|
|
188
|
+
"reason": "pytest-playwright is stable with Python 3.10+"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"security": {
|
|
192
|
+
"java": {
|
|
193
|
+
"tool": "trivy fs",
|
|
194
|
+
"maturity": "proven",
|
|
195
|
+
"reason": "GitHub Advisory DB/OSV, no NVD API key, fast — replaces OWASP DependencyCheck (slow/flaky NVD download)"
|
|
196
|
+
},
|
|
197
|
+
"typescript": {
|
|
198
|
+
"tool": "npm audit",
|
|
199
|
+
"maturity": "proven",
|
|
200
|
+
"reason": "npm audit is built into npm and reliable"
|
|
201
|
+
},
|
|
202
|
+
"rust": {
|
|
203
|
+
"tool": "cargo audit",
|
|
204
|
+
"maturity": "proven",
|
|
205
|
+
"reason": "cargo audit is the standard Rust advisory check"
|
|
206
|
+
},
|
|
207
|
+
"go": {
|
|
208
|
+
"tool": "govulncheck",
|
|
209
|
+
"maturity": "proven",
|
|
210
|
+
"reason": "govulncheck is the official Go vulnerability scanner from the Go team"
|
|
211
|
+
},
|
|
212
|
+
"python": {
|
|
213
|
+
"tool": "pip-audit",
|
|
214
|
+
"maturity": "proven",
|
|
215
|
+
"reason": "pip-audit is stable and maintained by PyPA"
|
|
216
|
+
},
|
|
217
|
+
"kotlin": {
|
|
218
|
+
"tool": "trivy fs",
|
|
219
|
+
"maturity": "beta",
|
|
220
|
+
"reason": "GitHub Advisory DB/OSV, no NVD API key, fast — JVM dependency scanning is language-agnostic; pending Kotlin fixture verification"
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"bdd": {
|
|
224
|
+
"java": {
|
|
225
|
+
"tool": "cucumber-jvm",
|
|
226
|
+
"maturity": "proven",
|
|
227
|
+
"reason": "stable JUnit5 integration in Spring Boot stacks"
|
|
228
|
+
},
|
|
229
|
+
"typescript": {
|
|
230
|
+
"tool": "@cucumber/cucumber",
|
|
231
|
+
"maturity": "proven",
|
|
232
|
+
"reason": "official cucumber-js with native TS support is stable on Node 18+"
|
|
233
|
+
},
|
|
234
|
+
"python": {
|
|
235
|
+
"tool": "pytest-bdd",
|
|
236
|
+
"maturity": "proven",
|
|
237
|
+
"reason": "pytest-bdd scenarios() reuses pytest fixtures cleanly"
|
|
238
|
+
},
|
|
239
|
+
"go": {
|
|
240
|
+
"tool": "godog",
|
|
241
|
+
"maturity": "beta",
|
|
242
|
+
"reason": "godog v0.14 stable but generic step bindings rough"
|
|
243
|
+
},
|
|
244
|
+
"rust": {
|
|
245
|
+
"tool": "cucumber-rs",
|
|
246
|
+
"maturity": "beta",
|
|
247
|
+
"reason": "cucumber-rs 0.20 stable for sync; async World still evolving"
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"style_tokens": {
|
|
251
|
+
"typescript": {
|
|
252
|
+
"tool": "stylelint",
|
|
253
|
+
"maturity": "proven",
|
|
254
|
+
"reason": "stylelint 16+ enforces color-no-hex and design-token discipline; widely adopted in ts-frontend-spa stacks (a pattern from a prior internal project, #352)"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"fuzz": {
|
|
258
|
+
"java": {
|
|
259
|
+
"tool": "jqwik",
|
|
260
|
+
"maturity": "beta",
|
|
261
|
+
"reason": "jqwik property-based fuzzing runs in JUnit5; 30-min nightly budget per spec T4"
|
|
262
|
+
},
|
|
263
|
+
"typescript": {
|
|
264
|
+
"tool": "fast-check",
|
|
265
|
+
"maturity": "beta",
|
|
266
|
+
"reason": "fast-check property testing integrates with Vitest; nightly budget"
|
|
267
|
+
},
|
|
268
|
+
"rust": {
|
|
269
|
+
"tool": "cargo-fuzz",
|
|
270
|
+
"maturity": "beta",
|
|
271
|
+
"reason": "cargo-fuzz (libFuzzer) is the standard Rust fuzz harness; requires nightly toolchain"
|
|
272
|
+
},
|
|
273
|
+
"go": {
|
|
274
|
+
"tool": "native go fuzzing",
|
|
275
|
+
"maturity": "beta",
|
|
276
|
+
"reason": "Go 1.18+ native fuzzing (go test -fuzz); dvyukov/go-fuzz is deprecated upstream. 30-min nightly budget"
|
|
277
|
+
},
|
|
278
|
+
"python": {
|
|
279
|
+
"tool": "atheris",
|
|
280
|
+
"maturity": "beta",
|
|
281
|
+
"reason": "atheris (Google libFuzzer Python bindings) is the recommended Python fuzzer; nightly"
|
|
282
|
+
},
|
|
283
|
+
"kotlin": {
|
|
284
|
+
"tool": "jqwik",
|
|
285
|
+
"maturity": "beta",
|
|
286
|
+
"reason": "jqwik runs on JVM bytecode so it works with Kotlin, same as Java; the shared fuzz partial (_partials/scheduled-heavy-jobs.ejs) now includes kotlin in the java branch, fixture-render-verified (#1803)"
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
"dast": {
|
|
290
|
+
"java": {
|
|
291
|
+
"tool": "owasp-zap",
|
|
292
|
+
"maturity": "beta",
|
|
293
|
+
"reason": "OWASP ZAP baseline (T2) and full scan (T4 nightly) against ephemeral container"
|
|
294
|
+
},
|
|
295
|
+
"typescript": {
|
|
296
|
+
"tool": "owasp-zap",
|
|
297
|
+
"maturity": "beta",
|
|
298
|
+
"reason": "OWASP ZAP baseline (T2) and full scan (T4 nightly)"
|
|
299
|
+
},
|
|
300
|
+
"rust": {
|
|
301
|
+
"tool": "owasp-zap",
|
|
302
|
+
"maturity": "beta",
|
|
303
|
+
"reason": "OWASP ZAP baseline against service-archetype Rust binaries only; cli/lib: unavailable"
|
|
304
|
+
},
|
|
305
|
+
"go": {
|
|
306
|
+
"tool": "owasp-zap",
|
|
307
|
+
"maturity": "beta",
|
|
308
|
+
"reason": "OWASP ZAP baseline against service-archetype Go binaries only; cli/lib: unavailable"
|
|
309
|
+
},
|
|
310
|
+
"python": {
|
|
311
|
+
"tool": "owasp-zap",
|
|
312
|
+
"maturity": "beta",
|
|
313
|
+
"reason": "OWASP ZAP baseline (T2) and full scan (T4 nightly) for service/batch archetypes"
|
|
314
|
+
},
|
|
315
|
+
"kotlin": {
|
|
316
|
+
"tool": "owasp-zap",
|
|
317
|
+
"maturity": "beta",
|
|
318
|
+
"reason": "OWASP ZAP scans a running HTTP service; language-agnostic, already wired identically to Java"
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
"license_scan": {
|
|
322
|
+
"java": {
|
|
323
|
+
"tool": "license-maven-plugin",
|
|
324
|
+
"maturity": "beta",
|
|
325
|
+
"reason": "license-maven-plugin checks third-party licenses against an allow-list at T2"
|
|
326
|
+
},
|
|
327
|
+
"typescript": {
|
|
328
|
+
"tool": "license-checker",
|
|
329
|
+
"maturity": "beta",
|
|
330
|
+
"reason": "license-checker (npm) enumerates package licenses; T2 gate with deny-list"
|
|
331
|
+
},
|
|
332
|
+
"rust": {
|
|
333
|
+
"tool": "cargo-deny licenses",
|
|
334
|
+
"maturity": "beta",
|
|
335
|
+
"reason": "cargo-deny [licenses] table enforces SPDX allow/deny list; T2 gate"
|
|
336
|
+
},
|
|
337
|
+
"go": {
|
|
338
|
+
"tool": "go-licenses",
|
|
339
|
+
"maturity": "beta",
|
|
340
|
+
"reason": "go-licenses (Google) enumerates module licenses; T2 gate"
|
|
341
|
+
},
|
|
342
|
+
"python": {
|
|
343
|
+
"tool": "pip-licenses",
|
|
344
|
+
"maturity": "beta",
|
|
345
|
+
"reason": "pip-licenses enumerates installed package licenses; T2 gate"
|
|
346
|
+
},
|
|
347
|
+
"kotlin": {
|
|
348
|
+
"tool": "gradle-license-plugin / license-maven-plugin",
|
|
349
|
+
"maturity": "beta",
|
|
350
|
+
"reason": "Same JVM build-tool license reporting as Java (Gradle/Maven); 02-pr-extended.yml.ejs's license-scan job now includes kotlin in the java branch, fixture-render-verified (#1803)"
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
"sbom": {
|
|
354
|
+
"java": {
|
|
355
|
+
"tool": "cyclonedx-maven-plugin",
|
|
356
|
+
"maturity": "beta",
|
|
357
|
+
"reason": "cyclonedx-maven-plugin generates CycloneDX SBOM at T3 release; wired in existing nightly"
|
|
358
|
+
},
|
|
359
|
+
"typescript": {
|
|
360
|
+
"tool": "npm sbom / cyclonedx-npm",
|
|
361
|
+
"maturity": "beta",
|
|
362
|
+
"reason": "npm sbom (npm 8+) or cyclonedx-npm for CycloneDX output at T3"
|
|
363
|
+
},
|
|
364
|
+
"rust": {
|
|
365
|
+
"tool": "cargo-cyclonedx",
|
|
366
|
+
"maturity": "beta",
|
|
367
|
+
"reason": "cargo-cyclonedx generates CycloneDX SBOM for Rust workspace artifacts"
|
|
368
|
+
},
|
|
369
|
+
"go": {
|
|
370
|
+
"tool": "syft",
|
|
371
|
+
"maturity": "beta",
|
|
372
|
+
"reason": "syft (Anchore) closes the Go SBOM gap \u2014 used by 05-release.yml.ejs T3 and 06-nightly.yml.ejs T4"
|
|
373
|
+
},
|
|
374
|
+
"python": {
|
|
375
|
+
"tool": "cyclonedx-py",
|
|
376
|
+
"maturity": "beta",
|
|
377
|
+
"reason": "cyclonedx-bom (Python) generates CycloneDX SBOM from pip environment at T3"
|
|
378
|
+
},
|
|
379
|
+
"kotlin": {
|
|
380
|
+
"tool": "cyclonedx-gradle-plugin / cyclonedx-maven-plugin",
|
|
381
|
+
"maturity": "beta",
|
|
382
|
+
"reason": "Same JVM build-tool SBOM generation as Java (Gradle/Maven); 05-release.yml.ejs's build-superset and sbom jobs now include kotlin in the java branch, fixture-render-verified (#1803)"
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
"binary_signing": {
|
|
386
|
+
"java": {
|
|
387
|
+
"tool": "cosign sign-blob",
|
|
388
|
+
"maturity": "beta",
|
|
389
|
+
"reason": "cosign keyless sign-blob over JARs and native-image binaries at T3; Sigstore OIDC"
|
|
390
|
+
},
|
|
391
|
+
"typescript": {
|
|
392
|
+
"tool": "cosign sign-blob",
|
|
393
|
+
"maturity": "beta",
|
|
394
|
+
"reason": "cosign sign-blob over npm tarballs and cli binaries; Sigstore OIDC"
|
|
395
|
+
},
|
|
396
|
+
"rust": {
|
|
397
|
+
"tool": "cosign sign-blob",
|
|
398
|
+
"maturity": "beta",
|
|
399
|
+
"reason": "cosign sign-blob over cargo-dist binary artifacts; Sigstore OIDC"
|
|
400
|
+
},
|
|
401
|
+
"go": {
|
|
402
|
+
"tool": "cosign sign / cosign sign-blob",
|
|
403
|
+
"maturity": "beta",
|
|
404
|
+
"reason": "cosign sign for container images (service); sign-blob for goreleaser binaries (cli)"
|
|
405
|
+
},
|
|
406
|
+
"python": {
|
|
407
|
+
"tool": "cosign sign-blob",
|
|
408
|
+
"maturity": "beta",
|
|
409
|
+
"reason": "cosign sign-blob over wheels (twine) and pyinstaller binaries; Sigstore OIDC"
|
|
410
|
+
},
|
|
411
|
+
"kotlin": {
|
|
412
|
+
"tool": "cosign sign-blob",
|
|
413
|
+
"maturity": "beta",
|
|
414
|
+
"reason": "cosign keyless sign-blob over JARs at T3; Sigstore OIDC — language-agnostic, already wired identically to Java"
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
"provenance": {
|
|
418
|
+
"java": {
|
|
419
|
+
"tool": "actions/attest-build-provenance + slsa-github-generator",
|
|
420
|
+
"maturity": "beta",
|
|
421
|
+
"reason": "GitHub native provenance (L1/L2) + slsa-github-generator hermetic builder (L3) at T3"
|
|
422
|
+
},
|
|
423
|
+
"typescript": {
|
|
424
|
+
"tool": "actions/attest-build-provenance + slsa-github-generator",
|
|
425
|
+
"maturity": "beta",
|
|
426
|
+
"reason": "GitHub native provenance (L1/L2) + slsa-github-generator (L3) at T3"
|
|
427
|
+
},
|
|
428
|
+
"rust": {
|
|
429
|
+
"tool": "actions/attest-build-provenance + slsa-github-generator",
|
|
430
|
+
"maturity": "beta",
|
|
431
|
+
"reason": "GitHub native provenance (L1/L2) + slsa-github-generator (L3) at T3"
|
|
432
|
+
},
|
|
433
|
+
"go": {
|
|
434
|
+
"tool": "actions/attest-build-provenance + slsa-github-generator",
|
|
435
|
+
"maturity": "beta",
|
|
436
|
+
"reason": "GitHub native provenance (L1/L2) + slsa-github-generator (L3) at T3"
|
|
437
|
+
},
|
|
438
|
+
"python": {
|
|
439
|
+
"tool": "actions/attest-build-provenance + slsa-github-generator",
|
|
440
|
+
"maturity": "beta",
|
|
441
|
+
"reason": "GitHub native provenance (L1/L2) + slsa-github-generator (L3) at T3"
|
|
442
|
+
},
|
|
443
|
+
"kotlin": {
|
|
444
|
+
"tool": "actions/attest-build-provenance + slsa-github-generator",
|
|
445
|
+
"maturity": "beta",
|
|
446
|
+
"reason": "GitHub native provenance (L1/L2) + slsa-github-generator (L3) at T3 — language-agnostic, already wired identically to Java"
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
"container_scan": {
|
|
450
|
+
"java": {
|
|
451
|
+
"tool": "trivy",
|
|
452
|
+
"maturity": "beta",
|
|
453
|
+
"reason": "Trivy HIGH+CRITICAL (L2) / MEDIUM+ (L3) blocking at T2 when Dockerfile changed; T3 rescan"
|
|
454
|
+
},
|
|
455
|
+
"typescript": {
|
|
456
|
+
"tool": "trivy",
|
|
457
|
+
"maturity": "beta",
|
|
458
|
+
"reason": "Trivy container scan at T2/T3 for service-archetype TS projects"
|
|
459
|
+
},
|
|
460
|
+
"rust": {
|
|
461
|
+
"tool": "trivy",
|
|
462
|
+
"maturity": "beta",
|
|
463
|
+
"reason": "Trivy container scan at T2/T3 for service-archetype Rust projects"
|
|
464
|
+
},
|
|
465
|
+
"go": {
|
|
466
|
+
"tool": "trivy",
|
|
467
|
+
"maturity": "beta",
|
|
468
|
+
"reason": "Trivy container scan at T2/T3 for service-archetype Go projects"
|
|
469
|
+
},
|
|
470
|
+
"python": {
|
|
471
|
+
"tool": "trivy",
|
|
472
|
+
"maturity": "beta",
|
|
473
|
+
"reason": "Trivy container scan at T2/T3 for service-archetype Python projects"
|
|
474
|
+
},
|
|
475
|
+
"kotlin": {
|
|
476
|
+
"tool": "trivy",
|
|
477
|
+
"maturity": "beta",
|
|
478
|
+
"reason": "Trivy HIGH+CRITICAL container scan against the built Docker image; language-agnostic Dockerfile-based scan, already wired identically to Java"
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
"secret_scan": {
|
|
482
|
+
"java": {
|
|
483
|
+
"tool": "gitleaks",
|
|
484
|
+
"maturity": "beta",
|
|
485
|
+
"reason": "Gitleaks diff-scan at T1; full history scan at T3 and T4 nightly"
|
|
486
|
+
},
|
|
487
|
+
"typescript": {
|
|
488
|
+
"tool": "gitleaks",
|
|
489
|
+
"maturity": "beta",
|
|
490
|
+
"reason": "Gitleaks diff-scan at T1; full history scan at T3 and T4 nightly"
|
|
491
|
+
},
|
|
492
|
+
"rust": {
|
|
493
|
+
"tool": "gitleaks",
|
|
494
|
+
"maturity": "beta",
|
|
495
|
+
"reason": "Gitleaks diff-scan at T1; full history scan at T3 and T4 nightly"
|
|
496
|
+
},
|
|
497
|
+
"go": {
|
|
498
|
+
"tool": "gitleaks",
|
|
499
|
+
"maturity": "beta",
|
|
500
|
+
"reason": "Gitleaks diff-scan at T1; full history scan at T3 and T4 nightly"
|
|
501
|
+
},
|
|
502
|
+
"python": {
|
|
503
|
+
"tool": "gitleaks",
|
|
504
|
+
"maturity": "beta",
|
|
505
|
+
"reason": "Gitleaks diff-scan at T1; full history scan at T3 and T4 nightly"
|
|
506
|
+
},
|
|
507
|
+
"kotlin": {
|
|
508
|
+
"tool": "gitleaks",
|
|
509
|
+
"maturity": "beta",
|
|
510
|
+
"reason": "Gitleaks diff-scan at T1; full history scan at T3 and T4 nightly — language-agnostic, already wired identically to Java"
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
"a11y": {
|
|
514
|
+
"typescript": {
|
|
515
|
+
"tool": "axe-core/playwright",
|
|
516
|
+
"maturity": "proven",
|
|
517
|
+
"reason": "@axe-core/playwright 4.11+ ships a stable AxeBuilder; wcag2a+wcag2aa tag set is the industry baseline (INV-61, #349)"
|
|
518
|
+
},
|
|
519
|
+
"python": {
|
|
520
|
+
"tool": "axe-playwright-python",
|
|
521
|
+
"maturity": "beta",
|
|
522
|
+
"reason": "axe-playwright-python wraps the same axe-core rules but the API surface is small and tag selection less ergonomic than the TS binding; now generated (#1149) via run_axe.py wrapper for frontend-spa/backend-web-db archetypes"
|
|
523
|
+
},
|
|
524
|
+
"rust": {
|
|
525
|
+
"tool": "N/A",
|
|
526
|
+
"maturity": "unavailable",
|
|
527
|
+
"reason": "No browser surface for Rust CLI/embedded archetypes \u2014 a11y is a UI-layer concern"
|
|
528
|
+
},
|
|
529
|
+
"go": {
|
|
530
|
+
"tool": "N/A",
|
|
531
|
+
"maturity": "unavailable",
|
|
532
|
+
"reason": "No browser surface for Go CLI/server archetypes \u2014 a11y is a UI-layer concern"
|
|
533
|
+
},
|
|
534
|
+
"java": {
|
|
535
|
+
"tool": "N/A",
|
|
536
|
+
"maturity": "unavailable",
|
|
537
|
+
"reason": "Server-side Java archetypes have no rendered UI; pair with a TS frontend lane for a11y coverage"
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { runProbes, validateMatrix } from './probe.js';
|
|
2
|
+
export type { MatrixEntry, LanguageMatrix, ProbeResult, ProbeStatus, VerifyReport, } from './schema.js';
|
|
3
|
+
export { loadSkillsMatrix, validateSkillsMatrix, getSkillsMatrixEntries, } from './skills-validator.js';
|
|
4
|
+
export type { SkillsMatrix } from './skills-validator.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export class UnparseableConstraintError extends Error{constraint;range;constructor(constraint,range){super(`unparseable matrix constraint "${constraint}" (range="${range}") \u2014 valid forms: ">=18", ">=18 <22", ">=1.21", ">=3 <=3.9" (major or major.minor)`),this.constraint=constraint,this.range=range,this.name="UnparseableConstraintError"}}export function matches(ver,range){const trimmed=range.trim();if(trimmed==="")throw new UnparseableConstraintError("",range);const constraints=trimmed.split(/\s+/);for(const constraint of constraints)if(!satisfies(ver,constraint,range))return!1;return!0}function satisfies(ver,constraint,fullRange){const m=constraint.match(/^(>=|<=|>|<)(\d+)(?:\.(\d+))?$/);if(!m)throw new UnparseableConstraintError(constraint,fullRange);const[,op,rawMaj,rawMin]=m;if(op===void 0||rawMaj===void 0)throw new UnparseableConstraintError(constraint,fullRange);const cmpMajor=+rawMaj,cmpMinor=rawMin!==void 0?+rawMin:void 0,verNumeric=cmpMinor!==void 0?ver.major*1e4+ver.minor:ver.major*1e4,cmpNumeric=cmpMinor!==void 0?cmpMajor*1e4+cmpMinor:cmpMajor*1e4;switch(op){case">=":return verNumeric>=cmpNumeric;case"<=":return verNumeric<=cmpNumeric;case">":return verNumeric>cmpNumeric;case"<":return verNumeric<cmpNumeric;default:throw new UnparseableConstraintError(constraint,fullRange)}}export function validateRanges(entries){const SENTINEL={major:99,minor:99,patch:0},failures=[];for(const{tool,range}of entries)try{matches(SENTINEL,range)}catch(err){const reason=err instanceof Error?err.message:String(err);failures.push({tool,range,reason})}return failures}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"typescript": [
|
|
3
|
+
{ "tool": "node", "range": ">=18" },
|
|
4
|
+
{ "tool": "npm", "range": ">=9" }
|
|
5
|
+
],
|
|
6
|
+
"java": [
|
|
7
|
+
{ "tool": "java", "range": ">=17" },
|
|
8
|
+
{ "tool": "gradle", "range": ">=7" },
|
|
9
|
+
{ "tool": "mvn", "range": ">=3.8" }
|
|
10
|
+
],
|
|
11
|
+
"kotlin": [
|
|
12
|
+
{ "tool": "java", "range": ">=17" },
|
|
13
|
+
{ "tool": "kotlinc", "range": ">=1.9" },
|
|
14
|
+
{ "tool": "gradle", "range": ">=7" }
|
|
15
|
+
],
|
|
16
|
+
"rust": [
|
|
17
|
+
{ "tool": "rustc", "range": ">=1.70" },
|
|
18
|
+
{ "tool": "cargo", "range": ">=1.70" }
|
|
19
|
+
],
|
|
20
|
+
"go": [{ "tool": "go", "range": ">=1.21" }],
|
|
21
|
+
"python": [
|
|
22
|
+
{ "tool": "python3", "range": ">=3.10" },
|
|
23
|
+
{ "tool": "pip", "range": ">=22" },
|
|
24
|
+
{ "tool": "ruff", "range": ">=0.4" },
|
|
25
|
+
{ "tool": "lint-imports", "range": ">=2.11" }
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface SemVer {
|
|
2
|
+
major: number;
|
|
3
|
+
minor: number;
|
|
4
|
+
patch: number;
|
|
5
|
+
}
|
|
6
|
+
/** `v20.11.1` → SemVer */
|
|
7
|
+
export declare const parseNodeVersion: (raw: string) => SemVer | null;
|
|
8
|
+
/** `10.2.4` → SemVer */
|
|
9
|
+
export declare const parseNpmVersion: (raw: string) => SemVer | null;
|
|
10
|
+
/**
|
|
11
|
+
* Handles:
|
|
12
|
+
* openjdk version "17.0.9" ...
|
|
13
|
+
* java version "1.8.0_402" (legacy — major becomes 8)
|
|
14
|
+
*
|
|
15
|
+
* Bespoke: the legacy `1.x` remap and `_NNN` sub-patch have no representation
|
|
16
|
+
* in the shared spec table, so this parser stays standalone.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseJavaVersion(raw: string): SemVer | null;
|
|
19
|
+
/** `Gradle 8.5` or `Gradle 7.6.4` */
|
|
20
|
+
export declare const parseGradleVersion: (raw: string) => SemVer | null;
|
|
21
|
+
/** `Apache Maven 3.9.6 (...)` */
|
|
22
|
+
export declare const parseMavenVersion: (raw: string) => SemVer | null;
|
|
23
|
+
/** `rustc 1.78.0 (hash date)` */
|
|
24
|
+
export declare const parseRustVersion: (raw: string) => SemVer | null;
|
|
25
|
+
/** `cargo 1.78.0 (hash date)` */
|
|
26
|
+
export declare const parseCargoVersion: (raw: string) => SemVer | null;
|
|
27
|
+
/** `go version go1.22.3 linux/amd64` */
|
|
28
|
+
export declare const parseGoVersion: (raw: string) => SemVer | null;
|
|
29
|
+
/** `Python 3.12.3` */
|
|
30
|
+
export declare const parsePythonVersion: (raw: string) => SemVer | null;
|
|
31
|
+
/** `pip 24.0 from ...` */
|
|
32
|
+
export declare const parsePipVersion: (raw: string) => SemVer | null;
|
|
33
|
+
/** `lint-imports, version 2.1.0` */
|
|
34
|
+
export declare const parseLintImportsVersion: (raw: string) => SemVer | null;
|
|
35
|
+
/** `ruff 0.4.5` */
|
|
36
|
+
export declare const parseRuffVersion: (raw: string) => SemVer | null;
|
|
37
|
+
/** `kotlinc-jvm 1.9.23 (JRE 17.0.9+9)` or `info: kotlinc-jvm 1.9.23 (JRE 17.0.9+9)` */
|
|
38
|
+
export declare const parseKotlinVersion: (raw: string) => SemVer | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function parseWith(spec,raw){const m=(spec.trim?raw.trim():raw).match(spec.re);if(!m)return null;const[,maj,min,pat]=m;return maj===void 0||min===void 0||!spec.optionalPatch&&pat===void 0?null:{major:+maj,minor:+min,patch:pat!==void 0?+pat:0}}const SPECS={node:{re:/^v(\d+)\.(\d+)\.(\d+)$/,trim:!0},npm:{re:/^(\d+)\.(\d+)\.(\d+)$/,trim:!0},gradle:{re:/Gradle\s+(\d+)\.(\d+)(?:\.(\d+))?/,optionalPatch:!0},maven:{re:/Apache Maven\s+(\d+)\.(\d+)\.(\d+)/},rust:{re:/rustc\s+(\d+)\.(\d+)\.(\d+)/},cargo:{re:/cargo\s+(\d+)\.(\d+)\.(\d+)/},go:{re:/go(\d+)\.(\d+)(?:\.(\d+))?/,optionalPatch:!0},python:{re:/Python\s+(\d+)\.(\d+)\.(\d+)/},pip:{re:/pip\s+(\d+)\.(\d+)(?:\.(\d+))?/,optionalPatch:!0},lintImports:{re:/lint-imports,\s+version\s+(\d+)\.(\d+)\.(\d+)/,trim:!0},ruff:{re:/^ruff\s+(\d+)\.(\d+)\.(\d+)/,trim:!0},kotlin:{re:/kotlinc-jvm\s+(\d+)\.(\d+)\.(\d+)/,trim:!0}};export const parseNodeVersion=raw=>parseWith(SPECS.node,raw),parseNpmVersion=raw=>parseWith(SPECS.npm,raw);export function parseJavaVersion(raw){const m=raw.match(/"(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:_(\d+))?"/);if(!m)return null;const[,maj,min,pat,sub]=m;return maj===void 0?null:maj==="1"?min===void 0||pat===void 0?null:{major:+min,minor:+pat,patch:sub!==void 0?+sub:0}:{major:+maj,minor:min!==void 0?+min:0,patch:pat!==void 0?+pat:0}}export const parseGradleVersion=raw=>parseWith(SPECS.gradle,raw),parseMavenVersion=raw=>parseWith(SPECS.maven,raw),parseRustVersion=raw=>parseWith(SPECS.rust,raw),parseCargoVersion=raw=>parseWith(SPECS.cargo,raw),parseGoVersion=raw=>parseWith(SPECS.go,raw),parsePythonVersion=raw=>parseWith(SPECS.python,raw),parsePipVersion=raw=>parseWith(SPECS.pip,raw),parseLintImportsVersion=raw=>parseWith(SPECS.lintImports,raw),parseRuffVersion=raw=>parseWith(SPECS.ruff,raw),parseKotlinVersion=raw=>parseWith(SPECS.kotlin,raw);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { LanguageMatrix, ProbeResult, VerifyReport } from './schema.js';
|
|
2
|
+
type OutputChannel = 'stdout' | 'stderr';
|
|
3
|
+
/** Specification for a build-invocation probe (runs in target project directory) */
|
|
4
|
+
export interface BuildProbeSpec {
|
|
5
|
+
/** Probe identifier used in output, e.g. "gradlew:help" */
|
|
6
|
+
name: string;
|
|
7
|
+
/** Executable to run */
|
|
8
|
+
command: string;
|
|
9
|
+
/** Arguments to pass */
|
|
10
|
+
args: readonly string[];
|
|
11
|
+
/**
|
|
12
|
+
* Relative path (within target dir) that must exist before running.
|
|
13
|
+
* Empty string means always run (no file guard).
|
|
14
|
+
*/
|
|
15
|
+
requires: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Probe a single tool: run its version command and check against the range.
|
|
19
|
+
* Exported for unit testing.
|
|
20
|
+
*/
|
|
21
|
+
export declare function probeTool(tool: string, args: readonly string[], range: string, channel: OutputChannel): ProbeResult;
|
|
22
|
+
/** exported for tests */
|
|
23
|
+
export declare function validateMatrix(raw: unknown): LanguageMatrix;
|
|
24
|
+
/**
|
|
25
|
+
* Run a build-invocation probe in the target directory.
|
|
26
|
+
* Returns skipped if the required file guard is missing.
|
|
27
|
+
* Exported for unit testing.
|
|
28
|
+
*/
|
|
29
|
+
export declare function runBuildProbe(dir: string, spec: BuildProbeSpec): ProbeResult;
|
|
30
|
+
/**
|
|
31
|
+
* Run all tool probes for the detected stack in the given directory.
|
|
32
|
+
* Runs version probes first, then a per-stack build probe.
|
|
33
|
+
*/
|
|
34
|
+
export declare function runProbes(dir: string): VerifyReport;
|
|
35
|
+
/**
|
|
36
|
+
* Probe whether `.githooks/pre-commit` exists but `core.hooksPath` is not set to `.githooks`.
|
|
37
|
+
* Returns null (silent skip) if no `.githooks/` directory is present at all.
|
|
38
|
+
* Exported for unit testing.
|
|
39
|
+
*/
|
|
40
|
+
export declare function probeHooksPath(dir: string): ProbeResult | null;
|
|
41
|
+
export {};
|