role-proof-duration — Routing proof: format elapsed time
Plan: sha256:586c3bec4e9092d582c79d5f049e2fc01b8e62cd002daa2b1e4a0cee49d47a02
Cycle: 2026-W37
Priority: 0
Risk: low
Token ceiling: 150000
Goal
Prove Astra high Scout/Review and medium Implement using two independent sandboxed tasks and protected auto merge
Problem
acceptance/routing/duration.ts is an unimplemented fixture
Desired outcome
Implement formatDuration: null/nonfinite -> Unavailable, negative -> 0s; floor milliseconds to seconds; below60 -> Ns, below3600 -> Nm Ns, otherwise Nh Nm Ns with hours unbounded. Match the unchanged check-duration.ts cases.
Scope
- acceptance/routing/duration.ts
Non-goals
- Only edit the named implementation file. Do not change acceptance scripts, workflows, dependencies, or other code. Do not commit or push manually; Roc handles commits and PRs.
Acceptance criteria
- bun acceptance/routing/check-duration.ts passes unchanged
Validation
- bun acceptance/routing/check-duration.ts
- bunx --no-install biome check acceptance/routing/duration.ts
Dependencies
role-proof-duration — Routing proof: format elapsed time
Plan: sha256:586c3bec4e9092d582c79d5f049e2fc01b8e62cd002daa2b1e4a0cee49d47a02
Cycle: 2026-W37
Priority: 0
Risk: low
Token ceiling: 150000
Goal
Prove Astra high Scout/Review and medium Implement using two independent sandboxed tasks and protected auto merge
Problem
acceptance/routing/duration.ts is an unimplemented fixture
Desired outcome
Implement formatDuration: null/nonfinite -> Unavailable, negative -> 0s; floor milliseconds to seconds; below60 -> Ns, below3600 -> Nm Ns, otherwise Nh Nm Ns with hours unbounded. Match the unchanged check-duration.ts cases.
Scope
Non-goals
Acceptance criteria
Validation
Dependencies