mandrel 2.60.0 → 2.62.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/.agents/README.md +10 -10
- package/.agents/agents/story-worker.md +1 -1
- package/.agents/docs/agentrc-reference.json +4 -82
- package/.agents/docs/configuration.md +20 -87
- package/.agents/docs/workflows.md +1 -1
- package/.agents/instructions.md +1 -3
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/agentrc.schema.json +11 -486
- package/.agents/schemas/story-deliver-terminal.schema.json +10 -0
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +14 -14
- package/.agents/scripts/acceptance-eval.js +32 -164
- package/.agents/scripts/agents-bootstrap-github.js +27 -129
- package/.agents/scripts/apply-quality-bootstrap.js +4 -40
- package/.agents/scripts/audit-baselines.js +6 -27
- package/.agents/scripts/audit-labels-bootstrap.js +5 -29
- package/.agents/scripts/audit-to-stories.js +91 -361
- package/.agents/scripts/boot-sweep.js +19 -72
- package/.agents/scripts/bootstrap.js +74 -395
- package/.agents/scripts/ceremony-derive.js +9 -45
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +46 -172
- package/.agents/scripts/check-cyclomatic.js +12 -44
- package/.agents/scripts/check-dead-exports.js +13 -64
- package/.agents/scripts/check-doc-links.js +38 -186
- package/.agents/scripts/check-gherkin-corpus.js +24 -127
- package/.agents/scripts/check-test-temp-hygiene.js +28 -169
- package/.agents/scripts/coverage-capture.js +32 -99
- package/.agents/scripts/deliver-light.js +14 -101
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +36 -133
- package/.agents/scripts/diagnose-friction.js +24 -116
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +23 -85
- package/.agents/scripts/file-ci-gap.js +10 -50
- package/.agents/scripts/generate-config-docs.js +30 -170
- package/.agents/scripts/generate-lens-checklists.js +8 -52
- package/.agents/scripts/generate-skills-index.js +14 -112
- package/.agents/scripts/generate-workflows-doc.js +10 -70
- package/.agents/scripts/git-cleanup.js +2 -34
- package/.agents/scripts/lib/Graph.js +24 -81
- package/.agents/scripts/lib/ITicketingProvider.js +47 -143
- package/.agents/scripts/lib/Logger.js +14 -76
- package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
- package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
- package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
- package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
- package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
- package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
- package/.agents/scripts/lib/audit-baselines/read.js +3 -16
- package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
- package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
- package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
- package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
- package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
- package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
- package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
- package/.agents/scripts/lib/audit-suite/findings.js +12 -52
- package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
- package/.agents/scripts/lib/audit-suite/index.js +1 -15
- package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
- package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
- package/.agents/scripts/lib/audit-suite/runner.js +13 -43
- package/.agents/scripts/lib/audit-suite/selector.js +49 -349
- package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
- package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
- package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
- package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
- package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
- package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
- package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
- package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
- package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
- package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
- package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
- package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
- package/.agents/scripts/lib/baseline-loader.js +12 -51
- package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
- package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
- package/.agents/scripts/lib/baselines/components.js +10 -61
- package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
- package/.agents/scripts/lib/baselines/crap-preview-incremental.js +5 -21
- package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
- package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
- package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
- package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
- package/.agents/scripts/lib/baselines/envelope.js +13 -129
- package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
- package/.agents/scripts/lib/baselines/git-base.js +23 -142
- package/.agents/scripts/lib/baselines/kernel.js +11 -111
- package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
- package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
- package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
- package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
- package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
- package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
- package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
- package/.agents/scripts/lib/baselines/path-canon.js +19 -128
- package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
- package/.agents/scripts/lib/baselines/reader.js +14 -107
- package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
- package/.agents/scripts/lib/baselines/scope.js +11 -135
- package/.agents/scripts/lib/baselines/writer.js +16 -149
- package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
- package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
- package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
- package/.agents/scripts/lib/bdd-step-index.js +26 -100
- package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
- package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
- package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
- package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
- package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
- package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
- package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
- package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
- package/.agents/scripts/lib/bootstrap/summary.js +1 -8
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
- package/.agents/scripts/lib/branch-name-guard.js +4 -23
- package/.agents/scripts/lib/changed-files.js +31 -143
- package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
- package/.agents/scripts/lib/checks/index.js +18 -101
- package/.agents/scripts/lib/checks/loop-health.js +11 -53
- package/.agents/scripts/lib/checks/state.js +16 -91
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
- package/.agents/scripts/lib/child-exec.js +39 -108
- package/.agents/scripts/lib/cli/standard-args.js +9 -116
- package/.agents/scripts/lib/cli-args.js +31 -146
- package/.agents/scripts/lib/cli-usage.js +5 -27
- package/.agents/scripts/lib/cli-utils.js +2 -12
- package/.agents/scripts/lib/close-validation/commands.js +13 -76
- package/.agents/scripts/lib/close-validation/gates.js +92 -331
- package/.agents/scripts/lib/close-validation/process.js +121 -151
- package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
- package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
- package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
- package/.agents/scripts/lib/close-validation/runner.js +53 -110
- package/.agents/scripts/lib/command-header.js +6 -28
- package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
- package/.agents/scripts/lib/config/baselines.js +3 -14
- package/.agents/scripts/lib/config/ci.js +8 -38
- package/.agents/scripts/lib/config/commands.js +1 -15
- package/.agents/scripts/lib/config/defaults.js +4 -33
- package/.agents/scripts/lib/config/delivery-routing.js +6 -35
- package/.agents/scripts/lib/config/explain.js +9 -80
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +2 -30
- package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
- package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
- package/.agents/scripts/lib/config/gates/index.js +2 -17
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
- package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
- package/.agents/scripts/lib/config/gates/shared.js +4 -64
- package/.agents/scripts/lib/config/github.js +4 -22
- package/.agents/scripts/lib/config/limits.js +4 -57
- package/.agents/scripts/lib/config/paths.js +2 -21
- package/.agents/scripts/lib/config/qa.js +4 -38
- package/.agents/scripts/lib/config/quality.js +76 -432
- package/.agents/scripts/lib/config/runners.js +12 -56
- package/.agents/scripts/lib/config/runtime.js +13 -57
- package/.agents/scripts/lib/config/shared.js +2 -16
- package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
- package/.agents/scripts/lib/config/temp-paths.js +40 -280
- package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
- package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
- package/.agents/scripts/lib/config-resolver.js +10 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +12 -294
- package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
- package/.agents/scripts/lib/config-settings-schema.js +37 -274
- package/.agents/scripts/lib/coverage-baseline.js +20 -110
- package/.agents/scripts/lib/coverage-capture-fullscope.js +12 -37
- package/.agents/scripts/lib/coverage-capture-incremental.js +12 -43
- package/.agents/scripts/lib/coverage-capture-usage.js +4 -24
- package/.agents/scripts/lib/coverage-capture.js +99 -224
- package/.agents/scripts/lib/coverage-utils.js +14 -79
- package/.agents/scripts/lib/cpu-pool.js +17 -123
- package/.agents/scripts/lib/crap-baseline-join.js +16 -88
- package/.agents/scripts/lib/crap-coordinates.js +6 -25
- package/.agents/scripts/lib/crap-engine.js +40 -153
- package/.agents/scripts/lib/crap-method-identity.js +16 -78
- package/.agents/scripts/lib/crap-utils.js +31 -155
- package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
- package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
- package/.agents/scripts/lib/dead-exports-knip.js +18 -56
- package/.agents/scripts/lib/dead-exports-mode.js +5 -24
- package/.agents/scripts/lib/degraded-mode.js +3 -26
- package/.agents/scripts/lib/dependency-parser.js +8 -40
- package/.agents/scripts/lib/dependency-version.js +13 -35
- package/.agents/scripts/lib/detect-package-manager.js +6 -36
- package/.agents/scripts/lib/doc-tiers.js +22 -126
- package/.agents/scripts/lib/duplicate-search.js +8 -72
- package/.agents/scripts/lib/env-loader.js +5 -27
- package/.agents/scripts/lib/error-redactor.js +6 -31
- package/.agents/scripts/lib/errors/index.js +2 -22
- package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
- package/.agents/scripts/lib/escomplex-kernel.js +21 -123
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +93 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -151
- package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
- package/.agents/scripts/lib/findings/classify-finding.js +14 -69
- package/.agents/scripts/lib/findings/promote-finding.js +14 -112
- package/.agents/scripts/lib/findings/provenance-field.js +11 -52
- package/.agents/scripts/lib/findings/route-finding.js +37 -255
- package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
- package/.agents/scripts/lib/findings/severity.js +18 -104
- package/.agents/scripts/lib/format-generated-json.js +12 -44
- package/.agents/scripts/lib/full-suite-lock.js +160 -429
- package/.agents/scripts/lib/full-suite-queue.js +213 -0
- package/.agents/scripts/lib/gates/baseline-store.js +5 -9
- package/.agents/scripts/lib/gates/friction.js +1 -3
- package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
- package/.agents/scripts/lib/gh-exec.js +31 -259
- package/.agents/scripts/lib/git/cached-fetch.js +9 -52
- package/.agents/scripts/lib/git/sync-from-base.js +15 -107
- package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
- package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
- package/.agents/scripts/lib/git-utils.js +37 -161
- package/.agents/scripts/lib/github/framework-repo.js +8 -71
- package/.agents/scripts/lib/github-url.js +2 -17
- package/.agents/scripts/lib/import-graph.js +11 -38
- package/.agents/scripts/lib/install-cmd-parser.js +4 -13
- package/.agents/scripts/lib/json-utils.js +3 -18
- package/.agents/scripts/lib/label-constants.js +16 -111
- package/.agents/scripts/lib/label-taxonomy.js +4 -30
- package/.agents/scripts/lib/maintainability-engine.js +12 -80
- package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
- package/.agents/scripts/lib/maintainability-utils.js +16 -92
- package/.agents/scripts/lib/mandrel-catalog.js +12 -70
- package/.agents/scripts/lib/notifications/notifier.js +13 -38
- package/.agents/scripts/lib/npm-scripts.js +4 -23
- package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
- package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
- package/.agents/scripts/lib/observability/signal-validator.js +5 -37
- package/.agents/scripts/lib/observability/signals-writer.js +11 -121
- package/.agents/scripts/lib/observability/source-classifier.js +21 -203
- package/.agents/scripts/lib/observability/terse-result.js +14 -47
- package/.agents/scripts/lib/onboard/init-tail.js +13 -74
- package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
- package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
- package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +5 -75
- package/.agents/scripts/lib/orchestration/change-set.js +7 -36
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
- package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
- package/.agents/scripts/lib/orchestration/check-state.js +92 -0
- package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
- package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +42 -189
- package/.agents/scripts/lib/orchestration/code-review.js +24 -128
- package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
- package/.agents/scripts/lib/orchestration/complexity-gate.js +42 -214
- package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
- package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
- package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
- package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
- package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
- package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
- package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
- package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
- package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
- package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
- package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
- package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
- package/.agents/scripts/lib/orchestration/light-suitability.js +26 -231
- package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
- package/.agents/scripts/lib/orchestration/merge-queue.js +158 -0
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +52 -303
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
- package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
- package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
- package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
- package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
- package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +14 -78
- package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
- package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
- package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
- package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +49 -248
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +85 -368
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +8 -38
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +30 -190
- package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
- package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
- package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
- package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
- package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
- package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
- package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
- package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
- package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
- package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
- package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
- package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
- package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
- package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
- package/.agents/scripts/lib/orchestration/review-depth.js +12 -94
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
- package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
- package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
- package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
- package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
- package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
- package/.agents/scripts/lib/orchestration/run-epilogue.js +40 -199
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +13 -81
- package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
- package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
- package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +190 -280
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +18 -80
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +183 -485
- package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
- package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +9 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +110 -290
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
- package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
- package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
- package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
- package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
- package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
- package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -201
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +43 -245
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +4 -23
- package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
- package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
- package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -126
- package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
- package/.agents/scripts/lib/orchestration/ticket-validator.js +39 -181
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -250
- package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
- package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
- package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
- package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
- package/.agents/scripts/lib/path-security.js +3 -6
- package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
- package/.agents/scripts/lib/preflight-runner.js +13 -69
- package/.agents/scripts/lib/process-group.js +143 -0
- package/.agents/scripts/lib/project-root.js +2 -8
- package/.agents/scripts/lib/provider-factory.js +2 -25
- package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
- package/.agents/scripts/lib/qa/qa-session.js +15 -69
- package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
- package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
- package/.agents/scripts/lib/reserved-test-ids.js +9 -47
- package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
- package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
- package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
- package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
- package/.agents/scripts/lib/signals/detectors/common.js +12 -38
- package/.agents/scripts/lib/signals/index.js +2 -19
- package/.agents/scripts/lib/signals/schema.js +14 -109
- package/.agents/scripts/lib/signals/write.js +2 -11
- package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
- package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
- package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
- package/.agents/scripts/lib/single-story-sweep.js +14 -97
- package/.agents/scripts/lib/skills/parse-skill.js +13 -59
- package/.agents/scripts/lib/skills/skills-index.js +8 -29
- package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
- package/.agents/scripts/lib/source-extensions.js +11 -42
- package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
- package/.agents/scripts/lib/stdio-flush.js +9 -36
- package/.agents/scripts/lib/story-adjacency.js +8 -40
- package/.agents/scripts/lib/story-body/body-format-lints.js +22 -83
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +83 -358
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +11 -65
- package/.agents/scripts/lib/test-env.js +12 -65
- package/.agents/scripts/lib/test-run-credit.js +10 -65
- package/.agents/scripts/lib/test-runner-contract.js +19 -74
- package/.agents/scripts/lib/test-temp.js +38 -184
- package/.agents/scripts/lib/test-tiers.js +12 -96
- package/.agents/scripts/lib/ticket-body-sections.js +21 -96
- package/.agents/scripts/lib/transpile.js +15 -74
- package/.agents/scripts/lib/util/concurrent-map.js +6 -25
- package/.agents/scripts/lib/util/parse-id-list.js +8 -34
- package/.agents/scripts/lib/util/poll-loop.js +8 -28
- package/.agents/scripts/lib/util/with-timeout.js +2 -11
- package/.agents/scripts/lib/validation-evidence.js +21 -96
- package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
- package/.agents/scripts/lib/wave-runner/live-probe.js +53 -221
- package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
- package/.agents/scripts/lib/workers/crap-worker.js +11 -64
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
- package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
- package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
- package/.agents/scripts/lib/workflow-closure.js +22 -105
- package/.agents/scripts/lib/workspace-provisioner.js +16 -54
- package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
- package/.agents/scripts/lib/worktree-manager.js +15 -40
- package/.agents/scripts/lint-issue-body.js +12 -68
- package/.agents/scripts/mandrel-update-preflight.js +10 -70
- package/.agents/scripts/merge-baseline.js +30 -104
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +27 -111
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +31 -148
- package/.agents/scripts/plan-run-epilogue.js +11 -37
- package/.agents/scripts/pr-watch-with-update.js +76 -267
- package/.agents/scripts/providers/github/auth.js +3 -8
- package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
- package/.agents/scripts/providers/github/board-add.js +5 -21
- package/.agents/scripts/providers/github/branch-protection.js +11 -43
- package/.agents/scripts/providers/github/cache.js +2 -14
- package/.agents/scripts/providers/github/comments.js +7 -40
- package/.agents/scripts/providers/github/compose.js +3 -19
- package/.agents/scripts/providers/github/errors.js +22 -125
- package/.agents/scripts/providers/github/issues.js +31 -123
- package/.agents/scripts/providers/github/labels.js +24 -124
- package/.agents/scripts/providers/github/mappers.js +5 -27
- package/.agents/scripts/providers/github/merge-methods.js +3 -22
- package/.agents/scripts/providers/github/project-board.js +2 -17
- package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
- package/.agents/scripts/providers/github/request-helpers.js +5 -32
- package/.agents/scripts/providers/github/search-budget.js +9 -39
- package/.agents/scripts/providers/github/search-query.js +5 -26
- package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
- package/.agents/scripts/providers/github/sub-issues.js +7 -36
- package/.agents/scripts/providers/github/tickets.js +32 -134
- package/.agents/scripts/providers/github.js +18 -59
- package/.agents/scripts/prune-plan-run-labels.js +12 -46
- package/.agents/scripts/quality-preview.js +35 -220
- package/.agents/scripts/resolve-doc-tiers.js +3 -26
- package/.agents/scripts/resolve-stories.js +16 -67
- package/.agents/scripts/resync-status-column.js +6 -25
- package/.agents/scripts/run-tests.js +29 -104
- package/.agents/scripts/single-story-close.js +23 -135
- package/.agents/scripts/single-story-confirm-merge.js +32 -139
- package/.agents/scripts/single-story-init.js +47 -209
- package/.agents/scripts/stories-wave-tick.js +102 -472
- package/.agents/scripts/sync-agentrc.js +3 -21
- package/.agents/scripts/sync-claude-agents.js +9 -55
- package/.agents/scripts/sync-claude-commands.js +20 -110
- package/.agents/scripts/test-wrapper.js +6 -43
- package/.agents/scripts/update-coverage-baseline.js +5 -22
- package/.agents/scripts/update-crap-baseline.js +7 -30
- package/.agents/scripts/update-duplication-baseline.js +16 -92
- package/.agents/scripts/update-maintainability-baseline.js +8 -62
- package/.agents/scripts/update-ticket-state.js +1 -7
- package/.agents/scripts/validate-skills.js +6 -26
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
- package/.agents/workflows/audit-accessibility.md +4 -7
- package/.agents/workflows/audit-adrs.md +3 -6
- package/.agents/workflows/audit-architecture.md +3 -11
- package/.agents/workflows/audit-baselines.md +6 -9
- package/.agents/workflows/audit-clean-code.md +8 -12
- package/.agents/workflows/audit-data-model.md +3 -7
- package/.agents/workflows/audit-dependencies.md +4 -7
- package/.agents/workflows/audit-devops.md +4 -8
- package/.agents/workflows/audit-documentation.md +1 -4
- package/.agents/workflows/audit-mobile.md +4 -7
- package/.agents/workflows/audit-navigability.md +3 -6
- package/.agents/workflows/audit-performance.md +2 -4
- package/.agents/workflows/audit-privacy.md +4 -7
- package/.agents/workflows/audit-quality.md +4 -7
- package/.agents/workflows/audit-security.md +4 -7
- package/.agents/workflows/audit-seo.md +4 -7
- package/.agents/workflows/audit-sre.md +4 -7
- package/.agents/workflows/audit-to-stories.md +17 -30
- package/.agents/workflows/audit-ux-ui.md +4 -7
- package/.agents/workflows/helpers/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/deliver-digest.md +6 -4
- package/.agents/workflows/helpers/deliver-reference.md +114 -188
- package/.agents/workflows/helpers/deliver-story-reference.md +189 -533
- package/.agents/workflows/helpers/plan-reference.md +86 -139
- package/.agents/workflows/helpers/qa-core.md +12 -0
- package/.agents/workflows/memory-consolidate.md +1 -1
- package/.agents/workflows/qa-assist.md +27 -71
- package/.agents/workflows/qa-explore.md +19 -59
- package/.agents/workflows/qa-run.md +11 -33
- package/README.md +1 -1
- package/bin/mandrel.js +5 -46
- package/bin/postinstall.js +18 -107
- package/docs/CHANGELOG.md +32 -0
- package/lib/cli/doctor.js +11 -71
- package/lib/cli/init.js +26 -165
- package/lib/cli/migrate.js +5 -64
- package/lib/cli/registry.js +84 -467
- package/lib/cli/sync-agents.js +4 -64
- package/lib/cli/sync-commands.js +11 -64
- package/lib/cli/sync.js +34 -213
- package/lib/cli/uninstall.js +40 -219
- package/lib/cli/update.js +105 -661
- package/lib/cli/version-check.js +8 -72
- package/lib/cli/version-helpers.js +14 -87
- package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
- package/lib/migrations/index.js +15 -92
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
- package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
- package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
- package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
- package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
- package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
- package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
- package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +2 -21
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +16 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1183
- package/.agents/rules/known-tooling-behavior.md +0 -200
- package/.agents/rules/orchestration-error-handling.md +0 -61
- package/.agents/rules/test-seams.md +0 -59
- package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
- package/.agents/schemas/baselines/lint.schema.json +0 -47
- package/.agents/scripts/check-action-pinning.js +0 -260
- package/.agents/scripts/check-audit-attribution.js +0 -302
- package/.agents/scripts/check-baseline-drift.js +0 -211
- package/.agents/scripts/check-baseline-scope.js +0 -362
- package/.agents/scripts/check-generated-validator.js +0 -202
- package/.agents/scripts/check-knip-entries.js +0 -159
- package/.agents/scripts/check-lifecycle-lint.js +0 -294
- package/.agents/scripts/check-pinned-override-notes.js +0 -102
- package/.agents/scripts/check-schema-references.js +0 -368
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -218
- package/.agents/scripts/check-workflow-cli-lint.js +0 -299
- package/.agents/scripts/check-workflow-timeouts.js +0 -291
- package/.agents/scripts/install-matrix-assert.js +0 -326
- package/.agents/scripts/lib/audit-advisories.js +0 -195
- package/.agents/scripts/lib/audit-attribution.js +0 -134
- package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
- package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
- package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
- package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
- package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
- package/.agents/scripts/lib/c8-cli-path.js +0 -21
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
- package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
- package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
- package/.agents/scripts/lib/fs-walk.js +0 -52
- package/.agents/scripts/lib/knip-config-resolver.js +0 -181
- package/.agents/scripts/lib/knip-entry-sync.js +0 -452
- package/.agents/scripts/lib/pinned-override-notes.js +0 -88
- package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
- package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
- package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
- package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
- package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
- package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
- package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
- package/.agents/scripts/lib/test-isolate/runner.js +0 -483
- package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
- package/.agents/scripts/lib/test-profile/render-report.js +0 -45
- package/.agents/scripts/lint-label-vocabulary.js +0 -214
- package/.agents/scripts/post-structured-comment.js +0 -127
- package/.agents/scripts/provision-git-hooks.js +0 -85
- package/.agents/scripts/prune-baseline-orphans.js +0 -181
- package/.agents/scripts/run-coverage.js +0 -197
- package/.agents/scripts/run-lint.js +0 -133
- package/.agents/scripts/run-test-profile.js +0 -129
- package/.agents/scripts/run-verify.js +0 -125
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
# Known Tooling Behavior
|
|
2
|
-
|
|
3
|
-
This rule applies when you are about to trust the output of a gate, a
|
|
4
|
-
baseline ratchet, or a local stand-in for a CI check — before pushing,
|
|
5
|
-
before declaring a check green, and before diagnosing a red one.
|
|
6
|
-
|
|
7
|
-
Each entry below records a **measured** behavior of this repository's own
|
|
8
|
-
tooling: a place where a command's visible output does not mean what it
|
|
9
|
-
looks like it means. Entries exist because each one has already cost a
|
|
10
|
-
delivery cycle.
|
|
11
|
-
|
|
12
|
-
## The entry bar
|
|
13
|
-
|
|
14
|
-
- An entry states behavior that was **measured against this repo**, never
|
|
15
|
-
recalled and never assumed.
|
|
16
|
-
- Every entry carries a **reproduction command** that was actually run. If
|
|
17
|
-
the command stops reproducing the behavior, **delete the entry** — do not
|
|
18
|
-
annotate it. A stale entry is worse than a missing one, because it is
|
|
19
|
-
trusted.
|
|
20
|
-
- Entries describe the observable behavior and the safe move. They never
|
|
21
|
-
describe a way to bypass a gate, and recording a behavior here is not a
|
|
22
|
-
decision to keep it.
|
|
23
|
-
|
|
24
|
-
## 1. `npm run lint` prints `Summary: 0 error(s)` and can still exit 1
|
|
25
|
-
|
|
26
|
-
**Behavior.** `npm run lint` is `run-lint.js`, which spawns eight tools
|
|
27
|
-
concurrently with inherited stdio and exits with the first non-zero code —
|
|
28
|
-
Biome, markdownlint-cli2, the lifecycle lint, the workflow-CLI lint, the
|
|
29
|
-
label-vocabulary lint, the workflow-timeout gate, the arch-cycle ratchet, and
|
|
30
|
-
the Gherkin corpus gate. `Summary: 0 error(s)` is **markdownlint-cli2's own
|
|
31
|
-
verdict**, not the aggregate — it is printed whether or not any of the other
|
|
32
|
-
seven failed. Because the tools run in parallel, that line can land anywhere
|
|
33
|
-
in the output, including last, so the tail of a failing run reads green.
|
|
34
|
-
Biome's format diagnostics are `error`-severity, so a file that only needs
|
|
35
|
-
reformatting fails the check while emitting no lint rule name at all.
|
|
36
|
-
|
|
37
|
-
**Reproduce.**
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# a format-only diff is an error, not a warning
|
|
41
|
-
printf 'export const x = {a:1, b:2};\n' | npx biome check --stdin-file-path=probe.js
|
|
42
|
-
echo "biome exit=$?" # 1 — "The contents aren't fixed"
|
|
43
|
-
|
|
44
|
-
# and markdownlint's Summary line is unconditional
|
|
45
|
-
npm run lint 2>&1 | grep -c 'Summary: 0 error(s)'
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Safe move.** Trust the exit code, never the last line. When `npm run lint`
|
|
49
|
-
exits non-zero and you cannot see why, re-run `npx biome ci .` on its own —
|
|
50
|
-
`.agents/scripts/run-lint.js` lists every tool it fans out to. Fix formatting
|
|
51
|
-
with `npm run format`; never reach for `--no-verify`.
|
|
52
|
-
|
|
53
|
-
## 2. `check-baselines.js` is not the whole `baselines` check
|
|
54
|
-
|
|
55
|
-
**Behavior.** `.agentrc.json` declares the `baselines` required check as
|
|
56
|
-
`node .agents/scripts/check-baselines.js`, but that script only runs the
|
|
57
|
-
gates configured under `delivery.quality.gates` — currently **crap,
|
|
58
|
-
maintainability, and duplication**. CI's job named `baselines` in
|
|
59
|
-
`.github/workflows/ci.yml` runs that script **and then nine standalone
|
|
60
|
-
commands** the script knows nothing about, so a locally green
|
|
61
|
-
`check-baselines.js` is not evidence that the `baselines` check will pass.
|
|
62
|
-
|
|
63
|
-
| Command CI's `baselines` job runs | Covered by `check-baselines.js` | Covered by `npm run lint` | Covered by `npm run verify` |
|
|
64
|
-
| --- | --- | --- | --- |
|
|
65
|
-
| `check-arch-cycles.js` | no | **yes** | via `lint` |
|
|
66
|
-
| `check-dead-exports.js` | no | no | **yes** |
|
|
67
|
-
| `check-dead-exports.js --production` | no | no | **yes** |
|
|
68
|
-
| `check-context-budget.js` | no | no | **yes** |
|
|
69
|
-
| `check-workflow-citations.js` | no | no | **yes** |
|
|
70
|
-
| `check-cyclomatic.js` | no | no | **yes** |
|
|
71
|
-
| `check-schema-references.js` | no | no | **yes** |
|
|
72
|
-
| `check-knip-entries.js` | no | no | **yes** |
|
|
73
|
-
| `check-baseline-scope.js` | no | no | **no** |
|
|
74
|
-
|
|
75
|
-
One is still in **no** local aggregate command — `check-baseline-scope.js`,
|
|
76
|
-
reachable only as its own npm script (`baselines:scope`) or a direct
|
|
77
|
-
invocation. `check-workflow-citations.js` joined `verify` when Story #5340
|
|
78
|
-
demoted it to a report; before that it was exempted because
|
|
79
|
-
`tests/check-workflow-citations.test.js` re-ran its ratchet through the `test`
|
|
80
|
-
step.
|
|
81
|
-
|
|
82
|
-
**Two of the nine cannot fail this job any more** (Story #5340, ADR
|
|
83
|
-
20260917-5340). `check-workflow-citations.js` prints a per-file provenance
|
|
84
|
-
count and always exits 0 — it reads no baseline at all, and the one it used
|
|
85
|
-
to ratchet against is deleted.
|
|
86
|
-
`check-context-budget.js` fails on the `alwaysLoaded` tier alone: its
|
|
87
|
-
`workflow` and `mandatoryRead` tiers are printed, and the per-file 8 KB
|
|
88
|
-
agent-boot ceiling and the row-vs-tree drift gate are gone. A green run of
|
|
89
|
-
either is therefore **not** evidence the numbers held — read the report. Both
|
|
90
|
-
ratchets used to fail a *rise*, so a prose fix had to be paid for with an
|
|
91
|
-
unrelated trim in the same commit; the always-loaded gate is the one that
|
|
92
|
-
stays because every session and every subagent spawn re-pays that closure.
|
|
93
|
-
|
|
94
|
-
`prune-baseline-orphans.js --check` left this table in v2.32.0: it no longer
|
|
95
|
-
runs in CI in any mode. It reports the same absent / out-of-scope rows as
|
|
96
|
-
`check-baseline-scope.js` but without merge-base attribution, so holding it in
|
|
97
|
-
the required job made the scope gate's inherited-divergence warning
|
|
98
|
-
unreachable — a stale row on `main` red every open PR regardless of who landed
|
|
99
|
-
it. It stays the operator's remedy, via `npm run baselines:prune`.
|
|
100
|
-
|
|
101
|
-
`check-context-budget.js` and `check-workflow-citations.js` additionally run in
|
|
102
|
-
`.husky/pre-push`, as reports. A shrink in the always-loaded closure no longer
|
|
103
|
-
reds anything either (Story #5313): it is reported, and the close's write-back
|
|
104
|
-
seam commits the lower total on the Story branch.
|
|
105
|
-
|
|
106
|
-
**Reproduce.**
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
node .agents/scripts/check-baselines.js --format text # names the 3 gates it ran
|
|
110
|
-
sed -n '/name: baselines/,/windows-smoke/p' .github/workflows/ci.yml | grep 'js'
|
|
111
|
-
sed -n '/^const STEPS/,/^];/p' .agents/scripts/run-verify.js # the steps verify covers
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**Safe move.** `npm run verify` is the closest local mirror. Run
|
|
115
|
-
`npm run baselines:scope && npm run baselines:prune -- --check` alongside it
|
|
116
|
-
when the change adds, deletes or moves files inside a scored `targetDirs`
|
|
117
|
-
root. Reproducing only the `.agentrc.json` command before a push is a false
|
|
118
|
-
green.
|
|
119
|
-
|
|
120
|
-
## 3. The two dead-export passes disagree, and the production pass is silent without `!`
|
|
121
|
-
|
|
122
|
-
**Behavior.** `check-dead-exports.js` runs twice with two separate
|
|
123
|
-
baselines. The default pass treats `tests/**` as knip entry points, so an
|
|
124
|
-
export whose only importer is a test still reads as *used*; the
|
|
125
|
-
`--production` pass discounts test importers and therefore sees a much
|
|
126
|
-
larger surface — `baselines/dead-exports.json` carries 130 rows against
|
|
127
|
-
`baselines/dead-exports-production.json`'s 695. A new export that is only
|
|
128
|
-
imported by its test passes the default pass and fails the production one.
|
|
129
|
-
|
|
130
|
-
Rows come in two shapes. `{ file, symbol: '<name>' }` is one unused export;
|
|
131
|
-
`{ file, symbol: '*' }` is **whole-file death** — a module nothing imports.
|
|
132
|
-
Knip reports such a module once, under its `files` category, and suppresses
|
|
133
|
-
that module's per-export rows, so a file losing its last importer *shrinks*
|
|
134
|
-
the export row set. Reading only `exports` therefore scored losing a whole
|
|
135
|
-
module as an improvement; the `*` rows exist so it reads as the regression
|
|
136
|
-
it is. `knip.json` lists the `.agents/scripts` CLIs as explicit entry paths
|
|
137
|
-
for the same reason: a blanket `.agents/scripts/*.js!` glob declared every
|
|
138
|
-
top-level CLI reachable by construction, so no uninvoked one could ever
|
|
139
|
-
surface. Adding a CLI means adding its entry line.
|
|
140
|
-
|
|
141
|
-
The production pass depends entirely on the `!` suffix on the `entry` and
|
|
142
|
-
`project` patterns in `knip.json`: `!` marks a pattern as
|
|
143
|
-
production-relevant. Strip the suffixes and `knip --production` reports
|
|
144
|
-
**zero** export rows and exits clean — a green that means "nothing was
|
|
145
|
-
analyzed", not "nothing is dead".
|
|
146
|
-
|
|
147
|
-
**Reproduce.**
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
node .agents/scripts/check-dead-exports.js # default pass
|
|
151
|
-
node .agents/scripts/check-dead-exports.js --production # strictly larger row set
|
|
152
|
-
grep -c '!"' knip.json # the production markers
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
**Safe move.** Run both passes before pushing. When an export is genuinely
|
|
156
|
-
test-only, keep it and refresh both baselines deliberately with `npm run
|
|
157
|
-
dead-exports:update` — `.agents/scripts/update-dead-exports-baseline.js`,
|
|
158
|
-
which rewrites the rows knip currently reports and fails closed rather than
|
|
159
|
-
persisting an empty snapshot from a knip run that never worked. Never
|
|
160
|
-
hand-edit `baselines/dead-exports*.json`: a hand-written row set is the one
|
|
161
|
-
input no gate re-derives. `.agents/rules/test-seams.md` governs which seams
|
|
162
|
-
are sanctioned. Never remove the `!` suffixes from `knip.json` to quieten the
|
|
163
|
-
production pass.
|
|
164
|
-
|
|
165
|
-
## 4. A green pre-push is only evidence the two scopes agreed because `--ref` outranks config
|
|
166
|
-
|
|
167
|
-
**Behavior.** `.husky/pre-push` captures coverage and then scores it, both
|
|
168
|
-
against a literal `origin/main`. The CRAP half of `quality-preview.js` is a
|
|
169
|
-
function of complexity **and** coverage, so the preview is only reading its
|
|
170
|
-
own tree if the artifact under it was captured over the same change set.
|
|
171
|
-
Both steps resolve that set through **one** rule, stated once in
|
|
172
|
-
`resolveChangedFilesRef` (`.agents/scripts/lib/changed-files.js`): the ref the
|
|
173
|
-
caller named wins, and
|
|
174
|
-
`delivery.quality.gates.crap.incrementalCoverage.baseRef` is the default for a
|
|
175
|
-
caller that names none — the close-validation gate, which passes no `--ref`.
|
|
176
|
-
Both `coverage-capture` paths and the preview's CRAP baseline join call it, so
|
|
177
|
-
one hook invocation cannot resolve two refs.
|
|
178
|
-
|
|
179
|
-
Before Story #5365 the configured value outranked the flag. The preview has
|
|
180
|
-
no config ref to consult, so a consumer that set `baseRef` captured against
|
|
181
|
-
one ref while the preview scored another, and the preview could read an
|
|
182
|
-
artifact whose scope was not its own — the stale-artifact read the
|
|
183
|
-
capture-before-preview ordering (Story #5356) exists to prevent, reopened by
|
|
184
|
-
configuration rather than by editing the hook. **This repository sets no
|
|
185
|
-
`baseRef`**, so the divergence was invisible here: a green local run proved
|
|
186
|
-
nothing about a consumer's.
|
|
187
|
-
|
|
188
|
-
**Reproduce.**
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
node -e "import('./.agents/scripts/lib/changed-files.js').then(({ resolveChangedFilesRef }) => { const crap = { incrementalCoverage: { baseRef: 'develop' } }; console.log(resolveChangedFilesRef({ crap, ref: 'origin/main' })); console.log(resolveChangedFilesRef({ crap, ref: null })); })"
|
|
192
|
-
# → origin/main (the hook's flag wins over a configured baseRef)
|
|
193
|
-
# → develop (config still answers a caller that named no ref)
|
|
194
|
-
grep -n 'origin/main' .husky/pre-push # the same literal on both steps
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
**Safe move.** Read a green pre-push as evidence about CRAP only when both
|
|
198
|
-
hook steps still carry the same literal ref. Moving one means moving the
|
|
199
|
-
other; adding another consumer of the change set means routing it through
|
|
200
|
-
`resolveChangedFilesRef` rather than reading `baseRef` directly.
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# Orchestration Error Handling
|
|
2
|
-
|
|
3
|
-
This rule applies to contributors writing or modifying orchestration scripts
|
|
4
|
-
under `.agents/scripts/*.js` and the helper modules under
|
|
5
|
-
`.agents/scripts/lib/orchestration/**`. Most agent task work does not touch
|
|
6
|
-
these files; consult this rule only when implementing or refactoring
|
|
7
|
-
orchestrators themselves.
|
|
8
|
-
|
|
9
|
-
## Throw, Never Fatal
|
|
10
|
-
|
|
11
|
-
Orchestration scripts MUST surface unrecoverable failures with
|
|
12
|
-
`throw new Error(<message>)` rather than `Logger.fatal(<message>)`. The
|
|
13
|
-
`runAsCli` boundary catches the throw and maps it to `process.exit(1)`,
|
|
14
|
-
preserving the message verbatim and staying robust under a mocked
|
|
15
|
-
`process.exit`; `Logger.fatal` falls through silently when `process.exit` is
|
|
16
|
-
stubbed, letting execution continue past the intended hard-stop.
|
|
17
|
-
|
|
18
|
-
### Where it applies
|
|
19
|
-
|
|
20
|
-
- `.agents/scripts/<orchestrator>.js` (top-level CLI entry points)
|
|
21
|
-
- `.agents/scripts/lib/orchestration/**/*.js` (helper modules)
|
|
22
|
-
|
|
23
|
-
Non-orchestration scripts (one-shot utilities, audit reporters, doc
|
|
24
|
-
generators) may continue to use `Logger.fatal` where the lifetime guarantees
|
|
25
|
-
are simpler.
|
|
26
|
-
|
|
27
|
-
## Output Contract — compact digest + artifact path (Story #4708)
|
|
28
|
-
|
|
29
|
-
An orchestration script's stdout rides resident in the invoking agent's
|
|
30
|
-
transcript and is re-read as prompt-cache input on every later turn, so fat
|
|
31
|
-
success output is a per-turn tax on the whole session — not a one-time cost.
|
|
32
|
-
|
|
33
|
-
- **Budget.** A script's **default success-path stdout MUST stay under
|
|
34
|
-
~2KB**. Error paths and opt-in verbose modes are exempt; the budget is
|
|
35
|
-
about what every routine invocation pays.
|
|
36
|
-
- **Digest + artifact path.** When a script produces a large result (a full
|
|
37
|
-
envelope, a per-phase result object, a report), it MUST write the full
|
|
38
|
-
payload to an on-disk artifact (under `temp/`, or an operator-named
|
|
39
|
-
`--out` path) and emit a **compact machine-parseable digest** on stdout
|
|
40
|
-
that names the artifact path plus the handful of fields the caller acts
|
|
41
|
-
on. The shared helper
|
|
42
|
-
[`lib/observability/terse-result.js`](../scripts/lib/observability/terse-result.js)
|
|
43
|
-
(`emitTerseResult`, Story #4685) implements this for hot-path result
|
|
44
|
-
dumps; `plan-context.js --out` shows the envelope-capture variant.
|
|
45
|
-
- **Compact JSON.** Machine-parsed stdout envelopes are `JSON.parse`d by
|
|
46
|
-
their drivers — emit them single-line (`JSON.stringify(x)`), never
|
|
47
|
-
pretty-printed (`null, 2` only adds resident bytes). Pretty output is
|
|
48
|
-
reserved for explicit opt-in flags (`--pretty`).
|
|
49
|
-
- **Streamed child output counts too (Story #4736).** A script that pipes a
|
|
50
|
-
child process's stdout/stderr through to the caller is emitting that output
|
|
51
|
-
as its own. `single-story-close.js` streamed every close-validation gate —
|
|
52
|
-
the whole of `npm test` included — and blew the budget by ~25× on a *passing*
|
|
53
|
-
close. Capture it to an artifact instead
|
|
54
|
-
([`single-story-close/gate-log.js`](../scripts/lib/orchestration/single-story-close/gate-log.js)),
|
|
55
|
-
emit the digest, and **replay the tail inline on failure** — the bound is a
|
|
56
|
-
success-path bound, and a red gate's evidence belongs in front of the caller.
|
|
57
|
-
- **Escape hatch.** `MANDREL_RESULT_DETAIL=inline` restores inline full
|
|
58
|
-
detail for interactive debugging; scripts using `emitTerseResult` honor it
|
|
59
|
-
automatically. `AGENT_LOG_LEVEL=verbose` restores live gate streaming.
|
|
60
|
-
- **stdout purity is unchanged.** Scripts whose stdout is a machine contract
|
|
61
|
-
(Story #2278) keep logs on stderr; the digest is the *only* stdout line.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Injectable Test Seams
|
|
2
|
-
|
|
3
|
-
This rule applies when writing or modifying scripts under
|
|
4
|
-
`.agents/scripts/lib/` that perform filesystem I/O or spawn child processes.
|
|
5
|
-
|
|
6
|
-
## Motivation
|
|
7
|
-
|
|
8
|
-
Functions that hard-bind `fs` or `spawnSync` at module scope cannot be unit-
|
|
9
|
-
tested without side-effecting the real filesystem or spawning real processes.
|
|
10
|
-
The injectable-seam pattern threads replaceable implementations through a
|
|
11
|
-
default-param `deps` object so tests substitute stubs while production code
|
|
12
|
-
continues to call the real Node built-ins with zero configuration change.
|
|
13
|
-
|
|
14
|
-
## The Pattern
|
|
15
|
-
|
|
16
|
-
Each function that performs I/O accepts an optional final parameter named
|
|
17
|
-
`deps` (or named individual dep params such as `fsImpl`, `spawnImpl`) that
|
|
18
|
-
defaults to the real implementation:
|
|
19
|
-
|
|
20
|
-
```js
|
|
21
|
-
import fs from 'node:fs';
|
|
22
|
-
import { spawnSync as defaultSpawnSync } from 'node:child_process';
|
|
23
|
-
|
|
24
|
-
export function ensureSomething(ctx, { fsImpl = fs, spawnImpl = defaultSpawnSync } = {}) {
|
|
25
|
-
if (fsImpl.existsSync(ctx.target)) return { action: 'already-present' };
|
|
26
|
-
fsImpl.writeFileSync(ctx.target, ctx.body, 'utf8');
|
|
27
|
-
return { action: 'created' };
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Canonical In-Repo Reference
|
|
32
|
-
|
|
33
|
-
`.agents/scripts/lib/bootstrap/project-bootstrap.js` (its exported step
|
|
34
|
-
functions) is the established in-repo baseline for this pattern.
|
|
35
|
-
|
|
36
|
-
## Rules
|
|
37
|
-
|
|
38
|
-
1. **Default to the real impl.** The default value MUST be the real built-in so
|
|
39
|
-
callers (bootstrap CLI, integration tests) require no change.
|
|
40
|
-
2. **One seam per I/O surface.** Filesystem access uses `fsImpl`; child-process
|
|
41
|
-
spawning uses `spawnImpl`. Do not bundle them into a single opaque deps
|
|
42
|
-
object unless the function is exclusively internal (not exported).
|
|
43
|
-
3. **No module-level seam state.** Seam parameters live on individual functions,
|
|
44
|
-
not on a shared module-level variable. Module-level variables are reset only
|
|
45
|
-
on re-import, which makes parallel test isolation impossible.
|
|
46
|
-
4. **Re-export the real impl when a helper wraps it.** If a private helper
|
|
47
|
-
(`readJsonIfExists`, `writeJson`) receives `fsImpl`, it must accept and
|
|
48
|
-
forward the seam — not re-acquire `fs` at call time.
|
|
49
|
-
5. **Tests inject stubs via the parameter, never via module mocking.** Prefer
|
|
50
|
-
passing a plain object `{ existsSync: () => false, readFileSync: () => '' }`
|
|
51
|
-
over `mock.module()` / `jest.mock()` so tests remain isolated and
|
|
52
|
-
parallelizable.
|
|
53
|
-
|
|
54
|
-
## Where It Applies
|
|
55
|
-
|
|
56
|
-
- `.agents/scripts/lib/bootstrap/project-bootstrap.js` (primary consumer of
|
|
57
|
-
this rule — every exported step function).
|
|
58
|
-
- Any new helper in `.agents/scripts/lib/` that touches the filesystem or
|
|
59
|
-
spawns a process.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://mandrel/.agents/schemas/baselines/lighthouse.schema.json",
|
|
4
|
-
"title": "LighthouseBaseline",
|
|
5
|
-
"description": "Per-kind baseline schema for the Lighthouse audit gate. Extends the shared baseline-envelope contract.",
|
|
6
|
-
"allOf": [{ "$ref": "baseline-envelope.schema.json" }],
|
|
7
|
-
"type": "object",
|
|
8
|
-
"properties": {
|
|
9
|
-
"rollup": {
|
|
10
|
-
"type": "object",
|
|
11
|
-
"required": ["*"],
|
|
12
|
-
"additionalProperties": {
|
|
13
|
-
"type": "object",
|
|
14
|
-
"required": ["performance", "accessibility", "bestPractices", "seo"],
|
|
15
|
-
"additionalProperties": false,
|
|
16
|
-
"properties": {
|
|
17
|
-
"performance": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
18
|
-
"accessibility": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
19
|
-
"bestPractices": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
20
|
-
"seo": { "type": "number", "minimum": 0, "maximum": 100 }
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"properties": {
|
|
24
|
-
"*": {
|
|
25
|
-
"type": "object",
|
|
26
|
-
"required": ["performance", "accessibility", "bestPractices", "seo"],
|
|
27
|
-
"additionalProperties": false,
|
|
28
|
-
"properties": {
|
|
29
|
-
"performance": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
30
|
-
"accessibility": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
31
|
-
"bestPractices": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
32
|
-
"seo": { "type": "number", "minimum": 0, "maximum": 100 }
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
"rows": {
|
|
38
|
-
"type": "array",
|
|
39
|
-
"items": {
|
|
40
|
-
"type": "object",
|
|
41
|
-
"required": [
|
|
42
|
-
"route",
|
|
43
|
-
"performance",
|
|
44
|
-
"accessibility",
|
|
45
|
-
"bestPractices",
|
|
46
|
-
"seo"
|
|
47
|
-
],
|
|
48
|
-
"additionalProperties": false,
|
|
49
|
-
"properties": {
|
|
50
|
-
"route": { "type": "string" },
|
|
51
|
-
"performance": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
52
|
-
"accessibility": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
53
|
-
"bestPractices": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
54
|
-
"seo": { "type": "number", "minimum": 0, "maximum": 100 }
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://mandrel/.agents/schemas/baselines/lint.schema.json",
|
|
4
|
-
"title": "LintBaseline",
|
|
5
|
-
"description": "Per-kind baseline schema for the lint gate. Extends the shared baseline-envelope contract.",
|
|
6
|
-
"allOf": [{ "$ref": "baseline-envelope.schema.json" }],
|
|
7
|
-
"type": "object",
|
|
8
|
-
"properties": {
|
|
9
|
-
"rollup": {
|
|
10
|
-
"type": "object",
|
|
11
|
-
"required": ["*"],
|
|
12
|
-
"additionalProperties": {
|
|
13
|
-
"type": "object",
|
|
14
|
-
"required": ["errorCount", "warningCount"],
|
|
15
|
-
"additionalProperties": false,
|
|
16
|
-
"properties": {
|
|
17
|
-
"errorCount": { "type": "integer", "minimum": 0 },
|
|
18
|
-
"warningCount": { "type": "integer", "minimum": 0 }
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
"properties": {
|
|
22
|
-
"*": {
|
|
23
|
-
"type": "object",
|
|
24
|
-
"required": ["errorCount", "warningCount"],
|
|
25
|
-
"additionalProperties": false,
|
|
26
|
-
"properties": {
|
|
27
|
-
"errorCount": { "type": "integer", "minimum": 0 },
|
|
28
|
-
"warningCount": { "type": "integer", "minimum": 0 }
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"rows": {
|
|
34
|
-
"type": "array",
|
|
35
|
-
"items": {
|
|
36
|
-
"type": "object",
|
|
37
|
-
"required": ["path", "errorCount", "warningCount"],
|
|
38
|
-
"additionalProperties": false,
|
|
39
|
-
"properties": {
|
|
40
|
-
"path": { "type": "string" },
|
|
41
|
-
"errorCount": { "type": "integer", "minimum": 0 },
|
|
42
|
-
"warningCount": { "type": "integer", "minimum": 0 }
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|