feat(#242): set status=gated on BLOCKED:PERSISTENT instead of status=blocked#
Problem#
handlePersistentBlock was setting status: 'blocked' (an error-path status) instead of status: 'gated' (a quality-gate status), causing dashboard misclassification of PERSISTENT blocks.
Task / Link#
Closes #242
Changes#
task-state.types.ts: add'gated'toTaskStatusunion typeinternal-adapter.service.ts:handlePersistentBlocknow setsstatus: 'gated'and passes'gated'toonPhaseBlockedphase-hooks.service.ts: extendonPhaseBlockedcategory type to include'gated'; early-return guard suppresses label/comment forcategory === 'gated'onrefine/reviewphasesinternal-adapter.service.spec.ts: updated persistent-block test expectations to assert'gated'status and hook argphase-hooks.service.spec.ts: added two tests verifyinggatedcategory is suppressed onrefineandreviewphases
Notes#
No migration script for existing blocked rows sourced from BLOCKED:PERSISTENT signals — those can be corrected manually via the control API status-override endpoint or a follow-up issue. Genuine error-path blocked rows (transient exhaustion, retry-limit) are unaffected.
Testing#
npm run test— 672 tests pass (all suites green)