Open follow-up work before adding changes to this branch.
Review in progress
Review has started for this task. Keep this PR stable while reviewers work; capture new scope or fixes in a follow-up task instead of pushing another change here.
Shannon
primary
C
Carl
light
Created
Jul 08, 06:33
Started
Jul 08, 07:25
DevOps handoff
Type
Feature
Shape
ui+db
Worktree Slug
testing-phase-timestamps
Repositories
mcritchie-studio
Release Slug
—
Branch
feat/testing-phase-timestamps
Acceptance Criteria
Expected Test Plan
Checks Run
Agent Context
Observability layer for TESTING latency - the measure-first foundation before any pipeline reimagining. Endorsed with hardening (all folded in). PHASE SET (the five, TASK-OWNED, individual through reviewed; anchor every window on DURABLE events, never the session-bound token capture which taints under subagent fan-out): 1. Build - building transition to first cert start (implementation + directional testing; explicitly ABSORBS the build/implementation span so it is not left unnamed - often the fattest bar). 2. Local Certification - cert start to cert finish (full-suite-check + dor-check). NEEDS NEW STAMPS: no durable event exists today, so full-suite-check must emit a cert-started and a cert-finished TaskEvent (it already knows both moments). This is the fat bar we most want to see; without the stamp the dashboard has a hole exactly where the pain is. 3. CI - PR opened to all required GitHub checks green (derive from GitHub checks API timestamps). 4. Review - submitted to reviewed (derive from TaskEvents). 5. Operator Acceptance - approval_requested_at to approval_approved_at. NEEDS approval_approved_at: the requested timestamp exists but the approved one likely does not, so bin/task must stamp approval_approved_at on the approval transition. RULE: derive where the event exists (Build, CI, Review); add the two minimal durable stamps where it does not (cert start/finish TaskEvent; approval_approved_at). Not a stamping burden - the tool that owns each transition emits one line. PERSISTENCE (decision 1): model TaskTestingPhase on the existing Release::DurationCache pattern - a MATERIALIZED read-model projection recomputed idempotently from TaskEvents/approval/CI, never hand-maintained (drift-proof, backfillable, dashboard-queryable). Single-task timeline may derive-on-read; the aggregate view needs the materialized table. Anchor windows on durable TaskEvents, not token capture. MVP (decision 2): the five task-owned phases only. RELEASE-OWNED phases (QA, Production) are OUT of MVP and are RELEASE grain, not per-task - do NOT smear a shared release window onto each member task (double-counts). They land as a fast-follow, stamped on the Release, inherited by membership. SUCCESS SIGNAL: when Local Certification surfaces as the fat bar in the aggregate view, that is the data-backed mandate to move it to CI. DEFERRED (NOT this task; a data-driven follow-on program the phase data will justify): retire the local full-suite from the submitted gate and make CI-green authoritative (ci-scope-capture already ingests CI verdicts as gradeable evidence); shard the CI suite; impact-based test selection; ephemeral QA environments. Coordination: a separate tiny task caps full-suite-check parallel workers - reconcile the bin/full-suite-check diff. Rides the same telemetry substrate as the usage-accuracy epic (PR #455 shipped Phase 1; Phases 2-3 pending) but is independent and higher-leverage for this process pain.
Stage Timeline
Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. — means the agent didn't report that metric.
Conversation
QA review feedback, agent handoffs, and follow-up notes for this task.
No task feedback has been recorded yet.
Sealed-bid sizing
Edit →Alex (PM)
—
Avi (PO)
LARGE
Dev
LARGE
Actual
—
We emailed a one-tap sign-in link to . It expires shortly and can only be used once.
No email? Check spam, or close this and try again.