@zigrivers/scaffold 3.15.0 → 3.17.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/README.md +47 -12
- package/content/knowledge/backend/backend-fintech-broker-integration.md +244 -0
- package/content/knowledge/backend/backend-fintech-compliance.md +181 -0
- package/content/knowledge/backend/backend-fintech-data-modeling.md +210 -0
- package/content/knowledge/backend/backend-fintech-ledger.md +226 -0
- package/content/knowledge/backend/backend-fintech-observability.md +151 -0
- package/content/knowledge/backend/backend-fintech-order-lifecycle.md +213 -0
- package/content/knowledge/backend/backend-fintech-risk-management.md +150 -0
- package/content/knowledge/backend/backend-fintech-testing.md +197 -0
- package/content/knowledge/core/automated-review-tooling.md +31 -26
- package/content/knowledge/core/multi-model-review-dispatch.md +30 -55
- package/content/knowledge/core/multi-service-api-contracts.md +634 -0
- package/content/knowledge/core/multi-service-architecture.md +492 -0
- package/content/knowledge/core/multi-service-auth.md +706 -0
- package/content/knowledge/core/multi-service-data-ownership.md +539 -0
- package/content/knowledge/core/multi-service-observability.md +545 -0
- package/content/knowledge/core/multi-service-resilience.md +710 -0
- package/content/knowledge/core/multi-service-task-decomposition.md +615 -0
- package/content/knowledge/core/multi-service-testing.md +728 -0
- package/content/methodology/backend-fintech.yml +46 -0
- package/content/methodology/custom-defaults.yml +6 -0
- package/content/methodology/deep.yml +6 -0
- package/content/methodology/multi-service-overlay.yml +103 -0
- package/content/methodology/mvp.yml +6 -0
- package/content/pipeline/architecture/service-ownership-map.md +83 -0
- package/content/pipeline/quality/cross-service-auth.md +96 -0
- package/content/pipeline/quality/cross-service-observability.md +104 -0
- package/content/pipeline/quality/integration-test-plan.md +106 -0
- package/content/pipeline/specification/inter-service-contracts.md +95 -0
- package/content/tools/post-implementation-review.md +36 -7
- package/content/tools/review-code.md +33 -8
- package/content/tools/review-pr.md +79 -95
- package/dist/cli/commands/adopt.cli-flags.test.js +20 -0
- package/dist/cli/commands/adopt.cli-flags.test.js.map +1 -1
- package/dist/cli/commands/adopt.d.ts.map +1 -1
- package/dist/cli/commands/adopt.js +11 -3
- package/dist/cli/commands/adopt.js.map +1 -1
- package/dist/cli/commands/complete.d.ts +1 -0
- package/dist/cli/commands/complete.d.ts.map +1 -1
- package/dist/cli/commands/complete.js +26 -8
- package/dist/cli/commands/complete.js.map +1 -1
- package/dist/cli/commands/dashboard.d.ts +1 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -1
- package/dist/cli/commands/dashboard.js +19 -6
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/decisions.d.ts +1 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -1
- package/dist/cli/commands/decisions.js +18 -4
- package/dist/cli/commands/decisions.js.map +1 -1
- package/dist/cli/commands/info.d.ts +1 -0
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +25 -3
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init-from.test.d.ts +2 -0
- package/dist/cli/commands/init-from.test.d.ts.map +1 -0
- package/dist/cli/commands/init-from.test.js +315 -0
- package/dist/cli/commands/init-from.test.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +239 -129
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +20 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/next.d.ts +1 -0
- package/dist/cli/commands/next.d.ts.map +1 -1
- package/dist/cli/commands/next.js +40 -4
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/next.test.js +151 -0
- package/dist/cli/commands/next.test.js.map +1 -1
- package/dist/cli/commands/reset.d.ts +1 -0
- package/dist/cli/commands/reset.d.ts.map +1 -1
- package/dist/cli/commands/reset.js +77 -29
- package/dist/cli/commands/reset.js.map +1 -1
- package/dist/cli/commands/rework.d.ts +1 -0
- package/dist/cli/commands/rework.d.ts.map +1 -1
- package/dist/cli/commands/rework.js +16 -2
- package/dist/cli/commands/rework.js.map +1 -1
- package/dist/cli/commands/run.d.ts +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +65 -13
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/run.test.js +192 -3
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/commands/skip.d.ts +1 -0
- package/dist/cli/commands/skip.d.ts.map +1 -1
- package/dist/cli/commands/skip.js +24 -7
- package/dist/cli/commands/skip.js.map +1 -1
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +51 -4
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/status.test.js +128 -0
- package/dist/cli/commands/status.test.js.map +1 -1
- package/dist/cli/guards-coverage.test.d.ts +2 -0
- package/dist/cli/guards-coverage.test.d.ts.map +1 -0
- package/dist/cli/guards-coverage.test.js +26 -0
- package/dist/cli/guards-coverage.test.js.map +1 -0
- package/dist/cli/guards-integration.test.d.ts +2 -0
- package/dist/cli/guards-integration.test.d.ts.map +1 -0
- package/dist/cli/guards-integration.test.js +178 -0
- package/dist/cli/guards-integration.test.js.map +1 -0
- package/dist/cli/guards.d.ts +13 -0
- package/dist/cli/guards.d.ts.map +1 -0
- package/dist/cli/guards.js +70 -0
- package/dist/cli/guards.js.map +1 -0
- package/dist/cli/guards.test.d.ts +2 -0
- package/dist/cli/guards.test.d.ts.map +1 -0
- package/dist/cli/guards.test.js +136 -0
- package/dist/cli/guards.test.js.map +1 -0
- package/dist/cli/init-flag-families.d.ts +1 -1
- package/dist/cli/init-flag-families.d.ts.map +1 -1
- package/dist/cli/init-flag-families.js +4 -1
- package/dist/cli/init-flag-families.js.map +1 -1
- package/dist/cli/init-flag-families.test.js +10 -0
- package/dist/cli/init-flag-families.test.js.map +1 -1
- package/dist/cli/shutdown.d.ts +2 -3
- package/dist/cli/shutdown.d.ts.map +1 -1
- package/dist/cli/shutdown.js +14 -11
- package/dist/cli/shutdown.js.map +1 -1
- package/dist/cli/shutdown.test.js +2 -4
- package/dist/cli/shutdown.test.js.map +1 -1
- package/dist/config/schema.d.ts +12122 -288
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +74 -79
- package/dist/config/schema.js.map +1 -1
- package/dist/config/schema.test.js +230 -1
- package/dist/config/schema.test.js.map +1 -1
- package/dist/config/validators/backend.d.ts +4 -0
- package/dist/config/validators/backend.d.ts.map +1 -0
- package/dist/config/validators/backend.js +14 -0
- package/dist/config/validators/backend.js.map +1 -0
- package/dist/config/validators/browser-extension.d.ts +4 -0
- package/dist/config/validators/browser-extension.d.ts.map +1 -0
- package/dist/config/validators/browser-extension.js +24 -0
- package/dist/config/validators/browser-extension.js.map +1 -0
- package/dist/config/validators/cli.d.ts +4 -0
- package/dist/config/validators/cli.d.ts.map +1 -0
- package/dist/config/validators/cli.js +14 -0
- package/dist/config/validators/cli.js.map +1 -0
- package/dist/config/validators/data-pipeline.d.ts +4 -0
- package/dist/config/validators/data-pipeline.d.ts.map +1 -0
- package/dist/config/validators/data-pipeline.js +14 -0
- package/dist/config/validators/data-pipeline.js.map +1 -0
- package/dist/config/validators/game.d.ts +4 -0
- package/dist/config/validators/game.d.ts.map +1 -0
- package/dist/config/validators/game.js +14 -0
- package/dist/config/validators/game.js.map +1 -0
- package/dist/config/validators/index.d.ts +7 -0
- package/dist/config/validators/index.d.ts.map +1 -0
- package/dist/config/validators/index.js +27 -0
- package/dist/config/validators/index.js.map +1 -0
- package/dist/config/validators/library.d.ts +4 -0
- package/dist/config/validators/library.d.ts.map +1 -0
- package/dist/config/validators/library.js +25 -0
- package/dist/config/validators/library.js.map +1 -0
- package/dist/config/validators/ml.d.ts +4 -0
- package/dist/config/validators/ml.d.ts.map +1 -0
- package/dist/config/validators/ml.js +31 -0
- package/dist/config/validators/ml.js.map +1 -0
- package/dist/config/validators/mobile-app.d.ts +4 -0
- package/dist/config/validators/mobile-app.d.ts.map +1 -0
- package/dist/config/validators/mobile-app.js +14 -0
- package/dist/config/validators/mobile-app.js.map +1 -0
- package/dist/config/validators/registry.test.d.ts +2 -0
- package/dist/config/validators/registry.test.d.ts.map +1 -0
- package/dist/config/validators/registry.test.js +26 -0
- package/dist/config/validators/registry.test.js.map +1 -0
- package/dist/config/validators/research.d.ts +4 -0
- package/dist/config/validators/research.d.ts.map +1 -0
- package/dist/config/validators/research.js +24 -0
- package/dist/config/validators/research.js.map +1 -0
- package/dist/config/validators/research.test.d.ts +2 -0
- package/dist/config/validators/research.test.d.ts.map +1 -0
- package/dist/config/validators/research.test.js +44 -0
- package/dist/config/validators/research.test.js.map +1 -0
- package/dist/config/validators/types.d.ts +19 -0
- package/dist/config/validators/types.d.ts.map +1 -0
- package/dist/config/validators/types.js +2 -0
- package/dist/config/validators/types.js.map +1 -0
- package/dist/config/validators/validators.test.d.ts +2 -0
- package/dist/config/validators/validators.test.d.ts.map +1 -0
- package/dist/config/validators/validators.test.js +25 -0
- package/dist/config/validators/validators.test.js.map +1 -0
- package/dist/config/validators/web-app.d.ts +4 -0
- package/dist/config/validators/web-app.d.ts.map +1 -0
- package/dist/config/validators/web-app.js +31 -0
- package/dist/config/validators/web-app.js.map +1 -0
- package/dist/core/assembly/context-gatherer.d.ts.map +1 -1
- package/dist/core/assembly/context-gatherer.js +4 -2
- package/dist/core/assembly/context-gatherer.js.map +1 -1
- package/dist/core/assembly/cross-reads.d.ts +58 -0
- package/dist/core/assembly/cross-reads.d.ts.map +1 -0
- package/dist/core/assembly/cross-reads.js +185 -0
- package/dist/core/assembly/cross-reads.js.map +1 -0
- package/dist/core/assembly/cross-reads.test.d.ts +2 -0
- package/dist/core/assembly/cross-reads.test.d.ts.map +1 -0
- package/dist/core/assembly/cross-reads.test.js +383 -0
- package/dist/core/assembly/cross-reads.test.js.map +1 -0
- package/dist/core/assembly/overlay-loader-structural.test.d.ts +2 -0
- package/dist/core/assembly/overlay-loader-structural.test.d.ts.map +1 -0
- package/dist/core/assembly/overlay-loader-structural.test.js +114 -0
- package/dist/core/assembly/overlay-loader-structural.test.js.map +1 -0
- package/dist/core/assembly/overlay-loader.d.ts +17 -3
- package/dist/core/assembly/overlay-loader.d.ts.map +1 -1
- package/dist/core/assembly/overlay-loader.js +75 -0
- package/dist/core/assembly/overlay-loader.js.map +1 -1
- package/dist/core/assembly/overlay-resolver.d.ts +2 -2
- package/dist/core/assembly/overlay-resolver.d.ts.map +1 -1
- package/dist/core/assembly/overlay-resolver.js.map +1 -1
- package/dist/core/assembly/overlay-resolver.test.js.map +1 -1
- package/dist/core/assembly/overlay-state-resolver.d.ts +5 -0
- package/dist/core/assembly/overlay-state-resolver.d.ts.map +1 -1
- package/dist/core/assembly/overlay-state-resolver.js +41 -1
- package/dist/core/assembly/overlay-state-resolver.js.map +1 -1
- package/dist/core/assembly/overlay-state-resolver.test.js +262 -0
- package/dist/core/assembly/overlay-state-resolver.test.js.map +1 -1
- package/dist/core/assembly/update-mode.d.ts +1 -0
- package/dist/core/assembly/update-mode.d.ts.map +1 -1
- package/dist/core/assembly/update-mode.js +17 -9
- package/dist/core/assembly/update-mode.js.map +1 -1
- package/dist/core/dependency/eligibility.d.ts +10 -1
- package/dist/core/dependency/eligibility.d.ts.map +1 -1
- package/dist/core/dependency/eligibility.js +19 -1
- package/dist/core/dependency/eligibility.js.map +1 -1
- package/dist/core/dependency/eligibility.test.js +82 -0
- package/dist/core/dependency/eligibility.test.js.map +1 -1
- package/dist/core/dependency/graph.d.ts +4 -1
- package/dist/core/dependency/graph.d.ts.map +1 -1
- package/dist/core/dependency/graph.js +7 -1
- package/dist/core/dependency/graph.js.map +1 -1
- package/dist/core/dependency/graph.test.js +29 -0
- package/dist/core/dependency/graph.test.js.map +1 -1
- package/dist/core/pipeline/global-steps.d.ts +7 -0
- package/dist/core/pipeline/global-steps.d.ts.map +1 -0
- package/dist/core/pipeline/global-steps.js +18 -0
- package/dist/core/pipeline/global-steps.js.map +1 -0
- package/dist/core/pipeline/resolver.d.ts +1 -0
- package/dist/core/pipeline/resolver.d.ts.map +1 -1
- package/dist/core/pipeline/resolver.js +51 -6
- package/dist/core/pipeline/resolver.js.map +1 -1
- package/dist/core/pipeline/types.d.ts +5 -1
- package/dist/core/pipeline/types.d.ts.map +1 -1
- package/dist/e2e/cross-service-references.test.d.ts +22 -0
- package/dist/e2e/cross-service-references.test.d.ts.map +1 -0
- package/dist/e2e/cross-service-references.test.js +188 -0
- package/dist/e2e/cross-service-references.test.js.map +1 -0
- package/dist/e2e/multi-service-pipeline.test.d.ts +10 -0
- package/dist/e2e/multi-service-pipeline.test.d.ts.map +1 -0
- package/dist/e2e/multi-service-pipeline.test.js +185 -0
- package/dist/e2e/multi-service-pipeline.test.js.map +1 -0
- package/dist/e2e/project-type-overlays.test.js +68 -0
- package/dist/e2e/project-type-overlays.test.js.map +1 -1
- package/dist/e2e/service-execution.test.d.ts +15 -0
- package/dist/e2e/service-execution.test.d.ts.map +1 -0
- package/dist/e2e/service-execution.test.js +219 -0
- package/dist/e2e/service-execution.test.js.map +1 -0
- package/dist/e2e/service-manifest.test.d.ts +19 -0
- package/dist/e2e/service-manifest.test.d.ts.map +1 -0
- package/dist/e2e/service-manifest.test.js +166 -0
- package/dist/e2e/service-manifest.test.js.map +1 -0
- package/dist/project/__frozen-schemas__/schema-v3.9.2.d.ts +224 -224
- package/dist/project/frontmatter.d.ts.map +1 -1
- package/dist/project/frontmatter.js +11 -0
- package/dist/project/frontmatter.js.map +1 -1
- package/dist/project/frontmatter.test.js +71 -0
- package/dist/project/frontmatter.test.js.map +1 -1
- package/dist/state/completion.d.ts +1 -1
- package/dist/state/completion.d.ts.map +1 -1
- package/dist/state/completion.js +10 -8
- package/dist/state/completion.js.map +1 -1
- package/dist/state/decision-logger.d.ts +3 -2
- package/dist/state/decision-logger.d.ts.map +1 -1
- package/dist/state/decision-logger.js +12 -11
- package/dist/state/decision-logger.js.map +1 -1
- package/dist/state/ensure-v3-migration.d.ts +9 -0
- package/dist/state/ensure-v3-migration.d.ts.map +1 -0
- package/dist/state/ensure-v3-migration.js +35 -0
- package/dist/state/ensure-v3-migration.js.map +1 -0
- package/dist/state/lock-manager.d.ts +5 -4
- package/dist/state/lock-manager.d.ts.map +1 -1
- package/dist/state/lock-manager.js +11 -11
- package/dist/state/lock-manager.js.map +1 -1
- package/dist/state/rework-manager.d.ts +1 -2
- package/dist/state/rework-manager.d.ts.map +1 -1
- package/dist/state/rework-manager.js +4 -5
- package/dist/state/rework-manager.js.map +1 -1
- package/dist/state/state-manager.d.ts +25 -1
- package/dist/state/state-manager.d.ts.map +1 -1
- package/dist/state/state-manager.js +86 -12
- package/dist/state/state-manager.js.map +1 -1
- package/dist/state/state-manager.test.js +278 -0
- package/dist/state/state-manager.test.js.map +1 -1
- package/dist/state/state-migration-v3.d.ts +22 -0
- package/dist/state/state-migration-v3.d.ts.map +1 -0
- package/dist/state/state-migration-v3.js +82 -0
- package/dist/state/state-migration-v3.js.map +1 -0
- package/dist/state/state-migration-v3.test.d.ts +2 -0
- package/dist/state/state-migration-v3.test.d.ts.map +1 -0
- package/dist/state/state-migration-v3.test.js +196 -0
- package/dist/state/state-migration-v3.test.js.map +1 -0
- package/dist/state/state-migration.d.ts.map +1 -1
- package/dist/state/state-migration.js +11 -6
- package/dist/state/state-migration.js.map +1 -1
- package/dist/state/state-migration.test.js +47 -2
- package/dist/state/state-migration.test.js.map +1 -1
- package/dist/state/state-path-resolver.d.ts +23 -0
- package/dist/state/state-path-resolver.d.ts.map +1 -0
- package/dist/state/state-path-resolver.js +36 -0
- package/dist/state/state-path-resolver.js.map +1 -0
- package/dist/state/state-path-resolver.test.d.ts +2 -0
- package/dist/state/state-path-resolver.test.d.ts.map +1 -0
- package/dist/state/state-path-resolver.test.js +78 -0
- package/dist/state/state-path-resolver.test.js.map +1 -0
- package/dist/state/state-version-dispatch.d.ts +17 -0
- package/dist/state/state-version-dispatch.d.ts.map +1 -0
- package/dist/state/state-version-dispatch.js +27 -0
- package/dist/state/state-version-dispatch.js.map +1 -0
- package/dist/state/state-version-dispatch.test.d.ts +2 -0
- package/dist/state/state-version-dispatch.test.d.ts.map +1 -0
- package/dist/state/state-version-dispatch.test.js +40 -0
- package/dist/state/state-version-dispatch.test.js.map +1 -0
- package/dist/types/config.d.ts +25 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.test.js +13 -1
- package/dist/types/config.test.js.map +1 -1
- package/dist/types/dependency.d.ts +5 -0
- package/dist/types/dependency.d.ts.map +1 -1
- package/dist/types/frontmatter.d.ts +5 -0
- package/dist/types/frontmatter.d.ts.map +1 -1
- package/dist/types/lock.d.ts +1 -1
- package/dist/types/lock.d.ts.map +1 -1
- package/dist/types/state.d.ts +1 -1
- package/dist/types/state.d.ts.map +1 -1
- package/dist/utils/artifact-path.d.ts +19 -0
- package/dist/utils/artifact-path.d.ts.map +1 -0
- package/dist/utils/artifact-path.js +95 -0
- package/dist/utils/artifact-path.js.map +1 -0
- package/dist/utils/artifact-path.test.d.ts +2 -0
- package/dist/utils/artifact-path.test.d.ts.map +1 -0
- package/dist/utils/artifact-path.test.js +138 -0
- package/dist/utils/artifact-path.test.js.map +1 -0
- package/dist/utils/errors.d.ts +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +5 -2
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/user-errors.d.ts +46 -0
- package/dist/utils/user-errors.d.ts.map +1 -0
- package/dist/utils/user-errors.js +76 -0
- package/dist/utils/user-errors.js.map +1 -0
- package/dist/utils/user-errors.test.d.ts +2 -0
- package/dist/utils/user-errors.test.d.ts.map +1 -0
- package/dist/utils/user-errors.test.js +74 -0
- package/dist/utils/user-errors.test.js.map +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +16 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/index.test.js +48 -0
- package/dist/validation/index.test.js.map +1 -1
- package/dist/validation/state-validator.d.ts +5 -2
- package/dist/validation/state-validator.d.ts.map +1 -1
- package/dist/validation/state-validator.js +18 -20
- package/dist/validation/state-validator.js.map +1 -1
- package/dist/validation/state-validator.test.js +31 -2
- package/dist/validation/state-validator.test.js.map +1 -1
- package/dist/wizard/copy/backend.d.ts.map +1 -1
- package/dist/wizard/copy/backend.js +12 -0
- package/dist/wizard/copy/backend.js.map +1 -1
- package/dist/wizard/flags.d.ts +1 -0
- package/dist/wizard/flags.d.ts.map +1 -1
- package/dist/wizard/questions.d.ts.map +1 -1
- package/dist/wizard/questions.js +5 -1
- package/dist/wizard/questions.js.map +1 -1
- package/dist/wizard/questions.test.js +45 -2
- package/dist/wizard/questions.test.js.map +1 -1
- package/dist/wizard/wizard.d.ts +23 -0
- package/dist/wizard/wizard.d.ts.map +1 -1
- package/dist/wizard/wizard.js +85 -47
- package/dist/wizard/wizard.js.map +1 -1
- package/dist/wizard/wizard.test.js +186 -1
- package/dist/wizard/wizard.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,7 +26,7 @@ comprehensive quality check before releasing or handing off the project.
|
|
|
26
26
|
The three channels are:
|
|
27
27
|
1. **Codex CLI** — Implementation correctness, security, API contracts
|
|
28
28
|
2. **Gemini CLI** — Design reasoning, architectural patterns, broad context
|
|
29
|
-
3. **
|
|
29
|
+
3. **Claude CLI** — Plan alignment, code quality, testing
|
|
30
30
|
|
|
31
31
|
## Inputs
|
|
32
32
|
|
|
@@ -191,6 +191,7 @@ Return ALL findings as valid JSON:
|
|
|
191
191
|
{
|
|
192
192
|
"severity": "P0|P1|P2|P3",
|
|
193
193
|
"category": "architecture-alignment|security|error-handling|test-coverage|complexity|dependencies",
|
|
194
|
+
"location": "relative/path/to/file.ts:42",
|
|
194
195
|
"file": "relative/path/to/file.ts",
|
|
195
196
|
"line": 42,
|
|
196
197
|
"description": "Specific description of the issue",
|
|
@@ -226,7 +227,7 @@ If not installed: queue a compensating pass (implementation correctness, securit
|
|
|
226
227
|
codex login status 2>/dev/null && echo "codex authenticated" || echo "codex NOT authenticated"
|
|
227
228
|
```
|
|
228
229
|
|
|
229
|
-
If not authenticated: tell the user "Codex auth expired. Run: `! codex login`". Do NOT silently skip. Wait for re-auth and retry once. If auth cannot be recovered (
|
|
230
|
+
If not authenticated: tell the user "Codex auth expired. Run: `! codex login`". Do NOT silently skip. Wait for re-auth and retry once. If auth cannot be recovered (timeout or user declines): queue a compensating pass (implementation correctness, security, API contracts, labeled `[compensating: Codex-equivalent]`).
|
|
230
231
|
|
|
231
232
|
If Codex fails during execution (non-zero exit, malformed output, timeout): queue a compensating pass with the same focus and label.
|
|
232
233
|
|
|
@@ -254,7 +255,7 @@ If not installed: queue a compensating pass (architectural patterns, design reas
|
|
|
254
255
|
NO_BROWSER=true gemini -p "respond with ok" -o json 2>&1
|
|
255
256
|
```
|
|
256
257
|
|
|
257
|
-
If exit code is 41: tell the user "Gemini auth expired. Run: `! gemini -p \"hello\"`". Do NOT silently skip. Wait for re-auth and retry once. If auth cannot be recovered (
|
|
258
|
+
If exit code is 41: tell the user "Gemini auth expired. Run: `! gemini -p \"hello\"`". Do NOT silently skip. Wait for re-auth and retry once. If auth cannot be recovered (timeout or user declines): queue a compensating pass (architectural patterns, design reasoning, broad context, labeled `[compensating: Gemini-equivalent]`).
|
|
258
259
|
|
|
259
260
|
If Gemini fails during execution (non-zero exit, malformed output, timeout): queue a compensating pass with the same focus and label.
|
|
260
261
|
|
|
@@ -291,6 +292,7 @@ surfaces to this format before returning):
|
|
|
291
292
|
{
|
|
292
293
|
"severity": "P0|P1|P2|P3",
|
|
293
294
|
"category": "architecture-alignment|security|error-handling|test-coverage|complexity|dependencies",
|
|
295
|
+
"location": "relative/path/to/file.ts:42",
|
|
294
296
|
"file": "relative/path/to/file.ts",
|
|
295
297
|
"line": 42,
|
|
296
298
|
"description": "Specific description of the issue",
|
|
@@ -300,6 +302,10 @@ surfaces to this format before returning):
|
|
|
300
302
|
}
|
|
301
303
|
```
|
|
302
304
|
|
|
305
|
+
**MMR compatibility:** The `location` field (`file:line` format) is required for
|
|
306
|
+
`mmr reconcile` injection. The `file` and `line` fields are retained for backward
|
|
307
|
+
compatibility with direct channel consumers.
|
|
308
|
+
|
|
303
309
|
Store as `SUPERPOWERS_PHASE1_FINDINGS`.
|
|
304
310
|
|
|
305
311
|
### Step 5: Run Phase 2 — Parallel User Story Review
|
|
@@ -441,8 +447,8 @@ before returning. Then return all three channels' findings plus channel status:
|
|
|
441
447
|
{
|
|
442
448
|
"story": "[STORY_TITLE]",
|
|
443
449
|
"channel_status": {
|
|
444
|
-
"codex": { "root_cause": "null|not_installed|auth_failed|
|
|
445
|
-
"gemini": { "root_cause": "null|not_installed|auth_failed|
|
|
450
|
+
"codex": { "root_cause": "null|not_installed|auth_failed|timeout|failed", "coverage_status": "full|compensating" },
|
|
451
|
+
"gemini": { "root_cause": "null|not_installed|auth_failed|timeout|failed", "coverage_status": "full|compensating" },
|
|
446
452
|
"superpowers": { "root_cause": null, "coverage_status": "full" }
|
|
447
453
|
},
|
|
448
454
|
"codex": { "findings": [...] },
|
|
@@ -453,6 +459,29 @@ before returning. Then return all three channels' findings plus channel status:
|
|
|
453
459
|
|
|
454
460
|
Collect findings from all subagents. Store as `PHASE2_FINDINGS`.
|
|
455
461
|
|
|
462
|
+
### Step 5e: Optional — Inject Findings into MMR for Unified Reconciliation
|
|
463
|
+
|
|
464
|
+
If an MMR job exists (e.g., from a prior `mmr review` run on the same branch), the
|
|
465
|
+
agent can inject its post-implementation review findings into MMR for unified
|
|
466
|
+
reconciliation across all channels:
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
# Inject Phase 1 and Phase 2 findings into an existing MMR job
|
|
470
|
+
# Write agent findings to a temp file for mmr reconcile
|
|
471
|
+
echo "$AGENT_FINDINGS" > /tmp/agent-findings.json
|
|
472
|
+
mmr reconcile "$JOB_ID" --channel superpowers --input /tmp/agent-findings.json
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
All findings injected via `mmr reconcile` must use MMR-compatible schema: each
|
|
476
|
+
finding needs `severity` (P0-P3), `location` (file:line), and `description`
|
|
477
|
+
(`suggestion` is optional). The strict validator will reject findings with
|
|
478
|
+
missing or invalid required fields.
|
|
479
|
+
|
|
480
|
+
This step is optional — post-implementation review is a full-codebase review (not
|
|
481
|
+
diff-only), so it operates independently of `mmr review`. Use `mmr reconcile` only
|
|
482
|
+
when you want to merge post-implementation findings into an existing MMR job for a
|
|
483
|
+
single unified verdict.
|
|
484
|
+
|
|
456
485
|
### Step 6: Consolidate Findings
|
|
457
486
|
|
|
458
487
|
Merge all findings from Phase 1 (`CODEX_PHASE1_FINDINGS`, `GEMINI_PHASE1_FINDINGS`,
|
|
@@ -656,9 +685,9 @@ the user they require manual attention before the project is ready to release.
|
|
|
656
685
|
| Codex not installed (`command -v` fails) | Queue compensating pass (implementation correctness, security, API contracts, labeled `[compensating: Codex-equivalent]`); document as "not_installed" in report |
|
|
657
686
|
| Gemini not installed (`command -v` fails) | Queue compensating pass (architectural patterns, design reasoning, broad context, labeled `[compensating: Gemini-equivalent]`); document as "not_installed" in report |
|
|
658
687
|
| Codex auth expired — user recovers | Re-run auth check; proceed with full Codex channel |
|
|
659
|
-
| Codex auth expired — user declines or
|
|
688
|
+
| Codex auth expired — user declines or timeout | Queue compensating pass (implementation correctness, security, API contracts, labeled `[compensating: Codex-equivalent]`); document as "auth_failed" or "timeout" in report |
|
|
660
689
|
| Gemini auth expired (exit 41) — user recovers | Re-run auth check; proceed with full Gemini channel |
|
|
661
|
-
| Gemini auth expired — user declines or
|
|
690
|
+
| Gemini auth expired — user declines or timeout | Queue compensating pass (architectural patterns, design reasoning, broad context, labeled `[compensating: Gemini-equivalent]`); document as "auth_failed" or "timeout" in report |
|
|
662
691
|
| Channel fails during execution (non-zero exit, malformed output, timeout) | Queue compensating pass for that channel with same focus and label; document root cause in report |
|
|
663
692
|
| Both external CLIs unavailable (any combination of not_installed / auth failure) | Run all compensating passes plus Superpowers code-reviewer; report coverage as "degraded-coverage"; warn user that review coverage is reduced |
|
|
664
693
|
| Superpowers unavailable | Document as "unavailable" in report; proceed with remaining channels; Superpowers is a Claude subagent and should always be available |
|
|
@@ -23,7 +23,7 @@ anything leaves the machine.
|
|
|
23
23
|
The three channels are:
|
|
24
24
|
1. **Codex CLI** — implementation correctness, security, API contracts
|
|
25
25
|
2. **Gemini CLI** — architectural patterns, broad-context reasoning
|
|
26
|
-
3. **
|
|
26
|
+
3. **Claude CLI** — Claude subagent review of code quality, tests, and plan alignment
|
|
27
27
|
|
|
28
28
|
## Inputs
|
|
29
29
|
|
|
@@ -46,6 +46,31 @@ The three channels are:
|
|
|
46
46
|
|
|
47
47
|
## Instructions
|
|
48
48
|
|
|
49
|
+
### Primary: MMR CLI + Agent Reconcile
|
|
50
|
+
|
|
51
|
+
When the MMR CLI is installed, use it as the primary entry point:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Staged changes
|
|
55
|
+
mmr review --staged --sync --format json
|
|
56
|
+
|
|
57
|
+
# Branch diff against main
|
|
58
|
+
mmr review --base main --sync --format json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
After the CLI review completes, dispatch the agent's code-reviewer skill (4th channel) and inject findings into the MMR job for unified reconciliation:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# job_id is captured from mmr review --sync --format json output
|
|
65
|
+
# Write agent findings to a temp file for mmr reconcile
|
|
66
|
+
echo "$AGENT_FINDINGS" > /tmp/agent-findings.json
|
|
67
|
+
mmr reconcile "$JOB_ID" --channel superpowers --input /tmp/agent-findings.json
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The agent's review output must use MMR-compatible finding schema: each finding needs `severity` (P0-P3), `location` (file:line), and `description` (`suggestion` is optional).
|
|
71
|
+
|
|
72
|
+
If `mmr` is not installed (`command -v mmr` fails), fall back to the manual multi-channel flow below.
|
|
73
|
+
|
|
49
74
|
### Step 1: Detect Mode
|
|
50
75
|
|
|
51
76
|
Parse `$ARGUMENTS` and set:
|
|
@@ -173,7 +198,7 @@ codex login status 2>/dev/null
|
|
|
173
198
|
- If `codex` is not installed: skip this channel and record root-cause `not_installed`
|
|
174
199
|
- If auth fails: tell the user to run `! codex login`, retry after recovery, and if recovery is not possible, record root-cause `auth_failed` and continue with the remaining channels
|
|
175
200
|
|
|
176
|
-
If auth cannot be recovered, or if Codex is not installed, queue a compensating Claude self-review pass focused on implementation correctness, security, and API contracts. Label findings as `[compensating: Codex-equivalent]`. If auth check times out (~5s), retry once; if still failing, record `
|
|
201
|
+
If auth cannot be recovered, or if Codex is not installed, queue a compensating Claude self-review pass focused on implementation correctness, security, and API contracts. Label findings as `[compensating: Codex-equivalent]`. If auth check times out (~5s), retry once; if still failing, record `timeout` and queue compensating pass. This pass runs after all channel dispatch attempts complete.
|
|
177
202
|
|
|
178
203
|
Build the prompt in a temporary file and pass it over stdin:
|
|
179
204
|
|
|
@@ -209,9 +234,9 @@ NO_BROWSER=true gemini -p "$(cat "$PROMPT_FILE")" --output-format json --approva
|
|
|
209
234
|
|
|
210
235
|
If the CLI exits with a non-zero code, produces malformed/unparseable output, or is killed by the tool runner timeout, record root-cause `failed` and queue a compensating pass for that channel.
|
|
211
236
|
|
|
212
|
-
#### Channel 3:
|
|
237
|
+
#### Channel 3: Claude CLI
|
|
213
238
|
|
|
214
|
-
Dispatch
|
|
239
|
+
Dispatch via `claude -p` with the review prompt.
|
|
215
240
|
|
|
216
241
|
- If explicit refs are being reviewed, provide `BASE_SHA` and `HEAD_SHA`
|
|
217
242
|
- Otherwise provide:
|
|
@@ -297,7 +322,7 @@ Otherwise:
|
|
|
297
322
|
3. Repeat for up to 3 fix rounds
|
|
298
323
|
4. If any finding remains unresolved after 3 rounds, stop with verdict `needs-user-decision`
|
|
299
324
|
|
|
300
|
-
**Fix cycle channel rule:** Re-run only channels that originally completed or ran as compensating passes. Never retry a channel marked `
|
|
325
|
+
**Fix cycle channel rule:** Re-run only channels that originally completed or ran as compensating passes. Never retry a channel marked `not_installed`, `auth_failed`, or `timeout` during fix rounds — its availability does not change within a session.
|
|
301
326
|
|
|
302
327
|
### Step 8: Final Verdict
|
|
303
328
|
|
|
@@ -321,9 +346,9 @@ Output a concise summary in this format:
|
|
|
321
346
|
[scope label]
|
|
322
347
|
|
|
323
348
|
### Channels Executed
|
|
324
|
-
- Codex CLI — root cause: [completed /
|
|
325
|
-
- Gemini CLI — root cause: [completed /
|
|
326
|
-
-
|
|
349
|
+
- Codex CLI — root cause: [completed / not_installed / auth_failed / timeout / failed], coverage: [full / compensating (Codex-equivalent)]
|
|
350
|
+
- Gemini CLI — root cause: [completed / not_installed / auth_failed / timeout / failed], coverage: [full / compensating (Gemini-equivalent)]
|
|
351
|
+
- Claude CLI — root cause: [completed / not_installed / auth_failed / timeout / failed], coverage: [full / compensating]
|
|
327
352
|
|
|
328
353
|
### Findings
|
|
329
354
|
[consensus findings first, then single-source findings]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-pr
|
|
3
|
-
description: Run all configured code review channels on a PR (Codex CLI, Gemini CLI,
|
|
3
|
+
description: Run all configured code review channels on a PR (Codex CLI, Gemini CLI, Claude CLI)
|
|
4
4
|
phase: null
|
|
5
5
|
order: null
|
|
6
6
|
dependencies: []
|
|
@@ -21,15 +21,16 @@ of remembering three separate review invocations.
|
|
|
21
21
|
The three channels are:
|
|
22
22
|
1. **Codex CLI** — OpenAI's code analysis (implementation correctness, security, API contracts)
|
|
23
23
|
2. **Gemini CLI** — Google's design reasoning (architectural patterns, broad context)
|
|
24
|
-
3. **
|
|
24
|
+
3. **Claude CLI** — Anthropic's code review (plan alignment, code quality, testing)
|
|
25
25
|
|
|
26
26
|
## Inputs
|
|
27
27
|
|
|
28
28
|
- $ARGUMENTS — PR number (optional; auto-detected from current branch if omitted)
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
29
|
+
- `.mmr.yaml` — MMR CLI configuration (channels, review_criteria, defaults)
|
|
30
|
+
|
|
31
|
+
The CLI handles review context via config (`review_criteria` in `.mmr.yaml`).
|
|
32
|
+
Project-specific standards (coding-standards, review-standards) are referenced
|
|
33
|
+
in the review criteria config rather than read at dispatch time.
|
|
33
34
|
|
|
34
35
|
## Expected Outputs
|
|
35
36
|
|
|
@@ -48,119 +49,98 @@ PR_NUMBER="${ARGUMENTS:-$(gh pr view --json number -q .number 2>/dev/null)}"
|
|
|
48
49
|
|
|
49
50
|
If no PR is found, stop and tell the user to create a PR first.
|
|
50
51
|
|
|
51
|
-
### Step 2:
|
|
52
|
+
### Step 2: Run MMR Review
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
Use the MMR CLI as the primary entry point for automated dispatch, reconciliation, and verdict:
|
|
54
55
|
|
|
55
56
|
```bash
|
|
56
|
-
|
|
57
|
+
MMR_RESULT=$(mmr review --pr "$PR_NUMBER" --sync --format json)
|
|
58
|
+
# Extract job_id from JSON output for use in mmr reconcile
|
|
59
|
+
JOB_ID=$(echo "$MMR_RESULT" | grep -o '"job_id": "[^"]*"' | head -1 | cut -d'"' -f4)
|
|
57
60
|
```
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
- `
|
|
62
|
-
-
|
|
63
|
-
-
|
|
62
|
+
The CLI handles:
|
|
63
|
+
- Installation and auth checks for each channel (codex, gemini, claude)
|
|
64
|
+
- Compensating passes when channels are unavailable (dispatched via `claude -p`)
|
|
65
|
+
- Output parsing and finding reconciliation
|
|
66
|
+
- Verdict derivation (pass/degraded-pass/blocked/needs-user-decision)
|
|
67
|
+
- Exit codes: 0=pass/degraded-pass, 2=blocked, 3=needs-user-decision
|
|
64
68
|
|
|
65
|
-
|
|
69
|
+
The CLI supports multiple input modes:
|
|
70
|
+
- `--pr <number>` — review a GitHub PR (fetches diff via `gh pr diff`)
|
|
71
|
+
- `--diff <file>` — review a diff file
|
|
72
|
+
- `--staged` — review staged changes (`git diff --cached`)
|
|
73
|
+
- `--base <ref> --head <ref>` — review diff between two refs
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
**Manual fallback** (when MMR CLI is not installed):
|
|
68
76
|
|
|
69
|
-
|
|
77
|
+
Run Codex, Gemini, and Claude CLI commands individually as foreground Bash calls.
|
|
78
|
+
Never use `run_in_background`, `&`, or `nohup`.
|
|
70
79
|
|
|
71
80
|
#### Channel 1: Codex CLI
|
|
72
81
|
|
|
73
|
-
**Installation check:**
|
|
74
|
-
```bash
|
|
75
|
-
command -v codex >/dev/null 2>&1
|
|
76
|
-
```
|
|
77
|
-
- If `codex` is not installed: queue a compensating Claude self-review pass focused on implementation correctness, security, and API contracts. Record root-cause `not_installed`. Skip to next channel.
|
|
78
|
-
|
|
79
|
-
**Auth check first** (auth tokens expire — always re-verify):
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
codex login status 2>/dev/null && echo "codex authenticated" || echo "codex NOT authenticated"
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
If auth fails, tell the user: "Codex auth expired. Run: `! codex login`" — do NOT
|
|
86
|
-
silently fall back. After the user re-authenticates, retry.
|
|
87
|
-
|
|
88
|
-
If auth cannot be recovered, queue a compensating pass (same focus as above). Record root-cause `auth_failed`.
|
|
89
|
-
If auth check times out (~5s), retry once. If still failing, record root-cause `auth_timeout` and queue compensating pass.
|
|
90
|
-
|
|
91
|
-
**Run the review:**
|
|
92
|
-
|
|
93
82
|
```bash
|
|
83
|
+
command -v codex >/dev/null 2>&1 || echo "Codex not installed"
|
|
84
|
+
codex login status 2>/dev/null
|
|
94
85
|
codex exec --skip-git-repo-check -s read-only --ephemeral "REVIEW_PROMPT" 2>/dev/null
|
|
95
86
|
```
|
|
96
87
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
- Coding standards from docs/coding-standards.md
|
|
100
|
-
- Review standards from docs/review-standards.md (if exists)
|
|
101
|
-
- Instruction to report P0/P1/P2 findings as JSON with severity, location (file:line), description, and suggestion
|
|
102
|
-
|
|
103
|
-
If the CLI exits with a non-zero code, produces malformed/unparseable output, or is killed by the tool runner timeout, record root-cause `failed` and queue a compensating pass for that channel.
|
|
88
|
+
If not installed or auth fails, queue a compensating pass focused on implementation
|
|
89
|
+
correctness, security, and API contracts. Auth failure recovery: `! codex login`.
|
|
104
90
|
|
|
105
91
|
#### Channel 2: Gemini CLI
|
|
106
92
|
|
|
107
|
-
**Installation check:**
|
|
108
93
|
```bash
|
|
109
|
-
command -v gemini >/dev/null 2>&1
|
|
94
|
+
command -v gemini >/dev/null 2>&1 || echo "Gemini not installed"
|
|
95
|
+
NO_BROWSER=true gemini -p "respond with ok" -o json 2>&1
|
|
96
|
+
NO_BROWSER=true gemini -p "REVIEW_PROMPT" --output-format json --approval-mode yolo 2>/dev/null
|
|
110
97
|
```
|
|
111
|
-
- If `gemini` is not installed: queue a compensating Claude self-review pass focused on architectural patterns, design reasoning, and broad context. Record root-cause `not_installed`. Label findings as `[compensating: Gemini-equivalent]`. Skip to next channel.
|
|
112
98
|
|
|
113
|
-
|
|
99
|
+
If not installed or auth fails, queue a compensating pass focused on architectural
|
|
100
|
+
patterns, design reasoning, and broad context. Auth failure recovery: `! gemini -p "hello"`.
|
|
101
|
+
|
|
102
|
+
#### Channel 3: Claude CLI
|
|
114
103
|
|
|
115
104
|
```bash
|
|
116
|
-
|
|
117
|
-
GEMINI_EXIT=$?
|
|
118
|
-
if [ "$GEMINI_EXIT" -eq 0 ]; then
|
|
119
|
-
echo "gemini authenticated"
|
|
120
|
-
elif [ "$GEMINI_EXIT" -eq 41 ]; then
|
|
121
|
-
echo "gemini NOT authenticated (exit 41: auth error)"
|
|
122
|
-
fi
|
|
105
|
+
claude -p "REVIEW_PROMPT" --output-format json 2>/dev/null
|
|
123
106
|
```
|
|
124
107
|
|
|
125
|
-
|
|
108
|
+
Claude CLI handles its own auth. Focus: plan alignment, code quality, testing.
|
|
126
109
|
|
|
127
|
-
|
|
128
|
-
|
|
110
|
+
**After all channels:** Run any queued compensating passes as additional `claude -p`
|
|
111
|
+
dispatches with focused prompts. Label findings as `[compensating: Codex-equivalent]`
|
|
112
|
+
or `[compensating: Gemini-equivalent]`.
|
|
129
113
|
|
|
130
|
-
|
|
114
|
+
### Step 3: Run Agent Code Review (4th channel)
|
|
131
115
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
116
|
+
Dispatch your platform's code-reviewer skill for a complementary review:
|
|
117
|
+
- **Claude Code:** dispatch `superpowers:code-reviewer` subagent with the PR diff and review criteria
|
|
118
|
+
- **Other platforms:** use your platform's equivalent agent review skill
|
|
135
119
|
|
|
136
|
-
|
|
137
|
-
each reviews independently.
|
|
120
|
+
The agent skill runs inside your agent's context — it has access to conversation history, project knowledge, and plan context that external CLIs lack.
|
|
138
121
|
|
|
139
|
-
|
|
122
|
+
**Important:** The agent's review output must use MMR-compatible finding schema: each finding needs `severity` (P0-P3), `location` (file:line), and `description` (`suggestion` is optional). The strict validator in `mmr reconcile` will reject findings with missing or invalid required fields.
|
|
140
123
|
|
|
141
|
-
|
|
124
|
+
### Step 4: Inject Agent Review into MMR
|
|
142
125
|
|
|
143
|
-
|
|
144
|
-
Claude, which is always available).
|
|
126
|
+
Feed the agent review findings into MMR for unified reconciliation:
|
|
145
127
|
|
|
146
128
|
```bash
|
|
147
|
-
|
|
148
|
-
|
|
129
|
+
# job_id is captured from mmr review --sync --format json output
|
|
130
|
+
# Write agent findings to a temp file for mmr reconcile
|
|
131
|
+
echo "$AGENT_FINDINGS" > /tmp/agent-findings.json
|
|
132
|
+
mmr reconcile "$JOB_ID" --channel superpowers --input /tmp/agent-findings.json
|
|
149
133
|
```
|
|
150
134
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
- `BASE_SHA` — base commit
|
|
156
|
-
- `HEAD_SHA` — head commit
|
|
157
|
-
- `DESCRIPTION` — PR summary
|
|
135
|
+
The `reconcile` command:
|
|
136
|
+
- Adds the agent's findings as a new channel in the job
|
|
137
|
+
- Re-runs reconciliation across ALL channels (CLI + agent)
|
|
138
|
+
- Outputs the unified verdict with all sources included
|
|
158
139
|
|
|
159
|
-
|
|
140
|
+
### Step 5: Reconcile Findings
|
|
160
141
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
After all channels complete, reconcile findings:
|
|
142
|
+
When using `mmr review --sync`, reconciliation is automatic. For manual fallback,
|
|
143
|
+
reconcile findings after all channels complete:
|
|
164
144
|
|
|
165
145
|
| Scenario | Confidence | Action |
|
|
166
146
|
|----------|-----------|--------|
|
|
@@ -171,7 +151,7 @@ After all channels complete, reconcile findings:
|
|
|
171
151
|
| Channels contradict each other | **Low** | Present to user for adjudication |
|
|
172
152
|
| Compensating-pass P0/P1/P2 finding | **Single-source** | Fix per normal thresholds, label as compensating |
|
|
173
153
|
|
|
174
|
-
### Step
|
|
154
|
+
### Step 6: Report Results
|
|
175
155
|
|
|
176
156
|
Output a review summary in this format:
|
|
177
157
|
|
|
@@ -179,9 +159,10 @@ Output a review summary in this format:
|
|
|
179
159
|
## Code Review Summary — PR #[number]
|
|
180
160
|
|
|
181
161
|
### Channels Executed
|
|
182
|
-
- [ ] Codex CLI — root cause: [completed / not installed / auth failed /
|
|
183
|
-
- [ ] Gemini CLI — root cause: [completed / not installed / auth failed /
|
|
184
|
-
- [ ]
|
|
162
|
+
- [ ] Codex CLI — root cause: [completed / not installed / auth failed / timeout / failed], coverage: [full / compensating (Codex-equivalent)]
|
|
163
|
+
- [ ] Gemini CLI — root cause: [completed / not installed / auth failed / timeout / failed], coverage: [full / compensating (Gemini-equivalent)]
|
|
164
|
+
- [ ] Claude CLI — root cause: [completed / not_installed / auth_failed / timeout / failed], coverage: [full / compensating]
|
|
165
|
+
- [ ] Agent review — [completed / skipped], injected via mmr reconcile
|
|
185
166
|
|
|
186
167
|
### Consensus Findings (High Confidence)
|
|
187
168
|
[Findings flagged by 2+ channels]
|
|
@@ -196,7 +177,7 @@ Output a review summary in this format:
|
|
|
196
177
|
[pass / degraded-pass / blocked / needs-user-decision]
|
|
197
178
|
```
|
|
198
179
|
|
|
199
|
-
### Step
|
|
180
|
+
### Step 6a: Final Verdict
|
|
200
181
|
|
|
201
182
|
Return exactly one verdict:
|
|
202
183
|
|
|
@@ -209,17 +190,19 @@ Verdict precedence: `needs-user-decision` > `blocked` > `degraded-pass` > `pass`
|
|
|
209
190
|
|
|
210
191
|
When compensating passes ran, maximum achievable verdict is `degraded-pass`. When both external channels were compensated, note "All findings are single-model."
|
|
211
192
|
|
|
212
|
-
### Step
|
|
193
|
+
### Step 7: Fix P0/P1/P2 Findings
|
|
213
194
|
|
|
214
195
|
If any P0, P1, or P2 findings exist:
|
|
215
196
|
1. Fix them in the code
|
|
216
197
|
2. Push the fixes: `git push`
|
|
217
|
-
3. Re-run the
|
|
198
|
+
3. Re-run the review to verify fixes: `mmr review --pr "$PR_NUMBER" --sync --format json`
|
|
218
199
|
4. After 3 fix rounds with unresolved P0/P1/P2 findings, stop and ask the user for direction — do NOT merge automatically. Document remaining findings and let the user decide whether to continue fixing, create follow-up issues, or override.
|
|
219
200
|
|
|
220
|
-
**Fix
|
|
201
|
+
**Note:** Fix cycles are an orchestration concern — the caller (agent or human) handles the fix loop. The CLI provides the review and verdict; the caller decides whether to fix and re-run.
|
|
202
|
+
|
|
203
|
+
**Fix cycle channel rule:** Re-run only channels that originally completed or ran as compensating passes. Never retry a channel marked `not_installed`, `auth_failed`, or `timeout` during fix rounds — its availability does not change within a session.
|
|
221
204
|
|
|
222
|
-
### Step
|
|
205
|
+
### Step 8: Confirm Completion
|
|
223
206
|
|
|
224
207
|
After all findings are resolved (or 3 rounds complete), output:
|
|
225
208
|
|
|
@@ -236,21 +219,22 @@ Do NOT proceed to the next task or merge until this confirmation is output.
|
|
|
236
219
|
| Channel not installed | Queue compensating pass, report root-cause `not_installed` |
|
|
237
220
|
| Auth expired, user recovers | Retry dispatch |
|
|
238
221
|
| Auth expired, user declines | Queue compensating pass, report root-cause `auth_failed` |
|
|
239
|
-
| Auth check timeout (after retry) | Queue compensating pass, report root-cause `
|
|
222
|
+
| Auth check timeout (after retry) | Queue compensating pass, report root-cause `timeout` |
|
|
240
223
|
| Channel fails during execution | Queue compensating pass, report root-cause `failed` |
|
|
241
224
|
| Both external channels unavailable | Two compensating passes, max verdict: `degraded-pass`, note "All findings single-model" |
|
|
242
|
-
| Superpowers unavailable | Run available CLIs, warn user (Superpowers is always-available Claude — no compensating pass) |
|
|
243
225
|
|
|
244
226
|
## Process Rules
|
|
245
227
|
|
|
246
|
-
1. **Foreground only** — Always run Codex and
|
|
247
|
-
2. **All three channels are mandatory** —
|
|
228
|
+
1. **Foreground only** — Always run Codex, Gemini, and Claude CLI commands as foreground Bash calls. Never use `run_in_background`, `&`, or `nohup`.
|
|
229
|
+
2. **All three channels are mandatory** — Codex CLI, Gemini CLI, and Claude CLI. Skip only when a tool is genuinely not installed, never by choice.
|
|
248
230
|
3. **Auth failures are not silent** — always surface to the user with the exact recovery command.
|
|
249
231
|
4. **Independence** — never share one channel's output with another. Each reviews the diff independently.
|
|
250
232
|
5. **Fix before proceeding** — P0/P1/P2 findings must be resolved before moving to the next task.
|
|
251
233
|
6. **3-round limit** — never attempt more than 3 fix rounds. Surface unresolved findings to the user.
|
|
252
234
|
7. **Document everything** — the review summary must show which channels ran and which were skipped, with reasons.
|
|
253
|
-
8. **
|
|
235
|
+
8. **CLI-first** — use `mmr review --sync` as the primary entry point. Manual dispatch is a fallback only.
|
|
236
|
+
9. **Job storage** — the CLI stores job data at `~/.mmr/jobs/{job-id}/results.json`. Review results are available via `mmr results <job-id>`.
|
|
237
|
+
10. **Dispatch pattern** follows `multi-model-review-dispatch` knowledge entry. When modifying channel dispatch in this file, verify consistency with `review-code.md` and `post-implementation-review.md`.
|
|
254
238
|
|
|
255
239
|
---
|
|
256
240
|
|
|
@@ -161,5 +161,25 @@ describe('adopt CLI flag integration', () => {
|
|
|
161
161
|
expect(result.projectType).toBe('backend');
|
|
162
162
|
expect(result.detectedConfig?.config?.apiStyle).toBe('graphql');
|
|
163
163
|
});
|
|
164
|
+
it('--backend-domain fintech with --project-type backend sets domain', async () => {
|
|
165
|
+
const dir = tracked(makeTmpProject({}));
|
|
166
|
+
const overrides = buildFlagOverrides({
|
|
167
|
+
'backend-api-style': 'rest',
|
|
168
|
+
'backend-domain': 'fintech',
|
|
169
|
+
});
|
|
170
|
+
const result = await runAdoption({
|
|
171
|
+
projectRoot: dir,
|
|
172
|
+
metaPromptDir: path.join(dir, '.scaffold'),
|
|
173
|
+
methodology: 'deep',
|
|
174
|
+
dryRun: true,
|
|
175
|
+
auto: true,
|
|
176
|
+
force: true,
|
|
177
|
+
verbose: false,
|
|
178
|
+
explicitProjectType: 'backend',
|
|
179
|
+
flagOverrides: overrides,
|
|
180
|
+
});
|
|
181
|
+
expect(result.projectType).toBe('backend');
|
|
182
|
+
expect(result.detectedConfig?.config?.domain).toBe('fintech');
|
|
183
|
+
});
|
|
164
184
|
});
|
|
165
185
|
//# sourceMappingURL=adopt.cli-flags.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adopt.cli-flags.test.js","sourceRoot":"","sources":["../../../src/cli/commands/adopt.cli-flags.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adopt.cli-flags.test.js","sourceRoot":"","sources":["../../../src/cli/commands/adopt.cli-flags.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/adopt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,OAAO,CAAA;AAYhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAa5D,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAYD,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,IAAI,CAgDN;
|
|
1
|
+
{"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/adopt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,OAAO,CAAA;AAYhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAa5D,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAYD,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,IAAI,CAgDN;AAsDD,QAAA,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CA0anE,CAAA;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -77,7 +77,10 @@ function writeOrUpdateState(projectRoot, result, methodology, metaPromptDir) {
|
|
|
77
77
|
slug,
|
|
78
78
|
produces: mp.frontmatter.outputs ?? [],
|
|
79
79
|
}));
|
|
80
|
-
|
|
80
|
+
// Wave 3a: adopt writes a fresh single-service state.json — no services[]
|
|
81
|
+
// available here, so pass `() => undefined` for the configProvider and
|
|
82
|
+
// omit the optional `config` param (schema-version stays 1).
|
|
83
|
+
const stateManager = new StateManager(projectRoot, () => [], () => undefined);
|
|
81
84
|
stateManager.initializeState({
|
|
82
85
|
enabledSteps: allSteps,
|
|
83
86
|
scaffoldVersion: '2.0.0',
|
|
@@ -91,7 +94,7 @@ function writeOrUpdateState(projectRoot, result, methodology, metaPromptDir) {
|
|
|
91
94
|
}
|
|
92
95
|
else {
|
|
93
96
|
// Update existing state — mark stepsCompleted
|
|
94
|
-
const stateManager = new StateManager(projectRoot, () => []);
|
|
97
|
+
const stateManager = new StateManager(projectRoot, () => [], () => undefined);
|
|
95
98
|
const state = stateManager.loadState();
|
|
96
99
|
const now = new Date().toISOString();
|
|
97
100
|
for (const slug of result.stepsCompleted) {
|
|
@@ -174,6 +177,11 @@ const adoptCommand = {
|
|
|
174
177
|
type: 'string',
|
|
175
178
|
describe: 'Deploy target',
|
|
176
179
|
choices: ['serverless', 'container', 'long-running'],
|
|
180
|
+
})
|
|
181
|
+
.option('backend-domain', {
|
|
182
|
+
type: 'string',
|
|
183
|
+
describe: 'Backend domain (none | fintech)',
|
|
184
|
+
choices: ['none', 'fintech'],
|
|
177
185
|
})
|
|
178
186
|
// CLI Configuration
|
|
179
187
|
.option('cli-interactivity', {
|
|
@@ -396,7 +404,7 @@ const adoptCommand = {
|
|
|
396
404
|
.group(['project-type'], 'Configuration:')
|
|
397
405
|
.group(['web-rendering', 'web-deploy-target', 'web-realtime', 'web-auth-flow'], 'Web-App Configuration:')
|
|
398
406
|
.group(['backend-api-style', 'backend-data-store', 'backend-auth',
|
|
399
|
-
'backend-messaging', 'backend-deploy-target'], 'Backend Configuration:')
|
|
407
|
+
'backend-messaging', 'backend-deploy-target', 'backend-domain'], 'Backend Configuration:')
|
|
400
408
|
.group(['cli-interactivity', 'cli-distribution', 'cli-structured-output'], 'CLI Configuration:')
|
|
401
409
|
.group([...LIB_FLAGS], 'Library Configuration:')
|
|
402
410
|
.group([...MOBILE_FLAGS], 'Mobile-App Configuration:')
|