takt 0.33.2 → 0.35.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 +32 -25
- package/builtins/en/config.yaml +8 -8
- package/builtins/en/facets/instructions/dual-team-leader-implement.md +8 -2
- package/builtins/en/facets/instructions/plan.md +3 -0
- package/builtins/en/facets/instructions/review-requirements.md +12 -7
- package/builtins/en/facets/instructions/supervise.md +4 -2
- package/builtins/en/facets/instructions/team-leader-implement.md +3 -2
- package/builtins/en/facets/knowledge/architecture.md +93 -0
- package/builtins/en/facets/knowledge/cqrs-es.md +64 -5
- package/builtins/en/facets/output-contracts/plan.md +8 -0
- package/builtins/en/facets/output-contracts/requirements-review.md +10 -8
- package/builtins/en/facets/output-contracts/supervisor-validation.md +8 -0
- package/builtins/en/facets/personas/planner.md +7 -0
- package/builtins/en/facets/personas/requirements-reviewer.md +7 -0
- package/builtins/en/facets/personas/supervisor.md +10 -0
- package/builtins/en/facets/policies/coding.md +87 -0
- package/builtins/en/{piece-categories.yaml → workflow-categories.yaml} +10 -10
- package/builtins/en/{pieces → workflows}/audit-architecture-backend.yaml +3 -3
- package/builtins/en/{pieces → workflows}/audit-architecture-dual.yaml +3 -3
- package/builtins/en/{pieces → workflows}/audit-architecture-frontend.yaml +3 -3
- package/builtins/en/{pieces → workflows}/audit-architecture.yaml +3 -3
- package/builtins/en/{pieces → workflows}/audit-e2e.yaml +4 -4
- package/builtins/en/{pieces → workflows}/audit-security.yaml +3 -3
- package/builtins/en/{pieces → workflows}/audit-unit.yaml +4 -4
- package/builtins/en/{pieces → workflows}/backend-cqrs-mini.yaml +5 -5
- package/builtins/en/{pieces → workflows}/backend-cqrs.yaml +5 -5
- package/builtins/en/{pieces → workflows}/backend-mini.yaml +5 -5
- package/builtins/en/{pieces → workflows}/backend.yaml +5 -5
- package/builtins/en/{pieces → workflows}/compound-eye.yaml +5 -5
- package/builtins/en/{pieces → workflows}/deep-research.yaml +5 -5
- package/builtins/en/{pieces → workflows}/default.yaml +5 -5
- package/builtins/en/{pieces → workflows}/dual-cqrs-mini.yaml +5 -5
- package/builtins/en/{pieces → workflows}/dual-cqrs.yaml +5 -5
- package/builtins/en/{pieces → workflows}/dual-mini.yaml +5 -5
- package/builtins/en/{pieces → workflows}/dual.yaml +23 -7
- package/builtins/en/{pieces → workflows}/frontend-mini.yaml +5 -5
- package/builtins/en/{pieces → workflows}/frontend.yaml +5 -5
- package/builtins/en/{pieces → workflows}/magi.yaml +4 -4
- package/builtins/en/{pieces → workflows}/research.yaml +5 -5
- package/builtins/en/{pieces → workflows}/review-backend-cqrs.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-backend.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-default.yaml +5 -5
- package/builtins/en/{pieces → workflows}/review-dual-cqrs.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-dual.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-fix-backend-cqrs.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-fix-backend.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-fix-default.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-fix-dual-cqrs.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-fix-dual.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-fix-frontend.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-fix-takt-default.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-frontend.yaml +4 -4
- package/builtins/en/{pieces → workflows}/review-takt-default.yaml +5 -5
- package/builtins/en/{pieces → workflows}/takt-default.yaml +5 -5
- package/builtins/en/{pieces → workflows}/terraform.yaml +5 -5
- package/builtins/ja/config.yaml +8 -8
- package/builtins/ja/facets/instructions/dual-team-leader-implement.md +8 -2
- package/builtins/ja/facets/instructions/plan.md +3 -0
- package/builtins/ja/facets/instructions/review-requirements.md +12 -7
- package/builtins/ja/facets/instructions/supervise.md +4 -2
- package/builtins/ja/facets/instructions/team-leader-implement.md +3 -2
- package/builtins/ja/facets/knowledge/architecture.md +93 -0
- package/builtins/ja/facets/knowledge/cqrs-es.md +66 -6
- package/builtins/ja/facets/output-contracts/plan.md +8 -0
- package/builtins/ja/facets/output-contracts/requirements-review.md +10 -8
- package/builtins/ja/facets/output-contracts/supervisor-validation.md +8 -0
- package/builtins/ja/facets/personas/planner.md +8 -0
- package/builtins/ja/facets/personas/requirements-reviewer.md +7 -0
- package/builtins/ja/facets/personas/supervisor.md +6 -0
- package/builtins/ja/facets/policies/coding.md +87 -0
- package/builtins/ja/{piece-categories.yaml → workflow-categories.yaml} +10 -10
- package/builtins/ja/{pieces → workflows}/audit-architecture-backend.yaml +3 -3
- package/builtins/ja/{pieces → workflows}/audit-architecture-dual.yaml +3 -3
- package/builtins/ja/{pieces → workflows}/audit-architecture-frontend.yaml +3 -3
- package/builtins/ja/{pieces → workflows}/audit-architecture.yaml +3 -3
- package/builtins/ja/{pieces → workflows}/audit-e2e.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/audit-security.yaml +3 -3
- package/builtins/ja/{pieces → workflows}/audit-unit.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/backend-cqrs-mini.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/backend-cqrs.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/backend-mini.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/backend.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/compound-eye.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/deep-research.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/default.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/dual-cqrs-mini.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/dual-cqrs.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/dual-mini.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/dual.yaml +23 -7
- package/builtins/ja/{pieces → workflows}/frontend-mini.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/frontend.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/magi.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/research.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/review-backend-cqrs.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-backend.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-default.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/review-dual-cqrs.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-dual.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-fix-backend-cqrs.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-fix-backend.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-fix-default.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-fix-dual-cqrs.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-fix-dual.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-fix-frontend.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-fix-takt-default.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-frontend.yaml +4 -4
- package/builtins/ja/{pieces → workflows}/review-takt-default.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/takt-default.yaml +5 -5
- package/builtins/ja/{pieces → workflows}/terraform.yaml +5 -5
- package/builtins/schemas/decomposition.json +1 -5
- package/builtins/schemas/more-parts.json +1 -5
- package/builtins/skill/SKILL.md +54 -52
- package/builtins/skill/references/engine.md +45 -45
- package/builtins/skill/references/yaml-schema.md +46 -38
- package/builtins/skill-codex/SKILL.md +48 -46
- package/builtins/skill-codex/references/engine.md +32 -32
- package/builtins/skill-codex/references/yaml-schema.md +46 -38
- package/dist/agents/decompose-task-usecase.d.ts +3 -1
- package/dist/agents/decompose-task-usecase.d.ts.map +1 -1
- package/dist/agents/decompose-task-usecase.js +2 -112
- package/dist/agents/decompose-task-usecase.js.map +1 -1
- package/dist/agents/judge-status-usecase.d.ts +17 -0
- package/dist/agents/judge-status-usecase.d.ts.map +1 -1
- package/dist/agents/judge-status-usecase.js +53 -31
- package/dist/agents/judge-status-usecase.js.map +1 -1
- package/dist/agents/judge-utils.d.ts +6 -0
- package/dist/agents/judge-utils.d.ts.map +1 -1
- package/dist/agents/judge-utils.js +12 -0
- package/dist/agents/judge-utils.js.map +1 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +12 -8
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/structured-caller/contracts.d.ts +18 -0
- package/dist/agents/structured-caller/contracts.d.ts.map +1 -0
- package/dist/agents/structured-caller/contracts.js +2 -0
- package/dist/agents/structured-caller/contracts.js.map +1 -0
- package/dist/agents/structured-caller/default-structured-caller.d.ts +19 -0
- package/dist/agents/structured-caller/default-structured-caller.d.ts.map +1 -0
- package/dist/agents/structured-caller/default-structured-caller.js +25 -0
- package/dist/agents/structured-caller/default-structured-caller.js.map +1 -0
- package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts +19 -0
- package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts.map +1 -0
- package/dist/agents/structured-caller/prompt-based-structured-caller.js +151 -0
- package/dist/agents/structured-caller/prompt-based-structured-caller.js.map +1 -0
- package/dist/agents/structured-caller/shared.d.ts +5 -0
- package/dist/agents/structured-caller/shared.d.ts.map +1 -0
- package/dist/agents/structured-caller/shared.js +36 -0
- package/dist/agents/structured-caller/shared.js.map +1 -0
- package/dist/agents/structured-caller.d.ts +4 -0
- package/dist/agents/structured-caller.d.ts.map +1 -0
- package/dist/agents/structured-caller.js +3 -0
- package/dist/agents/structured-caller.js.map +1 -0
- package/dist/agents/team-leader-structured-output.d.ts +19 -0
- package/dist/agents/team-leader-structured-output.d.ts.map +1 -0
- package/dist/agents/team-leader-structured-output.js +152 -0
- package/dist/agents/team-leader-structured-output.js.map +1 -0
- package/dist/agents/types.d.ts +4 -3
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/app/cli/commands.js +31 -14
- package/dist/app/cli/commands.js.map +1 -1
- package/dist/app/cli/helpers.d.ts +1 -0
- package/dist/app/cli/helpers.d.ts.map +1 -1
- package/dist/app/cli/helpers.js +12 -0
- package/dist/app/cli/helpers.js.map +1 -1
- package/dist/app/cli/program.d.ts.map +1 -1
- package/dist/app/cli/program.js +4 -3
- package/dist/app/cli/program.js.map +1 -1
- package/dist/app/cli/routing.d.ts.map +1 -1
- package/dist/app/cli/routing.js +12 -4
- package/dist/app/cli/routing.js.map +1 -1
- package/dist/core/models/config-schemas.d.ts +720 -0
- package/dist/core/models/config-schemas.d.ts.map +1 -0
- package/dist/core/models/config-schemas.js +143 -0
- package/dist/core/models/config-schemas.js.map +1 -0
- package/dist/core/models/config-types.d.ts +12 -8
- package/dist/core/models/config-types.d.ts.map +1 -1
- package/dist/core/models/part.d.ts +0 -2
- package/dist/core/models/part.d.ts.map +1 -1
- package/dist/core/models/piece-types.d.ts +9 -106
- package/dist/core/models/piece-types.d.ts.map +1 -1
- package/dist/core/models/piece-types.js +2 -4
- package/dist/core/models/piece-types.js.map +1 -1
- package/dist/core/models/provider-profiles.d.ts +1 -1
- package/dist/core/models/provider-profiles.d.ts.map +1 -1
- package/dist/core/models/schema-base.d.ts +522 -0
- package/dist/core/models/schema-base.d.ts.map +1 -0
- package/dist/core/models/schema-base.js +218 -0
- package/dist/core/models/schema-base.js.map +1 -0
- package/dist/core/models/schemas.d.ts +4 -1638
- package/dist/core/models/schemas.d.ts.map +1 -1
- package/dist/core/models/schemas.js +4 -563
- package/dist/core/models/schemas.js.map +1 -1
- package/dist/core/models/workflow-schemas.d.ts +1741 -0
- package/dist/core/models/workflow-schemas.d.ts.map +1 -0
- package/dist/core/models/workflow-schemas.js +217 -0
- package/dist/core/models/workflow-schemas.js.map +1 -0
- package/dist/core/piece/engine/ArpeggioRunner.d.ts +2 -6
- package/dist/core/piece/engine/ArpeggioRunner.d.ts.map +1 -1
- package/dist/core/piece/engine/ArpeggioRunner.js +5 -1
- package/dist/core/piece/engine/ArpeggioRunner.js.map +1 -1
- package/dist/core/piece/engine/MovementExecutor.d.ts +2 -6
- package/dist/core/piece/engine/MovementExecutor.d.ts.map +1 -1
- package/dist/core/piece/engine/MovementExecutor.js +5 -1
- package/dist/core/piece/engine/MovementExecutor.js.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.d.ts +1 -1
- package/dist/core/piece/engine/OptionsBuilder.d.ts.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.js +14 -35
- package/dist/core/piece/engine/OptionsBuilder.js.map +1 -1
- package/dist/core/piece/engine/ParallelRunner.d.ts +2 -6
- package/dist/core/piece/engine/ParallelRunner.d.ts.map +1 -1
- package/dist/core/piece/engine/ParallelRunner.js +115 -55
- package/dist/core/piece/engine/ParallelRunner.js.map +1 -1
- package/dist/core/piece/engine/PieceEngine.d.ts +1 -1
- package/dist/core/piece/engine/PieceEngine.d.ts.map +1 -1
- package/dist/core/piece/engine/PieceEngine.js +11 -10
- package/dist/core/piece/engine/PieceEngine.js.map +1 -1
- package/dist/core/piece/engine/TeamLeaderRunner.d.ts +0 -7
- package/dist/core/piece/engine/TeamLeaderRunner.d.ts.map +1 -1
- package/dist/core/piece/engine/TeamLeaderRunner.js +9 -6
- package/dist/core/piece/engine/TeamLeaderRunner.js.map +1 -1
- package/dist/core/piece/engine/parallel-logger.d.ts.map +1 -1
- package/dist/core/piece/engine/parallel-logger.js +2 -0
- package/dist/core/piece/engine/parallel-logger.js.map +1 -1
- package/dist/core/piece/engine/team-leader-common.d.ts.map +1 -1
- package/dist/core/piece/engine/team-leader-common.js +6 -3
- package/dist/core/piece/engine/team-leader-common.js.map +1 -1
- package/dist/core/piece/evaluation/RuleEvaluator.d.ts +9 -3
- package/dist/core/piece/evaluation/RuleEvaluator.d.ts.map +1 -1
- package/dist/core/piece/evaluation/RuleEvaluator.js +18 -14
- package/dist/core/piece/evaluation/RuleEvaluator.js.map +1 -1
- package/dist/core/piece/instruction/InstructionBuilder.d.ts +4 -4
- package/dist/core/piece/instruction/InstructionBuilder.js +9 -9
- package/dist/core/piece/instruction/InstructionBuilder.js.map +1 -1
- package/dist/core/piece/instruction/instruction-context.d.ts +1 -1
- package/dist/core/piece/instruction/instruction-context.js +5 -5
- package/dist/core/piece/instruction/instruction-context.js.map +1 -1
- package/dist/core/piece/part-definition-validator.d.ts.map +1 -1
- package/dist/core/piece/part-definition-validator.js +3 -6
- package/dist/core/piece/part-definition-validator.js.map +1 -1
- package/dist/core/piece/permission-profile-resolution.d.ts +0 -12
- package/dist/core/piece/permission-profile-resolution.d.ts.map +1 -1
- package/dist/core/piece/permission-profile-resolution.js +1 -12
- package/dist/core/piece/permission-profile-resolution.js.map +1 -1
- package/dist/core/piece/phase-runner.d.ts +7 -1
- package/dist/core/piece/phase-runner.d.ts.map +1 -1
- package/dist/core/piece/phase-runner.js.map +1 -1
- package/dist/core/piece/provider-resolution.d.ts +0 -2
- package/dist/core/piece/provider-resolution.d.ts.map +1 -1
- package/dist/core/piece/provider-resolution.js +0 -2
- package/dist/core/piece/provider-resolution.js.map +1 -1
- package/dist/core/piece/status-judgment-phase.d.ts.map +1 -1
- package/dist/core/piece/status-judgment-phase.js +7 -2
- package/dist/core/piece/status-judgment-phase.js.map +1 -1
- package/dist/core/piece/types.d.ts +7 -9
- package/dist/core/piece/types.d.ts.map +1 -1
- package/dist/core/runtime/runtime-environment.d.ts.map +1 -1
- package/dist/core/runtime/runtime-environment.js +15 -0
- package/dist/core/runtime/runtime-environment.js.map +1 -1
- package/dist/features/config/deploySkill.js +1 -1
- package/dist/features/config/deploySkill.js.map +1 -1
- package/dist/features/config/deploySkillCodex.js +1 -1
- package/dist/features/config/deploySkillCodex.js.map +1 -1
- package/dist/features/config/deploySkillInternal.js +5 -5
- package/dist/features/config/deploySkillInternal.js.map +1 -1
- package/dist/features/config/ejectBuiltin.d.ts +3 -3
- package/dist/features/config/ejectBuiltin.d.ts.map +1 -1
- package/dist/features/config/ejectBuiltin.js +53 -28
- package/dist/features/config/ejectBuiltin.js.map +1 -1
- package/dist/features/pieceSelection/index.d.ts.map +1 -1
- package/dist/features/pieceSelection/index.js +32 -31
- package/dist/features/pieceSelection/index.js.map +1 -1
- package/dist/features/pipeline/execute.d.ts.map +1 -1
- package/dist/features/pipeline/execute.js +9 -3
- package/dist/features/pipeline/execute.js.map +1 -1
- package/dist/features/pipeline/steps.d.ts.map +1 -1
- package/dist/features/pipeline/steps.js +22 -17
- package/dist/features/pipeline/steps.js.map +1 -1
- package/dist/features/prompt/preview.d.ts.map +1 -1
- package/dist/features/prompt/preview.js +9 -4
- package/dist/features/prompt/preview.js.map +1 -1
- package/dist/features/tasks/add/index.d.ts +4 -0
- package/dist/features/tasks/add/index.d.ts.map +1 -1
- package/dist/features/tasks/add/index.js +14 -5
- package/dist/features/tasks/add/index.js.map +1 -1
- package/dist/features/tasks/add/worktree-settings.d.ts.map +1 -1
- package/dist/features/tasks/add/worktree-settings.js +10 -8
- package/dist/features/tasks/add/worktree-settings.js.map +1 -1
- package/dist/features/tasks/execute/parallelExecution.js +2 -2
- package/dist/features/tasks/execute/pieceExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/pieceExecution.js +28 -27
- package/dist/features/tasks/execute/pieceExecution.js.map +1 -1
- package/dist/features/tasks/execute/postExecution.d.ts +1 -0
- package/dist/features/tasks/execute/postExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/postExecution.js +38 -24
- package/dist/features/tasks/execute/postExecution.js.map +1 -1
- package/dist/features/tasks/execute/resolveTask.d.ts +2 -1
- package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
- package/dist/features/tasks/execute/resolveTask.js +13 -11
- package/dist/features/tasks/execute/resolveTask.js.map +1 -1
- package/dist/features/tasks/execute/runAllTasks.d.ts +3 -0
- package/dist/features/tasks/execute/runAllTasks.d.ts.map +1 -0
- package/dist/features/tasks/execute/runAllTasks.js +81 -0
- package/dist/features/tasks/execute/runAllTasks.js.map +1 -0
- package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
- package/dist/features/tasks/execute/selectAndExecute.js +2 -1
- package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
- package/dist/features/tasks/execute/taskExecution.d.ts +0 -7
- package/dist/features/tasks/execute/taskExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/taskExecution.js +26 -100
- package/dist/features/tasks/execute/taskExecution.js.map +1 -1
- package/dist/features/tasks/execute/taskResultHandler.d.ts +4 -1
- package/dist/features/tasks/execute/taskResultHandler.d.ts.map +1 -1
- package/dist/features/tasks/execute/taskResultHandler.js +4 -2
- package/dist/features/tasks/execute/taskResultHandler.js.map +1 -1
- package/dist/features/tasks/execute/types.d.ts +3 -1
- package/dist/features/tasks/execute/types.d.ts.map +1 -1
- package/dist/features/tasks/index.d.ts +2 -1
- package/dist/features/tasks/index.d.ts.map +1 -1
- package/dist/features/tasks/index.js +2 -1
- package/dist/features/tasks/index.js.map +1 -1
- package/dist/features/tasks/list/index.js +2 -2
- package/dist/features/tasks/list/index.js.map +1 -1
- package/dist/features/tasks/list/listNonInteractive.d.ts.map +1 -1
- package/dist/features/tasks/list/listNonInteractive.js +6 -2
- package/dist/features/tasks/list/listNonInteractive.js.map +1 -1
- package/dist/features/tasks/list/requeueHelpers.d.ts.map +1 -1
- package/dist/features/tasks/list/requeueHelpers.js +2 -1
- package/dist/features/tasks/list/requeueHelpers.js.map +1 -1
- package/dist/features/tasks/list/taskActionTarget.d.ts +1 -1
- package/dist/features/tasks/list/taskActionTarget.d.ts.map +1 -1
- package/dist/features/tasks/list/taskActionTarget.js +4 -11
- package/dist/features/tasks/list/taskActionTarget.js.map +1 -1
- package/dist/features/tasks/list/taskRetryActions.d.ts.map +1 -1
- package/dist/features/tasks/list/taskRetryActions.js +12 -11
- package/dist/features/tasks/list/taskRetryActions.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/claude/client.d.ts +1 -7
- package/dist/infra/claude/client.d.ts.map +1 -1
- package/dist/infra/claude/client.js +2 -46
- package/dist/infra/claude/client.js.map +1 -1
- package/dist/infra/claude/executor.d.ts +1 -1
- package/dist/infra/claude/executor.d.ts.map +1 -1
- package/dist/infra/claude/executor.js +47 -27
- package/dist/infra/claude/executor.js.map +1 -1
- package/dist/infra/claude/options-builder.d.ts +0 -15
- package/dist/infra/claude/options-builder.d.ts.map +1 -1
- package/dist/infra/claude/options-builder.js +25 -28
- package/dist/infra/claude/options-builder.js.map +1 -1
- package/dist/infra/claude/permission-mode-expression.d.ts +5 -0
- package/dist/infra/claude/permission-mode-expression.d.ts.map +1 -0
- package/dist/infra/claude/permission-mode-expression.js +14 -0
- package/dist/infra/claude/permission-mode-expression.js.map +1 -0
- package/dist/infra/claude/stream-converter.d.ts.map +1 -1
- package/dist/infra/claude/stream-converter.js +26 -0
- package/dist/infra/claude/stream-converter.js.map +1 -1
- package/dist/infra/claude/types.d.ts +23 -0
- package/dist/infra/claude/types.d.ts.map +1 -1
- package/dist/infra/claude-headless/client.d.ts +4 -0
- package/dist/infra/claude-headless/client.d.ts.map +1 -0
- package/dist/infra/claude-headless/client.js +197 -0
- package/dist/infra/claude-headless/client.js.map +1 -0
- package/dist/infra/claude-headless/headless-spawn.d.ts +13 -0
- package/dist/infra/claude-headless/headless-spawn.d.ts.map +1 -0
- package/dist/infra/claude-headless/headless-spawn.js +182 -0
- package/dist/infra/claude-headless/headless-spawn.js.map +1 -0
- package/dist/infra/claude-headless/result-response.d.ts +15 -0
- package/dist/infra/claude-headless/result-response.d.ts.map +1 -0
- package/dist/infra/claude-headless/result-response.js +72 -0
- package/dist/infra/claude-headless/result-response.js.map +1 -0
- package/dist/infra/claude-headless/stream-json-lines.d.ts +14 -0
- package/dist/infra/claude-headless/stream-json-lines.d.ts.map +1 -0
- package/dist/infra/claude-headless/stream-json-lines.js +172 -0
- package/dist/infra/claude-headless/stream-json-lines.js.map +1 -0
- package/dist/infra/claude-headless/types.d.ts +21 -0
- package/dist/infra/claude-headless/types.d.ts.map +1 -0
- package/dist/infra/claude-headless/types.js +2 -0
- package/dist/infra/claude-headless/types.js.map +1 -0
- package/dist/infra/codex/client.d.ts.map +1 -1
- package/dist/infra/codex/client.js +1 -0
- package/dist/infra/codex/client.js.map +1 -1
- package/dist/infra/codex/types.d.ts +2 -0
- package/dist/infra/codex/types.d.ts.map +1 -1
- package/dist/infra/codex/types.js.map +1 -1
- package/dist/infra/config/configKeyAliases.d.ts +17 -0
- package/dist/infra/config/configKeyAliases.d.ts.map +1 -0
- package/dist/infra/config/configKeyAliases.js +82 -0
- package/dist/infra/config/configKeyAliases.js.map +1 -0
- package/dist/infra/config/configNormalizers.d.ts +7 -6
- package/dist/infra/config/configNormalizers.d.ts.map +1 -1
- package/dist/infra/config/configNormalizers.js +25 -10
- package/dist/infra/config/configNormalizers.js.map +1 -1
- package/dist/infra/config/env/config-env-overrides.d.ts +6 -3
- package/dist/infra/config/env/config-env-overrides.d.ts.map +1 -1
- package/dist/infra/config/env/config-env-overrides.js +5 -194
- package/dist/infra/config/env/config-env-overrides.js.map +1 -1
- package/dist/infra/config/env/config-env-shared.d.ts +16 -0
- package/dist/infra/config/env/config-env-shared.d.ts.map +1 -0
- package/dist/infra/config/env/config-env-shared.js +62 -0
- package/dist/infra/config/env/config-env-shared.js.map +1 -0
- package/dist/infra/config/env/global-current-env-specs.d.ts +3 -0
- package/dist/infra/config/env/global-current-env-specs.d.ts.map +1 -0
- package/dist/infra/config/env/global-current-env-specs.js +63 -0
- package/dist/infra/config/env/global-current-env-specs.js.map +1 -0
- package/dist/infra/config/env/global-legacy-env-specs.d.ts +3 -0
- package/dist/infra/config/env/global-legacy-env-specs.d.ts.map +1 -0
- package/dist/infra/config/env/global-legacy-env-specs.js +122 -0
- package/dist/infra/config/env/global-legacy-env-specs.js.map +1 -0
- package/dist/infra/config/env/project-current-env-specs.d.ts +3 -0
- package/dist/infra/config/env/project-current-env-specs.d.ts.map +1 -0
- package/dist/infra/config/env/project-current-env-specs.js +35 -0
- package/dist/infra/config/env/project-current-env-specs.js.map +1 -0
- package/dist/infra/config/env/project-legacy-env-specs.d.ts +3 -0
- package/dist/infra/config/env/project-legacy-env-specs.d.ts.map +1 -0
- package/dist/infra/config/env/project-legacy-env-specs.js +80 -0
- package/dist/infra/config/env/project-legacy-env-specs.js.map +1 -0
- package/dist/infra/config/global/globalConfigAccessors.d.ts +2 -1
- package/dist/infra/config/global/globalConfigAccessors.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigAccessors.js.map +1 -1
- package/dist/infra/config/global/globalConfigCore.d.ts +4 -0
- package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigCore.js +69 -38
- package/dist/infra/config/global/globalConfigCore.js.map +1 -1
- package/dist/infra/config/global/globalConfigSerializer.js +9 -9
- package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
- package/dist/infra/config/global/initialization.d.ts +1 -1
- package/dist/infra/config/global/initialization.d.ts.map +1 -1
- package/dist/infra/config/global/initialization.js +2 -1
- package/dist/infra/config/global/initialization.js.map +1 -1
- package/dist/infra/config/global/pieceCategories.js +1 -1
- package/dist/infra/config/global/pieceCategories.js.map +1 -1
- package/dist/infra/config/issuePath.d.ts +2 -0
- package/dist/infra/config/issuePath.d.ts.map +1 -0
- package/dist/infra/config/issuePath.js +6 -0
- package/dist/infra/config/issuePath.js.map +1 -0
- package/dist/infra/config/legacy-workflow-key-deprecation.d.ts +11 -0
- package/dist/infra/config/legacy-workflow-key-deprecation.d.ts.map +1 -0
- package/dist/infra/config/legacy-workflow-key-deprecation.js +191 -0
- package/dist/infra/config/legacy-workflow-key-deprecation.js.map +1 -0
- package/dist/infra/config/loaders/agentLoader.d.ts +1 -1
- package/dist/infra/config/loaders/agentLoader.js +3 -3
- package/dist/infra/config/loaders/agentLoader.js.map +1 -1
- package/dist/infra/config/loaders/pieceCategories.d.ts +3 -3
- package/dist/infra/config/loaders/pieceCategories.d.ts.map +1 -1
- package/dist/infra/config/loaders/pieceCategories.js +55 -17
- package/dist/infra/config/loaders/pieceCategories.js.map +1 -1
- package/dist/infra/config/loaders/pieceLoadWarning.d.ts +2 -0
- package/dist/infra/config/loaders/pieceLoadWarning.d.ts.map +1 -0
- package/dist/infra/config/loaders/pieceLoadWarning.js +22 -0
- package/dist/infra/config/loaders/pieceLoadWarning.js.map +1 -0
- package/dist/infra/config/loaders/pieceParser.d.ts.map +1 -1
- package/dist/infra/config/loaders/pieceParser.js +8 -14
- package/dist/infra/config/loaders/pieceParser.js.map +1 -1
- package/dist/infra/config/loaders/pieceResolver.d.ts +25 -22
- package/dist/infra/config/loaders/pieceResolver.d.ts.map +1 -1
- package/dist/infra/config/loaders/pieceResolver.js +80 -72
- package/dist/infra/config/loaders/pieceResolver.js.map +1 -1
- package/dist/infra/config/paths.d.ts +6 -2
- package/dist/infra/config/paths.d.ts.map +1 -1
- package/dist/infra/config/paths.js +11 -3
- package/dist/infra/config/paths.js.map +1 -1
- package/dist/infra/config/project/projectConfig.d.ts +2 -6
- package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
- package/dist/infra/config/project/projectConfig.js +41 -65
- package/dist/infra/config/project/projectConfig.js.map +1 -1
- package/dist/infra/config/project/projectConfigTransforms.d.ts +0 -1
- package/dist/infra/config/project/projectConfigTransforms.d.ts.map +1 -1
- package/dist/infra/config/project/projectConfigTransforms.js +0 -5
- package/dist/infra/config/project/projectConfigTransforms.js.map +1 -1
- package/dist/infra/config/project/projectConfigValidation.d.ts +2 -0
- package/dist/infra/config/project/projectConfigValidation.d.ts.map +1 -0
- package/dist/infra/config/project/projectConfigValidation.js +17 -0
- package/dist/infra/config/project/projectConfigValidation.js.map +1 -0
- package/dist/infra/config/providerBlockOptions.js +1 -1
- package/dist/infra/config/providerBlockOptions.js.map +1 -1
- package/dist/infra/config/providerModelCompatibility.js +1 -1
- package/dist/infra/config/providerModelCompatibility.js.map +1 -1
- package/dist/infra/config/providerOptions.d.ts +6 -1
- package/dist/infra/config/providerOptions.d.ts.map +1 -1
- package/dist/infra/config/providerOptions.js +93 -5
- package/dist/infra/config/providerOptions.js.map +1 -1
- package/dist/infra/config/providerOptionsContract.d.ts +14 -0
- package/dist/infra/config/providerOptionsContract.d.ts.map +1 -0
- package/dist/infra/config/providerOptionsContract.js +80 -0
- package/dist/infra/config/providerOptionsContract.js.map +1 -0
- package/dist/infra/config/resolutionCache.d.ts +3 -0
- package/dist/infra/config/resolutionCache.d.ts.map +1 -1
- package/dist/infra/config/resolutionCache.js +9 -0
- package/dist/infra/config/resolutionCache.js.map +1 -1
- package/dist/infra/config/resolveConfigValue.d.ts +6 -0
- package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
- package/dist/infra/config/resolveConfigValue.js +97 -16
- package/dist/infra/config/resolveConfigValue.js.map +1 -1
- package/dist/infra/config/resolvedConfig.d.ts +2 -1
- package/dist/infra/config/resolvedConfig.d.ts.map +1 -1
- package/dist/infra/config/traced/tracedConfigLegacyEnvAdapter.d.ts +4 -0
- package/dist/infra/config/traced/tracedConfigLegacyEnvAdapter.d.ts.map +1 -0
- package/dist/infra/config/traced/tracedConfigLegacyEnvAdapter.js +47 -0
- package/dist/infra/config/traced/tracedConfigLegacyEnvAdapter.js.map +1 -0
- package/dist/infra/config/traced/tracedConfigLoader.d.ts +32 -0
- package/dist/infra/config/traced/tracedConfigLoader.d.ts.map +1 -0
- package/dist/infra/config/traced/tracedConfigLoader.js +153 -0
- package/dist/infra/config/traced/tracedConfigLoader.js.map +1 -0
- package/dist/infra/config/traced/tracedConfigRuntimeBridge.d.ts +3 -0
- package/dist/infra/config/traced/tracedConfigRuntimeBridge.d.ts.map +1 -0
- package/dist/infra/config/traced/tracedConfigRuntimeBridge.js +135 -0
- package/dist/infra/config/traced/tracedConfigRuntimeBridge.js.map +1 -0
- package/dist/infra/config/traced/tracedConfigSchema.d.ts +5 -0
- package/dist/infra/config/traced/tracedConfigSchema.d.ts.map +1 -0
- package/dist/infra/config/traced/tracedConfigSchema.js +215 -0
- package/dist/infra/config/traced/tracedConfigSchema.js.map +1 -0
- package/dist/infra/cursor/client.js +1 -1
- package/dist/infra/cursor/client.js.map +1 -1
- package/dist/infra/mock/client.d.ts.map +1 -1
- package/dist/infra/mock/client.js +31 -0
- package/dist/infra/mock/client.js.map +1 -1
- package/dist/infra/mock/scenario.js +5 -0
- package/dist/infra/mock/scenario.js.map +1 -1
- package/dist/infra/mock/types.d.ts +3 -0
- package/dist/infra/mock/types.d.ts.map +1 -1
- package/dist/infra/providers/claude-headless.d.ts +6 -0
- package/dist/infra/providers/claude-headless.d.ts.map +1 -0
- package/dist/infra/providers/claude-headless.js +34 -0
- package/dist/infra/providers/claude-headless.js.map +1 -0
- package/dist/infra/providers/claude.d.ts +1 -4
- package/dist/infra/providers/claude.d.ts.map +1 -1
- package/dist/infra/providers/claude.js +3 -17
- package/dist/infra/providers/claude.js.map +1 -1
- package/dist/infra/providers/codex.d.ts +1 -0
- package/dist/infra/providers/codex.d.ts.map +1 -1
- package/dist/infra/providers/codex.js +2 -6
- package/dist/infra/providers/codex.js.map +1 -1
- package/dist/infra/providers/copilot.d.ts +1 -0
- package/dist/infra/providers/copilot.d.ts.map +1 -1
- package/dist/infra/providers/copilot.js +1 -6
- package/dist/infra/providers/copilot.js.map +1 -1
- package/dist/infra/providers/cursor.d.ts +1 -0
- package/dist/infra/providers/cursor.d.ts.map +1 -1
- package/dist/infra/providers/cursor.js +1 -6
- package/dist/infra/providers/cursor.js.map +1 -1
- package/dist/infra/providers/index.d.ts +0 -12
- package/dist/infra/providers/index.d.ts.map +1 -1
- package/dist/infra/providers/index.js +3 -13
- package/dist/infra/providers/index.js.map +1 -1
- package/dist/infra/providers/mock.d.ts +1 -0
- package/dist/infra/providers/mock.d.ts.map +1 -1
- package/dist/infra/providers/mock.js +2 -6
- package/dist/infra/providers/mock.js.map +1 -1
- package/dist/infra/providers/opencode.d.ts +1 -0
- package/dist/infra/providers/opencode.d.ts.map +1 -1
- package/dist/infra/providers/opencode.js +1 -6
- package/dist/infra/providers/opencode.js.map +1 -1
- package/dist/infra/providers/types.d.ts +3 -15
- package/dist/infra/providers/types.d.ts.map +1 -1
- package/dist/infra/providers/types.js +0 -3
- package/dist/infra/providers/types.js.map +1 -1
- package/dist/infra/resources/index.d.ts +1 -1
- package/dist/infra/resources/index.js +1 -1
- package/dist/infra/task/autoCommit.d.ts +2 -2
- package/dist/infra/task/autoCommit.d.ts.map +1 -1
- package/dist/infra/task/autoCommit.js +16 -10
- package/dist/infra/task/autoCommit.js.map +1 -1
- package/dist/infra/task/clone.d.ts.map +1 -1
- package/dist/infra/task/clone.js +15 -3
- package/dist/infra/task/clone.js.map +1 -1
- package/dist/infra/task/display.js +2 -2
- package/dist/infra/task/display.js.map +1 -1
- package/dist/infra/task/git.d.ts +7 -1
- package/dist/infra/task/git.d.ts.map +1 -1
- package/dist/infra/task/git.js +51 -9
- package/dist/infra/task/git.js.map +1 -1
- package/dist/infra/task/index.d.ts +3 -2
- package/dist/infra/task/index.d.ts.map +1 -1
- package/dist/infra/task/index.js +3 -2
- package/dist/infra/task/index.js.map +1 -1
- package/dist/infra/task/listSerializer.d.ts +42 -0
- package/dist/infra/task/listSerializer.d.ts.map +1 -0
- package/dist/infra/task/listSerializer.js +52 -0
- package/dist/infra/task/listSerializer.js.map +1 -0
- package/dist/infra/task/mapper.d.ts.map +1 -1
- package/dist/infra/task/mapper.js +7 -2
- package/dist/infra/task/mapper.js.map +1 -1
- package/dist/infra/task/schema.d.ts +272 -12
- package/dist/infra/task/schema.d.ts.map +1 -1
- package/dist/infra/task/schema.js +142 -8
- package/dist/infra/task/schema.js.map +1 -1
- package/dist/infra/task/store.d.ts.map +1 -1
- package/dist/infra/task/store.js +2 -2
- package/dist/infra/task/store.js.map +1 -1
- package/dist/infra/task/taskExceedService.d.ts +2 -0
- package/dist/infra/task/taskExceedService.d.ts.map +1 -1
- package/dist/infra/task/taskExceedService.js +3 -1
- package/dist/infra/task/taskExceedService.js.map +1 -1
- package/dist/infra/task/types.d.ts +3 -1
- package/dist/infra/task/types.d.ts.map +1 -1
- package/dist/shared/i18n/labels_en.yaml +6 -6
- package/dist/shared/i18n/labels_ja.yaml +6 -6
- package/dist/shared/prompts/en/perform_agent_system_prompt.md +6 -6
- package/dist/shared/prompts/en/perform_judge_message.md +1 -1
- package/dist/shared/prompts/en/perform_phase1_message.md +9 -9
- package/dist/shared/prompts/en/perform_phase2_message.md +2 -2
- package/dist/shared/prompts/en/score_instruct_system_prompt.md +7 -7
- package/dist/shared/prompts/en/score_interactive_policy.md +10 -10
- package/dist/shared/prompts/en/score_interactive_system_prompt.md +9 -9
- package/dist/shared/prompts/en/score_retry_system_prompt.md +8 -8
- package/dist/shared/prompts/en/score_summary_system_prompt.md +4 -4
- package/dist/shared/prompts/ja/perform_agent_system_prompt.md +6 -6
- package/dist/shared/prompts/ja/perform_judge_message.md +1 -1
- package/dist/shared/prompts/ja/perform_phase1_message.md +9 -9
- package/dist/shared/prompts/ja/perform_phase2_message.md +2 -2
- package/dist/shared/prompts/ja/score_instruct_system_prompt.md +7 -7
- package/dist/shared/prompts/ja/score_interactive_policy.md +10 -10
- package/dist/shared/prompts/ja/score_interactive_system_prompt.md +9 -9
- package/dist/shared/prompts/ja/score_retry_system_prompt.md +8 -8
- package/dist/shared/prompts/ja/score_summary_system_prompt.md +7 -7
- package/dist/shared/types/provider.d.ts +21 -10
- package/dist/shared/types/provider.d.ts.map +1 -1
- package/dist/shared/types/provider.js +0 -9
- package/dist/shared/types/provider.js.map +1 -1
- package/dist/shared/ui/StreamDisplay.d.ts.map +1 -1
- package/dist/shared/ui/StreamDisplay.js +2 -0
- package/dist/shared/ui/StreamDisplay.js.map +1 -1
- package/dist/shared/utils/debug.d.ts +4 -0
- package/dist/shared/utils/debug.d.ts.map +1 -1
- package/dist/shared/utils/debug.js +7 -0
- package/dist/shared/utils/debug.js.map +1 -1
- package/dist/shared/utils/slackWebhook.js +2 -2
- package/dist/shared/utils/slackWebhook.js.map +1 -1
- package/dist/shared/utils/text.d.ts +4 -0
- package/dist/shared/utils/text.d.ts.map +1 -1
- package/dist/shared/utils/text.js +29 -0
- package/dist/shared/utils/text.js.map +1 -1
- package/package.json +5 -3
- package/dist/agents/ai-judge.d.ts +0 -15
- package/dist/agents/ai-judge.d.ts.map +0 -1
- package/dist/agents/ai-judge.js +0 -23
- package/dist/agents/ai-judge.js.map +0 -1
- package/dist/shared/prompts/en/perform_builtin_agent_system_prompt.md +0 -7
- package/dist/shared/prompts/ja/perform_builtin_agent_system_prompt.md +0 -7
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
- 参照資料の内容と現在の実装を突き合わせて差分を特定する
|
|
21
21
|
- **参照資料が外部実装を指す場合、「バグ修正の手がかり」か「採用すべき設計アプローチ」かを判断する。スコープを参照資料の意図より狭める場合は判断根拠を計画レポートに含めること**
|
|
22
22
|
- **要件ごとに「変更要/不要」を判定する。「不要」の場合は現行コードの該当箇所(ファイル:行)を根拠として示すこと。根拠なしの「既に正しい」は禁止**
|
|
23
|
+
- **要件は、明示要求とそこから直接導ける暗黙要求に限定する。一般的ベストプラクティスや将来拡張を要件化しない**
|
|
24
|
+
- **要件を細分化するときは、検証可能にするための分解に留める。細分化から新しい要求へ飛躍しない**
|
|
25
|
+
- **暗黙要求を置く場合は、その根拠となる明示要求を計画レポートで示す**
|
|
23
26
|
3. コードを調査して不明点を解決する
|
|
24
27
|
4. 影響範囲を特定する
|
|
25
28
|
5. ファイル構成・設計パターンを決定する(必要な場合)
|
|
@@ -14,14 +14,19 @@
|
|
|
14
14
|
|
|
15
15
|
**前回指摘の追跡(必須):**
|
|
16
16
|
- まず「Previous Response」から前回の open findings を抽出する
|
|
17
|
-
- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved` で判定する
|
|
17
|
+
- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved / reopened` で判定する
|
|
18
18
|
- `persists` と判定する場合は、未解決である根拠(ファイル/行)を必ず示す
|
|
19
19
|
|
|
20
20
|
## 判定手順
|
|
21
21
|
|
|
22
|
-
1.
|
|
23
|
-
2.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
1. `order.md`、関連タスク本文、`plan.md`、`coder-decisions.md` を読み、要件を1つずつ抽出する
|
|
23
|
+
2. 1つの文に複数条件や経路がある場合、検証可能な最小単位まで分解する
|
|
24
|
+
- `A/B`、`global/project`、`JSON/leaf`、`allow/deny`、`read/write` を1行にまとめない
|
|
25
|
+
3. 各要件について、実装されたコード(ファイル:行)を特定する
|
|
26
|
+
4. 各要件を `充足 / 未充足 / 未確認` のいずれかで判定する
|
|
27
|
+
- 根拠コードがない場合は `充足` にしない
|
|
28
|
+
- 一部ケースしか確認できていない場合は `充足` にしない
|
|
29
|
+
5. 要求にない変更を列挙し、妥当か不要かを判定する
|
|
30
|
+
6. 前回 finding を `new / persists / resolved / reopened` で整理する
|
|
31
|
+
7. 検出した問題ごとに、Policy のスコープ判定表と判定ルールに基づいてブロッキング/非ブロッキングを分類する
|
|
32
|
+
8. ブロッキング問題(`new`、`persists`、または `reopened`)が1件でもあれば REJECT と判定する
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
- コードが要件を満たしていることを実際に確認する(ファイルを読む、実行済みテストやビルドの証跡を確認する)
|
|
22
22
|
- 片側のケースだけを確認して複合要件全体を ✅ にしてはいけない
|
|
23
23
|
- 根拠は、その要件行の内容全体をカバーしている必要がある
|
|
24
|
-
-
|
|
24
|
+
- 計画レポートや requirements-review の判断を鵜呑みにせず、要件ごとに独立照合する
|
|
25
25
|
- 充足していない要件が1つでもあれば REJECT する
|
|
26
26
|
4. 前段レビューの finding を再評価する
|
|
27
27
|
- 各 `new / persists / resolved` を、指示書・`plan.md`・`coder-decisions.md`・実コードで照合する
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
5. テスト・ビルド・動作確認の扱い
|
|
32
32
|
- このムーブメントでコマンドを再実行する前提で書かない
|
|
33
33
|
- 実行ログ、レポート、CI結果など、この run で確認できる証跡だけを使う
|
|
34
|
-
-
|
|
34
|
+
- 証跡がない項目は「未確認」と明記し、成功扱いにしない
|
|
35
35
|
- レポート本文と実行証跡が矛盾する場合は、その矛盾自体を指摘する
|
|
36
36
|
|
|
37
37
|
**レポートの確認:** Report Directory内の全レポートを読み、
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
|
|
55
55
|
- ❌ が1件でもある場合は REJECT 必須
|
|
56
56
|
- 根拠なしの ✅ は無効(実コードで確認すること)
|
|
57
|
+
- 一部ケースしか確認できていない場合は ✅ にしない
|
|
57
58
|
- 計画レポートの判断を鵜呑みにせず、要件ごとに独立照合する
|
|
58
59
|
|
|
59
60
|
## 前段 finding の再評価
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
|
|
65
66
|
- 前段レビューの結論と最終判定が異なる場合は、必ず根拠を書く
|
|
66
67
|
- false_positive / overreach を判定した場合は、task と plan のどちらに照らして不適切か明記する
|
|
68
|
+
- requirements-review の結論を覆す場合は、その理由を必ず根拠付きで明記する
|
|
67
69
|
|
|
68
70
|
## 検証サマリー
|
|
69
71
|
| 項目 | 状態 | 確認方法 |
|
|
@@ -22,8 +22,9 @@
|
|
|
22
22
|
- **実装内容**(何をどのように実装するか)
|
|
23
23
|
- **完了基準**(担当ファイルの実装が完了したこと)
|
|
24
24
|
- テスト済みの場合は「既存テストがパスするよう実装する」と明記する
|
|
25
|
-
-
|
|
25
|
+
- 品質ゲート(Quality Gates)を参照し、必要な検証は専用の単独パートとして計画する
|
|
26
|
+
- 並列の実装パートには、全体ビルド・全体テストを重複して実行させない
|
|
26
27
|
|
|
27
28
|
**制約:**
|
|
28
|
-
-
|
|
29
|
+
- テストやビルドが必要な場合は、他パートの変更が揃った後に、単独の検証パートで実行する
|
|
29
30
|
- 担当外のファイルを変更しない(コンフリクトの原因になる)
|
|
@@ -104,6 +104,99 @@ Vertical Slice の判定基準:
|
|
|
104
104
|
- エラーハンドリングが一元化されているか(各所でtry-catch禁止)
|
|
105
105
|
- ビジネスロジックがController/Viewに漏れていないか
|
|
106
106
|
|
|
107
|
+
## 境界での解決
|
|
108
|
+
|
|
109
|
+
設定、Option、provider、権限、パスのような値は、境界で解決してから内部へ渡す。メイン処理は「何が解決済みか」を前提に組み立て、各所で設定ソースを問い合わせない。
|
|
110
|
+
|
|
111
|
+
| 基準 | 判定 |
|
|
112
|
+
|------|------|
|
|
113
|
+
| 入口で `ExecutionContext` や `ResolvedOptions` のような解決済みオブジェクトを作る | OK |
|
|
114
|
+
| オーケストレーション層が解決済みの値だけを扱う | OK |
|
|
115
|
+
| 下位層が global/project/env を再読込して同じ値を再解決する | REJECT |
|
|
116
|
+
| 表示用と実行用で別々の解決関数を持つ | REJECT |
|
|
117
|
+
| 未解決の options を深い層まで運び、先で `??` 解決する | REJECT |
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// REJECT - 実行層が設定ソースを直接知っている
|
|
121
|
+
async function executePiece(options) {
|
|
122
|
+
const engine = new PieceEngine({
|
|
123
|
+
provider: options.provider ?? globalConfig.provider,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
class AgentRunner {
|
|
128
|
+
run(step, options) {
|
|
129
|
+
const provider = options.provider ?? resolveProviderFromConfig();
|
|
130
|
+
return getProvider(provider).call();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// OK - 境界で解決し、内部は解決済み値を使う
|
|
135
|
+
async function executePiece(options) {
|
|
136
|
+
const context = resolveExecutionContext(options);
|
|
137
|
+
const engine = new PieceEngine(context);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
class AgentRunner {
|
|
141
|
+
run(step, options) {
|
|
142
|
+
return getProvider(options.resolvedProvider).call();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Tell, Don't Ask
|
|
148
|
+
|
|
149
|
+
下位層に設定ソースを問い合わせさせるのではなく、上位層が「これを使え」と解決済みの値を渡す。値の選択責務と実行責務を分離する。
|
|
150
|
+
|
|
151
|
+
| パターン | 判定 |
|
|
152
|
+
|---------|------|
|
|
153
|
+
| 上位層が `resolvedProvider` のような値を渡す | OK |
|
|
154
|
+
| 下位層が `options` を覗いて自前で解決する | REJECT |
|
|
155
|
+
| 実行オブジェクトが `setup(config)` 後は `run()` だけ公開する | OK |
|
|
156
|
+
| 実行中に `getGlobalConfig()` を呼んで分岐する | REJECT |
|
|
157
|
+
|
|
158
|
+
### 腐敗防止層
|
|
159
|
+
|
|
160
|
+
優先順位解決や外部設定形式の吸収は、境界の専用層に閉じ込める。内部モデルへは正規化済みの値だけを渡す。
|
|
161
|
+
|
|
162
|
+
| パターン | 判定 |
|
|
163
|
+
|---------|------|
|
|
164
|
+
| YAML/env/CLI 差分を resolver/adapter に閉じ込める | OK |
|
|
165
|
+
| ドメイン層が env 名や設定キー文字列を直接扱う | REJECT |
|
|
166
|
+
| 外部形式から内部形式への変換が1箇所に集約されている | OK |
|
|
167
|
+
| 同じ正規化ロジックが複数箇所にコピーされている | REJECT |
|
|
168
|
+
|
|
169
|
+
### フェーズ分離
|
|
170
|
+
|
|
171
|
+
入力、解釈、実行、出力を段階で分ける。反復処理は、できる限り「解釈済みの入力をまとめて受け取り、実行だけを繰り返す」構造にする。
|
|
172
|
+
|
|
173
|
+
| 基準 | 判定 |
|
|
174
|
+
|------|------|
|
|
175
|
+
| 入口で raw input を `Resolved*` 型へ変換してから本処理に渡す | OK |
|
|
176
|
+
| ループ本体が解決済みデータに対する実行だけを担う | OK |
|
|
177
|
+
| ループ内で毎回 config/env/option を解釈する | REJECT |
|
|
178
|
+
| 反復ごとに「入力取得→解釈→実行→出力」を1関数に詰め込む | REJECT |
|
|
179
|
+
| 最適化で逐次処理が必要でも、解釈フェーズを専用メソッドに隔離している | OK |
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
// REJECT - 各反復が入力解釈まで担う
|
|
183
|
+
for (const item of items) {
|
|
184
|
+
const resolved = resolveItem(item, rawOptions, config);
|
|
185
|
+
const result = execute(resolved);
|
|
186
|
+
output(result);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// OK - 先に解釈し、反復は実行だけ
|
|
190
|
+
const resolvedItems = items.map((item) => resolveItem(item, rawOptions, config));
|
|
191
|
+
|
|
192
|
+
for (const item of resolvedItems) {
|
|
193
|
+
const result = execute(item);
|
|
194
|
+
output(result);
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
逐次解釈が必要なケースでも、`nextRawInput()` と `resolveInput()` と `executeResolved()` の責務は分ける。性能要件でフェーズを近づけても、責務まで混ぜない。
|
|
199
|
+
|
|
107
200
|
## コード品質の検出手法
|
|
108
201
|
|
|
109
202
|
**説明コメント(What/How)の検出基準**
|
|
@@ -291,7 +291,7 @@ Controller → UseCase → CommandGateway → Aggregate
|
|
|
291
291
|
UseCaseが必要なケース:
|
|
292
292
|
- コマンド発行前にRead Modelから他集約の状態を確認する
|
|
293
293
|
- 複数のバリデーションを直列に実行する
|
|
294
|
-
-
|
|
294
|
+
- コマンド送信後の結果整合性を待機する(リアクティブポーリング)
|
|
295
295
|
|
|
296
296
|
UseCaseが不要なケース:
|
|
297
297
|
- Controllerからコマンドを1つ送るだけで完結する単純な操作
|
|
@@ -301,6 +301,7 @@ UseCaseが不要なケース:
|
|
|
301
301
|
| ControllerがRepository直接参照してバリデーション | UseCase層に分離 |
|
|
302
302
|
| UseCaseがHTTPリクエスト/レスポンスに依存 | REJECT。UseCaseはプロトコル非依存 |
|
|
303
303
|
| UseCaseがAggregate内部状態を直接変更 | REJECT。CommandGateway経由 |
|
|
304
|
+
| UseCaseがSubscription Queryで結果を待機 | REJECT。分散環境で動作しない。リアクティブポーリングを使う |
|
|
304
305
|
|
|
305
306
|
## プロジェクション設計
|
|
306
307
|
|
|
@@ -370,12 +371,25 @@ class InventoryReleaseHandler(private val commandGateway: CommandGateway) {
|
|
|
370
371
|
|
|
371
372
|
## Query側の設計
|
|
372
373
|
|
|
373
|
-
|
|
374
|
+
Query側はイベント駆動のPubSubモデルで動作する。Projection が EventHandler でRead Modelを更新し、Query側はRead Modelを参照する。
|
|
375
|
+
|
|
376
|
+
イベント配信はPubSub(メッセージブローカー経由)で全インスタンスに配信する。同一インスタンスへの配信を前提とする仕組みは使わない。
|
|
377
|
+
|
|
378
|
+
- **Subscription Query**(たとえばAxonの `subscriptionQuery()`): クエリ結果の変更通知を購読元インスタンスに返す仕組みだが、分散配置やサードパーティのイベントストアプラグイン使用時に、購読を発行したインスタンスと通知を受け取るインスタンスが異なり、同一筐体でレスポンスを返せない。同期的な応答が必要な場合はリアクティブポーリングで Read Model の更新を待機する。
|
|
379
|
+
- **Subscribing イベントプロセッサ**(たとえばAxonの `SubscribingEventProcessor`): ローカルのイベントバスからの直接購読に依存し、イベントを発行したインスタンスのみがイベントを受け取る。分散環境では他インスタンスの Projection が更新されない。PubSubで全インスタンスにイベントが配信される構成にする。
|
|
380
|
+
|
|
381
|
+
| 基準 | 判定 |
|
|
382
|
+
|------|------|
|
|
383
|
+
| Subscription Query(たとえばAxonの `subscriptionQuery()`)の使用 | REJECT。分散環境で動作しない。リアクティブポーリングを使う |
|
|
384
|
+
| Subscribing イベントプロセッサ(たとえばAxonの `SubscribingEventProcessor`)の使用 | REJECT。ローカル配信のみ。分散環境で他インスタンスが更新されない |
|
|
385
|
+
| Controller から Repository を直接参照 | REJECT。UseCase層を経由 |
|
|
386
|
+
| Query側が Command Model を参照 | REJECT |
|
|
387
|
+
| QueryHandler がコマンドを発行 | REJECT |
|
|
374
388
|
|
|
375
389
|
レイヤー間の型:
|
|
376
390
|
- `application/query/` - Query結果の型(例: `OrderDetail`)
|
|
377
391
|
- `adapter/protocol/` - RESTレスポンスの型(例: `OrderDetailResponse`)
|
|
378
|
-
- QueryHandlerはapplication層の型を返し、Controllerがadapter層の型に変換
|
|
392
|
+
- QueryHandler は application層の型を返し、Controller が adapter層の型に変換
|
|
379
393
|
|
|
380
394
|
```kotlin
|
|
381
395
|
// application/query/OrderDetail.kt
|
|
@@ -399,7 +413,7 @@ fun handle(query: GetOrderDetailQuery): OrderDetail? {
|
|
|
399
413
|
return OrderDetail(...)
|
|
400
414
|
}
|
|
401
415
|
|
|
402
|
-
// Controller -
|
|
416
|
+
// Controller - 単純な参照は同期返却で十分
|
|
403
417
|
@GetMapping("/{id}")
|
|
404
418
|
fun getById(@PathVariable id: String): ResponseEntity<OrderDetailResponse> {
|
|
405
419
|
val detail = queryGateway.query(
|
|
@@ -416,16 +430,62 @@ fun getById(@PathVariable id: String): ResponseEntity<OrderDetailResponse> {
|
|
|
416
430
|
Controller (adapter) → QueryGateway → QueryHandler (application) → Repository
|
|
417
431
|
↓ ↓
|
|
418
432
|
Response.from(detail) OrderDetail
|
|
433
|
+
|
|
434
|
+
イベント流(PubSub):
|
|
435
|
+
Aggregate → Event Bus → Projection(@EventHandler) → Repository(Read Model)
|
|
436
|
+
↑
|
|
437
|
+
QueryHandler がここを参照
|
|
419
438
|
```
|
|
420
439
|
|
|
421
440
|
## 結果整合性
|
|
422
441
|
|
|
423
|
-
|
|
442
|
+
コマンド発行後に同期的なレスポンスが必要な場合、リアクティブポーリングで Projection の更新を待機する。
|
|
443
|
+
|
|
444
|
+
| 基準 | 判定 |
|
|
424
445
|
|------|------|
|
|
425
|
-
|
|
|
446
|
+
| Subscription Query で Projection 更新を待機 | REJECT。分散環境で動作しない。リアクティブポーリングを使う |
|
|
447
|
+
| UIが即座に更新を期待している | ポーリング or WebSocket |
|
|
426
448
|
| 整合性遅延が許容範囲を超える | アーキテクチャ再検討 |
|
|
427
449
|
| 補償トランザクションが未定義 | 障害シナリオの検討を要求 |
|
|
428
450
|
|
|
451
|
+
### リアクティブポーリング
|
|
452
|
+
|
|
453
|
+
コマンド発行 → Projection更新完了をポーリングで待機するパターン。
|
|
454
|
+
|
|
455
|
+
```kotlin
|
|
456
|
+
// UseCase: コマンド送信 → ポーリングで完了待機
|
|
457
|
+
fun execute(input: PlaceOrderInput): Mono<PlaceOrderOutput> {
|
|
458
|
+
val orderId = UUID.randomUUID().toString()
|
|
459
|
+
return Mono.fromCallable { validatePreConditions(input) }
|
|
460
|
+
.subscribeOn(Schedulers.boundedElastic())
|
|
461
|
+
.flatMap {
|
|
462
|
+
Mono.fromFuture(commandGateway.send<Any>(
|
|
463
|
+
PlaceOrderCommand(orderId, input.customerId, input.items)
|
|
464
|
+
))
|
|
465
|
+
}
|
|
466
|
+
.then(pollForCompletion(orderId))
|
|
467
|
+
.thenReturn(PlaceOrderOutput(orderId))
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// ポーリング: Projection の更新を待機
|
|
471
|
+
private fun pollForCompletion(orderId: String): Mono<Void> {
|
|
472
|
+
return ReactivePolling.waitFor(
|
|
473
|
+
supplier = { orderRepository.findById(orderId).orElse(null) },
|
|
474
|
+
condition = { it.sagaCompleted || it.status == OrderStatus.CONFIRMED },
|
|
475
|
+
timeout = Duration.ofSeconds(60),
|
|
476
|
+
maxAttempts = 300
|
|
477
|
+
)
|
|
478
|
+
}
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
ポーリングが適切なケース:
|
|
482
|
+
- Saga が完了するまでレスポンスを返したくない場合
|
|
483
|
+
- コマンド発行後に作成されたリソースのIDを返す場合
|
|
484
|
+
|
|
485
|
+
ポーリングが不要なケース:
|
|
486
|
+
- コマンド発行だけで完了する単純な操作(結果を待たない)
|
|
487
|
+
- UIがリアルタイム更新を必要としない場合
|
|
488
|
+
|
|
429
489
|
## Saga vs EventHandler
|
|
430
490
|
|
|
431
491
|
Sagaは「競合が発生する複数アグリゲート間の操作」にのみ使用する。
|
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
### 目的
|
|
10
10
|
{達成すべきこと}
|
|
11
11
|
|
|
12
|
+
### 分解した要件
|
|
13
|
+
| # | 要件 | 種別 | 備考 |
|
|
14
|
+
|---|------|------|------|
|
|
15
|
+
| 1 | {要件1} | 明示 / 暗黙 | {複合要件を分解した場合の補足} |
|
|
16
|
+
|
|
17
|
+
- 1つの文に複数条件がある場合、検証可能な最小単位まで分解する
|
|
18
|
+
- `A/B`、`global/project`、`JSON/leaf`、`allow/deny`、`read/write` のような並列表現は別行にする
|
|
19
|
+
|
|
12
20
|
### 参照資料の調査結果(参照資料がある場合)
|
|
13
21
|
{参照資料の実装アプローチの概要と、現在の実装との主要な差異}
|
|
14
22
|
|
|
@@ -7,17 +7,19 @@
|
|
|
7
7
|
{1-2文で結果を要約}
|
|
8
8
|
|
|
9
9
|
## 要件照合
|
|
10
|
-
| # | 要件(タスクから抽出) |
|
|
11
|
-
|
|
12
|
-
| 1 | {要件1} |
|
|
10
|
+
| # | 要件(タスクから抽出) | 状態 | 根拠(ファイル:行) | コメント |
|
|
11
|
+
|---|-------------------|------|-------------------|----------|
|
|
12
|
+
| 1 | {要件1} | 充足 / 未充足 / 未確認 | `src/file.ts:42` | {補足} |
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
14
|
+
- 1つの文に複数条件がある場合、検証可能な最小単位まで分解して複数行にする
|
|
15
|
+
- `未充足` が1件でもある場合は REJECT 必須
|
|
16
|
+
- 根拠なしの `充足` は無効(実コードで確認すること)
|
|
17
|
+
- 一部ケースしか確認できていない場合は `充足` にしない
|
|
16
18
|
|
|
17
19
|
## スコープチェック
|
|
18
|
-
| # | 要求外の変更 | ファイル | 妥当性 |
|
|
19
|
-
|
|
20
|
-
| 1 | {要求にない変更} | `src/file.ts` |
|
|
20
|
+
| # | 要求外の変更 | ファイル | 妥当性 | コメント |
|
|
21
|
+
|---|-------------|---------|--------|----------|
|
|
22
|
+
| 1 | {要求にない変更} | `src/file.ts` | 妥当 / 要再確認 / 不要 | {理由} |
|
|
21
23
|
|
|
22
24
|
## 今回の指摘(new)
|
|
23
25
|
| # | finding_id | family_tag | カテゴリ | 場所 | 問題 | 修正案 |
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
- 一部ケースしか根拠がない場合は ✅ にしない
|
|
20
20
|
- 計画レポートの判断を鵜呑みにせず、要件ごとに独立照合する
|
|
21
21
|
|
|
22
|
+
## 前段 finding の再評価
|
|
23
|
+
| finding_id | 前段判定 | 再評価 | 根拠 |
|
|
24
|
+
|------------|----------|--------|------|
|
|
25
|
+
| {id} | new / persists / resolved | 妥当 / false_positive / overreach | `src/file.ts:42`, `reports/plan.md` |
|
|
26
|
+
|
|
27
|
+
- 前段レビューの結論と最終判定が異なる場合は、必ず根拠を書く
|
|
28
|
+
- false_positive / overreach を判定した場合は、task と plan のどちらに照らして不適切か明記する
|
|
29
|
+
|
|
22
30
|
## 検証サマリー
|
|
23
31
|
| 項目 | 状態 | 確認方法 |
|
|
24
32
|
|------|------|---------|
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
- 調査してから計画する。既存コードを読まずに計画を立てない
|
|
21
21
|
- 推測で書かない。名前・値・振る舞いは必ずコードで確認する。「不明」で止まらない
|
|
22
22
|
- シンプルに設計する。過度な抽象化や将来への備えは不要
|
|
23
|
+
- 要件は、明示要求とそこから直接導ける暗黙要求に限定する。一般論や好みを要件化しない
|
|
24
|
+
- 要件を細分化するときは検証可能な最小単位までに留め、そこから新しい要求へ飛躍しない
|
|
23
25
|
- 確認が必要な場合は質問を一度にまとめる。追加の確認質問を繰り返さない
|
|
24
26
|
- 後方互換コードは計画に含めない。明示的な指示がない限り不要
|
|
25
27
|
- 実装方法を指定する前に、ナレッジ・ポリシーの制約を確認する。制約に反する実装方法を指示書に書かない
|
|
@@ -69,6 +71,12 @@
|
|
|
69
71
|
|
|
70
72
|
タスク指示書に明記された作業のみを計画する。暗黙の「改善」を勝手に含めない。
|
|
71
73
|
|
|
74
|
+
**要件分解の規律:**
|
|
75
|
+
- 明示要求から直接導ける暗黙要求は計画に含めてよい
|
|
76
|
+
- 暗黙要求を置く場合は、どの明示要求から導いたかを説明できること
|
|
77
|
+
- 一般的ベストプラクティス、将来あるとよい拡張、好みの一貫性は要件として追加しない
|
|
78
|
+
- 要件の細分化は、検証可能にするための分解であって、要求追加ではない
|
|
79
|
+
|
|
72
80
|
**削除の判断基準:**
|
|
73
81
|
- **今回の変更で新たに未使用になったコード** → 削除を計画してよい(例: リネームした旧変数)
|
|
74
82
|
- **既存の機能・フロー・エンドポイント・Saga・イベント** → タスク指示書で明示的に指示されない限り削除しない
|
|
@@ -20,7 +20,14 @@
|
|
|
20
20
|
## 行動姿勢
|
|
21
21
|
|
|
22
22
|
- 要求を1つずつ照合する。まとめて「概ね充足」とは言わない
|
|
23
|
+
- 1つの文に複数条件がある場合、検証可能な最小単位まで分解してから照合する
|
|
24
|
+
- `A/B`、`global/project`、`JSON/leaf`、`allow/deny`、`read/write` のような並列表現を1件として扱わない
|
|
23
25
|
- 実コードで確認する。「実装しました」を鵜呑みにしない
|
|
26
|
+
- 片側ケースだけ確認して充足扱いしない。複合要件は全ケースを確認する
|
|
27
|
+
- 根拠のない「充足」を書かない。各判定に対応するファイル:行を示す
|
|
28
|
+
- 証跡不足で確認できない場合は「未確認」と扱い、「未実装」と混同しない
|
|
24
29
|
- スコープを守る。要求にない変更は理由を問う
|
|
30
|
+
- 要求にない変更は、存在だけでなく妥当性まで判定する
|
|
25
31
|
- 曖昧さを放置しない。仕様が不明確なら指摘する
|
|
26
32
|
- 削除に注目する。ファイルやコードの削除が要求に基づくか確認する
|
|
33
|
+
- `plan.md` や `coder-decisions.md` は参照してよいが、最終根拠は必ず実コードと差分に置く
|
|
@@ -21,10 +21,14 @@
|
|
|
21
21
|
|
|
22
22
|
- 実行証跡を確認する。ファイルだけでなく、ログ・レポート・結果を突き合わせる
|
|
23
23
|
- 要求と照合する。元のタスク要求を再度読み、漏れがないか確認する
|
|
24
|
+
- 複合要件は自分で再分解する。前段レビューの分解をそのまま採用しない
|
|
25
|
+
- `requirements-review` の結果は参考情報として扱い、最終判定は自分で再検算する
|
|
24
26
|
- 鵜呑みにしない。「完了しました」を信用せず、自分で検証する
|
|
25
27
|
- 具体的に指摘する。「何が」「どう」問題かを明確にする
|
|
26
28
|
- あなたは最後の門番。「たぶん大丈夫」では通さない
|
|
27
29
|
- 実行していないコマンド結果を推測で書かない。証跡がなければ未確認として扱う
|
|
30
|
+
- レポート本文と実行証跡が矛盾する場合は、矛盾自体を最優先の問題として扱う
|
|
31
|
+
- false positive と overreach を区別する。成立しない指摘と、範囲外の指摘を同じ扱いにしない
|
|
28
32
|
|
|
29
33
|
## ドメイン知識
|
|
30
34
|
|
|
@@ -48,6 +52,7 @@
|
|
|
48
52
|
**要求の充足(最重要):**
|
|
49
53
|
|
|
50
54
|
- 全要件を個別に検証し、1件でも未充足なら APPROVE しない
|
|
55
|
+
- 1つの文に複数条件がある場合、検証可能な最小単位まで分解して個別に確認する
|
|
51
56
|
- 「~もできる」と言っていたことが本当にできるか
|
|
52
57
|
- 暗黙の要求(当然期待される動作)が満たされているか
|
|
53
58
|
- 「概ね完了」「主要部分は完了」は APPROVE の根拠にならない。全要件の充足が必要
|
|
@@ -68,6 +73,7 @@
|
|
|
68
73
|
- 実行ログ・レポート・CI結果など、この run で確認できる証跡のみを根拠に使う
|
|
69
74
|
- 実行証跡がない場合は「未確認」と明記し、勝手に成功/失敗にしない
|
|
70
75
|
- レポート本文と実行証跡が矛盾する場合は、矛盾自体を指摘して REJECT する
|
|
76
|
+
- `未確認` は `未実装` や `成功` に読み替えない
|
|
71
77
|
|
|
72
78
|
**エッジケース・エラーケース:**
|
|
73
79
|
|
|
@@ -77,6 +77,93 @@ function createEngine(config, cwd: string) {
|
|
|
77
77
|
3. **上位から値を渡す経路があるか?** → なければ引数・フィールドを追加
|
|
78
78
|
4. **関連する値に不変条件があるか?** → ロード・セットアップ時にクロスバリデーションする
|
|
79
79
|
|
|
80
|
+
## 解決責務の一元化
|
|
81
|
+
|
|
82
|
+
設定、Option、provider、パス、権限のような「早い段階で決められる値」は、境界で一度だけ解決する。同じ値を複数の層で再解決しない。
|
|
83
|
+
|
|
84
|
+
| パターン | 判定 | 理由 |
|
|
85
|
+
|---------|------|------|
|
|
86
|
+
| 入口で解決した値を下位層へ明示的に渡す | OK | 値の出所が追える |
|
|
87
|
+
| 解決専用のメソッド/オブジェクトに委譲する | OK | SSOTが保たれる |
|
|
88
|
+
| 上位と下位で同じ設定を別々に解決する | REJECT | 優先順位のズレを生む |
|
|
89
|
+
| ログ表示用と実行用で別々に解決する | REJECT | 表示と挙動が乖離する |
|
|
90
|
+
| メイン処理内で `if` を重ねて設定解決する | REJECT | オーケストレーションに詳細が漏れる |
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
// REJECT - 各層がそれぞれ設定を解決
|
|
94
|
+
function executeTask(options) {
|
|
95
|
+
const provider = options.provider ?? loadGlobalConfig().provider;
|
|
96
|
+
return runAgent({
|
|
97
|
+
provider,
|
|
98
|
+
stepProvider: resolveProviderForStep(options.step),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function runAgent(options) {
|
|
103
|
+
const provider = options.provider ?? resolveProviderFromConfig();
|
|
104
|
+
return getProvider(provider).call();
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// OK - 境界で解決し、以降は解決済みの値だけを使う
|
|
108
|
+
function executeTask(options) {
|
|
109
|
+
const resolved = resolveExecutionContext(options);
|
|
110
|
+
return runAgent({
|
|
111
|
+
resolvedProvider: resolved.provider,
|
|
112
|
+
resolvedModel: resolved.model,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function runAgent(options) {
|
|
117
|
+
return getProvider(options.resolvedProvider).call();
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
判断基準:
|
|
122
|
+
1. この値は実行前に確定できるか? → できるなら境界で解決する
|
|
123
|
+
2. 同じ優先順位ロジックが2箇所以上にあるか? → 専用メソッド/オブジェクトに集約する
|
|
124
|
+
3. 下位層が設定ソースそのものを知っているか? → 解決済みの値だけを渡す
|
|
125
|
+
4. 表示・実行・保存で別々に解決しているか? → 同じ解決結果を共有する
|
|
126
|
+
|
|
127
|
+
## フェーズ分離
|
|
128
|
+
|
|
129
|
+
入力の収集、解釈・正規化、実行、出力・副作用は段階で分ける。ループやメイン処理の途中で未解決の入力を受け取り直して、その場で解釈しない。
|
|
130
|
+
|
|
131
|
+
| パターン | 判定 | 理由 |
|
|
132
|
+
|---------|------|------|
|
|
133
|
+
| `RawOptions -> ResolvedOptions -> ExecutionContext` の順で段階を分ける | OK | 各段階の責務が明確 |
|
|
134
|
+
| ループ前に入力をまとめて正規化する | OK | 各反復が同じ前提で動く |
|
|
135
|
+
| ループ内で毎回 `options ?? config ?? env` を解決する | REJECT | 各反復の前提が揺れる |
|
|
136
|
+
| 反復ごとに入力解釈と実行ロジックが混在する | REJECT | 処理の意図が読めない |
|
|
137
|
+
| 1件ずつ「入力→解釈→実行→出力」を繰り返すしかない場合でも、解釈処理を専用メソッドに隔離する | OK | 最低限の責務分離を保てる |
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
// REJECT - ループ内で毎回入力を解釈
|
|
141
|
+
for (const step of steps) {
|
|
142
|
+
const provider = options.provider
|
|
143
|
+
?? step.provider
|
|
144
|
+
?? projectConfig.provider
|
|
145
|
+
?? globalConfig.provider;
|
|
146
|
+
const result = await executeStep(step, { provider });
|
|
147
|
+
printResult(result);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// OK - 先に解決し、ループ内は実行だけ
|
|
151
|
+
const context = resolveExecutionContext(rawOptions, steps);
|
|
152
|
+
|
|
153
|
+
for (const step of context.steps) {
|
|
154
|
+
const result = await executeStep(step, {
|
|
155
|
+
resolvedProvider: step.resolvedProvider,
|
|
156
|
+
});
|
|
157
|
+
printResult(result);
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
判断基準:
|
|
162
|
+
1. ループ内の分岐は「業務判断」か「入力解釈」か? → 入力解釈ならループ外へ出す
|
|
163
|
+
2. 同じ入力解釈が各反復で繰り返されているか? → 先にまとめて正規化する
|
|
164
|
+
3. 実行関数が raw input を直接受け取っているか? → `Resolved*` 型へ変換してから渡す
|
|
165
|
+
4. 最適化で逐次処理が必要か? → 解釈だけでも先に関数へ抽出する
|
|
166
|
+
|
|
80
167
|
## 抽象化
|
|
81
168
|
|
|
82
169
|
### 条件分岐を追加する前に考える
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
workflow_categories:
|
|
2
2
|
🚀 クイックスタート:
|
|
3
|
-
|
|
3
|
+
workflows:
|
|
4
4
|
- default
|
|
5
5
|
- frontend-mini
|
|
6
6
|
- backend-mini
|
|
7
7
|
- compound-eye
|
|
8
8
|
⚡ Mini:
|
|
9
|
-
|
|
9
|
+
workflows:
|
|
10
10
|
- frontend-mini
|
|
11
11
|
- backend-mini
|
|
12
12
|
- backend-cqrs-mini
|
|
13
13
|
- dual-mini
|
|
14
14
|
- dual-cqrs-mini
|
|
15
15
|
🎨 フロントエンド:
|
|
16
|
-
|
|
16
|
+
workflows:
|
|
17
17
|
- frontend
|
|
18
18
|
- frontend-mini
|
|
19
19
|
⚙️ バックエンド:
|
|
20
|
-
|
|
20
|
+
workflows:
|
|
21
21
|
- backend
|
|
22
22
|
- backend-mini
|
|
23
23
|
- backend-cqrs
|
|
24
24
|
- backend-cqrs-mini
|
|
25
25
|
🔧 デュアル:
|
|
26
|
-
|
|
26
|
+
workflows:
|
|
27
27
|
- dual
|
|
28
28
|
- dual-mini
|
|
29
29
|
- dual-cqrs
|
|
30
30
|
- dual-cqrs-mini
|
|
31
31
|
🏗️ インフラストラクチャ:
|
|
32
|
-
|
|
32
|
+
workflows:
|
|
33
33
|
- terraform
|
|
34
34
|
🔍 レビュー:
|
|
35
|
-
|
|
35
|
+
workflows:
|
|
36
36
|
- review-default
|
|
37
37
|
- review-fix-default
|
|
38
38
|
- review-frontend
|
|
@@ -55,12 +55,12 @@ piece_categories:
|
|
|
55
55
|
- audit-architecture-backend
|
|
56
56
|
- audit-architecture-dual
|
|
57
57
|
🎵 TAKT開発:
|
|
58
|
-
|
|
58
|
+
workflows:
|
|
59
59
|
- takt-default
|
|
60
60
|
- review-takt-default
|
|
61
61
|
- review-fix-takt-default
|
|
62
62
|
その他:
|
|
63
|
-
|
|
63
|
+
workflows:
|
|
64
64
|
- research
|
|
65
65
|
- deep-research
|
|
66
66
|
- magi
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name: audit-architecture-backend
|
|
2
2
|
description: バックエンド特化のアーキテクチャ監査。サービスモジュールと境界を列挙し、コードを変更せずに Issue 化しやすいレポートを作成する
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
max_steps: 12
|
|
4
|
+
initial_step: plan
|
|
5
5
|
|
|
6
6
|
loop_monitors:
|
|
7
7
|
- cycle: [supervise, review]
|
|
@@ -17,7 +17,7 @@ loop_monitors:
|
|
|
17
17
|
- condition: Quality is insufficient with no prospect of improvement
|
|
18
18
|
next: ABORT
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
steps:
|
|
21
21
|
- name: plan
|
|
22
22
|
persona: planner
|
|
23
23
|
knowledge:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name: audit-architecture-dual
|
|
2
2
|
description: フルスタックのアーキテクチャ監査。frontend/backend の境界と横断配線を列挙し、コードを変更せずに Issue 化しやすいレポートを作成する
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
max_steps: 12
|
|
4
|
+
initial_step: plan
|
|
5
5
|
|
|
6
6
|
loop_monitors:
|
|
7
7
|
- cycle: [supervise, review]
|
|
@@ -17,7 +17,7 @@ loop_monitors:
|
|
|
17
17
|
- condition: Quality is insufficient with no prospect of improvement
|
|
18
18
|
next: ABORT
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
steps:
|
|
21
21
|
- name: plan
|
|
22
22
|
persona: planner
|
|
23
23
|
knowledge:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name: audit-architecture-frontend
|
|
2
2
|
description: フロントエンド特化のアーキテクチャ監査。UIモジュールと境界を列挙し、コードを変更せずに Issue 化しやすいレポートを作成する
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
max_steps: 12
|
|
4
|
+
initial_step: plan
|
|
5
5
|
|
|
6
6
|
loop_monitors:
|
|
7
7
|
- cycle: [supervise, review]
|
|
@@ -17,7 +17,7 @@ loop_monitors:
|
|
|
17
17
|
- condition: Quality is insufficient with no prospect of improvement
|
|
18
18
|
next: ABORT
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
steps:
|
|
21
21
|
- name: plan
|
|
22
22
|
persona: planner
|
|
23
23
|
knowledge:
|