Show start, finish and duration in os-sdlc implementation runs #804
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#804
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
An implementation run does not show when it started or finished.
Implementation::OpenPayload#to_hreturnscreated_atas a rawTime#to_sstring, and the implement skill does not tell the orchestrator to show it.Implementation::Summary#totalsreturnselapsed_sas raw seconds. The user cannot see how long a run took, or how long ago a run in an old terminal window happened.Reproduce
n/a: feature ticket.
Approach
Timestampformatstime.localtimewith"%a %Y-%m-%d %H:%M %Z". It uses the system zone, which is America/New_York on the user's machines.Durationrounds to whole seconds and drops leading zero units only. Both are presenters inlib/os_sdlc/presenter/, one constant per file, likepresenter/failure_directive.rb.OpenPayload#to_haddsstarted:.Summary#totalsaddsstarted:,finished:(fromterminal_at) andduration:. Keepcreated_atandelapsed_sas they are.Tests must not depend on the machine zone. Build times with
Time.localand compare the zone part against the same value.Required work:
OsSdlc::Timestampinlib/os_sdlc/presenter/timestamp.rb.OsSdlc::Durationinlib/os_sdlc/presenter/duration.rb.startedtoImplementation::OpenPayload#to_h.started,finishedanddurationtoImplementation::Summary#totals.skills/implement/SKILL.md, afterimplementation-open, tell the orchestrator to printImplementation <implementation_id> started <started>to the user. In the report step, tell it to printStarted,FinishedandDurationlines under the dispatch table — check:grep -n "started" plugins/os-sdlc/skills/implement/SKILL.mdRejected: ActionView
distance_of_time_in_words— it gives "about 1 hour", which is not precise, and it adds actionview, activesupport and nokogiri for one method.Rejected: a relative "3 days ago" phrase — it is correct only when printed and becomes wrong in a terminal window that stays open.
Rejected: ENV or tzinfo zone configuration — Ruby already uses the system zone.
Acceptance criteria
Timestamprenders it, then the text is the weekday,2026-09-28 15:01and the zone abbreviation.Durationrenders it, then the text is38 min 12 s.Durationrenders it, then the text is1 h 0 min 5 s.Durationrenders it, then the text is42 s.implementation-openreturns, then the payload hasstartedrendered byTimestampfromcreated_at.implementation-reportruns, thentotalshasstarted,finishedfrom the terminal stamp, anddurationrendered byDuration.Owner sketch
Non-goals
The payload presenter move is #805. The failure block is #806.
Origin
OpenPayloadreturns rawcreated_at,Summaryreturns rawelapsed_s← DESIGN (presenter/implementation/open_payload.rb:15,presenter/implementation/summary.rb:22)plugins/os-sdlc/lib/os_sdlc/presenter/implementation/open_payload.rb,plugins/os-sdlc/lib/os_sdlc/presenter/implementation/summary.rbWork started on branch ticket-804 via /os-sdlc:implement.
Resolution
Done: Timestamp and Duration presenters added; implementation-open payload carries started; report totals carry started, finished and duration; implement skill prints them.
Evidence: Commit
18cc07e3on ticket-804. os-sdlc implementation 62 reached implementation_complete: 11 dispatches, suite-check dispatch 648 green, contract-auditor dispatch 649 pass.Follow-ups: Existing: #803 (worktree guard blocked the contract-auditor heredoc; orchestrator submitted it by hand), #665 (stale stdout fixture has no repair route; fixture updated by hand). Dropped: optional double rounding in summary.rb; implementation-report refusing after implementation_complete (terminal payload already carries the summary, raised with the user).