@zhixuan92/multi-model-agent-core 5.1.0 → 5.2.1
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/dist/bounded-execution/activity-tracker-types.d.ts +30 -15
- package/dist/bounded-execution/activity-tracker-types.d.ts.map +1 -1
- package/dist/bounded-execution/activity-tracker-types.js.map +1 -1
- package/dist/bounded-execution/activity-tracker.d.ts +2 -2
- package/dist/bounded-execution/activity-tracker.d.ts.map +1 -1
- package/dist/bounded-execution/activity-tracker.js +4 -5
- package/dist/bounded-execution/activity-tracker.js.map +1 -1
- package/dist/config/schema.d.ts +41 -2
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/events/task-envelope.d.ts +5 -5
- package/dist/events/task-envelope.d.ts.map +1 -1
- package/dist/events/task-envelope.js +3 -6
- package/dist/events/task-envelope.js.map +1 -1
- package/dist/events/telemetry-uploader.d.ts +1 -1
- package/dist/events/telemetry-uploader.d.ts.map +1 -1
- package/dist/events/to-wire-record.d.ts +1 -1
- package/dist/events/to-wire-record.d.ts.map +1 -1
- package/dist/events/to-wire-record.js +1 -1
- package/dist/events/to-wire-record.js.map +1 -1
- package/dist/events/wire-schema.d.ts +34 -11
- package/dist/events/wire-schema.d.ts.map +1 -1
- package/dist/events/wire-schema.js +8 -8
- package/dist/events/wire-schema.js.map +1 -1
- package/dist/index.d.ts +13 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -17
- package/dist/index.js.map +1 -1
- package/dist/providers/agent-resolver.js +1 -1
- package/dist/providers/agent-resolver.js.map +1 -1
- package/dist/providers/claude-session.d.ts +2 -1
- package/dist/providers/claude-session.d.ts.map +1 -1
- package/dist/providers/claude-session.js +29 -2
- package/dist/providers/claude-session.js.map +1 -1
- package/dist/providers/codex-cli-session.d.ts +3 -2
- package/dist/providers/codex-cli-session.d.ts.map +1 -1
- package/dist/providers/codex-cli-session.js +5 -2
- package/dist/providers/codex-cli-session.js.map +1 -1
- package/dist/providers/provider-factory.d.ts +2 -2
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +12 -12
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/runner-types.d.ts +3 -16
- package/dist/providers/runner-types.d.ts.map +1 -1
- package/dist/research/index.d.ts +11 -1
- package/dist/research/index.d.ts.map +1 -1
- package/dist/research/index.js +8 -1
- package/dist/research/index.js.map +1 -1
- package/dist/stores/context-block-tool.d.ts +2 -3
- package/dist/stores/context-block-tool.d.ts.map +1 -1
- package/dist/stores/context-block-tool.js +1 -1
- package/dist/stores/context-block-tool.js.map +1 -1
- package/dist/stores/project-context-registry.d.ts +0 -9
- package/dist/stores/project-context-registry.d.ts.map +1 -1
- package/dist/stores/project-context-registry.js +0 -4
- package/dist/stores/project-context-registry.js.map +1 -1
- package/dist/types/brief-quality-policy.d.ts.map +1 -1
- package/dist/types/enums.d.ts +0 -9
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +0 -10
- package/dist/types/enums.js.map +1 -1
- package/dist/types/run-result.d.ts +48 -23
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/run-result.js +3 -16
- package/dist/types/run-result.js.map +1 -1
- package/dist/types/stage-stats.d.ts +1 -1
- package/dist/types/stage-stats.d.ts.map +1 -1
- package/dist/types/stage-stats.js +2 -4
- package/dist/types/stage-stats.js.map +1 -1
- package/dist/types/task-spec.d.ts +3 -17
- package/dist/types/task-spec.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/unified/reviewer-output-parser.d.ts +51 -0
- package/dist/unified/reviewer-output-parser.d.ts.map +1 -0
- package/dist/unified/reviewer-output-parser.js +39 -0
- package/dist/unified/reviewer-output-parser.js.map +1 -0
- package/dist/unified/skill-loader.d.ts +9 -0
- package/dist/unified/skill-loader.d.ts.map +1 -0
- package/dist/unified/skill-loader.js +45 -0
- package/dist/unified/skill-loader.js.map +1 -0
- package/dist/unified/task-input-schema.d.ts +217 -0
- package/dist/unified/task-input-schema.d.ts.map +1 -0
- package/dist/unified/task-input-schema.js +35 -0
- package/dist/unified/task-input-schema.js.map +1 -0
- package/dist/unified/task-registry.d.ts +23 -0
- package/dist/unified/task-registry.d.ts.map +1 -0
- package/dist/unified/task-registry.js +56 -0
- package/dist/unified/task-registry.js.map +1 -0
- package/dist/unified/two-phase-pipeline.d.ts +52 -0
- package/dist/unified/two-phase-pipeline.d.ts.map +1 -0
- package/dist/unified/two-phase-pipeline.js +95 -0
- package/dist/unified/two-phase-pipeline.js.map +1 -0
- package/dist/unified/type-registry.d.ts +13 -0
- package/dist/unified/type-registry.d.ts.map +1 -0
- package/dist/unified/type-registry.js +30 -0
- package/dist/unified/type-registry.js.map +1 -0
- package/dist/unified/worktree-manager.d.ts +43 -0
- package/dist/unified/worktree-manager.d.ts.map +1 -0
- package/dist/unified/worktree-manager.js +76 -0
- package/dist/unified/worktree-manager.js.map +1 -0
- package/package.json +7 -118
- package/src/skills/audit/implement-plan.md +182 -0
- package/src/skills/audit/implement-skill.md +72 -0
- package/src/skills/audit/implement-spec.md +91 -0
- package/src/skills/audit/implement.md +123 -0
- package/src/skills/audit/review.md +116 -0
- package/src/skills/debug/implement.md +81 -0
- package/src/skills/debug/review.md +69 -0
- package/src/skills/delegate/implement.md +61 -0
- package/src/skills/delegate/review.md +53 -0
- package/src/skills/execute_plan/implement.md +67 -0
- package/src/skills/execute_plan/review.md +63 -0
- package/src/skills/investigate/implement.md +88 -0
- package/src/skills/investigate/review.md +71 -0
- package/src/skills/journal_recall/implement.md +60 -0
- package/src/skills/journal_recall/review.md +69 -0
- package/src/skills/journal_record/implement.md +62 -0
- package/src/skills/journal_record/review.md +65 -0
- package/src/skills/main/implement.md +25 -0
- package/src/skills/main/review.md +3 -0
- package/src/skills/research/implement.md +82 -0
- package/src/skills/research/review.md +68 -0
- package/src/skills/retry_tasks/implement.md +1 -0
- package/src/skills/retry_tasks/review.md +1 -0
- package/src/skills/review/implement.md +87 -0
- package/src/skills/review/review.md +77 -0
- package/dist/bounded-execution/file-artifact-check.d.ts +0 -7
- package/dist/bounded-execution/file-artifact-check.d.ts.map +0 -1
- package/dist/bounded-execution/file-artifact-check.js +0 -13
- package/dist/bounded-execution/file-artifact-check.js.map +0 -1
- package/dist/bounded-execution/progress-events-subscriber.d.ts +0 -33
- package/dist/bounded-execution/progress-events-subscriber.d.ts.map +0 -1
- package/dist/bounded-execution/progress-events-subscriber.js +0 -59
- package/dist/bounded-execution/progress-events-subscriber.js.map +0 -1
- package/dist/bounded-execution/progress-watchdog.d.ts +0 -43
- package/dist/bounded-execution/progress-watchdog.d.ts.map +0 -1
- package/dist/bounded-execution/progress-watchdog.js +0 -170
- package/dist/bounded-execution/progress-watchdog.js.map +0 -1
- package/dist/bounded-execution/real-diff.d.ts +0 -17
- package/dist/bounded-execution/real-diff.d.ts.map +0 -1
- package/dist/bounded-execution/real-diff.js +0 -59
- package/dist/bounded-execution/real-diff.js.map +0 -1
- package/dist/bounded-execution/scope-match.d.ts +0 -7
- package/dist/bounded-execution/scope-match.d.ts.map +0 -1
- package/dist/bounded-execution/scope-match.js +0 -28
- package/dist/bounded-execution/scope-match.js.map +0 -1
- package/dist/bounded-execution/stall-watchdog.d.ts +0 -18
- package/dist/bounded-execution/stall-watchdog.d.ts.map +0 -1
- package/dist/bounded-execution/stall-watchdog.js +0 -134
- package/dist/bounded-execution/stall-watchdog.js.map +0 -1
- package/dist/bounded-execution/wall-clock-guard.d.ts +0 -12
- package/dist/bounded-execution/wall-clock-guard.d.ts.map +0 -1
- package/dist/bounded-execution/wall-clock-guard.js +0 -27
- package/dist/bounded-execution/wall-clock-guard.js.map +0 -1
- package/dist/config/canonical-model-identity.d.ts +0 -9
- package/dist/config/canonical-model-identity.d.ts.map +0 -1
- package/dist/config/canonical-model-identity.js +0 -54
- package/dist/config/canonical-model-identity.js.map +0 -1
- package/dist/journal/default-schema.d.ts +0 -2
- package/dist/journal/default-schema.d.ts.map +0 -1
- package/dist/journal/default-schema.js +0 -27
- package/dist/journal/default-schema.js.map +0 -1
- package/dist/journal/types.d.ts +0 -22
- package/dist/journal/types.d.ts.map +0 -1
- package/dist/journal/types.js +0 -5
- package/dist/journal/types.js.map +0 -1
- package/dist/lifecycle/annotate-parser.d.ts +0 -11
- package/dist/lifecycle/annotate-parser.d.ts.map +0 -1
- package/dist/lifecycle/annotate-parser.js +0 -74
- package/dist/lifecycle/annotate-parser.js.map +0 -1
- package/dist/lifecycle/annotate-prompts.d.ts +0 -9
- package/dist/lifecycle/annotate-prompts.d.ts.map +0 -1
- package/dist/lifecycle/annotate-prompts.js +0 -95
- package/dist/lifecycle/annotate-prompts.js.map +0 -1
- package/dist/lifecycle/auto-commit.d.ts +0 -3
- package/dist/lifecycle/auto-commit.d.ts.map +0 -1
- package/dist/lifecycle/auto-commit.js +0 -5
- package/dist/lifecycle/auto-commit.js.map +0 -1
- package/dist/lifecycle/auto-register-context-block.d.ts +0 -11
- package/dist/lifecycle/auto-register-context-block.d.ts.map +0 -1
- package/dist/lifecycle/auto-register-context-block.js +0 -18
- package/dist/lifecycle/auto-register-context-block.js.map +0 -1
- package/dist/lifecycle/build-cancelled-result.d.ts +0 -11
- package/dist/lifecycle/build-cancelled-result.d.ts.map +0 -1
- package/dist/lifecycle/build-cancelled-result.js +0 -25
- package/dist/lifecycle/build-cancelled-result.js.map +0 -1
- package/dist/lifecycle/derive-completion.d.ts +0 -28
- package/dist/lifecycle/derive-completion.d.ts.map +0 -1
- package/dist/lifecycle/derive-completion.js +0 -79
- package/dist/lifecycle/derive-completion.js.map +0 -1
- package/dist/lifecycle/executor-output-types.d.ts +0 -53
- package/dist/lifecycle/executor-output-types.d.ts.map +0 -1
- package/dist/lifecycle/executor-output-types.js +0 -2
- package/dist/lifecycle/executor-output-types.js.map +0 -1
- package/dist/lifecycle/file-confinement-check.d.ts +0 -17
- package/dist/lifecycle/file-confinement-check.d.ts.map +0 -1
- package/dist/lifecycle/file-confinement-check.js +0 -44
- package/dist/lifecycle/file-confinement-check.js.map +0 -1
- package/dist/lifecycle/findings-parser.d.ts +0 -18
- package/dist/lifecycle/findings-parser.d.ts.map +0 -1
- package/dist/lifecycle/findings-parser.js +0 -143
- package/dist/lifecycle/findings-parser.js.map +0 -1
- package/dist/lifecycle/git-exec.d.ts +0 -62
- package/dist/lifecycle/git-exec.d.ts.map +0 -1
- package/dist/lifecycle/git-exec.js +0 -135
- package/dist/lifecycle/git-exec.js.map +0 -1
- package/dist/lifecycle/git-toplevel.d.ts +0 -12
- package/dist/lifecycle/git-toplevel.d.ts.map +0 -1
- package/dist/lifecycle/git-toplevel.js +0 -52
- package/dist/lifecycle/git-toplevel.js.map +0 -1
- package/dist/lifecycle/goal-builder.d.ts +0 -35
- package/dist/lifecycle/goal-builder.d.ts.map +0 -1
- package/dist/lifecycle/goal-builder.js +0 -56
- package/dist/lifecycle/goal-builder.js.map +0 -1
- package/dist/lifecycle/goal-preconditions.d.ts +0 -21
- package/dist/lifecycle/goal-preconditions.d.ts.map +0 -1
- package/dist/lifecycle/goal-preconditions.js +0 -33
- package/dist/lifecycle/goal-preconditions.js.map +0 -1
- package/dist/lifecycle/goal-prompts.d.ts +0 -27
- package/dist/lifecycle/goal-prompts.d.ts.map +0 -1
- package/dist/lifecycle/goal-prompts.js +0 -204
- package/dist/lifecycle/goal-prompts.js.map +0 -1
- package/dist/lifecycle/goal-report.d.ts +0 -42
- package/dist/lifecycle/goal-report.d.ts.map +0 -1
- package/dist/lifecycle/goal-report.js +0 -125
- package/dist/lifecycle/goal-report.js.map +0 -1
- package/dist/lifecycle/handlers/annotate-stage.d.ts +0 -35
- package/dist/lifecycle/handlers/annotate-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/annotate-stage.js +0 -387
- package/dist/lifecycle/handlers/annotate-stage.js.map +0 -1
- package/dist/lifecycle/handlers/baseline-handlers.d.ts +0 -12
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +0 -281
- package/dist/lifecycle/handlers/baseline-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts +0 -3
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +0 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.js +0 -239
- package/dist/lifecycle/handlers/enrich-runtime-result.js.map +0 -1
- package/dist/lifecycle/handlers/implement-stage.d.ts +0 -10
- package/dist/lifecycle/handlers/implement-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/implement-stage.js +0 -228
- package/dist/lifecycle/handlers/implement-stage.js.map +0 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +0 -13
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js +0 -61
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +0 -1
- package/dist/lifecycle/handlers/read-route-implementer.d.ts +0 -52
- package/dist/lifecycle/handlers/read-route-implementer.d.ts.map +0 -1
- package/dist/lifecycle/handlers/read-route-implementer.js +0 -109
- package/dist/lifecycle/handlers/read-route-implementer.js.map +0 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts +0 -4
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.js +0 -35
- package/dist/lifecycle/handlers/register-context-block-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/review-fix-stage.d.ts +0 -9
- package/dist/lifecycle/handlers/review-fix-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/review-fix-stage.js +0 -75
- package/dist/lifecycle/handlers/review-fix-stage.js.map +0 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts +0 -61
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +0 -339
- package/dist/lifecycle/handlers/terminal-handlers.js.map +0 -1
- package/dist/lifecycle/lifecycle-context.d.ts +0 -109
- package/dist/lifecycle/lifecycle-context.d.ts.map +0 -1
- package/dist/lifecycle/lifecycle-context.js +0 -2
- package/dist/lifecycle/lifecycle-context.js.map +0 -1
- package/dist/lifecycle/lifecycle-dispatcher.d.ts +0 -35
- package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +0 -1
- package/dist/lifecycle/lifecycle-dispatcher.js +0 -64
- package/dist/lifecycle/lifecycle-dispatcher.js.map +0 -1
- package/dist/lifecycle/lifecycle-driver.d.ts +0 -16
- package/dist/lifecycle/lifecycle-driver.d.ts.map +0 -1
- package/dist/lifecycle/lifecycle-driver.js +0 -334
- package/dist/lifecycle/lifecycle-driver.js.map +0 -1
- package/dist/lifecycle/merge-stage-stats.d.ts +0 -62
- package/dist/lifecycle/merge-stage-stats.d.ts.map +0 -1
- package/dist/lifecycle/merge-stage-stats.js +0 -136
- package/dist/lifecycle/merge-stage-stats.js.map +0 -1
- package/dist/lifecycle/normalize-output-targets.d.ts +0 -2
- package/dist/lifecycle/normalize-output-targets.d.ts.map +0 -1
- package/dist/lifecycle/normalize-output-targets.js +0 -14
- package/dist/lifecycle/normalize-output-targets.js.map +0 -1
- package/dist/lifecycle/perform-implementation.d.ts +0 -3
- package/dist/lifecycle/perform-implementation.d.ts.map +0 -1
- package/dist/lifecycle/perform-implementation.js +0 -371
- package/dist/lifecycle/perform-implementation.js.map +0 -1
- package/dist/lifecycle/read-only-subtype-spec.d.ts +0 -18
- package/dist/lifecycle/read-only-subtype-spec.d.ts.map +0 -1
- package/dist/lifecycle/read-only-subtype-spec.js +0 -2
- package/dist/lifecycle/read-only-subtype-spec.js.map +0 -1
- package/dist/lifecycle/review-verdict-mapping.d.ts +0 -16
- package/dist/lifecycle/review-verdict-mapping.d.ts.map +0 -1
- package/dist/lifecycle/review-verdict-mapping.js +0 -24
- package/dist/lifecycle/review-verdict-mapping.js.map +0 -1
- package/dist/lifecycle/shared-compute.d.ts +0 -14
- package/dist/lifecycle/shared-compute.d.ts.map +0 -1
- package/dist/lifecycle/shared-compute.js +0 -51
- package/dist/lifecycle/shared-compute.js.map +0 -1
- package/dist/lifecycle/stage-idle-tracker.d.ts +0 -14
- package/dist/lifecycle/stage-idle-tracker.d.ts.map +0 -1
- package/dist/lifecycle/stage-idle-tracker.js +0 -17
- package/dist/lifecycle/stage-idle-tracker.js.map +0 -1
- package/dist/lifecycle/stage-io.d.ts +0 -134
- package/dist/lifecycle/stage-io.d.ts.map +0 -1
- package/dist/lifecycle/stage-io.js +0 -9
- package/dist/lifecycle/stage-io.js.map +0 -1
- package/dist/lifecycle/stage-labels.d.ts +0 -7
- package/dist/lifecycle/stage-labels.d.ts.map +0 -1
- package/dist/lifecycle/stage-labels.js +0 -19
- package/dist/lifecycle/stage-labels.js.map +0 -1
- package/dist/lifecycle/stage-plan-builder.d.ts +0 -4
- package/dist/lifecycle/stage-plan-builder.d.ts.map +0 -1
- package/dist/lifecycle/stage-plan-builder.js +0 -157
- package/dist/lifecycle/stage-plan-builder.js.map +0 -1
- package/dist/lifecycle/stage-plan-types.d.ts +0 -131
- package/dist/lifecycle/stage-plan-types.d.ts.map +0 -1
- package/dist/lifecycle/stage-plan-types.js +0 -28
- package/dist/lifecycle/stage-plan-types.js.map +0 -1
- package/dist/lifecycle/stage-progression.d.ts +0 -6
- package/dist/lifecycle/stage-progression.d.ts.map +0 -1
- package/dist/lifecycle/stage-progression.js +0 -100
- package/dist/lifecycle/stage-progression.js.map +0 -1
- package/dist/lifecycle/task-executor.d.ts +0 -24
- package/dist/lifecycle/task-executor.d.ts.map +0 -1
- package/dist/lifecycle/task-executor.js +0 -365
- package/dist/lifecycle/task-executor.js.map +0 -1
- package/dist/lifecycle/task-runner.d.ts +0 -66
- package/dist/lifecycle/task-runner.d.ts.map +0 -1
- package/dist/lifecycle/task-runner.js +0 -334
- package/dist/lifecycle/task-runner.js.map +0 -1
- package/dist/lifecycle/tool-category.d.ts +0 -2
- package/dist/lifecycle/tool-category.d.ts.map +0 -1
- package/dist/lifecycle/tool-category.js +0 -6
- package/dist/lifecycle/tool-category.js.map +0 -1
- package/dist/lifecycle/tool-config-types.d.ts +0 -32
- package/dist/lifecycle/tool-config-types.d.ts.map +0 -1
- package/dist/lifecycle/tool-config-types.js +0 -2
- package/dist/lifecycle/tool-config-types.js.map +0 -1
- package/dist/lifecycle/warm-followup.d.ts +0 -3
- package/dist/lifecycle/warm-followup.d.ts.map +0 -1
- package/dist/lifecycle/warm-followup.js +0 -16
- package/dist/lifecycle/warm-followup.js.map +0 -1
- package/dist/lifecycle/worker-output-contract.d.ts +0 -22
- package/dist/lifecycle/worker-output-contract.d.ts.map +0 -1
- package/dist/lifecycle/worker-output-contract.js +0 -91
- package/dist/lifecycle/worker-output-contract.js.map +0 -1
- package/dist/lifecycle/write-goal-lock.d.ts +0 -29
- package/dist/lifecycle/write-goal-lock.d.ts.map +0 -1
- package/dist/lifecycle/write-goal-lock.js +0 -70
- package/dist/lifecycle/write-goal-lock.js.map +0 -1
- package/dist/providers/assemble-run-result.d.ts +0 -17
- package/dist/providers/assemble-run-result.d.ts.map +0 -1
- package/dist/providers/assemble-run-result.js +0 -52
- package/dist/providers/assemble-run-result.js.map +0 -1
- package/dist/providers/skill-resolver.d.ts +0 -17
- package/dist/providers/skill-resolver.d.ts.map +0 -1
- package/dist/providers/skill-resolver.js +0 -123
- package/dist/providers/skill-resolver.js.map +0 -1
- package/dist/reporting/batch-persister.d.ts +0 -4
- package/dist/reporting/batch-persister.d.ts.map +0 -1
- package/dist/reporting/batch-persister.js +0 -11
- package/dist/reporting/batch-persister.js.map +0 -1
- package/dist/reporting/commit-stage-runner.d.ts +0 -12
- package/dist/reporting/commit-stage-runner.d.ts.map +0 -1
- package/dist/reporting/commit-stage-runner.js +0 -43
- package/dist/reporting/commit-stage-runner.js.map +0 -1
- package/dist/reporting/derive-investigate-status.d.ts +0 -15
- package/dist/reporting/derive-investigate-status.d.ts.map +0 -1
- package/dist/reporting/derive-investigate-status.js +0 -23
- package/dist/reporting/derive-investigate-status.js.map +0 -1
- package/dist/reporting/extract-fenced-json.d.ts +0 -7
- package/dist/reporting/extract-fenced-json.d.ts.map +0 -1
- package/dist/reporting/extract-fenced-json.js +0 -17
- package/dist/reporting/extract-fenced-json.js.map +0 -1
- package/dist/reporting/findings-headline.d.ts +0 -12
- package/dist/reporting/findings-headline.d.ts.map +0 -1
- package/dist/reporting/findings-headline.js +0 -40
- package/dist/reporting/findings-headline.js.map +0 -1
- package/dist/reporting/findings-outcome.d.ts +0 -13
- package/dist/reporting/findings-outcome.d.ts.map +0 -1
- package/dist/reporting/findings-outcome.js +0 -22
- package/dist/reporting/findings-outcome.js.map +0 -1
- package/dist/reporting/headline-composer.d.ts +0 -29
- package/dist/reporting/headline-composer.d.ts.map +0 -1
- package/dist/reporting/headline-composer.js +0 -10
- package/dist/reporting/headline-composer.js.map +0 -1
- package/dist/reporting/headline-templates/delegate.d.ts +0 -3
- package/dist/reporting/headline-templates/delegate.d.ts.map +0 -1
- package/dist/reporting/headline-templates/delegate.js +0 -42
- package/dist/reporting/headline-templates/delegate.js.map +0 -1
- package/dist/reporting/headline-templates/execute-plan.d.ts +0 -3
- package/dist/reporting/headline-templates/execute-plan.d.ts.map +0 -1
- package/dist/reporting/headline-templates/execute-plan.js +0 -26
- package/dist/reporting/headline-templates/execute-plan.js.map +0 -1
- package/dist/reporting/headline-templates/investigate.d.ts +0 -13
- package/dist/reporting/headline-templates/investigate.d.ts.map +0 -1
- package/dist/reporting/headline-templates/investigate.js +0 -53
- package/dist/reporting/headline-templates/investigate.js.map +0 -1
- package/dist/reporting/headline-templates/journal-recall.d.ts +0 -3
- package/dist/reporting/headline-templates/journal-recall.d.ts.map +0 -1
- package/dist/reporting/headline-templates/journal-recall.js +0 -9
- package/dist/reporting/headline-templates/journal-recall.js.map +0 -1
- package/dist/reporting/headline-templates/journal.d.ts +0 -3
- package/dist/reporting/headline-templates/journal.d.ts.map +0 -1
- package/dist/reporting/headline-templates/journal.js +0 -17
- package/dist/reporting/headline-templates/journal.js.map +0 -1
- package/dist/reporting/headline-templates/research.d.ts +0 -3
- package/dist/reporting/headline-templates/research.d.ts.map +0 -1
- package/dist/reporting/headline-templates/research.js +0 -22
- package/dist/reporting/headline-templates/research.js.map +0 -1
- package/dist/reporting/headline-text.d.ts +0 -36
- package/dist/reporting/headline-text.d.ts.map +0 -1
- package/dist/reporting/headline-text.js +0 -73
- package/dist/reporting/headline-text.js.map +0 -1
- package/dist/reporting/report-parser-slots/delegate-report.d.ts +0 -8
- package/dist/reporting/report-parser-slots/delegate-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/delegate-report.js +0 -12
- package/dist/reporting/report-parser-slots/delegate-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/execute-plan-report.d.ts +0 -11
- package/dist/reporting/report-parser-slots/execute-plan-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/execute-plan-report.js +0 -7
- package/dist/reporting/report-parser-slots/execute-plan-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/investigate-report.d.ts +0 -52
- package/dist/reporting/report-parser-slots/investigate-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/investigate-report.js +0 -307
- package/dist/reporting/report-parser-slots/investigate-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/journal-report.d.ts +0 -19
- package/dist/reporting/report-parser-slots/journal-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/journal-report.js +0 -13
- package/dist/reporting/report-parser-slots/journal-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/no-structured-report.d.ts +0 -10
- package/dist/reporting/report-parser-slots/no-structured-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/no-structured-report.js +0 -13
- package/dist/reporting/report-parser-slots/no-structured-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/research-report.d.ts +0 -31
- package/dist/reporting/report-parser-slots/research-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/research-report.js +0 -50
- package/dist/reporting/report-parser-slots/research-report.js.map +0 -1
- package/dist/reporting/response-envelope-builder.d.ts +0 -32
- package/dist/reporting/response-envelope-builder.d.ts.map +0 -1
- package/dist/reporting/response-envelope-builder.js +0 -26
- package/dist/reporting/response-envelope-builder.js.map +0 -1
- package/dist/reporting/severity.d.ts +0 -62
- package/dist/reporting/severity.d.ts.map +0 -1
- package/dist/reporting/severity.js +0 -93
- package/dist/reporting/severity.js.map +0 -1
- package/dist/reporting/structured-report-parser.d.ts +0 -9
- package/dist/reporting/structured-report-parser.d.ts.map +0 -1
- package/dist/reporting/structured-report-parser.js +0 -8
- package/dist/reporting/structured-report-parser.js.map +0 -1
- package/dist/reporting/terminal-block-registrar.d.ts +0 -14
- package/dist/reporting/terminal-block-registrar.d.ts.map +0 -1
- package/dist/reporting/terminal-block-registrar.js +0 -17
- package/dist/reporting/terminal-block-registrar.js.map +0 -1
- package/dist/reporting/terminal-report-markdown.d.ts +0 -13
- package/dist/reporting/terminal-report-markdown.d.ts.map +0 -1
- package/dist/reporting/terminal-report-markdown.js +0 -31
- package/dist/reporting/terminal-report-markdown.js.map +0 -1
- package/dist/research/research-pre-loop.d.ts +0 -22
- package/dist/research/research-pre-loop.d.ts.map +0 -1
- package/dist/research/research-pre-loop.js +0 -50
- package/dist/research/research-pre-loop.js.map +0 -1
- package/dist/routing/read-route-criteria.d.ts +0 -36
- package/dist/routing/read-route-criteria.d.ts.map +0 -1
- package/dist/routing/read-route-criteria.js +0 -71
- package/dist/routing/read-route-criteria.js.map +0 -1
- package/dist/stores/batch-cache.d.ts +0 -29
- package/dist/stores/batch-cache.d.ts.map +0 -1
- package/dist/stores/batch-cache.js +0 -89
- package/dist/stores/batch-cache.js.map +0 -1
- package/dist/stores/batch-registry.d.ts +0 -138
- package/dist/stores/batch-registry.d.ts.map +0 -1
- package/dist/stores/batch-registry.js +0 -205
- package/dist/stores/batch-registry.js.map +0 -1
- package/dist/tool-surface/register-all-tools.d.ts +0 -4
- package/dist/tool-surface/register-all-tools.d.ts.map +0 -1
- package/dist/tool-surface/register-all-tools.js +0 -35
- package/dist/tool-surface/register-all-tools.js.map +0 -1
- package/dist/tool-surface/tool-surface-registry.d.ts +0 -28
- package/dist/tool-surface/tool-surface-registry.d.ts.map +0 -1
- package/dist/tool-surface/tool-surface-registry.js +0 -16
- package/dist/tool-surface/tool-surface-registry.js.map +0 -1
- package/dist/tools/audit/brief-slot.d.ts +0 -15
- package/dist/tools/audit/brief-slot.d.ts.map +0 -1
- package/dist/tools/audit/brief-slot.js +0 -69
- package/dist/tools/audit/brief-slot.js.map +0 -1
- package/dist/tools/audit/implementer-criteria.d.ts +0 -62
- package/dist/tools/audit/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/audit/implementer-criteria.js +0 -121
- package/dist/tools/audit/implementer-criteria.js.map +0 -1
- package/dist/tools/audit/plan-audit-criteria.d.ts +0 -35
- package/dist/tools/audit/plan-audit-criteria.d.ts.map +0 -1
- package/dist/tools/audit/plan-audit-criteria.js +0 -159
- package/dist/tools/audit/plan-audit-criteria.js.map +0 -1
- package/dist/tools/audit/schema.d.ts +0 -61
- package/dist/tools/audit/schema.d.ts.map +0 -1
- package/dist/tools/audit/schema.js +0 -21
- package/dist/tools/audit/schema.js.map +0 -1
- package/dist/tools/audit/skill-audit-criteria.d.ts +0 -9
- package/dist/tools/audit/skill-audit-criteria.d.ts.map +0 -1
- package/dist/tools/audit/skill-audit-criteria.js +0 -52
- package/dist/tools/audit/skill-audit-criteria.js.map +0 -1
- package/dist/tools/audit/spec-audit-criteria.d.ts +0 -9
- package/dist/tools/audit/spec-audit-criteria.d.ts.map +0 -1
- package/dist/tools/audit/spec-audit-criteria.js +0 -55
- package/dist/tools/audit/spec-audit-criteria.js.map +0 -1
- package/dist/tools/audit/subtypes.d.ts +0 -4
- package/dist/tools/audit/subtypes.d.ts.map +0 -1
- package/dist/tools/audit/subtypes.js +0 -69
- package/dist/tools/audit/subtypes.js.map +0 -1
- package/dist/tools/audit/tool-config.d.ts +0 -7
- package/dist/tools/audit/tool-config.d.ts.map +0 -1
- package/dist/tools/audit/tool-config.js +0 -60
- package/dist/tools/audit/tool-config.js.map +0 -1
- package/dist/tools/criteria-types.d.ts +0 -27
- package/dist/tools/criteria-types.d.ts.map +0 -1
- package/dist/tools/criteria-types.js +0 -25
- package/dist/tools/criteria-types.js.map +0 -1
- package/dist/tools/debug/brief-slot.d.ts +0 -15
- package/dist/tools/debug/brief-slot.d.ts.map +0 -1
- package/dist/tools/debug/brief-slot.js +0 -10
- package/dist/tools/debug/brief-slot.js.map +0 -1
- package/dist/tools/debug/implementer-criteria.d.ts +0 -45
- package/dist/tools/debug/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/debug/implementer-criteria.js +0 -97
- package/dist/tools/debug/implementer-criteria.js.map +0 -1
- package/dist/tools/debug/schema.d.ts +0 -60
- package/dist/tools/debug/schema.d.ts.map +0 -1
- package/dist/tools/debug/schema.js +0 -17
- package/dist/tools/debug/schema.js.map +0 -1
- package/dist/tools/debug/subtypes.d.ts +0 -4
- package/dist/tools/debug/subtypes.d.ts.map +0 -1
- package/dist/tools/debug/subtypes.js +0 -26
- package/dist/tools/debug/subtypes.js.map +0 -1
- package/dist/tools/debug/tool-config.d.ts +0 -7
- package/dist/tools/debug/tool-config.d.ts.map +0 -1
- package/dist/tools/debug/tool-config.js +0 -55
- package/dist/tools/debug/tool-config.js.map +0 -1
- package/dist/tools/delegate/brief-slot.d.ts +0 -20
- package/dist/tools/delegate/brief-slot.d.ts.map +0 -1
- package/dist/tools/delegate/brief-slot.js +0 -31
- package/dist/tools/delegate/brief-slot.js.map +0 -1
- package/dist/tools/delegate/implementer-criteria.d.ts +0 -53
- package/dist/tools/delegate/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/delegate/implementer-criteria.js +0 -99
- package/dist/tools/delegate/implementer-criteria.js.map +0 -1
- package/dist/tools/delegate/schema.d.ts +0 -70
- package/dist/tools/delegate/schema.d.ts.map +0 -1
- package/dist/tools/delegate/schema.js +0 -24
- package/dist/tools/delegate/schema.js.map +0 -1
- package/dist/tools/delegate/tool-config.d.ts +0 -7
- package/dist/tools/delegate/tool-config.d.ts.map +0 -1
- package/dist/tools/delegate/tool-config.js +0 -47
- package/dist/tools/delegate/tool-config.js.map +0 -1
- package/dist/tools/execute-plan/barrel.d.ts +0 -2
- package/dist/tools/execute-plan/barrel.d.ts.map +0 -1
- package/dist/tools/execute-plan/barrel.js +0 -7
- package/dist/tools/execute-plan/barrel.js.map +0 -1
- package/dist/tools/execute-plan/brief-slot.d.ts +0 -25
- package/dist/tools/execute-plan/brief-slot.d.ts.map +0 -1
- package/dist/tools/execute-plan/brief-slot.js +0 -124
- package/dist/tools/execute-plan/brief-slot.js.map +0 -1
- package/dist/tools/execute-plan/implementer-criteria.d.ts +0 -57
- package/dist/tools/execute-plan/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/execute-plan/implementer-criteria.js +0 -108
- package/dist/tools/execute-plan/implementer-criteria.js.map +0 -1
- package/dist/tools/execute-plan/plan-extractor.d.ts +0 -21
- package/dist/tools/execute-plan/plan-extractor.d.ts.map +0 -1
- package/dist/tools/execute-plan/plan-extractor.js +0 -96
- package/dist/tools/execute-plan/plan-extractor.js.map +0 -1
- package/dist/tools/execute-plan/tool-config.d.ts +0 -68
- package/dist/tools/execute-plan/tool-config.d.ts.map +0 -1
- package/dist/tools/execute-plan/tool-config.js +0 -58
- package/dist/tools/execute-plan/tool-config.js.map +0 -1
- package/dist/tools/index.d.ts +0 -8
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -14
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/investigate/brief-slot.d.ts +0 -15
- package/dist/tools/investigate/brief-slot.d.ts.map +0 -1
- package/dist/tools/investigate/brief-slot.js +0 -9
- package/dist/tools/investigate/brief-slot.js.map +0 -1
- package/dist/tools/investigate/implementer-criteria.d.ts +0 -52
- package/dist/tools/investigate/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/investigate/implementer-criteria.js +0 -106
- package/dist/tools/investigate/implementer-criteria.js.map +0 -1
- package/dist/tools/investigate/schema.d.ts +0 -62
- package/dist/tools/investigate/schema.d.ts.map +0 -1
- package/dist/tools/investigate/schema.js +0 -13
- package/dist/tools/investigate/schema.js.map +0 -1
- package/dist/tools/investigate/subtypes.d.ts +0 -4
- package/dist/tools/investigate/subtypes.d.ts.map +0 -1
- package/dist/tools/investigate/subtypes.js +0 -26
- package/dist/tools/investigate/subtypes.js.map +0 -1
- package/dist/tools/investigate/tool-config.d.ts +0 -8
- package/dist/tools/investigate/tool-config.d.ts.map +0 -1
- package/dist/tools/investigate/tool-config.js +0 -68
- package/dist/tools/investigate/tool-config.js.map +0 -1
- package/dist/tools/journal/recall/brief-slot.d.ts +0 -7
- package/dist/tools/journal/recall/brief-slot.d.ts.map +0 -1
- package/dist/tools/journal/recall/brief-slot.js +0 -5
- package/dist/tools/journal/recall/brief-slot.js.map +0 -1
- package/dist/tools/journal/recall/implementer-criteria.d.ts +0 -9
- package/dist/tools/journal/recall/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/journal/recall/implementer-criteria.js +0 -23
- package/dist/tools/journal/recall/implementer-criteria.js.map +0 -1
- package/dist/tools/journal/recall/schema.d.ts +0 -54
- package/dist/tools/journal/recall/schema.d.ts.map +0 -1
- package/dist/tools/journal/recall/schema.js +0 -10
- package/dist/tools/journal/recall/schema.js.map +0 -1
- package/dist/tools/journal/recall/subtypes.d.ts +0 -4
- package/dist/tools/journal/recall/subtypes.d.ts.map +0 -1
- package/dist/tools/journal/recall/subtypes.js +0 -25
- package/dist/tools/journal/recall/subtypes.js.map +0 -1
- package/dist/tools/journal/recall/tool-config.d.ts +0 -8
- package/dist/tools/journal/recall/tool-config.d.ts.map +0 -1
- package/dist/tools/journal/recall/tool-config.js +0 -46
- package/dist/tools/journal/recall/tool-config.js.map +0 -1
- package/dist/tools/journal/record/brief-slot.d.ts +0 -15
- package/dist/tools/journal/record/brief-slot.d.ts.map +0 -1
- package/dist/tools/journal/record/brief-slot.js +0 -28
- package/dist/tools/journal/record/brief-slot.js.map +0 -1
- package/dist/tools/journal/record/implementer-criteria.d.ts +0 -6
- package/dist/tools/journal/record/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/journal/record/implementer-criteria.js +0 -20
- package/dist/tools/journal/record/implementer-criteria.js.map +0 -1
- package/dist/tools/journal/record/schema.d.ts +0 -55
- package/dist/tools/journal/record/schema.d.ts.map +0 -1
- package/dist/tools/journal/record/schema.js +0 -12
- package/dist/tools/journal/record/schema.js.map +0 -1
- package/dist/tools/journal/record/tool-config.d.ts +0 -7
- package/dist/tools/journal/record/tool-config.d.ts.map +0 -1
- package/dist/tools/journal/record/tool-config.js +0 -47
- package/dist/tools/journal/record/tool-config.js.map +0 -1
- package/dist/tools/read-route-prompt.d.ts +0 -113
- package/dist/tools/read-route-prompt.d.ts.map +0 -1
- package/dist/tools/read-route-prompt.js +0 -86
- package/dist/tools/read-route-prompt.js.map +0 -1
- package/dist/tools/register-context-block/schema.d.ts +0 -8
- package/dist/tools/register-context-block/schema.d.ts.map +0 -1
- package/dist/tools/register-context-block/schema.js +0 -7
- package/dist/tools/register-context-block/schema.js.map +0 -1
- package/dist/tools/register-context-block/tool-config.d.ts +0 -6
- package/dist/tools/register-context-block/tool-config.d.ts.map +0 -1
- package/dist/tools/register-context-block/tool-config.js +0 -39
- package/dist/tools/register-context-block/tool-config.js.map +0 -1
- package/dist/tools/research/brief-slot.d.ts +0 -37
- package/dist/tools/research/brief-slot.d.ts.map +0 -1
- package/dist/tools/research/brief-slot.js +0 -68
- package/dist/tools/research/brief-slot.js.map +0 -1
- package/dist/tools/research/implementer-criteria.d.ts +0 -13
- package/dist/tools/research/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/research/implementer-criteria.js +0 -109
- package/dist/tools/research/implementer-criteria.js.map +0 -1
- package/dist/tools/research/schema.d.ts +0 -11
- package/dist/tools/research/schema.d.ts.map +0 -1
- package/dist/tools/research/schema.js +0 -59
- package/dist/tools/research/schema.js.map +0 -1
- package/dist/tools/research/subtypes.d.ts +0 -4
- package/dist/tools/research/subtypes.d.ts.map +0 -1
- package/dist/tools/research/subtypes.js +0 -25
- package/dist/tools/research/subtypes.js.map +0 -1
- package/dist/tools/research/tool-config.d.ts +0 -8
- package/dist/tools/research/tool-config.d.ts.map +0 -1
- package/dist/tools/research/tool-config.js +0 -48
- package/dist/tools/research/tool-config.js.map +0 -1
- package/dist/tools/research/two-turn-driver.d.ts +0 -16
- package/dist/tools/research/two-turn-driver.d.ts.map +0 -1
- package/dist/tools/research/two-turn-driver.js +0 -41
- package/dist/tools/research/two-turn-driver.js.map +0 -1
- package/dist/tools/retry/brief-slot.d.ts +0 -7
- package/dist/tools/retry/brief-slot.d.ts.map +0 -1
- package/dist/tools/retry/brief-slot.js +0 -3
- package/dist/tools/retry/brief-slot.js.map +0 -1
- package/dist/tools/retry/schema.d.ts +0 -53
- package/dist/tools/retry/schema.d.ts.map +0 -1
- package/dist/tools/retry/schema.js +0 -12
- package/dist/tools/retry/schema.js.map +0 -1
- package/dist/tools/retry/tool-config.d.ts +0 -7
- package/dist/tools/retry/tool-config.d.ts.map +0 -1
- package/dist/tools/retry/tool-config.js +0 -79
- package/dist/tools/retry/tool-config.js.map +0 -1
- package/dist/tools/review/brief-slot.d.ts +0 -11
- package/dist/tools/review/brief-slot.d.ts.map +0 -1
- package/dist/tools/review/brief-slot.js +0 -23
- package/dist/tools/review/brief-slot.js.map +0 -1
- package/dist/tools/review/implementer-criteria.d.ts +0 -48
- package/dist/tools/review/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/review/implementer-criteria.js +0 -108
- package/dist/tools/review/implementer-criteria.js.map +0 -1
- package/dist/tools/review/schema.d.ts +0 -64
- package/dist/tools/review/schema.d.ts.map +0 -1
- package/dist/tools/review/schema.js +0 -17
- package/dist/tools/review/schema.js.map +0 -1
- package/dist/tools/review/subtypes.d.ts +0 -4
- package/dist/tools/review/subtypes.d.ts.map +0 -1
- package/dist/tools/review/subtypes.js +0 -27
- package/dist/tools/review/subtypes.js.map +0 -1
- package/dist/tools/review/tool-config.d.ts +0 -7
- package/dist/tools/review/tool-config.d.ts.map +0 -1
- package/dist/tools/review/tool-config.js +0 -94
- package/dist/tools/review/tool-config.js.map +0 -1
- package/dist/tools/shared-output.d.ts +0 -56
- package/dist/tools/shared-output.d.ts.map +0 -1
- package/dist/tools/shared-output.js +0 -33
- package/dist/tools/shared-output.js.map +0 -1
- package/dist/types/review-policy.d.ts +0 -2
- package/dist/types/review-policy.d.ts.map +0 -1
- package/dist/types/review-policy.js +0 -2
- package/dist/types/review-policy.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { execFile as execFileCb } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { mkdir, access } from 'node:fs/promises';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
const execFileAsync = promisify(execFileCb);
|
|
6
|
+
const defaultExec = async (cmd, args, opts) => {
|
|
7
|
+
const { stdout, stderr } = await execFileAsync(cmd, args, { cwd: opts.cwd, windowsHide: true });
|
|
8
|
+
return { stdout: stdout ?? '', stderr: stderr ?? '' };
|
|
9
|
+
};
|
|
10
|
+
const defaultFs = {
|
|
11
|
+
mkdir: async (path, opts) => { await mkdir(path, opts); },
|
|
12
|
+
access: async (path) => { await access(path); },
|
|
13
|
+
};
|
|
14
|
+
export class WorktreeManager {
|
|
15
|
+
exec;
|
|
16
|
+
fs;
|
|
17
|
+
constructor(exec, fs) {
|
|
18
|
+
this.exec = exec ?? defaultExec;
|
|
19
|
+
this.fs = fs ?? defaultFs;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a git worktree for a task.
|
|
23
|
+
* Runs `git worktree add` off current HEAD with a task-specific branch.
|
|
24
|
+
* If the worktree has a package.json, runs `pnpm install --frozen-lockfile`.
|
|
25
|
+
*/
|
|
26
|
+
async create(cwd, taskId, type) {
|
|
27
|
+
const shortId = taskId.slice(0, 8);
|
|
28
|
+
const branch = `mma/${type}-${shortId}`;
|
|
29
|
+
const worktreeDir = join(cwd, '.mma', 'worktrees', shortId);
|
|
30
|
+
// Ensure parent dir exists
|
|
31
|
+
await this.fs.mkdir(join(cwd, '.mma', 'worktrees'), { recursive: true });
|
|
32
|
+
// Create worktree with a new branch off HEAD
|
|
33
|
+
await this.exec('git', ['worktree', 'add', worktreeDir, '-b', branch], { cwd, windowsHide: true });
|
|
34
|
+
// Install dependencies if package.json exists
|
|
35
|
+
try {
|
|
36
|
+
await this.fs.access(join(worktreeDir, 'package.json'));
|
|
37
|
+
await this.exec('pnpm', ['install', '--frozen-lockfile'], { cwd: worktreeDir });
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// No package.json — skip install
|
|
41
|
+
}
|
|
42
|
+
return { branch, path: worktreeDir, hasChanges: false };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check whether a worktree has uncommitted changes.
|
|
46
|
+
*/
|
|
47
|
+
async hasChanges(worktreePath) {
|
|
48
|
+
const { stdout } = await this.exec('git', ['status', '--porcelain'], { cwd: worktreePath, windowsHide: true });
|
|
49
|
+
return stdout.trim().length > 0;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Remove a worktree and its branch if there are no uncommitted changes.
|
|
53
|
+
* Returns true if the worktree was preserved (dirty), false if removed.
|
|
54
|
+
*/
|
|
55
|
+
async cleanup(worktreePath, branch) {
|
|
56
|
+
const dirty = await this.hasChanges(worktreePath);
|
|
57
|
+
if (dirty) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
await this.exec('git', ['worktree', 'remove', worktreePath, '--force'], { cwd: worktreePath, windowsHide: true });
|
|
61
|
+
// Branch delete uses the parent repo; worktreePath's parent is fine since
|
|
62
|
+
// the worktree itself was just removed. Use dirname twice to reach the
|
|
63
|
+
// repo root (.mma/worktrees/<id> → .mma/worktrees → .mma → repo).
|
|
64
|
+
const repoRoot = join(worktreePath, '..', '..', '..');
|
|
65
|
+
await this.exec('git', ['branch', '-D', branch], { cwd: repoRoot, windowsHide: true });
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get current info for an existing worktree.
|
|
70
|
+
*/
|
|
71
|
+
async getInfo(worktreePath, branch) {
|
|
72
|
+
const dirty = await this.hasChanges(worktreePath);
|
|
73
|
+
return { branch, path: worktreePath, hasChanges: dirty };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=worktree-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-manager.js","sourceRoot":"","sources":["../../src/unified/worktree-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAmB5C,MAAM,WAAW,GAAW,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAChG,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,SAAS,GAAU;IACvB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,OAAO,eAAe;IACT,IAAI,CAAS;IACb,EAAE,CAAQ;IAE3B,YAAY,IAAa,EAAE,EAAU;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,MAAc,EAAE,IAAY;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAE5D,2BAA2B;QAC3B,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzE,6CAA6C;QAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnG,8CAA8C;QAC9C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,YAAoB;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/G,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,YAAoB,EAAE,MAAc;QAChD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAClH,0EAA0E;QAC1E,wEAAwE;QACxE,kEAAkE;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,YAAoB,EAAE,MAAc;QAChD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC3D,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhixuan92/multi-model-agent-core",
|
|
3
|
-
"version": "5.1
|
|
3
|
+
"version": "5.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Core library for multi-model-agent: provider runners (Claude, Codex, OpenAI-compatible), routing logic, config schema, and tool/sandbox primitives.",
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
"homepage": "https://github.com/zhixuan312/multi-model-agent#readme",
|
|
24
24
|
"bugs": "https://github.com/zhixuan312/multi-model-agent/issues",
|
|
25
25
|
"files": [
|
|
26
|
-
"dist"
|
|
26
|
+
"dist",
|
|
27
|
+
"src/skills"
|
|
27
28
|
],
|
|
28
29
|
"main": "./dist/index.js",
|
|
29
30
|
"types": "./dist/index.d.ts",
|
|
@@ -48,18 +49,6 @@
|
|
|
48
49
|
"types": "./dist/providers/provider-factory.d.ts",
|
|
49
50
|
"import": "./dist/providers/provider-factory.js"
|
|
50
51
|
},
|
|
51
|
-
"./lifecycle/task-runner": {
|
|
52
|
-
"types": "./dist/lifecycle/task-runner.d.ts",
|
|
53
|
-
"import": "./dist/lifecycle/task-runner.js"
|
|
54
|
-
},
|
|
55
|
-
"./lifecycle/stage-progression": {
|
|
56
|
-
"types": "./dist/lifecycle/stage-progression.d.ts",
|
|
57
|
-
"import": "./dist/lifecycle/stage-progression.js"
|
|
58
|
-
},
|
|
59
|
-
"./lifecycle/stage-labels": {
|
|
60
|
-
"types": "./dist/lifecycle/stage-labels.d.ts",
|
|
61
|
-
"import": "./dist/lifecycle/stage-labels.js"
|
|
62
|
-
},
|
|
63
52
|
"./bounded-execution/activity-tracker": {
|
|
64
53
|
"types": "./dist/bounded-execution/activity-tracker.d.ts",
|
|
65
54
|
"import": "./dist/bounded-execution/activity-tracker.js"
|
|
@@ -100,114 +89,10 @@
|
|
|
100
89
|
"types": "./dist/events/stderr-log-subscriber.d.ts",
|
|
101
90
|
"import": "./dist/events/stderr-log-subscriber.js"
|
|
102
91
|
},
|
|
103
|
-
"./lifecycle/auto-commit": {
|
|
104
|
-
"types": "./dist/lifecycle/auto-commit.d.ts",
|
|
105
|
-
"import": "./dist/lifecycle/auto-commit.js"
|
|
106
|
-
},
|
|
107
92
|
"./bounded-execution/file-artifact-check": {
|
|
108
93
|
"types": "./dist/bounded-execution/file-artifact-check.d.ts",
|
|
109
94
|
"import": "./dist/bounded-execution/file-artifact-check.js"
|
|
110
95
|
},
|
|
111
|
-
"./lifecycle/task-executor": {
|
|
112
|
-
"types": "./dist/lifecycle/task-executor.d.ts",
|
|
113
|
-
"import": "./dist/lifecycle/task-executor.js"
|
|
114
|
-
},
|
|
115
|
-
"./lifecycle/executor-output-types": {
|
|
116
|
-
"types": "./dist/lifecycle/executor-output-types.d.ts",
|
|
117
|
-
"import": "./dist/lifecycle/executor-output-types.js"
|
|
118
|
-
},
|
|
119
|
-
"./tools": {
|
|
120
|
-
"types": "./dist/tools/index.d.ts",
|
|
121
|
-
"import": "./dist/tools/index.js"
|
|
122
|
-
},
|
|
123
|
-
"./tools/index": {
|
|
124
|
-
"types": "./dist/tools/index.d.ts",
|
|
125
|
-
"import": "./dist/tools/index.js"
|
|
126
|
-
},
|
|
127
|
-
"./tools/audit/tool-config": {
|
|
128
|
-
"types": "./dist/tools/audit/tool-config.d.ts",
|
|
129
|
-
"import": "./dist/tools/audit/tool-config.js"
|
|
130
|
-
},
|
|
131
|
-
"./tools/debug/tool-config": {
|
|
132
|
-
"types": "./dist/tools/debug/tool-config.d.ts",
|
|
133
|
-
"import": "./dist/tools/debug/tool-config.js"
|
|
134
|
-
},
|
|
135
|
-
"./tools/delegate/tool-config": {
|
|
136
|
-
"types": "./dist/tools/delegate/tool-config.d.ts",
|
|
137
|
-
"import": "./dist/tools/delegate/tool-config.js"
|
|
138
|
-
},
|
|
139
|
-
"./tools/execute-plan/tool-config": {
|
|
140
|
-
"types": "./dist/tools/execute-plan/tool-config.d.ts",
|
|
141
|
-
"import": "./dist/tools/execute-plan/tool-config.js"
|
|
142
|
-
},
|
|
143
|
-
"./tools/investigate/tool-config": {
|
|
144
|
-
"types": "./dist/tools/investigate/tool-config.d.ts",
|
|
145
|
-
"import": "./dist/tools/investigate/tool-config.js"
|
|
146
|
-
},
|
|
147
|
-
"./tools/journal/record/tool-config": {
|
|
148
|
-
"types": "./dist/tools/journal/record/tool-config.d.ts",
|
|
149
|
-
"import": "./dist/tools/journal/record/tool-config.js"
|
|
150
|
-
},
|
|
151
|
-
"./tools/journal/recall/tool-config": {
|
|
152
|
-
"types": "./dist/tools/journal/recall/tool-config.d.ts",
|
|
153
|
-
"import": "./dist/tools/journal/recall/tool-config.js"
|
|
154
|
-
},
|
|
155
|
-
"./tools/register-context-block/tool-config": {
|
|
156
|
-
"types": "./dist/tools/register-context-block/tool-config.d.ts",
|
|
157
|
-
"import": "./dist/tools/register-context-block/tool-config.js"
|
|
158
|
-
},
|
|
159
|
-
"./tools/retry/tool-config": {
|
|
160
|
-
"types": "./dist/tools/retry/tool-config.d.ts",
|
|
161
|
-
"import": "./dist/tools/retry/tool-config.js"
|
|
162
|
-
},
|
|
163
|
-
"./tools/review/tool-config": {
|
|
164
|
-
"types": "./dist/tools/review/tool-config.d.ts",
|
|
165
|
-
"import": "./dist/tools/review/tool-config.js"
|
|
166
|
-
},
|
|
167
|
-
"./tools/delegate/schema": {
|
|
168
|
-
"types": "./dist/tools/delegate/schema.d.ts",
|
|
169
|
-
"import": "./dist/tools/delegate/schema.js"
|
|
170
|
-
},
|
|
171
|
-
"./tools/audit/schema": {
|
|
172
|
-
"types": "./dist/tools/audit/schema.d.ts",
|
|
173
|
-
"import": "./dist/tools/audit/schema.js"
|
|
174
|
-
},
|
|
175
|
-
"./tools/investigate/schema": {
|
|
176
|
-
"types": "./dist/tools/investigate/schema.d.ts",
|
|
177
|
-
"import": "./dist/tools/investigate/schema.js"
|
|
178
|
-
},
|
|
179
|
-
"./tools/journal/record/schema": {
|
|
180
|
-
"types": "./dist/tools/journal/record/schema.d.ts",
|
|
181
|
-
"import": "./dist/tools/journal/record/schema.js"
|
|
182
|
-
},
|
|
183
|
-
"./tools/journal/recall/schema": {
|
|
184
|
-
"types": "./dist/tools/journal/recall/schema.d.ts",
|
|
185
|
-
"import": "./dist/tools/journal/recall/schema.js"
|
|
186
|
-
},
|
|
187
|
-
"./tools/research/schema": {
|
|
188
|
-
"types": "./dist/tools/research/schema.d.ts",
|
|
189
|
-
"import": "./dist/tools/research/schema.js"
|
|
190
|
-
},
|
|
191
|
-
"./tools/research/tool-config": {
|
|
192
|
-
"types": "./dist/tools/research/tool-config.d.ts",
|
|
193
|
-
"import": "./dist/tools/research/tool-config.js"
|
|
194
|
-
},
|
|
195
|
-
"./tools/review/schema": {
|
|
196
|
-
"types": "./dist/tools/review/schema.d.ts",
|
|
197
|
-
"import": "./dist/tools/review/schema.js"
|
|
198
|
-
},
|
|
199
|
-
"./tools/debug/schema": {
|
|
200
|
-
"types": "./dist/tools/debug/schema.d.ts",
|
|
201
|
-
"import": "./dist/tools/debug/schema.js"
|
|
202
|
-
},
|
|
203
|
-
"./tools/retry/schema": {
|
|
204
|
-
"types": "./dist/tools/retry/schema.d.ts",
|
|
205
|
-
"import": "./dist/tools/retry/schema.js"
|
|
206
|
-
},
|
|
207
|
-
"./tools/register-context-block/schema": {
|
|
208
|
-
"types": "./dist/tools/register-context-block/schema.d.ts",
|
|
209
|
-
"import": "./dist/tools/register-context-block/schema.js"
|
|
210
|
-
},
|
|
211
96
|
"./events/consent-rules": {
|
|
212
97
|
"types": "./dist/events/consent-rules.d.ts",
|
|
213
98
|
"import": "./dist/events/consent-rules.js"
|
|
@@ -215,6 +100,10 @@
|
|
|
215
100
|
"./events/wire-schema": {
|
|
216
101
|
"types": "./dist/events/wire-schema.d.ts",
|
|
217
102
|
"import": "./dist/events/wire-schema.js"
|
|
103
|
+
},
|
|
104
|
+
"./research": {
|
|
105
|
+
"types": "./dist/research/index.d.ts",
|
|
106
|
+
"import": "./dist/research/index.js"
|
|
218
107
|
}
|
|
219
108
|
},
|
|
220
109
|
"scripts": {
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Audit — Implementer (Plan: Codebase Coherence)
|
|
2
|
+
|
|
3
|
+
You are auditing a CODE-EXECUTION PLAN against a real codebase AND (when provided) against an upstream requirement spec. The plan will subsequently be dispatched to literal-following workers via mma-execute-plan; if the plan names a method, file, type, or signature that does not match the codebase as it exists today, the worker will freeze on the contradiction or produce broken code. If the plan silently skips a spec requirement, the implementation will ship incomplete.
|
|
4
|
+
|
|
5
|
+
## Purpose Split
|
|
6
|
+
|
|
7
|
+
Your job is NOT prose-quality on the plan itself (that is the default audit's job). Your job splits into three perspective groups:
|
|
8
|
+
|
|
9
|
+
- **EXTERNAL CODEBASE COHERENCE (perspectives 1-8)** — for every named symbol, file path, signature, or import in the plan, the codebase must contain it as described UNLESS the plan task is the one creating it. These perspectives REQUIRE source-side evidence (file:line).
|
|
10
|
+
- **INTRA-PLAN STRUCTURE (perspectives 9, 11, 12)** — task granularity, placeholder language, and required plan skeleton. These look ONLY at the plan markdown; no codebase grounding needed.
|
|
11
|
+
- **SPEC ALIGNMENT (perspective 10)** — every load-bearing spec requirement maps to at least one plan task, and no task implements something the spec did not ask for. Requires the reference SPEC to be in your context. If no spec is available, emit "No findings for this criterion." for perspective 10 ONLY.
|
|
12
|
+
|
|
13
|
+
## CRITICAL: USE vs DEFINE Intent Classification
|
|
14
|
+
|
|
15
|
+
Before ANY finding on perspectives 2-5, classify each symbol mention. Confusing USE and DEFINE intent is the #1 source of false positives.
|
|
16
|
+
|
|
17
|
+
**USE intent** — the plan TREATS the symbol as already existing. Examples:
|
|
18
|
+
- method calls: `store.register(...)`, `obj.helper(...)`, `await provider.run(...)`
|
|
19
|
+
- property/field access: `config.someField`, `result.cost`, `this._ttlMs`
|
|
20
|
+
- import statements: `import { X } from "./bar.js"`
|
|
21
|
+
- type references: `function f(arg: X)`, `: Promise<X>`, `: ExistingInterface`
|
|
22
|
+
- test code calling production code: `expect(store.register(...))`
|
|
23
|
+
|
|
24
|
+
**DEFINE intent** — the plan CREATES the symbol in this task. Examples:
|
|
25
|
+
- function/method declarations: `function foo()`, `private foo()`, `static foo()`
|
|
26
|
+
- class/interface/type declarations: `class Foo {}`, `interface Bar {}`, `type Q = ...`
|
|
27
|
+
- exported constants: `export const baz = ...`
|
|
28
|
+
- new fields added to existing types: `interface ExistingType { newField: X }`
|
|
29
|
+
- new option keys on existing methods: `register(content, opts: { newOpt: X })`
|
|
30
|
+
- new test files via "Test: <path> (new)"
|
|
31
|
+
- new modules via "New: <path>" or "Create: <path>"
|
|
32
|
+
|
|
33
|
+
**Verification rule:**
|
|
34
|
+
- USE intent -> symbol MUST exist in named source file. If grep returns no match -> flag CRITICAL with nearest match.
|
|
35
|
+
- DEFINE intent -> symbol MAY NOT exist yet. The task is adding it. **DO NOT FLAG.**
|
|
36
|
+
- DEFINE intent + symbol DOES already exist -> flag MEDIUM "task is obsolete; deliverable already shipped."
|
|
37
|
+
|
|
38
|
+
**Heuristic:** if the code block has a function/method declaration syntax ON THE SAME LINE as the symbol name, it's DEFINE. If the symbol appears as callee, imported name, type annotation, or property access, it's USE.
|
|
39
|
+
|
|
40
|
+
**Task scope = a unit.** Each `### Task X.Y:` heading + its `Files:` block + its numbered steps + code blocks form ONE UNIT. Read the unit as a whole before flagging.
|
|
41
|
+
|
|
42
|
+
## Your Execution Strategy
|
|
43
|
+
|
|
44
|
+
You MUST work through the 12 perspectives **one at a time, sequentially**. For each perspective:
|
|
45
|
+
|
|
46
|
+
1. Read the plan through the lens of ONLY that perspective
|
|
47
|
+
2. Write any findings to a scratch file at `/tmp/audit-findings.md` (append mode)
|
|
48
|
+
3. If no findings for that perspective, write "Perspective N: No findings." to the scratch file
|
|
49
|
+
4. Move to the next perspective
|
|
50
|
+
|
|
51
|
+
After all 12 perspectives are complete, read the scratch file and consolidate into the final JSON output.
|
|
52
|
+
|
|
53
|
+
**Do NOT try to evaluate all perspectives in one pass.** The sequential approach ensures thorough coverage — each perspective gets your full attention before moving on.
|
|
54
|
+
|
|
55
|
+
## Execution Steps
|
|
56
|
+
|
|
57
|
+
### Step 1: Create scratch file
|
|
58
|
+
Write to `/tmp/audit-findings.md`:
|
|
59
|
+
```
|
|
60
|
+
# Plan Audit Findings (scratch)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Step 2: Perspective 1 — PATH EXISTENCE
|
|
64
|
+
Every "Files:" line must resolve. Sub-rules: (a) `Modify: <path>` -> file MUST exist (missing = CRITICAL). (b) `Test: <path>` or `Test: <path> (new)` -> parent dir MUST exist; test file itself may or may not. (c) `New: <path>` or `Create: <path>` -> parent dir MUST exist AND file MUST NOT exist (already exists = MEDIUM, plan needs trimming).
|
|
65
|
+
|
|
66
|
+
Use `read_file` or `grep` to verify each path. Append findings to `/tmp/audit-findings.md`.
|
|
67
|
+
|
|
68
|
+
### Step 3: Perspective 2 — SYMBOL EXISTENCE
|
|
69
|
+
For every method/type/class/function/imported identifier in code blocks: FIRST classify as USE or DEFINE. ONLY flag USE-intent mentions where grep against the named source file returns no match. Include nearest match (Levenshtein) so the plan can be fixed in one edit.
|
|
70
|
+
|
|
71
|
+
Use `grep` to verify each USE-intent symbol. Append findings to scratch file.
|
|
72
|
+
|
|
73
|
+
### Step 4: Perspective 3 — SIGNATURE MATCH
|
|
74
|
+
When the plan's code uses a method with specific parameters or expects a specific return shape, the actual source signature must match. Same intent rule: ONLY flag USE-intent (calls/imports). Plan DEFINES a method? That's the deliverable — don't flag. Flag if a call appears BEFORE the interface-extension step within the task's sequence (out-of-order, see perspective 6).
|
|
75
|
+
|
|
76
|
+
Use `grep` / `read_file` to verify actual signatures. Append findings to scratch file.
|
|
77
|
+
|
|
78
|
+
### Step 5: Perspective 4 — IMPORT GRAPH
|
|
79
|
+
Every `import { X } from '...'` in code blocks must resolve under the intent rule. Imports of NEW modules the task creates (listed in "Files: New:") are DEFINE-adjacent. But DO flag if the task forgets to add the corresponding `exports` entry in the workspace package.json (HIGH).
|
|
80
|
+
|
|
81
|
+
Use `grep` / `read_file` to verify imports. Append findings to scratch file.
|
|
82
|
+
|
|
83
|
+
### Step 6: Perspective 5 — TEST HARNESS AVAILABILITY
|
|
84
|
+
Every helper/factory/fixture the test USES must exist at the named path. Verify via grep. If the task explicitly adds a new option to an existing helper, that's DEFINE — don't flag the new option. DO flag if test code uses the new option BEFORE the task step that adds it. Helper truly missing = HIGH.
|
|
85
|
+
|
|
86
|
+
Use `grep` to verify test helpers. Append findings to scratch file.
|
|
87
|
+
|
|
88
|
+
### Step 7: Perspective 6 — STEP SEQUENCE WITHIN TASK
|
|
89
|
+
Numbered steps must be executable in order. No step depends on output from a later step. MEDIUM unless dependency would halt execution (then HIGH).
|
|
90
|
+
|
|
91
|
+
Analyze step ordering within each task. Append findings to scratch file.
|
|
92
|
+
|
|
93
|
+
### Step 8: Perspective 7 — CROSS-TASK DEPENDENCIES
|
|
94
|
+
When task B's code uses something task A introduces, the plan's task ordering must reflect the dependency. B before A = CRITICAL. Dependency exists but undeclared = MEDIUM.
|
|
95
|
+
|
|
96
|
+
Trace inter-task symbol/file dependencies. Append findings to scratch file.
|
|
97
|
+
|
|
98
|
+
### Step 9: Perspective 8 — VERIFICATION COMMAND VALIDITY
|
|
99
|
+
Every "Run: <command>" / "verify" instruction must work with the project's actual tooling. Plan says `npm run validate-things` but no such script exists? CRITICAL. Vague verification ("run the test") with no concrete command? MEDIUM.
|
|
100
|
+
|
|
101
|
+
Use `grep` / `read_file` on `package.json` to verify commands exist. Append findings to scratch file.
|
|
102
|
+
|
|
103
|
+
### Step 10: Perspective 9 — TASK GRANULARITY
|
|
104
|
+
Each task should be implementable in one focused sub-agent run. Signals of oversized tasks: touches >3 source files; >40 net lines of diff; mixes unrelated concerns; >6 numbered steps. HIGH when task clearly exceeds standard-tier capacity; MEDIUM when borderline. Suggested fix: split into atomic sub-tasks.
|
|
105
|
+
|
|
106
|
+
Analyze task size from plan text only (no codebase tools needed). Append findings to scratch file.
|
|
107
|
+
|
|
108
|
+
### Step 11: Perspective 11 — PLACEHOLDER LANGUAGE
|
|
109
|
+
Scan for prose patterns that leave a literal-following worker unable to act. Signals: `TBD`, `TODO`, `implement later`, `fill in details`, `Add appropriate error handling`, `add validation`, `handle edge cases`, `Similar to Task N` (without repeating code), `Write tests for the above` (without test code); steps describing what to do without showing how (missing code block); verification like `make sure it works`. HIGH on load-bearing steps that cannot execute without invention; MEDIUM on vague verification; LOW on cosmetic placeholders in non-load-bearing prose.
|
|
110
|
+
|
|
111
|
+
Scan plan text only. Append findings to scratch file.
|
|
112
|
+
|
|
113
|
+
### Step 12: Perspective 12 — PLAN SKELETON
|
|
114
|
+
The plan must carry required structural scaffolding. Flag: missing top-level header (`Goal:` / `Architecture:` / `Tech Stack:`); missing File Structure section; a task with no `Files:` block; a task with no commit step. HIGH when missing structure forces ambiguous file-scope decisions; MEDIUM for missing header fields and per-task `Files:` blocks; LOW for missing commit steps.
|
|
115
|
+
|
|
116
|
+
Scan plan text only. Append findings to scratch file.
|
|
117
|
+
|
|
118
|
+
### Step 13: Perspective 10 — SPEC COVERAGE
|
|
119
|
+
**Only if a spec context block is present in your context.** If no spec is available, write "Perspective 10: No spec in context — no findings for this criterion." to the scratch file and skip.
|
|
120
|
+
|
|
121
|
+
Every load-bearing spec requirement maps to at least one plan task, and no task implements something the spec did not ask for. For unmapped load-bearing requirements: CRITICAL. For supporting requirements (test coverage, observability, non-functional): HIGH. For scope-creep: HIGH if substantive (>1 task or new deliverable), MEDIUM if minor. Implicit mapping (task plausibly covers requirement but doesn't say so) = MEDIUM with suggested fix: add "Covers spec requirement: <quote>" line.
|
|
122
|
+
|
|
123
|
+
Append findings to scratch file.
|
|
124
|
+
|
|
125
|
+
### Step 14: Consolidate
|
|
126
|
+
Read `/tmp/audit-findings.md`. Collect all findings across all perspectives, assign per-task verdicts, produce the final JSON output.
|
|
127
|
+
|
|
128
|
+
## Evidence Grounding (REQUIRED — varies by perspective group)
|
|
129
|
+
|
|
130
|
+
**Perspectives 1-8 (EXTERNAL CODEBASE COHERENCE) — both sides REQUIRED:**
|
|
131
|
+
- Plan side: exact line from the plan with task ID + section reference.
|
|
132
|
+
- Source side: file path + line number + actual content.
|
|
133
|
+
- For SYMBOL-EXISTENCE findings: include nearest match (Levenshtein).
|
|
134
|
+
- For SIGNATURE-MATCH findings: quote BOTH the plan's call AND the source's actual signature.
|
|
135
|
+
- A finding without both sides on perspectives 1-8 is speculation. Drop it.
|
|
136
|
+
|
|
137
|
+
**Perspective 10 (SPEC-COVERAGE) — both sides REQUIRED:**
|
|
138
|
+
- Spec side: exact `shall` / `must` / `should` clause from the spec.
|
|
139
|
+
- Plan side: name the task that does or does NOT cover it.
|
|
140
|
+
|
|
141
|
+
**Perspectives 9, 11, 12 (INTRA-PLAN STRUCTURE) — plan-side quote sufficient:**
|
|
142
|
+
- Quote the exact plan line with task ID + section reference. No codebase evidence needed.
|
|
143
|
+
- For absence findings: name the section that SHOULD contain it and confirm it does not.
|
|
144
|
+
|
|
145
|
+
## Severity Calibration
|
|
146
|
+
|
|
147
|
+
- **critical**: plan contradicts codebase in a way that BLOCKS dispatch, OR load-bearing spec requirement has zero covering tasks. Missing modify-target, wrong method name, wrong signature, missing module export, out-of-order task dependency, wrong tooling, uncovered load-bearing spec requirement.
|
|
148
|
+
- **high**: load-bearing ambiguity risking wrong implementation. Multiple matching symbols with no disambiguation. Test harness missing in claimed form. Oversized task that must be split. Substantive scope-creep. Placeholder on load-bearing step. Missing `Files:` block forcing ambiguous file-scope.
|
|
149
|
+
- **medium**: step ordering issue, cross-task dependency unstated but inferable, vague verify command, missing parent dirs for create-targets, implicit spec mapping, vague verification instructions, missing required header/Files block on single task.
|
|
150
|
+
- **low**: stylistic, missing metadata, naming preference, cosmetic placeholder, missing commit step.
|
|
151
|
+
|
|
152
|
+
## Per-Task Verdict (computed from all findings)
|
|
153
|
+
|
|
154
|
+
- **EXECUTABLE**: zero CRITICAL or HIGH findings against this task.
|
|
155
|
+
- **PARTIAL**: one or more HIGH findings, no CRITICAL. Task may execute but produces ambiguous result.
|
|
156
|
+
- **BLOCKED**: one or more CRITICAL findings. Task cannot be dispatched as written.
|
|
157
|
+
|
|
158
|
+
## Self-Validation
|
|
159
|
+
|
|
160
|
+
Before emitting, check each finding:
|
|
161
|
+
- Does it cite the right evidence shape for its perspective group?
|
|
162
|
+
- Is it categorized to the correct perspective (1-12)?
|
|
163
|
+
- Is severity calibrated to actual dispatch impact?
|
|
164
|
+
- Does it name a specific task ID (or "META" for plan-level findings)?
|
|
165
|
+
|
|
166
|
+
Findings on perspectives 1-8 missing source-side evidence are downgraded to LOW or dropped. Findings on perspectives 9, 11, 12 with only a plan-side quote are FULLY VALID.
|
|
167
|
+
|
|
168
|
+
## Anti-Patterns to Avoid
|
|
169
|
+
|
|
170
|
+
- Speculation without source-file evidence on perspectives 1-8. If you can't open the file and find the line, drop the finding.
|
|
171
|
+
- Flagging general prose-quality on the plan. That's the default audit's job.
|
|
172
|
+
- Flagging perspective 10 without a spec in context. Emit "No findings for this criterion."
|
|
173
|
+
- Inventing findings to fill quota. Zero findings on a perspective is the correct outcome when the dimension passes.
|
|
174
|
+
|
|
175
|
+
## Output Format
|
|
176
|
+
|
|
177
|
+
After consolidating all perspective passes, output exactly one JSON block:
|
|
178
|
+
|
|
179
|
+
```json
|
|
180
|
+
{"findingsCount": 0, "perspectivesCovered": [1,2,3,4,5,6,7,8,9,10,11,12], "overallAssessment": "found|clean", "taskVerdicts": {"A1.1": "EXECUTABLE|PARTIAL|BLOCKED"}, "findings": [{"taskId": "A1.1|META", "perspective": 1, "perspectiveName": "PATH EXISTENCE|SYMBOL EXISTENCE|SIGNATURE MATCH|IMPORT GRAPH|TEST HARNESS|STEP SEQUENCE|CROSS-TASK DEPS|VERIFY CMD|TASK GRANULARITY|SPEC COVERAGE|PLACEHOLDER LANGUAGE|PLAN SKELETON", "severity": "critical|high|medium|low", "planClaim": "<quoted plan line with task+section ref>", "sourceReality": "<file:line + actual content, or spec clause, or plan-side-only for 9/11/12>", "suggestedFix": "<concrete edit>"}]}
|
|
181
|
+
```
|
|
182
|
+
</output>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Audit — Implementer (Skill: Reader-Effectiveness)
|
|
2
|
+
|
|
3
|
+
You are auditing a SKILL.md file for reader effectiveness. A finding is a place where the skill, as written, would cause a competent reader to dispatch the wrong call, miss a path of use, or fall for a foreseeable anti-pattern.
|
|
4
|
+
|
|
5
|
+
## Your Execution Strategy
|
|
6
|
+
|
|
7
|
+
You MUST work through the 7 criteria **one at a time, sequentially**. For each criterion:
|
|
8
|
+
|
|
9
|
+
1. Read the skill file through the lens of ONLY that criterion
|
|
10
|
+
2. Write any findings to a scratch file at `/tmp/audit-findings.md` (append mode)
|
|
11
|
+
3. If no findings for that criterion, write "Criterion N: No findings." to the scratch file
|
|
12
|
+
4. Move to the next criterion
|
|
13
|
+
|
|
14
|
+
After all 7 criteria are complete, read the scratch file and consolidate into the final JSON output.
|
|
15
|
+
|
|
16
|
+
**Do NOT try to evaluate all criteria in one pass.** The sequential approach ensures thorough coverage.
|
|
17
|
+
|
|
18
|
+
## Why This Audit Exists
|
|
19
|
+
|
|
20
|
+
A skill is the markdown a caller reads to decide whether to route a request to a tool and how to construct that request. The completion test: would a competent reader given ONLY this skill be able to construct a correct request and avoid the named anti-patterns?
|
|
21
|
+
|
|
22
|
+
## Execution Steps
|
|
23
|
+
|
|
24
|
+
### Step 1: Create scratch file
|
|
25
|
+
Write to `/tmp/audit-findings.md`: `# Skill Audit Findings (scratch)`
|
|
26
|
+
|
|
27
|
+
### Step 2: Criterion 1 — WHEN-TO-USE-SPECIFICITY
|
|
28
|
+
Read the skill. Does the `when_to_use` frontmatter cleanly distinguish this skill from sibling skills? Overlap with another `mma-*` skill without a tiebreaker is a finding. Name the sibling skill that overlaps and quote both `when_to_use` lines. Append findings.
|
|
29
|
+
|
|
30
|
+
### Step 3: Criterion 2 — INPUT-SHAPE-COMPLETENESS
|
|
31
|
+
Read the skill. For every required JSON input field: is there (a) a name, (b) a type, (c) constraints on valid values, and (d) at least one example? Missing fields, types, or constraints flag. A reader must be able to write a valid request from the skill text alone. Append findings.
|
|
32
|
+
|
|
33
|
+
### Step 4: Criterion 3 — OUTPUT-SHAPE-CONTRACT
|
|
34
|
+
Read the skill. Is the terminal envelope shape the caller consumes described? Are optional fields marked? Can a caller write a parser from the skill text alone? Append findings.
|
|
35
|
+
|
|
36
|
+
### Step 5: Criterion 4 — ANTI-PATTERN-COVERAGE
|
|
37
|
+
Read the skill. Does every anti-pattern entry have both a "don't do this" AND a "do this instead"? Anti-patterns mentioned without a corrective flag. Append findings.
|
|
38
|
+
|
|
39
|
+
### Step 6: Criterion 5 — RECIPE-VS-SKILL-SCOPE
|
|
40
|
+
Read the skill. Does it instruct the reader to call 2+ different tools in sequence? If so, that content belongs in the orchestrator skill, not here. Flag in-skill recipes as scope violations. Append findings.
|
|
41
|
+
|
|
42
|
+
### Step 7: Criterion 6 — VERSION-FRONTMATTER
|
|
43
|
+
Read the skill. Are `name` / `description` / `when_to_use` / `version` frontmatter present and well-formed? Is `version` the literal `"0.0.0-unreleased"` pre-publish placeholder? Is `name` consistent with the directory name? Append findings.
|
|
44
|
+
|
|
45
|
+
### Step 8: Criterion 7 — LINK-INTEGRITY
|
|
46
|
+
Read the skill. Do internal cross-references (`./_shared/...`, `mma-other-skill`) point at files that exist? For each broken internal link: name the link text, target path, and whether the target should exist or the link should be updated. Append findings.
|
|
47
|
+
|
|
48
|
+
### Step 9: Consolidate
|
|
49
|
+
Read `/tmp/audit-findings.md`. Collect all findings, assign severities, produce final JSON.
|
|
50
|
+
|
|
51
|
+
## Evidence Grounding (REQUIRED)
|
|
52
|
+
|
|
53
|
+
- Quote the exact section heading + offending line (or name what is missing AND where it should appear).
|
|
54
|
+
- For when_to_use overlap: name the sibling skill + quote both `when_to_use` lines.
|
|
55
|
+
- For input-shape: name the undocumented field + cite the schema where it's exposed.
|
|
56
|
+
- For link-integrity: name the broken link + the file that should exist.
|
|
57
|
+
- A finding without a concrete section reference is opinion — drop it.
|
|
58
|
+
|
|
59
|
+
## Severity Calibration
|
|
60
|
+
|
|
61
|
+
- **critical**: routes reader to wrong tool (when_to_use overlap, wrong tool category)
|
|
62
|
+
- **high**: dispatch with wrong fields (input shape incomplete, required field undocumented)
|
|
63
|
+
- **medium**: reader hesitates (anti-pattern without correction, scope unclear, frontmatter malformed)
|
|
64
|
+
- **low**: stylistic / link / metadata fix
|
|
65
|
+
|
|
66
|
+
## Output Format
|
|
67
|
+
|
|
68
|
+
Output exactly one JSON block:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{"findingsCount": 0, "criteriaCovered": ["when-to-use-specificity", "input-shape-completeness", "output-shape-contract", "anti-pattern-coverage", "recipe-vs-skill-scope", "version-frontmatter", "link-integrity"], "overallAssessment": "found|clean", "findings": [{"severity": "critical|high|medium|low", "category": "<criterion-slug>", "claim": "<one sentence>", "evidence": "<quoted section+line>", "suggestion": "<missing or replacement text>"}]}
|
|
72
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Audit — Implementer (Spec: Requirement Executability)
|
|
2
|
+
|
|
3
|
+
You are auditing a requirement spec for executability. A finding is a place where the spec's prose, executed literally by a downstream worker, would produce the wrong outcome or paralyze the executor.
|
|
4
|
+
|
|
5
|
+
## Your Execution Strategy
|
|
6
|
+
|
|
7
|
+
You MUST work through the 9 criteria **one at a time, sequentially**. For each criterion:
|
|
8
|
+
|
|
9
|
+
1. Read the spec through the lens of ONLY that criterion
|
|
10
|
+
2. Write any findings to a scratch file at `/tmp/audit-findings.md` (append mode)
|
|
11
|
+
3. If no findings for that criterion, write "Criterion N: No findings." to the scratch file
|
|
12
|
+
4. Move to the next criterion
|
|
13
|
+
|
|
14
|
+
After all 9 criteria are complete, read the scratch file and consolidate into the final JSON output.
|
|
15
|
+
|
|
16
|
+
**Do NOT try to evaluate all criteria in one pass.** The sequential approach ensures thorough coverage — each criterion gets your full attention before moving on.
|
|
17
|
+
|
|
18
|
+
## Execution Steps
|
|
19
|
+
|
|
20
|
+
### Step 1: Create scratch file
|
|
21
|
+
Write to `/tmp/audit-findings.md`:
|
|
22
|
+
```
|
|
23
|
+
# Spec Audit Findings (scratch)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Step 2: Criterion 1 — REQUIREMENT-TESTABILITY
|
|
27
|
+
Read the spec. For every `shall` / `must` / `should` requirement, check: does it have a concrete, observable outcome that a test can assert? Vague verbs ("supports", "handles", "is reliable") without a measurable outcome are findings. Append findings to `/tmp/audit-findings.md`.
|
|
28
|
+
|
|
29
|
+
### Step 3: Criterion 2 — SCOPE-EXPLICITNESS-AND-DECOMPOSABILITY
|
|
30
|
+
Read the spec. Check two sub-dimensions:
|
|
31
|
+
- (a) EXPLICITNESS — are in-scope and out-of-scope items explicit? Implied scope (mentioned-once-then-dropped, referenced without definition) is a finding.
|
|
32
|
+
- (b) DECOMPOSABILITY — does the spec describe ONE buildable feature, not multiple independent subsystems bundled together? Signals: orthogonal subsystems mixed, multiple top-level "Goals", architecture names >5 net-new modules across non-overlapping concerns.
|
|
33
|
+
Append findings to scratch file.
|
|
34
|
+
|
|
35
|
+
### Step 4: Criterion 3 — ACCEPTANCE-CRITERIA-COVERAGE
|
|
36
|
+
Read the spec. Does every requirement map to at least one acceptance criterion (or does the spec call out why it is non-acceptance-testable)? Missing mapping is a finding. Append.
|
|
37
|
+
|
|
38
|
+
### Step 5: Criterion 4 — NON-FUNCTIONAL-CAPTURED
|
|
39
|
+
Read the spec. Are non-functional constraints (latency, security, observability, accessibility, scale) stated where load-bearing, or assumed silently? Silent assumption is a finding. Append.
|
|
40
|
+
|
|
41
|
+
### Step 6: Criterion 5 — REQUIREMENT-CONFLICT
|
|
42
|
+
Read the spec. Are there two requirements that cannot simultaneously hold? (e.g. "respond in <50ms" + "validate against remote registry on every call"). Append.
|
|
43
|
+
|
|
44
|
+
### Step 7: Criterion 6 — DECISION-TRACE
|
|
45
|
+
Read the spec. Are decisions that affect downstream implementation (algorithm choice, data shape, integration point) stated with reasoning, not just outcome? Outcome-only is a finding. Append.
|
|
46
|
+
|
|
47
|
+
### Step 8: Criterion 7 — ASSUMPTION-EXPOSURE
|
|
48
|
+
Read the spec. Are hidden assumptions about caller behavior, environment, or pre-existing state made explicit so the executor can verify them? Hidden assumption is a finding. Append.
|
|
49
|
+
|
|
50
|
+
### Step 9: Criterion 8 — PLACEHOLDER-SCAN
|
|
51
|
+
Read the spec. Flag: `TBD`, `TODO`, `[fill in]`, `[to be decided]`, `???`, empty section bodies, bulleted lists ending in `...`, tables with empty cells in load-bearing columns. Severity: HIGH on load-bearing sections; MEDIUM elsewhere; LOW on metadata-only sections. Append.
|
|
52
|
+
|
|
53
|
+
### Step 10: Criterion 9 — DESIGN-DECOMPOSITION-PRESENT
|
|
54
|
+
Read the spec. Flag when any load-bearing dimension is missing:
|
|
55
|
+
- (a) No component decomposition
|
|
56
|
+
- (b) No data flow description
|
|
57
|
+
- (c) No error-handling treatment for implied failure modes
|
|
58
|
+
- (d) No testing strategy section
|
|
59
|
+
Severity HIGH when planner must invent the architecture; MEDIUM when partial. Append.
|
|
60
|
+
|
|
61
|
+
### Step 11: Consolidate
|
|
62
|
+
Read `/tmp/audit-findings.md`. Collect all findings, assign severities, produce the final JSON output.
|
|
63
|
+
|
|
64
|
+
## Evidence Grounding (REQUIRED for every finding)
|
|
65
|
+
|
|
66
|
+
- Quote the exact `shall` / `must` / `should` clause that contains the gap.
|
|
67
|
+
- For requirement conflicts: quote BOTH conflicting clauses.
|
|
68
|
+
- For assumption-exposure: quote the hidden assumption + name what would break.
|
|
69
|
+
- For acceptance-criteria: name the requirement lacking a mapping.
|
|
70
|
+
- A "the spec seems to imply" claim without a quoted clause is NOT evidence — drop it.
|
|
71
|
+
|
|
72
|
+
## Severity Calibration
|
|
73
|
+
|
|
74
|
+
- **critical**: literal execution silently ships wrong behavior
|
|
75
|
+
- **high**: executor blocked — cannot proceed without clarification
|
|
76
|
+
- **medium**: clarification round forced — executor can guess but may guess wrong
|
|
77
|
+
- **low**: stylistic / metadata gap — no behavior change
|
|
78
|
+
|
|
79
|
+
## Scope
|
|
80
|
+
|
|
81
|
+
- **In scope**: the 9 criteria above.
|
|
82
|
+
- **Out of scope**: implementation details, stylistic preferences, opinions on spec quality.
|
|
83
|
+
- IMPLICIT requirements embedded inside a clause ARE in scope.
|
|
84
|
+
|
|
85
|
+
## Output Format
|
|
86
|
+
|
|
87
|
+
After consolidating all criterion passes, output exactly one JSON block:
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{"findingsCount": 0, "criteriaCovered": ["requirement-testability", "scope-explicitness-and-decomposability", "acceptance-criteria-coverage", "non-functional-captured", "requirement-conflict", "decision-trace", "assumption-exposure", "placeholder-scan", "design-decomposition-present"], "overallAssessment": "found|clean", "findings": [{"severity": "critical|high|medium|low", "category": "<criterion-slug>", "claim": "<one sentence>", "evidence": "<quoted clause>", "suggestion": "<the missing sentence>"}]}
|
|
91
|
+
```
|