(parsed)
| 223 | }; |
| 224 | } |
| 225 | |
| 226 | function packagePhaseReadiness(parsed) { |
| 227 | const phases = parsed.phases || []; |
| 228 | const packagePhase = phases.find((phase) => { |
| 229 | return String(phase.type || '').toLowerCase() === 'package' || |
| 230 | /package|review/i.test(String(phase.name || '')); |
| 231 | }); |
| 232 | if (!packagePhase) return { hasPackagePhase: false, readyForPackage: false }; |
| 233 | |
| 234 | const prior = phases.filter((phase) => phase.number < packagePhase.number); |
| 235 | return { |
| 236 | hasPackagePhase: true, |
| 237 | phaseNumber: packagePhase.number, |
| 238 | status: packagePhase.status, |
| 239 | readyForPackage: !isPhaseComplete(packagePhase) && prior.every(isPhaseComplete), |
| 240 | }; |
| 241 | } |
| 242 | |
| 243 | function reviewPackageEvidenceStatus(content, projectRoot) { |
no test coverage detected