Payload/github/templates/harness-requirements.json
|
{ "version": "1.0", "description": "Profile-driven slice obligations for validate-review-loop.ps1. Paths are relative to repo root. This file does NOT list shell commands - load .github/skills/repo-agent-basics/SKILL.md for pwsh -File scripts/harness-invoke.ps1 lines and docs/kaden/harness-journal.md for the one-turn contract.", "_documentation": { "purpose": "Obligations only: which ATDD phases, reviewer cycles, sensors, and feature phases must exist before human COMMIT / review_ready for each rigor profile.", "not_this_file": "Shell command table, turn-start/stop sequencing, or hook install - those live in repo-agent-basics and harness-journal.md.", "commands_skill": ".github/skills/repo-agent-basics/SKILL.md", "journal_one_turn": "docs/kaden/harness-journal.md#one-ownership-turn-command-contract", "script_index": "docs/kaden/harness-journal-blueprint.md", "gate_blocking": "profiles.<name>.gate_blocking is the review_ready vs COMMIT table (validate-review-loop and -CommitReady). Do not duplicate conflicting numbers in skills.", "contract_module": "scripts/lib/HarnessContract.psm1 (monolith; agents use CLI scripts, not Import-Module)", "skip_reason_codes": "Allowlisted skip_reason_code values for harness-record-phase.ps1 -Phase skipped (must match this list)." }, "requirements_path": ".github/templates/harness-requirements.json", "skip_reason_codes": [ "CODE_FIRST_BUILD", "LEAN_PROFILE", "NO_ELIGIBLE_PRODUCTION_FILES", "NO_PRODUCTION_CHANGES", "NO_STRYKER_HARNESS", "OPERATOR_OVERRIDE", "OPERATOR_ABORT", "RED_RECOVERY", "REFACTOR_NOT_APPLICABLE", "REUSED_FRESH_SENSOR", "WALKING_SKELETON" ], "profiles": { "lean": { "slice": { "phases_required": [ "RED", "GREEN", "REFACTOR" ], "phases_conditional": { "MUTATE": { "when": "production_js_changed", "allowed_skip_codes": [ "LEAN_PROFILE", "NO_PRODUCTION_CHANGES", "NO_STRYKER_HARNESS", "OPERATOR_OVERRIDE" ] } }, "cycles_required": [ ], "sensors_required": [ { "name": "verify-local", "type": "computational", "min_verdict": "PASS", "when": "code_changed", "source": "harness-sensor.ps1" } ], "ownership_status_before_human_commit": "review_ready" }, "feature": { "phases_before_commit": [ ] }, "gate_blocking": { "security": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ "high", "critical" ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "consistency": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "documentation": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "code-smell": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "high", "critical" ] }, "slice-review": { "review_ready_min_verdict": "APPROVE", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] } } }, "standard": { "slice": { "phases_required": [ "RED", "GREEN", "REFACTOR" ], "phases_conditional": { "MUTATE": { "when": "production_js_changed", "allowed_skip_codes": [ "LEAN_PROFILE", "NO_PRODUCTION_CHANGES", "NO_STRYKER_HARNESS", "OPERATOR_OVERRIDE" ] } }, "cycles_required": [ { "reviewer": "atdd-developer-reviewer", "min_verdict": "APPROVED" } ], "sensors_required": [ { "name": "verify-local", "type": "computational", "min_verdict": "PASS", "when": "code_changed", "source": "harness-sensor.ps1" }, { "name": "lint:tests", "type": "computational", "min_verdict": "PASS", "when": "tests_changed", "source": "harness-sensor.ps1" }, { "name": "mutation:diff", "type": "computational", "min_verdict": "PASS", "when": "production_js_changed", "source": "harness-sensor.ps1", "allow_verdict": [ "PASS", "PASS_WITH_FINDINGS", "SKIPPED" ] }, { "name": "validate-review-loop", "type": "computational", "min_verdict": "PASS", "when": "review_ready", "source": "harness-sensor.ps1" } ], "ownership_status_before_human_commit": "review_ready" }, "feature": { "phases_before_commit": [ { "id": "quality-gates", "status": "complete" }, { "id": "slice-review", "status": "complete", "require_slice_verdict": true } ] }, "gate_blocking": { "security": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ "high", "critical" ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "consistency": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "documentation": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "code-smell": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "high", "critical" ] }, "slice-review": { "review_ready_min_verdict": "APPROVE", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] } } }, "thorough": { "slice": { "phases_required": [ "RED", "GREEN", "REFACTOR" ], "phases_conditional": { "MUTATE": { "when": "production_js_changed", "allowed_skip_codes": [ "NO_PRODUCTION_CHANGES", "NO_STRYKER_HARNESS", "OPERATOR_OVERRIDE" ] } }, "cycles_required": [ { "reviewer": "atdd-developer-reviewer", "min_verdict": "APPROVED" }, { "reviewer": "test-design-reviewer", "min_verdict": "APPROVED" } ], "sensors_required": [ { "name": "verify-local", "type": "computational", "min_verdict": "PASS", "when": "code_changed", "source": "harness-sensor.ps1" }, { "name": "lint:tests", "type": "computational", "min_verdict": "PASS", "when": "tests_changed", "source": "harness-sensor.ps1" }, { "name": "mutation:diff", "type": "computational", "min_verdict": "PASS", "when": "production_js_changed", "source": "harness-sensor.ps1", "allow_verdict": [ "PASS", "PASS_WITH_FINDINGS", "SKIPPED" ] }, { "name": "validate-review-loop", "type": "computational", "min_verdict": "PASS", "when": "review_ready", "source": "harness-sensor.ps1" } ], "ownership_status_before_human_commit": "review_ready" }, "feature": { "phases_before_commit": [ { "id": "quality-gates", "status": "complete" }, { "id": "slice-review", "status": "complete", "require_slice_verdict": true } ] }, "gate_blocking": { "security": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ "high", "critical" ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "consistency": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "documentation": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] }, "code-smell": { "review_ready_min_verdict": "NEEDS_REVISION", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "high", "critical" ] }, "slice-review": { "review_ready_min_verdict": "APPROVE", "review_ready_block_severities": [ ], "commit_requires_disposition_severities": [ "medium", "high", "critical" ] } } }, "exhaustive": { "inherits": "thorough", "slice": { "cycles_required": [ { "reviewer": "atdd-developer-reviewer", "min_verdict": "APPROVED" }, { "reviewer": "test-design-reviewer", "min_verdict": "APPROVED" }, { "reviewer": "clean-coder-reviewer", "min_verdict": "APPROVED", "when": "refactor_delegated" } ] } } } } |