takt 0.42.0 → 0.44.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 +5 -2
- package/builtins/en/config.yaml +12 -2
- package/builtins/en/facets/instructions/dual-team-leader-implement.md +7 -2
- package/builtins/en/facets/instructions/fix-maintenance.md +43 -0
- package/builtins/en/facets/instructions/implement-maintenance.md +72 -0
- package/builtins/en/facets/instructions/plan-maintenance.md +51 -0
- package/builtins/en/facets/instructions/review-coding.md +8 -0
- package/builtins/en/facets/instructions/supervise-maintenance.md +110 -0
- package/builtins/en/facets/instructions/team-leader-implement.md +6 -1
- package/builtins/en/facets/instructions/write-tests-maintenance.md +45 -0
- package/builtins/en/facets/knowledge/architecture.md +5 -0
- package/builtins/en/facets/knowledge/existing-system.md +70 -0
- package/builtins/en/facets/knowledge/frontend.md +12 -0
- package/builtins/en/facets/knowledge/react.md +35 -0
- package/builtins/en/facets/output-contracts/coding-review.md +41 -0
- package/builtins/en/facets/output-contracts/maintenance-scope.md +29 -0
- package/builtins/en/facets/personas/coding-reviewer.md +27 -0
- package/builtins/en/facets/personas/dual-supervisor.md +1 -1
- package/builtins/en/facets/policies/ai-antipattern.md +40 -0
- package/builtins/en/facets/policies/existing-system-respect.md +73 -0
- package/builtins/en/facets/policies/review.md +20 -9
- package/builtins/en/workflow-categories.yaml +1 -0
- package/builtins/en/workflows/backend-cqrs.yaml +21 -0
- package/builtins/en/workflows/backend.yaml +21 -0
- package/builtins/en/workflows/default-peer-review.yaml +25 -3
- package/builtins/en/workflows/dual-cqrs.yaml +21 -0
- package/builtins/en/workflows/dual.yaml +21 -0
- package/builtins/en/workflows/frontend-maintenance.yaml +520 -0
- package/builtins/en/workflows/frontend.yaml +21 -0
- package/builtins/en/workflows/peer-review.yaml +23 -1
- package/builtins/en/workflows/review-backend-cqrs.yaml +22 -0
- package/builtins/en/workflows/review-backend.yaml +22 -0
- package/builtins/en/workflows/review-default.yaml +27 -2
- package/builtins/en/workflows/review-dual-cqrs.yaml +22 -0
- package/builtins/en/workflows/review-dual.yaml +22 -0
- package/builtins/en/workflows/review-fix-backend-cqrs.yaml +22 -0
- package/builtins/en/workflows/review-fix-backend.yaml +22 -0
- package/builtins/en/workflows/review-fix-default.yaml +23 -1
- package/builtins/en/workflows/review-fix-dual-cqrs.yaml +22 -0
- package/builtins/en/workflows/review-fix-dual.yaml +22 -0
- package/builtins/en/workflows/review-fix-frontend.yaml +22 -0
- package/builtins/en/workflows/review-fix-takt-default.yaml +52 -2
- package/builtins/en/workflows/review-frontend.yaml +22 -0
- package/builtins/en/workflows/review-takt-default.yaml +27 -2
- package/builtins/en/workflows/terraform.yaml +23 -2
- package/builtins/ja/config.yaml +12 -2
- package/builtins/ja/facets/instructions/dual-team-leader-implement.md +7 -2
- package/builtins/ja/facets/instructions/fix-maintenance.md +43 -0
- package/builtins/ja/facets/instructions/implement-maintenance.md +72 -0
- package/builtins/ja/facets/instructions/plan-maintenance.md +51 -0
- package/builtins/ja/facets/instructions/review-coding.md +8 -0
- package/builtins/ja/facets/instructions/supervise-maintenance.md +110 -0
- package/builtins/ja/facets/instructions/team-leader-implement.md +6 -1
- package/builtins/ja/facets/instructions/write-tests-maintenance.md +45 -0
- package/builtins/ja/facets/knowledge/architecture.md +5 -0
- package/builtins/ja/facets/knowledge/existing-system.md +70 -0
- package/builtins/ja/facets/knowledge/frontend.md +12 -0
- package/builtins/ja/facets/knowledge/react.md +35 -0
- package/builtins/ja/facets/output-contracts/coding-review.md +41 -0
- package/builtins/ja/facets/output-contracts/maintenance-scope.md +29 -0
- package/builtins/ja/facets/personas/coding-reviewer.md +27 -0
- package/builtins/ja/facets/personas/dual-supervisor.md +2 -2
- package/builtins/ja/facets/policies/ai-antipattern.md +40 -0
- package/builtins/ja/facets/policies/existing-system-respect.md +73 -0
- package/builtins/ja/facets/policies/review.md +20 -9
- package/builtins/ja/workflow-categories.yaml +1 -0
- package/builtins/ja/workflows/backend-cqrs.yaml +21 -0
- package/builtins/ja/workflows/backend.yaml +21 -0
- package/builtins/ja/workflows/default-peer-review.yaml +25 -3
- package/builtins/ja/workflows/dual-cqrs.yaml +21 -0
- package/builtins/ja/workflows/dual.yaml +21 -0
- package/builtins/ja/workflows/frontend-maintenance.yaml +520 -0
- package/builtins/ja/workflows/frontend.yaml +21 -0
- package/builtins/ja/workflows/peer-review.yaml +23 -1
- package/builtins/ja/workflows/review-backend-cqrs.yaml +22 -0
- package/builtins/ja/workflows/review-backend.yaml +22 -0
- package/builtins/ja/workflows/review-default.yaml +26 -2
- package/builtins/ja/workflows/review-dual-cqrs.yaml +22 -0
- package/builtins/ja/workflows/review-dual.yaml +22 -0
- package/builtins/ja/workflows/review-fix-backend-cqrs.yaml +22 -0
- package/builtins/ja/workflows/review-fix-backend.yaml +22 -0
- package/builtins/ja/workflows/review-fix-default.yaml +23 -1
- package/builtins/ja/workflows/review-fix-dual-cqrs.yaml +22 -0
- package/builtins/ja/workflows/review-fix-dual.yaml +22 -0
- package/builtins/ja/workflows/review-fix-frontend.yaml +22 -0
- package/builtins/ja/workflows/review-fix-takt-default.yaml +52 -2
- package/builtins/ja/workflows/review-frontend.yaml +22 -0
- package/builtins/ja/workflows/review-takt-default.yaml +26 -2
- package/builtins/ja/workflows/terraform.yaml +23 -2
- package/builtins/skill/references/yaml-schema.md +8 -3
- package/builtins/skill-codex/references/yaml-schema.md +8 -3
- package/dist/agents/team-leader-structured-output.d.ts.map +1 -1
- package/dist/agents/team-leader-structured-output.js +21 -0
- package/dist/agents/team-leader-structured-output.js.map +1 -1
- package/dist/app/cli/commands.js +7 -1
- package/dist/app/cli/commands.js.map +1 -1
- package/dist/app/cli/program.js +1 -1
- 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 +8 -1
- package/dist/app/cli/routing.js.map +1 -1
- package/dist/commands/repertoire/add.d.ts.map +1 -1
- package/dist/commands/repertoire/add.js +7 -11
- package/dist/commands/repertoire/add.js.map +1 -1
- package/dist/core/logging/span-to-ndjson-mapper.d.ts +10 -0
- package/dist/core/logging/span-to-ndjson-mapper.d.ts.map +1 -0
- package/dist/core/logging/span-to-ndjson-mapper.js +311 -0
- package/dist/core/logging/span-to-ndjson-mapper.js.map +1 -0
- package/dist/core/models/config-schemas.d.ts +112 -9
- package/dist/core/models/config-schemas.d.ts.map +1 -1
- package/dist/core/models/config-schemas.js +6 -0
- package/dist/core/models/config-schemas.js.map +1 -1
- package/dist/core/models/config-types.d.ts +18 -5
- package/dist/core/models/config-types.d.ts.map +1 -1
- package/dist/core/models/index.d.ts +1 -1
- package/dist/core/models/index.d.ts.map +1 -1
- package/dist/core/models/index.js.map +1 -1
- package/dist/core/models/provider-profiles.d.ts +2 -1
- package/dist/core/models/provider-profiles.d.ts.map +1 -1
- package/dist/core/models/provider-profiles.js +1 -1
- package/dist/core/models/provider-profiles.js.map +1 -1
- package/dist/core/models/quality-gate-defaults.d.ts +2 -0
- package/dist/core/models/quality-gate-defaults.d.ts.map +1 -0
- package/dist/core/models/quality-gate-defaults.js +2 -0
- package/dist/core/models/quality-gate-defaults.js.map +1 -0
- package/dist/core/models/schema-base.d.ts +42 -3
- package/dist/core/models/schema-base.d.ts.map +1 -1
- package/dist/core/models/schema-base.js +47 -2
- package/dist/core/models/schema-base.js.map +1 -1
- package/dist/core/models/types.d.ts +1 -1
- package/dist/core/models/types.d.ts.map +1 -1
- package/dist/core/models/workflow-schemas.d.ts +150 -45
- package/dist/core/models/workflow-schemas.d.ts.map +1 -1
- package/dist/core/models/workflow-types.d.ts +11 -3
- package/dist/core/models/workflow-types.d.ts.map +1 -1
- package/dist/core/workflow/engine/ArpeggioRunner.d.ts +6 -1
- package/dist/core/workflow/engine/ArpeggioRunner.d.ts.map +1 -1
- package/dist/core/workflow/engine/ArpeggioRunner.js +88 -51
- package/dist/core/workflow/engine/ArpeggioRunner.js.map +1 -1
- package/dist/core/workflow/engine/OptionsBuilder.d.ts +3 -2
- package/dist/core/workflow/engine/OptionsBuilder.d.ts.map +1 -1
- package/dist/core/workflow/engine/OptionsBuilder.js +8 -1
- package/dist/core/workflow/engine/OptionsBuilder.js.map +1 -1
- package/dist/core/workflow/engine/ParallelRunner.d.ts +17 -1
- package/dist/core/workflow/engine/ParallelRunner.d.ts.map +1 -1
- package/dist/core/workflow/engine/ParallelRunner.js +170 -22
- package/dist/core/workflow/engine/ParallelRunner.js.map +1 -1
- package/dist/core/workflow/engine/StepExecutor.d.ts +5 -1
- package/dist/core/workflow/engine/StepExecutor.d.ts.map +1 -1
- package/dist/core/workflow/engine/StepExecutor.js +31 -3
- package/dist/core/workflow/engine/StepExecutor.js.map +1 -1
- package/dist/core/workflow/engine/TeamLeaderRunner.d.ts +6 -1
- package/dist/core/workflow/engine/TeamLeaderRunner.d.ts.map +1 -1
- package/dist/core/workflow/engine/TeamLeaderRunner.js +96 -30
- package/dist/core/workflow/engine/TeamLeaderRunner.js.map +1 -1
- package/dist/core/workflow/engine/WorkflowEngine.d.ts.map +1 -1
- package/dist/core/workflow/engine/WorkflowEngine.js +12 -0
- package/dist/core/workflow/engine/WorkflowEngine.js.map +1 -1
- package/dist/core/workflow/engine/WorkflowEngineSetup.d.ts.map +1 -1
- package/dist/core/workflow/engine/WorkflowEngineSetup.js +23 -1
- package/dist/core/workflow/engine/WorkflowEngineSetup.js.map +1 -1
- package/dist/core/workflow/engine/WorkflowRunLoop.d.ts +9 -0
- package/dist/core/workflow/engine/WorkflowRunLoop.d.ts.map +1 -1
- package/dist/core/workflow/engine/WorkflowRunLoop.js +62 -0
- package/dist/core/workflow/engine/WorkflowRunLoop.js.map +1 -1
- package/dist/core/workflow/engine/team-leader-execution.d.ts +1 -0
- package/dist/core/workflow/engine/team-leader-execution.d.ts.map +1 -1
- package/dist/core/workflow/engine/team-leader-execution.js +22 -0
- package/dist/core/workflow/engine/team-leader-execution.js.map +1 -1
- package/dist/core/workflow/engine/team-leader-part-runner.d.ts +10 -2
- package/dist/core/workflow/engine/team-leader-part-runner.d.ts.map +1 -1
- package/dist/core/workflow/engine/team-leader-part-runner.js +19 -2
- package/dist/core/workflow/engine/team-leader-part-runner.js.map +1 -1
- package/dist/core/workflow/engine/team-leader-timeout-fallback.d.ts +13 -0
- package/dist/core/workflow/engine/team-leader-timeout-fallback.d.ts.map +1 -0
- package/dist/core/workflow/engine/team-leader-timeout-fallback.js +125 -0
- package/dist/core/workflow/engine/team-leader-timeout-fallback.js.map +1 -0
- package/dist/core/workflow/instruction/InstructionBuilder.d.ts.map +1 -1
- package/dist/core/workflow/instruction/InstructionBuilder.js +4 -3
- package/dist/core/workflow/instruction/InstructionBuilder.js.map +1 -1
- package/dist/core/workflow/observability/workflowSpans.d.ts +45 -2
- package/dist/core/workflow/observability/workflowSpans.d.ts.map +1 -1
- package/dist/core/workflow/observability/workflowSpans.js +270 -8
- package/dist/core/workflow/observability/workflowSpans.js.map +1 -1
- package/dist/core/workflow/part-definition-validator.d.ts.map +1 -1
- package/dist/core/workflow/part-definition-validator.js +4 -0
- package/dist/core/workflow/part-definition-validator.js.map +1 -1
- package/dist/core/workflow/permission-profile-resolution.d.ts +1 -1
- package/dist/core/workflow/permission-profile-resolution.d.ts.map +1 -1
- package/dist/core/workflow/permission-profile-resolution.js +10 -8
- package/dist/core/workflow/permission-profile-resolution.js.map +1 -1
- package/dist/core/workflow/phase-runner.d.ts +11 -1
- package/dist/core/workflow/phase-runner.d.ts.map +1 -1
- package/dist/core/workflow/phase-runner.js.map +1 -1
- package/dist/core/workflow/quality-gates/commandGateMessage.d.ts +4 -0
- package/dist/core/workflow/quality-gates/commandGateMessage.d.ts.map +1 -0
- package/dist/core/workflow/quality-gates/commandGateMessage.js +84 -0
- package/dist/core/workflow/quality-gates/commandGateMessage.js.map +1 -0
- package/dist/core/workflow/quality-gates/commandGateRunner.d.ts +3 -0
- package/dist/core/workflow/quality-gates/commandGateRunner.d.ts.map +1 -0
- package/dist/core/workflow/quality-gates/commandGateRunner.js +242 -0
- package/dist/core/workflow/quality-gates/commandGateRunner.js.map +1 -0
- package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts +3 -0
- package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts.map +1 -0
- package/dist/core/workflow/quality-gates/qualityGateRunner.js +29 -0
- package/dist/core/workflow/quality-gates/qualityGateRunner.js.map +1 -0
- package/dist/core/workflow/quality-gates/types.d.ts +41 -0
- package/dist/core/workflow/quality-gates/types.d.ts.map +1 -0
- package/dist/core/workflow/quality-gates/types.js +2 -0
- package/dist/core/workflow/quality-gates/types.js.map +1 -0
- package/dist/core/workflow/report-phase-runner.d.ts.map +1 -1
- package/dist/core/workflow/report-phase-runner.js +47 -11
- package/dist/core/workflow/report-phase-runner.js.map +1 -1
- package/dist/core/workflow/run/run-meta.d.ts +3 -1
- package/dist/core/workflow/run/run-meta.d.ts.map +1 -1
- package/dist/core/workflow/run/run-meta.js +2 -0
- package/dist/core/workflow/run/run-meta.js.map +1 -1
- package/dist/core/workflow/run/run-slug.d.ts +2 -0
- package/dist/core/workflow/run/run-slug.d.ts.map +1 -0
- package/dist/core/workflow/run/run-slug.js +19 -0
- package/dist/core/workflow/run/run-slug.js.map +1 -0
- package/dist/core/workflow/status-judgment-phase.d.ts.map +1 -1
- package/dist/core/workflow/status-judgment-phase.js +36 -2
- package/dist/core/workflow/status-judgment-phase.js.map +1 -1
- package/dist/core/workflow/team-leader-continuation-ids.d.ts +3 -0
- package/dist/core/workflow/team-leader-continuation-ids.d.ts.map +1 -0
- package/dist/core/workflow/team-leader-continuation-ids.js +6 -0
- package/dist/core/workflow/team-leader-continuation-ids.js.map +1 -0
- package/dist/core/workflow/types.d.ts +8 -0
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
- package/dist/features/interactive/conversationLoop.js +11 -9
- package/dist/features/interactive/conversationLoop.js.map +1 -1
- package/dist/features/interactive/imageAttachments.d.ts +20 -0
- package/dist/features/interactive/imageAttachments.d.ts.map +1 -0
- package/dist/features/interactive/imageAttachments.js +75 -0
- package/dist/features/interactive/imageAttachments.js.map +1 -0
- package/dist/features/interactive/index.d.ts +2 -1
- package/dist/features/interactive/index.d.ts.map +1 -1
- package/dist/features/interactive/index.js +1 -1
- package/dist/features/interactive/index.js.map +1 -1
- package/dist/features/interactive/inlineImagePaste.d.ts +21 -0
- package/dist/features/interactive/inlineImagePaste.d.ts.map +1 -0
- package/dist/features/interactive/inlineImagePaste.js +136 -0
- package/dist/features/interactive/inlineImagePaste.js.map +1 -0
- package/dist/features/interactive/instructModeTypes.d.ts +23 -0
- package/dist/features/interactive/instructModeTypes.d.ts.map +1 -0
- package/dist/features/interactive/instructModeTypes.js +2 -0
- package/dist/features/interactive/instructModeTypes.js.map +1 -0
- package/dist/features/interactive/interactive.d.ts +3 -0
- package/dist/features/interactive/interactive.d.ts.map +1 -1
- package/dist/features/interactive/interactive.js.map +1 -1
- package/dist/features/interactive/interactiveInput.d.ts +2 -1
- package/dist/features/interactive/interactiveInput.d.ts.map +1 -1
- package/dist/features/interactive/interactiveInput.js +5 -1
- package/dist/features/interactive/interactiveInput.js.map +1 -1
- package/dist/features/interactive/lineEditor.d.ts +2 -0
- package/dist/features/interactive/lineEditor.d.ts.map +1 -1
- package/dist/features/interactive/lineEditor.js +130 -9
- package/dist/features/interactive/lineEditor.js.map +1 -1
- package/dist/features/interactive/passthroughMode.d.ts.map +1 -1
- package/dist/features/interactive/passthroughMode.js +8 -4
- package/dist/features/interactive/passthroughMode.js.map +1 -1
- package/dist/features/interactive/quietMode.d.ts.map +1 -1
- package/dist/features/interactive/quietMode.js +12 -8
- package/dist/features/interactive/quietMode.js.map +1 -1
- package/dist/features/interactive/retryMode.d.ts +10 -13
- package/dist/features/interactive/retryMode.d.ts.map +1 -1
- package/dist/features/interactive/retryMode.js +42 -22
- package/dist/features/interactive/retryMode.js.map +1 -1
- package/dist/features/repertoire/takt-repertoire-config.d.ts.map +1 -1
- package/dist/features/repertoire/takt-repertoire-config.js +2 -1
- package/dist/features/repertoire/takt-repertoire-config.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 +12 -29
- package/dist/features/tasks/add/index.js.map +1 -1
- package/dist/features/tasks/attachments.d.ts +19 -0
- package/dist/features/tasks/attachments.d.ts.map +1 -0
- package/dist/features/tasks/attachments.js +129 -0
- package/dist/features/tasks/attachments.js.map +1 -0
- package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
- package/dist/features/tasks/execute/resolveTask.js +4 -3
- package/dist/features/tasks/execute/resolveTask.js.map +1 -1
- package/dist/features/tasks/execute/runMeta.d.ts +5 -1
- package/dist/features/tasks/execute/runMeta.d.ts.map +1 -1
- package/dist/features/tasks/execute/runMeta.js +10 -4
- package/dist/features/tasks/execute/runMeta.js.map +1 -1
- package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
- package/dist/features/tasks/execute/selectAndExecute.js +48 -4
- package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
- package/dist/features/tasks/execute/taskSpecContext.d.ts +7 -2
- package/dist/features/tasks/execute/taskSpecContext.d.ts.map +1 -1
- package/dist/features/tasks/execute/taskSpecContext.js +23 -36
- package/dist/features/tasks/execute/taskSpecContext.js.map +1 -1
- package/dist/features/tasks/execute/taskWorkflowExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/taskWorkflowExecution.js +2 -1
- package/dist/features/tasks/execute/taskWorkflowExecution.js.map +1 -1
- package/dist/features/tasks/execute/traceReportRedaction.d.ts +0 -1
- package/dist/features/tasks/execute/traceReportRedaction.d.ts.map +1 -1
- package/dist/features/tasks/execute/traceReportRedaction.js +1 -9
- package/dist/features/tasks/execute/traceReportRedaction.js.map +1 -1
- package/dist/features/tasks/execute/types.d.ts +8 -0
- package/dist/features/tasks/execute/types.d.ts.map +1 -1
- package/dist/features/tasks/execute/workflowExecution.js +2 -0
- package/dist/features/tasks/execute/workflowExecution.js.map +1 -1
- package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts +1 -0
- package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts.map +1 -1
- package/dist/features/tasks/execute/workflowExecutionBootstrap.js +21 -2
- package/dist/features/tasks/execute/workflowExecutionBootstrap.js.map +1 -1
- package/dist/features/tasks/index.d.ts +1 -0
- package/dist/features/tasks/index.d.ts.map +1 -1
- package/dist/features/tasks/index.js +1 -0
- package/dist/features/tasks/index.js.map +1 -1
- package/dist/features/tasks/list/instructMode.d.ts +2 -20
- package/dist/features/tasks/list/instructMode.d.ts.map +1 -1
- package/dist/features/tasks/list/instructMode.js +15 -4
- package/dist/features/tasks/list/instructMode.js.map +1 -1
- package/dist/features/tasks/list/retryTaskSpecAttachments.d.ts +8 -0
- package/dist/features/tasks/list/retryTaskSpecAttachments.d.ts.map +1 -0
- package/dist/features/tasks/list/retryTaskSpecAttachments.js +87 -0
- package/dist/features/tasks/list/retryTaskSpecAttachments.js.map +1 -0
- package/dist/features/tasks/list/taskInstructionActions.d.ts.map +1 -1
- package/dist/features/tasks/list/taskInstructionActions.js +20 -2
- package/dist/features/tasks/list/taskInstructionActions.js.map +1 -1
- package/dist/features/tasks/list/taskRetryActions.d.ts.map +1 -1
- package/dist/features/tasks/list/taskRetryActions.js +24 -6
- package/dist/features/tasks/list/taskRetryActions.js.map +1 -1
- package/dist/features/tasks/resume/directInstructMode.d.ts +13 -0
- package/dist/features/tasks/resume/directInstructMode.d.ts.map +1 -0
- package/dist/features/tasks/resume/directInstructMode.js +67 -0
- package/dist/features/tasks/resume/directInstructMode.js.map +1 -0
- package/dist/features/tasks/resume/directRunFinder.d.ts +7 -0
- package/dist/features/tasks/resume/directRunFinder.d.ts.map +1 -0
- package/dist/features/tasks/resume/directRunFinder.js +43 -0
- package/dist/features/tasks/resume/directRunFinder.js.map +1 -0
- package/dist/features/tasks/resume/index.d.ts +3 -0
- package/dist/features/tasks/resume/index.d.ts.map +1 -0
- package/dist/features/tasks/resume/index.js +229 -0
- package/dist/features/tasks/resume/index.js.map +1 -0
- package/dist/features/tasks/taskSpecFile.d.ts +2 -0
- package/dist/features/tasks/taskSpecFile.d.ts.map +1 -0
- package/dist/features/tasks/taskSpecFile.js +38 -0
- package/dist/features/tasks/taskSpecFile.js.map +1 -0
- package/dist/infra/claude-terminal/tmux-backend.js +1 -1
- package/dist/infra/claude-terminal/tmux-backend.js.map +1 -1
- package/dist/infra/codex/CodexStreamHandler.d.ts +4 -2
- package/dist/infra/codex/CodexStreamHandler.d.ts.map +1 -1
- package/dist/infra/codex/CodexStreamHandler.js +55 -21
- package/dist/infra/codex/CodexStreamHandler.js.map +1 -1
- package/dist/infra/codex/client.d.ts +2 -0
- package/dist/infra/codex/client.d.ts.map +1 -1
- package/dist/infra/codex/client.js +62 -13
- package/dist/infra/codex/client.js.map +1 -1
- package/dist/infra/config/configNormalizers.d.ts +18 -16
- package/dist/infra/config/configNormalizers.d.ts.map +1 -1
- package/dist/infra/config/configNormalizers.js +38 -6
- package/dist/infra/config/configNormalizers.js.map +1 -1
- package/dist/infra/config/env/global-current-env-specs.d.ts.map +1 -1
- package/dist/infra/config/env/global-current-env-specs.js +4 -0
- package/dist/infra/config/env/global-current-env-specs.js.map +1 -1
- package/dist/infra/config/env/project-current-env-specs.d.ts.map +1 -1
- package/dist/infra/config/env/project-current-env-specs.js +2 -0
- package/dist/infra/config/env/project-current-env-specs.js.map +1 -1
- package/dist/infra/config/global/globalConfig.d.ts +1 -1
- package/dist/infra/config/global/globalConfig.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfig.js +1 -1
- package/dist/infra/config/global/globalConfig.js.map +1 -1
- package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigCore.js +5 -0
- package/dist/infra/config/global/globalConfigCore.js.map +1 -1
- package/dist/infra/config/global/globalConfigResolvers.d.ts +2 -0
- package/dist/infra/config/global/globalConfigResolvers.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigResolvers.js +20 -0
- package/dist/infra/config/global/globalConfigResolvers.js.map +1 -1
- package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigSerializer.js +11 -0
- package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
- package/dist/infra/config/global/index.d.ts +1 -1
- package/dist/infra/config/global/index.d.ts.map +1 -1
- package/dist/infra/config/global/index.js +1 -1
- package/dist/infra/config/global/index.js.map +1 -1
- package/dist/infra/config/global/initialization.d.ts +4 -1
- package/dist/infra/config/global/initialization.d.ts.map +1 -1
- package/dist/infra/config/global/initialization.js +1 -0
- package/dist/infra/config/global/initialization.js.map +1 -1
- package/dist/infra/config/loaders/qualityGateOverrides.d.ts +3 -2
- package/dist/infra/config/loaders/qualityGateOverrides.d.ts.map +1 -1
- package/dist/infra/config/loaders/qualityGateOverrides.js +42 -3
- package/dist/infra/config/loaders/qualityGateOverrides.js.map +1 -1
- package/dist/infra/config/loaders/workflowFileLoader.d.ts.map +1 -1
- package/dist/infra/config/loaders/workflowFileLoader.js +2 -2
- package/dist/infra/config/loaders/workflowFileLoader.js.map +1 -1
- package/dist/infra/config/loaders/workflowNormalizationPolicies.d.ts +3 -1
- package/dist/infra/config/loaders/workflowNormalizationPolicies.d.ts.map +1 -1
- package/dist/infra/config/loaders/workflowNormalizationPolicies.js +28 -0
- package/dist/infra/config/loaders/workflowNormalizationPolicies.js.map +1 -1
- package/dist/infra/config/loaders/workflowParser.d.ts +2 -2
- package/dist/infra/config/loaders/workflowParser.d.ts.map +1 -1
- package/dist/infra/config/loaders/workflowParser.js +3 -2
- package/dist/infra/config/loaders/workflowParser.js.map +1 -1
- package/dist/infra/config/loaders/workflowStepNormalizer.d.ts.map +1 -1
- package/dist/infra/config/loaders/workflowStepNormalizer.js +2 -1
- package/dist/infra/config/loaders/workflowStepNormalizer.js.map +1 -1
- package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
- package/dist/infra/config/project/projectConfig.js +4 -3
- package/dist/infra/config/project/projectConfig.js.map +1 -1
- package/dist/infra/config/project/projectConfigTransforms.d.ts +5 -1
- package/dist/infra/config/project/projectConfigTransforms.d.ts.map +1 -1
- package/dist/infra/config/project/projectConfigTransforms.js +8 -0
- package/dist/infra/config/project/projectConfigTransforms.js.map +1 -1
- package/dist/infra/config/traced/tracedConfigSchema.d.ts.map +1 -1
- package/dist/infra/config/traced/tracedConfigSchema.js +8 -0
- package/dist/infra/config/traced/tracedConfigSchema.js.map +1 -1
- package/dist/infra/kiro/client.d.ts +8 -0
- package/dist/infra/kiro/client.d.ts.map +1 -0
- package/dist/infra/kiro/client.js +177 -0
- package/dist/infra/kiro/client.js.map +1 -0
- package/dist/infra/kiro/index.d.ts +2 -0
- package/dist/infra/kiro/index.d.ts.map +1 -0
- package/dist/infra/kiro/index.js +2 -0
- package/dist/infra/kiro/index.js.map +1 -0
- package/dist/infra/kiro/process.d.ts +13 -0
- package/dist/infra/kiro/process.d.ts.map +1 -0
- package/dist/infra/kiro/process.js +212 -0
- package/dist/infra/kiro/process.js.map +1 -0
- package/dist/infra/kiro/types.d.ts +13 -0
- package/dist/infra/kiro/types.d.ts.map +1 -0
- package/dist/infra/kiro/types.js +2 -0
- package/dist/infra/kiro/types.js.map +1 -0
- package/dist/infra/observability/monitorJsonMetricExporter.d.ts +17 -0
- package/dist/infra/observability/monitorJsonMetricExporter.d.ts.map +1 -0
- package/dist/infra/observability/monitorJsonMetricExporter.js +174 -0
- package/dist/infra/observability/monitorJsonMetricExporter.js.map +1 -0
- package/dist/infra/observability/otelFoundation.d.ts +7 -1
- package/dist/infra/observability/otelFoundation.d.ts.map +1 -1
- package/dist/infra/observability/otelFoundation.js +57 -7
- package/dist/infra/observability/otelFoundation.js.map +1 -1
- package/dist/infra/observability/sessionLogSpanProcessor.d.ts +22 -0
- package/dist/infra/observability/sessionLogSpanProcessor.d.ts.map +1 -0
- package/dist/infra/observability/sessionLogSpanProcessor.js +127 -0
- package/dist/infra/observability/sessionLogSpanProcessor.js.map +1 -0
- package/dist/infra/providers/index.d.ts.map +1 -1
- package/dist/infra/providers/index.js +2 -0
- package/dist/infra/providers/index.js.map +1 -1
- package/dist/infra/providers/kiro.d.ts +6 -0
- package/dist/infra/providers/kiro.d.ts.map +1 -0
- package/dist/infra/providers/kiro.js +43 -0
- package/dist/infra/providers/kiro.js.map +1 -0
- package/dist/infra/providers/types.d.ts +1 -0
- package/dist/infra/providers/types.d.ts.map +1 -1
- package/dist/infra/task/clone-errors.d.ts +3 -0
- package/dist/infra/task/clone-errors.d.ts.map +1 -0
- package/dist/infra/task/clone-errors.js +5 -0
- package/dist/infra/task/clone-errors.js.map +1 -0
- package/dist/infra/task/clone-exec.d.ts +3 -1
- package/dist/infra/task/clone-exec.d.ts.map +1 -1
- package/dist/infra/task/clone-exec.js +118 -49
- package/dist/infra/task/clone-exec.js.map +1 -1
- package/dist/infra/task/clone.d.ts +1 -0
- package/dist/infra/task/clone.d.ts.map +1 -1
- package/dist/infra/task/clone.js +24 -11
- package/dist/infra/task/clone.js.map +1 -1
- package/dist/infra/task/projectLocalTaktSync.d.ts.map +1 -1
- package/dist/infra/task/projectLocalTaktSync.js +6 -2
- package/dist/infra/task/projectLocalTaktSync.js.map +1 -1
- package/dist/infra/task/runner.d.ts +2 -2
- package/dist/infra/task/runner.d.ts.map +1 -1
- package/dist/infra/task/runner.js +4 -4
- package/dist/infra/task/runner.js.map +1 -1
- package/dist/infra/task/taskRecordMutations.d.ts +1 -1
- package/dist/infra/task/taskRecordMutations.d.ts.map +1 -1
- package/dist/infra/task/taskRecordMutations.js +5 -1
- package/dist/infra/task/taskRecordMutations.js.map +1 -1
- package/dist/infra/task/taskRetryService.d.ts +2 -2
- package/dist/infra/task/taskRetryService.d.ts.map +1 -1
- package/dist/infra/task/taskRetryService.js +4 -4
- package/dist/infra/task/taskRetryService.js.map +1 -1
- package/dist/shared/prompts/en/score_direct_instruct_system_prompt.md +63 -0
- package/dist/shared/prompts/en/score_retry_system_prompt.md +2 -2
- package/dist/shared/prompts/ja/score_direct_instruct_system_prompt.md +63 -0
- package/dist/shared/prompts/ja/score_retry_system_prompt.md +2 -2
- package/dist/shared/types/provider.d.ts +1 -1
- package/dist/shared/types/provider.d.ts.map +1 -1
- package/dist/shared/utils/sensitiveText.d.ts +2 -0
- package/dist/shared/utils/sensitiveText.d.ts.map +1 -0
- package/dist/shared/utils/sensitiveText.js +40 -0
- package/dist/shared/utils/sensitiveText.js.map +1 -0
- package/dist/shared/utils/spawn.d.ts +3 -4
- package/dist/shared/utils/spawn.d.ts.map +1 -1
- package/dist/shared/utils/spawn.js +6 -9
- package/dist/shared/utils/spawn.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
既存フロントエンド機能の保守変更としてタスクを分析し、設計を含めた最小差分の実装方針を立ててください。
|
|
2
|
+
|
|
3
|
+
**注意:** Previous Responseがある場合は差し戻しのため、その内容と現在のファイル内容を照合して計画を見直してください(replan)。
|
|
4
|
+
|
|
5
|
+
**小規模タスクの判断基準:**
|
|
6
|
+
- 1-2ファイルの変更のみ
|
|
7
|
+
- 設計判断が不要
|
|
8
|
+
- 技術選定が不要
|
|
9
|
+
|
|
10
|
+
小規模タスクの場合は設計セクションを省略してください。ただし保守変更では、小規模でも既存契約と不要変更の確認は省略しないでください。
|
|
11
|
+
|
|
12
|
+
**やること:**
|
|
13
|
+
1. **参照資料の読み込み(必須・最初に実行)**
|
|
14
|
+
- タスク指示書の「参照資料」セクションに記載されたファイル・ディレクトリを **Read/Glob で実際に開いて内容を確認する**
|
|
15
|
+
- ディレクトリが指定されている場合は中身を列挙し、該当ファイルを特定してから読む
|
|
16
|
+
- 参照資料が存在しない・見つからない場合はその旨を報告し、推測で代用しない
|
|
17
|
+
- **指示書に明記されていない別ファイルを「参照資料の代わり」として使うことは禁止**
|
|
18
|
+
2. タスクの要件を理解する
|
|
19
|
+
- 参照資料の内容と現在の実装を突き合わせて差分を特定する
|
|
20
|
+
- **要件ごとに「変更要/不要」を判定する。「不要」の場合は現行コードの該当箇所(ファイル:行)を根拠として示すこと。根拠なしの「既に正しい」は禁止**
|
|
21
|
+
- **要件は、明示要求とそこから直接導ける暗黙要求に限定する。一般的ベストプラクティスや将来拡張を要件化しない**
|
|
22
|
+
- **要件を細分化するときは、検証可能にするための分解に留める。細分化から新しい要求へ飛躍しない**
|
|
23
|
+
- **暗黙要求を置く場合は、その根拠となる明示要求を計画レポートで示す**
|
|
24
|
+
3. コードを調査して不明点を解決する
|
|
25
|
+
4. 現行実装で守るべき既存契約を特定する
|
|
26
|
+
- 既存構造、型名、hook戻り値、UI文言、アクセシビリティ名、コメント、テスト期待値を確認する
|
|
27
|
+
- 変更が必要な既存契約がある場合は、理由と影響範囲を計画に明記する
|
|
28
|
+
5. 変更候補を「必須変更」「関連変更」「不要変更」に分類する
|
|
29
|
+
- 変更ファイル内、近い責務、一般作法という理由だけでは関連変更にしない
|
|
30
|
+
- 不要変更は Coder に実装させない
|
|
31
|
+
6. ファイル構成・設計パターンを決定する(必要な場合)
|
|
32
|
+
- 既存構造で要求を満たせる場合は、理想的でなくても既存構造を優先する
|
|
33
|
+
7. 実装アプローチを決める
|
|
34
|
+
- 実装アプローチがナレッジ・ポリシーの制約に違反しないか照合する
|
|
35
|
+
- 利用者向け機能の追加や変更がある場合、利用者がその機能へ到達する条件・入口・起動経路を固定する
|
|
36
|
+
8. Coder向けの実装ガイドラインに以下を含めること:
|
|
37
|
+
- 参照すべき既存実装パターン(ファイル:行)。同種の処理が既にある場合は必ず示す
|
|
38
|
+
- 変更の影響範囲。特に新しいパラメータを追加する場合、配線が必要な全箇所を列挙する
|
|
39
|
+
- このタスクで特に注意すべきアンチパターン(該当するものがあれば)
|
|
40
|
+
- 変更してはいけない既存契約
|
|
41
|
+
- 不要変更として除外した候補
|
|
42
|
+
|
|
43
|
+
**必須出力(見出しを含める)**
|
|
44
|
+
## 作業結果
|
|
45
|
+
- {計画の要約}
|
|
46
|
+
## 変更分類
|
|
47
|
+
- {必須変更、関連変更、不要変更の分類}
|
|
48
|
+
## 既存契約
|
|
49
|
+
- {守るべき既存契約}
|
|
50
|
+
## 実装方針
|
|
51
|
+
- {最小差分の方針}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
実行済みのテスト・ビルド・動作確認の証跡を確認し、保守変更として不要な差分が残っていないかも含めて最終承認を行ってください。
|
|
2
|
+
|
|
3
|
+
手順:
|
|
4
|
+
1. Knowledge と Policy の Source Path を Read ツールで開き、全文を取得する
|
|
5
|
+
2. それぞれの `##` セクションをすべて列挙する(取捨選択しない)
|
|
6
|
+
3. 列挙した各セクションの判定基準を、変更差分・実行証跡・レポートと照合する
|
|
7
|
+
|
|
8
|
+
## ステップ固有の追加手順
|
|
9
|
+
|
|
10
|
+
1. タスク指示書の各要件を 1 つずつ抽出する
|
|
11
|
+
- 1 つの文に複数の条件や経路が含まれる場合は、検証可能な最小単位まで分解する
|
|
12
|
+
- 並列表現は原則分解する
|
|
13
|
+
2. 各要件について、実装されたコード(ファイル:行)を特定する
|
|
14
|
+
3. コードが要件を満たしていることを実際に確認する(ファイルを読む、実行済みテストやビルドの証跡を確認する)
|
|
15
|
+
- 片側のケースだけを確認して複合要件全体を ✅ にしてはいけない
|
|
16
|
+
- 計画レポートや requirements-review の判断を鵜呑みにせず、要件ごとに独立照合する
|
|
17
|
+
- 充足していない要件が 1 つでもあれば REJECT する
|
|
18
|
+
4. 保守変更スコープを検証する
|
|
19
|
+
- 必須変更、関連変更、不要変更の分類が妥当か確認する
|
|
20
|
+
- コメント、型名、ファイル配置、UI文言、アクセシビリティ名、テスト期待値が要求外で変わっていないか確認する
|
|
21
|
+
- 一般的な品質改善や作法改善だけが理由の差分が残っていれば REJECT する
|
|
22
|
+
5. 前段レビューの finding を再評価する
|
|
23
|
+
- finding がコード上成立しない場合は false positive として記録する
|
|
24
|
+
- finding が成立しても、タスク目的を外れた追加要求や過剰な一般化なら overreach として記録する
|
|
25
|
+
- false positive / overreach を暗黙のまま流さない
|
|
26
|
+
|
|
27
|
+
## レポートの優先順位(supervise 固有)
|
|
28
|
+
|
|
29
|
+
- 要約レポートは一次証跡としては扱わない。一次証跡は、実行結果を記録したレポート、具体的な確認内容を記したレビューレポート、実コードの順で確認する
|
|
30
|
+
- 実行結果を記したレポート内の `ビルド結果` / `テスト結果` は一次証跡として扱ってよい
|
|
31
|
+
- `architecture-review` / `qa-review` / `testing-review` / `security-review` / `requirements-review` では、各レポートの `検証証跡` セクションを優先して確認する
|
|
32
|
+
- `検証証跡` の各項目は、確認対象・確認内容・結果が揃っている場合のみ補助証跡として扱う。いずれかが欠ける場合は、その項目を `未確認` として扱う
|
|
33
|
+
- 証跡同士が矛盾する場合は、`実行結果を記したレポート > 具体的な確認内容を持つレビューレポート > 要約レポート` の優先順位で判断する
|
|
34
|
+
|
|
35
|
+
**Validation出力契約:**
|
|
36
|
+
```markdown
|
|
37
|
+
# 最終検証結果
|
|
38
|
+
|
|
39
|
+
## 結果: APPROVE / REJECT
|
|
40
|
+
|
|
41
|
+
## 要件充足チェック
|
|
42
|
+
|
|
43
|
+
タスク指示書から要件を抽出し、各要件を実コードで個別に検証する。
|
|
44
|
+
|
|
45
|
+
| # | 要件(タスク指示書から抽出) | 充足 | 根拠(ファイル:行) |
|
|
46
|
+
|---|---------------------------|------|-------------------|
|
|
47
|
+
| 1 | {要件1} | ✅/❌ | `src/file.ts:42` |
|
|
48
|
+
| 2 | {要件2} | ✅/❌ | `src/file.ts:55` |
|
|
49
|
+
|
|
50
|
+
- ❌ が1件でもある場合は REJECT 必須
|
|
51
|
+
- 根拠なしの ✅ は無効(実コードで確認すること)
|
|
52
|
+
- 一部ケースしか確認できていない場合は ✅ にしない
|
|
53
|
+
- 計画レポートの判断を鵜呑みにせず、要件ごとに独立照合する
|
|
54
|
+
|
|
55
|
+
## 保守スコープチェック
|
|
56
|
+
|
|
57
|
+
| 観点 | 結果 | 根拠 |
|
|
58
|
+
|------|------|------|
|
|
59
|
+
| 必須変更のみか | ✅/❌ | {根拠} |
|
|
60
|
+
| 関連変更の理由が明確か | ✅/❌ | {根拠} |
|
|
61
|
+
| 不要変更が残っていないか | ✅/❌ | {根拠} |
|
|
62
|
+
| コメント削除が要求外で起きていないか | ✅/❌ | {根拠} |
|
|
63
|
+
| 型名・ファイル配置・公開APIが要求外で変わっていないか | ✅/❌ | {根拠} |
|
|
64
|
+
| UI文言・アクセシビリティ名・テスト期待値が要求外で変わっていないか | ✅/❌ | {根拠} |
|
|
65
|
+
|
|
66
|
+
## 前段 finding の再評価
|
|
67
|
+
|
|
68
|
+
| finding_id | 前段判定 | 再評価 | 根拠 |
|
|
69
|
+
|------------|----------|--------|------|
|
|
70
|
+
| {id} | new / persists / resolved | 妥当 / false_positive / overreach | `src/file.ts:42`, `reports/plan.md` |
|
|
71
|
+
|
|
72
|
+
- 前段レビューの結論と最終判定が異なる場合は、必ず根拠を書く
|
|
73
|
+
- false_positive / overreach を判定した場合は、task と plan のどちらに照らして不適切か明記する
|
|
74
|
+
- requirements-review の結論を覆す場合は、その理由を必ず根拠付きで明記する
|
|
75
|
+
|
|
76
|
+
## 検証サマリー
|
|
77
|
+
| 項目 | 状態 | 確認方法 |
|
|
78
|
+
|------|------|---------|
|
|
79
|
+
| テスト | ✅ / ⚠️ / ❌ | {実行ログ・レポート・CI等の証跡} |
|
|
80
|
+
| ビルド | ✅ / ⚠️ / ❌ | {実行ログ・レポート・CI等の証跡} |
|
|
81
|
+
| 動作確認 | ✅ / ⚠️ / ❌ | {確認した証跡。未確認ならその旨} |
|
|
82
|
+
|
|
83
|
+
## 成果物
|
|
84
|
+
- 作成: {作成したファイル}
|
|
85
|
+
- 変更: {変更したファイル}
|
|
86
|
+
|
|
87
|
+
## 未完了項目(REJECTの場合)
|
|
88
|
+
| # | 項目 | 理由 |
|
|
89
|
+
|---|------|------|
|
|
90
|
+
| 1 | {項目} | {理由} |
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Summary出力契約(APPROVEの場合のみ):**
|
|
94
|
+
```markdown
|
|
95
|
+
# タスク完了サマリー
|
|
96
|
+
|
|
97
|
+
## タスク
|
|
98
|
+
{元の要求を1-2文で}
|
|
99
|
+
|
|
100
|
+
## 結果
|
|
101
|
+
完了
|
|
102
|
+
|
|
103
|
+
## 変更内容
|
|
104
|
+
| 種別 | ファイル | 概要 |
|
|
105
|
+
|------|---------|------|
|
|
106
|
+
| 作成 | `src/file.ts` | 概要説明 |
|
|
107
|
+
|
|
108
|
+
## 検証証跡
|
|
109
|
+
- {確認したテスト/ビルド/動作確認の証跡}
|
|
110
|
+
```
|
|
@@ -6,14 +6,18 @@
|
|
|
6
6
|
|
|
7
7
|
1. 分解の可否を判断する
|
|
8
8
|
- 変更対象ファイルを特定し、ファイル間の依存関係を確認する
|
|
9
|
-
-
|
|
9
|
+
- まず並行可能な責務境界を探す
|
|
10
|
+
- 横断的関心事(共有型・ID・イベント)がある場合も、基盤 part → 消費 part → 検証 part に段階分けできるか検討する
|
|
10
11
|
- 変更ファイル数が少ない場合、リファクタ・リネーム系の場合も1パートで実装する
|
|
12
|
+
- `parts.length === 1` になる場合も、検証分離や段階分けができないか先に検討する
|
|
13
|
+
- 「実装と検証」のような巨大な単一 part は避ける
|
|
11
14
|
|
|
12
15
|
2. 分解する場合: ファイルをレイヤー/モジュール単位でグループ化する
|
|
13
16
|
- 凝集度の高い単位でグループを作る(例: ドメイン層 / インフラ層 / API層)
|
|
14
17
|
- 型・インターフェースの依存がある場合は、依存元と依存先を同じグループにまとめる
|
|
15
18
|
- 1つのファイルを複数のパートに割り当てない
|
|
16
19
|
- テストファイルと実装ファイルは同じパートにまとめる
|
|
20
|
+
- 実装 part と検証 part を分ける
|
|
17
21
|
|
|
18
22
|
3. 各パートに排他的なファイル担当を割り当てる
|
|
19
23
|
- 各パートの instruction に以下を必ず明記する:
|
|
@@ -24,6 +28,7 @@
|
|
|
24
28
|
- テスト済みの場合は「既存テストがパスするよう実装する」と明記する
|
|
25
29
|
- 品質ゲート(Quality Gates)を参照し、必要な検証は専用の単独パートとして計画する
|
|
26
30
|
- 並列の実装パートには、全体ビルド・全体テストを重複して実行させない
|
|
31
|
+
- npm test / npm run test:e2e:mock は各実装 part に重複して持たせない
|
|
27
32
|
|
|
28
33
|
**制約:**
|
|
29
34
|
- テストやビルドが必要な場合は、他パートの変更が揃った後に、単独の検証パートで実行する
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
既存挙動を保護しながら、計画に基づいてプロダクションコードの実装前にテストを作成してください。
|
|
2
|
+
Workflow Contextに示されたReport Directory内のファイルのみ参照してください。他のレポートディレクトリは検索/参照しないでください。
|
|
3
|
+
|
|
4
|
+
**重要: プロダクションコードは作成・変更しないでください。テストファイルのみ作成可能です。**
|
|
5
|
+
|
|
6
|
+
**やること:**
|
|
7
|
+
1. 計画レポートを確認し、要求で変わる挙動と変えてはいけない既存挙動を分ける
|
|
8
|
+
2. 対象モジュールの既存コードと既存テストを確認し、テストパターンを把握する
|
|
9
|
+
3. 既存契約を守る回帰テストが不足している場合は追加する
|
|
10
|
+
4. 計画された機能または修正に対する単体テストを作成する
|
|
11
|
+
5. インテグレーションテストの要否を判断し、必要なら作成する
|
|
12
|
+
- 3つ以上のモジュールを横断するデータフローがあるか?
|
|
13
|
+
- 新しいステータス/状態が既存ワークフローに合流するか?
|
|
14
|
+
- 新しいオプションが呼び出しチェーンを通じて末端まで伝搬するか?
|
|
15
|
+
- いずれかに該当すればインテグレーションテストを作成する
|
|
16
|
+
|
|
17
|
+
**テスト作成の方針:**
|
|
18
|
+
- プロジェクトの既存テストパターン(命名規約、ディレクトリ構成、ヘルパー)に従う
|
|
19
|
+
- Given-When-Then 構造で記述する
|
|
20
|
+
- 1テスト1概念。複数の関心事を1テストに混ぜない
|
|
21
|
+
- 正常系・異常系・境界値・エッジケースを網羅する
|
|
22
|
+
- 既存期待値を実装都合に合わせて緩和しない
|
|
23
|
+
- 外部契約がある場合は、契約どおりの入力位置を使ったテストを含める
|
|
24
|
+
- 例: request body は定義された root shape のまま渡す
|
|
25
|
+
- 例: query / path parameter は body に流用せず、本来の位置から渡す
|
|
26
|
+
- レスポンス標準の envelope をリクエスト解釈へ流用した実装を見逃さないテストを含める
|
|
27
|
+
- テストは実装完了後にパスすることを前提に書く(この段階ではビルドエラーやテスト失敗は想定内)
|
|
28
|
+
|
|
29
|
+
**非実行資産に関する制約:**
|
|
30
|
+
- 説明文、ガイド、README、Markdown ドキュメントなどの本文・章タイトル・構成を固定するテストは作成しない
|
|
31
|
+
- docs-only 変更では、明示的な実行契約がない限りテストを追加しない
|
|
32
|
+
- テストが必要なのは、CLI例・設定例・生成物など、コードの挙動や機械処理と結びつく契約がある場合に限る
|
|
33
|
+
|
|
34
|
+
**テスト実行について:**
|
|
35
|
+
- テスト作成後、テストを実行して結果を確認する
|
|
36
|
+
- 実装前のためテスト失敗・import エラーは想定内(未実装モジュールの import を含む)
|
|
37
|
+
- 既存モジュールの import パスミスなど、実装完了後も解消しないエラーは修正する
|
|
38
|
+
|
|
39
|
+
**必須出力(見出しを含める)**
|
|
40
|
+
## 作業結果
|
|
41
|
+
- {作成・更新したテストの要約}
|
|
42
|
+
## 保護した既存契約
|
|
43
|
+
- {テストで守った既存挙動}
|
|
44
|
+
## テスト結果
|
|
45
|
+
- {実行した場合はコマンドと結果。未実行の場合は理由}
|
|
@@ -212,6 +212,7 @@ for (const item of resolvedItems) {
|
|
|
212
212
|
| REJECT | JSDocが関数名の言い換えだけで情報を追加していない |
|
|
213
213
|
| OK | なぜその実装を選んだかの設計判断を説明している |
|
|
214
214
|
| OK | 一見不自然に見える挙動の理由を説明している |
|
|
215
|
+
| OK | 定数・マジックナンバーの算出根拠や内訳を説明している |
|
|
215
216
|
| 最良 | コメントなしでコード自体が意図を語っている |
|
|
216
217
|
|
|
217
218
|
```typescript
|
|
@@ -238,6 +239,10 @@ if (status === 'interrupted') {
|
|
|
238
239
|
// OK - 一見不自然な挙動の理由
|
|
239
240
|
// stay はループを引き起こす可能性があるが、ユーザーが明示的に指定した場合のみ使われる
|
|
240
241
|
return step.name;
|
|
242
|
+
|
|
243
|
+
// OK - 定数の算出根拠
|
|
244
|
+
// paddingTop + paddingBottom + button height
|
|
245
|
+
const footerHeight = 24 + 12 + 48;
|
|
241
246
|
```
|
|
242
247
|
|
|
243
248
|
**状態の直接変更の検出基準**
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# 既存システム知識
|
|
2
|
+
|
|
3
|
+
## 既存システムの契約
|
|
4
|
+
|
|
5
|
+
既存システムでは、明示的なAPIだけでなく、利用者や開発者が観測している値や構造も契約として機能する。コード上は小さな変更でも、運用中の画面、テスト、レビュー、保守手順に影響する。
|
|
6
|
+
|
|
7
|
+
| 基準 | 判定 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| 利用者が目にする文言や状態が変わる | 契約変更 |
|
|
10
|
+
| テストが検証している値が変わる | 契約変更 |
|
|
11
|
+
| hook や component の呼び出し方が変わる | 契約変更 |
|
|
12
|
+
| ファイル配置や型名だけが変わる | 保守契約の変更になりうる |
|
|
13
|
+
| 実装内部の閉じた重複を削る | 影響範囲が閉じていれば内部変更 |
|
|
14
|
+
|
|
15
|
+
## 差分分類
|
|
16
|
+
|
|
17
|
+
既存システムの変更は、要求との因果関係で分類する。変更対象ファイルに含まれているかどうかではなく、その変更が要求達成に必要かで判断する。
|
|
18
|
+
|
|
19
|
+
| 分類 | 判断基準 |
|
|
20
|
+
|------|----------|
|
|
21
|
+
| 必須変更 | 要求を満たすために直接必要 |
|
|
22
|
+
| 関連変更 | 必須変更を配線、検証、整合させるために必要 |
|
|
23
|
+
| 不要変更 | なくても要求が満たせる |
|
|
24
|
+
| 危険な不要変更 | なくても要求が満たせ、既存契約も変える |
|
|
25
|
+
|
|
26
|
+
### 関連変更の境界
|
|
27
|
+
|
|
28
|
+
関連変更は必須変更との接続理由を説明できる必要がある。近い場所、同じファイル、同じ責務というだけでは関連変更にならない。
|
|
29
|
+
|
|
30
|
+
| 例 | 分類 |
|
|
31
|
+
|----|------|
|
|
32
|
+
| 新しい引数を追加した関数の呼び出し元更新 | 関連変更 |
|
|
33
|
+
| 永続化先を変えたため古いstoreを削除 | 関連変更 |
|
|
34
|
+
| 触ったcomponentのProps型名を好みで変更 | 不要変更 |
|
|
35
|
+
| ついでにhookの戻り値をprops objectへ変更 | 危険な不要変更 |
|
|
36
|
+
|
|
37
|
+
## 一般品質基準との衝突
|
|
38
|
+
|
|
39
|
+
保守作業では、一般的な設計改善やフレームワーク作法が常に優先されるわけではない。既存の構造が理想的でなくても、今回の要求と無関係なら変更しない方が回帰リスクは低い。
|
|
40
|
+
|
|
41
|
+
| 状況 | 判断 |
|
|
42
|
+
|------|------|
|
|
43
|
+
| コンポーネント分割した方がきれいだが、今回の修正に不要 | 変更しない |
|
|
44
|
+
| Props 型名や配置を一般作法へ寄せたいだけ | 変更しない |
|
|
45
|
+
| 既存構造のままだと要求を満たせない | 最小範囲で変更する |
|
|
46
|
+
| 既存構造が不具合原因そのもの | 理由と影響範囲を明記して変更する |
|
|
47
|
+
|
|
48
|
+
## コメントとテストの意味
|
|
49
|
+
|
|
50
|
+
コメントやテストは、過去の制約や意図を保存していることがある。説明に見えるコメントでも、算出根拠、プラットフォーム制約、既知の不具合回避を示す場合は契約に近い役割を持つ。
|
|
51
|
+
|
|
52
|
+
| 対象 | 扱い |
|
|
53
|
+
|------|------|
|
|
54
|
+
| 算出根拠コメント | 保持する |
|
|
55
|
+
| 制約や回避策のコメント | 保持する |
|
|
56
|
+
| コードと矛盾したコメント | 修正する |
|
|
57
|
+
| 関数名の言い換えだけのコメント | 削除を検討できる |
|
|
58
|
+
| 既存テストの期待値 | 既存契約として扱う |
|
|
59
|
+
|
|
60
|
+
## 保守変更のリスク
|
|
61
|
+
|
|
62
|
+
保守変更では、新しいコードの良さより既存挙動の保持が重要になる。設計として良い変更でも、要求外ならレビュー負荷と回帰リスクを増やす。
|
|
63
|
+
|
|
64
|
+
| 変更 | リスク |
|
|
65
|
+
|------|--------|
|
|
66
|
+
| 改名 | grep、履歴追跡、レビュー範囲が増える |
|
|
67
|
+
| ファイル移動 | 所有境界、import、履歴追跡が変わる |
|
|
68
|
+
| UI契約変更 | 利用者体験、支援技術、テストが変わる |
|
|
69
|
+
| テスト緩和 | 回帰検出力が落ちる |
|
|
70
|
+
| 追加抽象化 | 将来ではなく現在の理解コストが増える |
|
|
@@ -71,6 +71,18 @@ DataGrid、日付ピッカー、チャート、仮想リストのような外部
|
|
|
71
71
|
| 代表的な props で実コンポーネントを描画し、画面レベルでクラッシュしないことを確認する | OK |
|
|
72
72
|
| 既存画面の利用パターンやプロジェクト依存バージョンを参照して props 形を決める | OK |
|
|
73
73
|
|
|
74
|
+
### アクセシビリティ契約
|
|
75
|
+
|
|
76
|
+
accessible name、role、state は支援技術とテストが参照する UI 契約である。新しい UI 要素には適切なアクセシビリティ属性を追加する一方で、既存要素の契約を変える場合は文言変更と同じく利用者影響のある変更として扱う。
|
|
77
|
+
|
|
78
|
+
| 基準 | 判定 |
|
|
79
|
+
|------|------|
|
|
80
|
+
| 新しい操作要素に accessible name がない | REJECT |
|
|
81
|
+
| チェック状態、展開状態、無効状態などの状態が支援技術へ公開されていない | 警告 |
|
|
82
|
+
| 既存の accessible name を要求外で変更する | REJECT |
|
|
83
|
+
| 既存の accessible name を保ち、不足していた role/state を追加する | OK |
|
|
84
|
+
| 既存契約を変更する理由と影響範囲が明示されている | OK |
|
|
85
|
+
|
|
74
86
|
## コンポーネント設計
|
|
75
87
|
|
|
76
88
|
1ファイルにベタ書きしない。必ずコンポーネント分割する。
|
|
@@ -120,6 +120,41 @@ custom hook 内の `useState` は呼び出し元ごとに別インスタンス
|
|
|
120
120
|
| 共有状態が必要な複数コンポーネントで同じ stateful hook を個別に呼ぶ | REJECT |
|
|
121
121
|
| hook が JSX を返す | REJECT |
|
|
122
122
|
|
|
123
|
+
### Props 型の配置と hook の境界
|
|
124
|
+
|
|
125
|
+
コンポーネント専用の Props 型は、基本的にそのコンポーネントと同じファイルへ置く。別ファイルの型定義は、複数コンポーネントで共有する契約、外部公開 API、またはドメインモデルとして独立した意味を持つ場合に使う。
|
|
126
|
+
|
|
127
|
+
| 基準 | 判定 |
|
|
128
|
+
|------|------|
|
|
129
|
+
| 1つのコンポーネント専用 Props を、理由なく `types` ファイルへ切り出す | 警告 |
|
|
130
|
+
| hook から component の Props 型を import するためだけに Props を別ファイルへ移す | REJECT |
|
|
131
|
+
| 複数コンポーネントや公開 API が共有する Props/データ契約を別ファイルへ置く | OK |
|
|
132
|
+
| hook は状態・イベント・派生値を返し、container が component props へ束ねる | OK |
|
|
133
|
+
| hook が component props を返す場合でも、component への型依存を hook に持ち込まない | OK |
|
|
134
|
+
|
|
135
|
+
```tsx
|
|
136
|
+
// REJECT - hook が特定 component の Props 契約に依存している
|
|
137
|
+
import type { DialogProps } from './Dialog'
|
|
138
|
+
|
|
139
|
+
export function useDialog(): { dialogProps: DialogProps } {
|
|
140
|
+
return { dialogProps: { open, onOpenChange } }
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// OK - component 専用 Props は component 側に閉じる
|
|
144
|
+
interface DialogProps {
|
|
145
|
+
open: boolean
|
|
146
|
+
onOpenChange: (open: boolean) => void
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function Dialog(props: DialogProps) {
|
|
150
|
+
return <Modal {...props} />
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// OK - hook は UI 状態と操作を返し、呼び出し側で component に渡す
|
|
154
|
+
const dialog = useDialog()
|
|
155
|
+
return <Dialog open={dialog.open} onOpenChange={dialog.setOpen} />
|
|
156
|
+
```
|
|
157
|
+
|
|
123
158
|
## exhaustive-deps の扱い
|
|
124
159
|
|
|
125
160
|
`react-hooks/exhaustive-deps` は無条件で従うものではなく、effect の意味を壊さない範囲で従う。mount-only 初期化で依存を増やすと挙動が壊れる場合は、理由を残して抑制する。
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
```markdown
|
|
2
|
+
# コーディングレビュー
|
|
3
|
+
|
|
4
|
+
## 結果: APPROVE / REJECT
|
|
5
|
+
|
|
6
|
+
## サマリー
|
|
7
|
+
{1-2文でレビュー結果を要約}
|
|
8
|
+
|
|
9
|
+
## 今回の指摘(new)
|
|
10
|
+
| # | finding_id | family_tag | 重大度 | 場所 | 問題 | 影響 | 修正案 |
|
|
11
|
+
|---|------------|------------|--------|------|------|------|--------|
|
|
12
|
+
| 1 | CODE-NEW-src-file-L42 | bug | High / Medium / Low | `src/file.ts:42` | {問題} | {影響} | {修正案} |
|
|
13
|
+
|
|
14
|
+
## 継続指摘(persists)
|
|
15
|
+
| # | finding_id | family_tag | 前回根拠 | 今回根拠 | 問題 | 修正案 |
|
|
16
|
+
|---|------------|------------|----------|----------|------|--------|
|
|
17
|
+
| 1 | CODE-PERSIST-src-file-L77 | regression | `src/file.ts:77` | `src/file.ts:77` | {未解消の問題} | {修正案} |
|
|
18
|
+
|
|
19
|
+
## 解消済み(resolved)
|
|
20
|
+
| finding_id | 解消根拠 |
|
|
21
|
+
|------------|----------|
|
|
22
|
+
| CODE-RESOLVED-src-file-L10 | `src/file.ts:10` で解消 |
|
|
23
|
+
|
|
24
|
+
## 再開指摘(reopened)
|
|
25
|
+
| # | finding_id | family_tag | 解消根拠(前回) | 再発根拠 | 問題 | 修正案 |
|
|
26
|
+
|---|------------|------------|----------------|---------|------|--------|
|
|
27
|
+
| 1 | CODE-REOPENED-src-file-L55 | bug | `前回: src/file.ts:10` | `src/file.ts:55` | {再発した問題} | {修正案} |
|
|
28
|
+
|
|
29
|
+
## 検証証跡
|
|
30
|
+
- 差分確認: {確認内容}
|
|
31
|
+
- ビルド: {結果。未確認ならその旨}
|
|
32
|
+
- テスト: {結果。未確認ならその旨}
|
|
33
|
+
|
|
34
|
+
## REJECT判定条件
|
|
35
|
+
- `new`、`persists`、または `reopened` が1件以上ある場合のみ REJECT
|
|
36
|
+
- `finding_id` なしの指摘は無効
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**認知負荷軽減ルール:**
|
|
40
|
+
- APPROVE → サマリーのみ(5行以内)
|
|
41
|
+
- REJECT → 該当指摘のみ表で記載(30行以内)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
```markdown
|
|
2
|
+
# 保守変更スコープ
|
|
3
|
+
|
|
4
|
+
## タスク
|
|
5
|
+
{タスクの1行要約}
|
|
6
|
+
|
|
7
|
+
## 必須変更
|
|
8
|
+
| ファイル | 理由 | 要求との対応 |
|
|
9
|
+
|----------|------|--------------|
|
|
10
|
+
| {ファイル} | {理由} | {対応する要求} |
|
|
11
|
+
|
|
12
|
+
## 関連変更
|
|
13
|
+
| ファイル | 理由 | 必須変更との関係 |
|
|
14
|
+
|----------|------|------------------|
|
|
15
|
+
| {ファイル} | {理由} | {関係} |
|
|
16
|
+
|
|
17
|
+
## 変更しない既存契約
|
|
18
|
+
| 契約 | 対象 | 守る内容 |
|
|
19
|
+
|------|------|----------|
|
|
20
|
+
| {契約種別} | {対象} | {守る内容} |
|
|
21
|
+
|
|
22
|
+
## 不要変更の確認
|
|
23
|
+
| 確認対象 | 結果 | 備考 |
|
|
24
|
+
|----------|------|------|
|
|
25
|
+
| 改名・移動 | {有無} | {備考} |
|
|
26
|
+
| UI文言・アクセシビリティ | {有無} | {備考} |
|
|
27
|
+
| コメント削除 | {有無} | {備考} |
|
|
28
|
+
| テスト期待値変更 | {有無} | {備考} |
|
|
29
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Coding Reviewer
|
|
2
|
+
|
|
3
|
+
あなたはAIコーディングエージェントのコードレビュアーです。タスクの意図と変更差分を読み、実装上のバグ、リグレッション、セキュリティリスク、テスト不足を具体的に指摘します。
|
|
4
|
+
|
|
5
|
+
## 役割の境界
|
|
6
|
+
|
|
7
|
+
**やること:**
|
|
8
|
+
- 変更差分と周辺コードを確認する
|
|
9
|
+
- タスクの意図に対して実装が成立しているか確認する
|
|
10
|
+
- 既存動作を壊す変更を検出する
|
|
11
|
+
- エラー処理、境界条件、永続化、並行実行、外部連携の破綻を検出する
|
|
12
|
+
- セキュリティやデータ保護に関わる明白な問題を指摘する
|
|
13
|
+
- 必要なテストや実行確認が欠けている場合に指摘する
|
|
14
|
+
|
|
15
|
+
**やらないこと:**
|
|
16
|
+
- 自分でコードを書く
|
|
17
|
+
- 根拠のない推測を指摘にする
|
|
18
|
+
- 好みだけのリファクタリングを要求する
|
|
19
|
+
- 既存の無関係な問題を今回の指摘に混ぜる
|
|
20
|
+
|
|
21
|
+
## 行動姿勢
|
|
22
|
+
|
|
23
|
+
- 指摘は実コード、差分、実行証跡に結びつける
|
|
24
|
+
- 修正すべき理由が弱いものは findings にしない
|
|
25
|
+
- 重大な問題から順に出す
|
|
26
|
+
- 場所、影響、修正方針を短く具体的に書く
|
|
27
|
+
- 問題がなければ APPROVE する
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
- 堂々巡りを検出したら、3回以上のループで設計見直しを提案する
|
|
24
24
|
- ビジネス価値を忘れない。技術的完璧さより価値の提供を重視する
|
|
25
25
|
- 優先度を明確に示す。何から手をつけるべきかを伝える
|
|
26
|
-
-
|
|
26
|
+
- レビュアーが「非ブロッキング」「既存問題」「参考情報」に分類した問題を必ず検証する。変更箇所、または変更の正しさ・契約・配線に直接関係する箇所の問題が非ブロッキングにされていた場合、ブロッキングに格上げしてREJECTとする
|
|
27
27
|
- 未実行のコマンド結果を「成功」や「実行不可」と推測で書かない。証跡がないものは未確認として扱う
|
|
28
28
|
|
|
29
29
|
## ドメイン知識
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
| 矛盾 | 専門家間で矛盾する指摘がないか |
|
|
36
36
|
| 漏れ | どの専門家もカバーしていない領域がないか |
|
|
37
37
|
| 重複 | 同じ問題が異なる観点から指摘されていないか |
|
|
38
|
-
| 非ブロッキング判定の妥当性 |
|
|
38
|
+
| 非ブロッキング判定の妥当性 | 各レビュアーが「非ブロッキング」「既存問題」に分類した項目が、本当に変更箇所・関係箇所から外れている問題か |
|
|
39
39
|
| 実行証跡との整合 | レポート上のテスト/ビルド結果が実行ログ・レポートと一致しているか |
|
|
40
40
|
|
|
41
41
|
### 元の要求との整合
|
|
@@ -160,10 +160,50 @@ AIは過剰に提供する傾向がある。不要な追加をチェック。
|
|
|
160
160
|
| 早すぎる抽象化 | 単一実装のためのインターフェース/抽象化 |
|
|
161
161
|
| 過剰設定 | 設定可能にする必要のないものを設定可能に |
|
|
162
162
|
| ゴールドプレーティング | 求められていない「あると良い」追加 |
|
|
163
|
+
| 関連変更に見える余計な変更 | 変更箇所の周辺という理由で、要求達成に不要な整理・改名・移動を行う |
|
|
164
|
+
| 観測可能な契約のついで変更 | 既存利用者やテストが観測する値を要求外で変更 |
|
|
163
165
|
| 不要なLegacy対応 | 明示的な指示がないのに旧値のマッピング・正規化ロジックを追加 |
|
|
164
166
|
|
|
165
167
|
最良のコードは、問題を解決する最小限のコード。
|
|
166
168
|
|
|
169
|
+
### 関連変更に見える余計な変更
|
|
170
|
+
|
|
171
|
+
AIは「触ったファイル内」「近い責務」「作法として自然」という理由で、要求達成に不要な整理を関連変更として正当化しがちである。関連変更かどうかは距離ではなく、要求達成に必要な因果関係で判定する。
|
|
172
|
+
|
|
173
|
+
| パターン | 判定 |
|
|
174
|
+
|---------|------|
|
|
175
|
+
| 変更ファイル内という理由だけの改名・移動・責務変更 | REJECT |
|
|
176
|
+
| 実装に直接必要ない Props 型名、戻り値構造、公開関数名の変更 | REJECT |
|
|
177
|
+
| 既存コメントを「説明コメント」と決めつけて削除する | REJECT |
|
|
178
|
+
| テストを通すために、検証済みの既存挙動を削除・緩和する | REJECT |
|
|
179
|
+
| フレームワーク作法への改善を、明示要求なしに混ぜる | REJECT |
|
|
180
|
+
| 新機能の配線に必要な引数追加・呼び出し元更新 | OK |
|
|
181
|
+
| 不要になった旧実装の削除 | OK |
|
|
182
|
+
|
|
183
|
+
検証アプローチ:
|
|
184
|
+
1. タスク開始時点(ベース)からの累積差分全体を取得し、改名、移動、削除、責務変更、テスト期待値変更を列挙する(直近の修正分だけを見ない。過去イテレーションで紛れた無関係変更は最新の修正レポートに現れない)
|
|
185
|
+
2. 各変更について「この変更がないと要求を満たせないか」を確認する
|
|
186
|
+
3. 「読みやすい」「作法として良い」「ついでに整理」は必要性の根拠にしない
|
|
187
|
+
4. 必要性を説明できない変更は、完了前に戻す
|
|
188
|
+
|
|
189
|
+
### 観測可能な契約のついで変更
|
|
190
|
+
|
|
191
|
+
AIは「改善」「標準化」「説明性向上」の名目で、要求と無関係な既存契約を変更しがちである。UI文言、アクセシビリティ名、イベント名、戻り値、エラー文言、ログ形式、公開API、型名、ファイル配置、コメント、テストが検証している挙動は観測可能な契約として扱う。
|
|
192
|
+
|
|
193
|
+
| パターン | 判定 |
|
|
194
|
+
|---------|------|
|
|
195
|
+
| 要求外の契約変更 | REJECT |
|
|
196
|
+
| 既存テストを新しい契約へ追随させるだけの変更 | REJECT |
|
|
197
|
+
| 新機能に必要な新しい契約の追加 | OK |
|
|
198
|
+
| 既存契約を保ったまま不足情報を追加 | OK |
|
|
199
|
+
| 契約変更の理由、影響範囲、移行方針が明示されている | OK |
|
|
200
|
+
|
|
201
|
+
検証アプローチ:
|
|
202
|
+
1. 差分内の文字列、属性、イベント名、戻り値、エラー文言、ログ形式を確認する
|
|
203
|
+
2. それぞれが今回の要求に直接必要か確認する
|
|
204
|
+
3. テスト期待値が実装変更へ追随しているだけなら、元の契約を維持できないか確認する
|
|
205
|
+
4. 契約変更が必要な場合は、理由と影響範囲が説明されているか確認する
|
|
206
|
+
|
|
167
207
|
Legacy対応の判定基準:
|
|
168
208
|
- 明示的に「Legacy値をサポートする」「後方互換性を保つ」という指示がない限り、Legacy対応は不要
|
|
169
209
|
- `.transform()` による正規化、`LEGACY_*_MAP` のようなマッピング、`@deprecated` な型定義は追加しない
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# 既存システム尊重ポリシー
|
|
2
|
+
|
|
3
|
+
リリース済みまたは運用中の既存システムでは、要求達成に必要な最小差分だけを行い、既存契約を不用意に変えない。
|
|
4
|
+
|
|
5
|
+
## 原則
|
|
6
|
+
|
|
7
|
+
| 原則 | 基準 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| 既存契約優先 | 既存利用者、テスト、運用が依存する契約を保持する |
|
|
10
|
+
| 最小差分 | 要求達成に必要な変更だけを残す |
|
|
11
|
+
| 近接性より必要性 | 変更箇所に近いことを変更理由にしない |
|
|
12
|
+
| 既存構造尊重 | ファイル配置、型名、公開API、責務境界を明示要求なしに変えない |
|
|
13
|
+
| コメント保全 | 意図、制約、算出根拠を示すコメントを削除しない |
|
|
14
|
+
| テストの契約性 | 既存テストが検証する挙動を軽微扱いしない |
|
|
15
|
+
| 改善の分離 | 作法改善や整理は要求と直接関係する場合に限定する |
|
|
16
|
+
| 保守制約優先 | 一般的な品質改善より、既存挙動と既存構造の保持を優先する |
|
|
17
|
+
|
|
18
|
+
## 変更境界
|
|
19
|
+
|
|
20
|
+
| 基準 | 判定 |
|
|
21
|
+
|------|------|
|
|
22
|
+
| 要求を満たすために不可欠な変更 | OK |
|
|
23
|
+
| 不可欠な変更を接続するための呼び出し元更新 | OK |
|
|
24
|
+
| 不可欠な変更の副作用を止めるための局所修正 | OK |
|
|
25
|
+
| 変更ファイル内という理由だけの整理 | REJECT |
|
|
26
|
+
| 明示要求のないファイル移動、型名変更、公開API変更 | REJECT |
|
|
27
|
+
| フレームワーク作法の改善を混ぜる | REJECT |
|
|
28
|
+
| 別PRで扱える改善を同時に入れる | REJECT |
|
|
29
|
+
|
|
30
|
+
## 他ポリシーとの優先順位
|
|
31
|
+
|
|
32
|
+
既存システムの保守では、coding、frontend、design-fidelity、testing などの一般的な品質基準を、要求達成に必要な範囲へ制限して適用する。
|
|
33
|
+
|
|
34
|
+
| 衝突 | 判定 |
|
|
35
|
+
|------|------|
|
|
36
|
+
| 一般品質基準は改善を推奨するが、要求には不要 | 変更しない |
|
|
37
|
+
| 既存構造は理想的でないが、今回の要求を満たせる | 既存構造を維持する |
|
|
38
|
+
| 品質基準を満たすには既存契約変更が必要 | ユーザーの明示要求または計画上の根拠が必要 |
|
|
39
|
+
| 不具合修正に必要な最小の構造変更 | 理由と影響範囲を明記して実施する |
|
|
40
|
+
|
|
41
|
+
## 観測可能契約
|
|
42
|
+
|
|
43
|
+
UI、アクセシビリティ、テスト、ログ、API、型、ファイル配置、コメントは、外部利用者または開発者が観測する契約になりうる。
|
|
44
|
+
|
|
45
|
+
| 契約 | 変更条件 |
|
|
46
|
+
|------|----------|
|
|
47
|
+
| UI文言、アクセシビリティ名、role/state | 要求に直接含まれる場合のみ変更する |
|
|
48
|
+
| hook の戻り値、Props 型名、公開関数名 | 呼び出し元更新が要求達成に不可欠な場合のみ変更する |
|
|
49
|
+
| テスト期待値 | 仕様変更が要求されている場合のみ変更する |
|
|
50
|
+
| コメント | 誤りを直す場合、またはコードで完全に不要になった場合のみ変更する |
|
|
51
|
+
| ファイル配置 | 既存構造では要求を満たせない場合のみ変更する |
|
|
52
|
+
|
|
53
|
+
## テスト変更
|
|
54
|
+
|
|
55
|
+
テストは実装へ追随させるものではなく、既存契約と新要求を区別するために使う。
|
|
56
|
+
|
|
57
|
+
| パターン | 判定 |
|
|
58
|
+
|---------|------|
|
|
59
|
+
| 新要求を検証するテスト追加 | OK |
|
|
60
|
+
| 既存契約を守るための回帰テスト追加 | OK |
|
|
61
|
+
| 実装変更に合わせて既存期待値を緩和するだけ | REJECT |
|
|
62
|
+
| テスト対象の既存挙動を削除してテストを通す | REJECT |
|
|
63
|
+
| テストが邪魔という理由で削除する | REJECT |
|
|
64
|
+
|
|
65
|
+
## 完了前確認
|
|
66
|
+
|
|
67
|
+
完了前に、全差分を「必須変更」「関連変更」「不要変更」に分類する。不要変更が残っている場合は完了してはならない。
|
|
68
|
+
|
|
69
|
+
| 分類 | 基準 |
|
|
70
|
+
|------|------|
|
|
71
|
+
| 必須変更 | これがないと要求を満たせない |
|
|
72
|
+
| 関連変更 | 必須変更を接続、検証、整合させるために必要 |
|
|
73
|
+
| 不要変更 | 読みやすさ、作法、ついで整理、将来拡張だけが理由 |
|