Register completed turn duration reliability gate

This commit is contained in:
Merge Sim
2026-09-09 21:47:39 -07:00
parent 45036bb52c
commit 4ae26deb11
+89
View File
@@ -10,6 +10,95 @@
}
},
"gates": [
{
"id": "agent-session.completed-turn-duration",
"title": "Completed turn duration survives client recovery and history pagination",
"maturity": "experimental",
"protection": "partial",
"owner": "agent-session-runtime",
"layer": "shared-and-renderer-unit",
"surfaces": ["native chat", "structured agent history", "structured agent subscriptions"],
"platforms": ["macos", "linux", "windows"],
"providers": ["local", "ssh", "remote-runtime", "mobile"],
"coveredPlatforms": ["macos"],
"coveredProviders": ["local"],
"coverageNotes": "Deterministic provider, journal recovery, RPC projection and shared renderer tests run on macOS. Shared logic serves desktop and mobile; these tests do not prove native mobile or real SSH transport. Local/daemon PTY input, geometry and WSL process launch are unaffected.",
"motivatingLinks": ["https://github.com/stablyai/orca/pull/19695"],
"invariant": "An observed completed turn retains the same host-recorded duration and initiating user-message attribution through client reload, settlement retry and loading older history; older clients receive the compatible item carrier.",
"oracle": "Render a host-settled duration without observing completion locally; preserve an exit at 2000 through failed settlement at 60000 and later retry; retain a seven-second older turn beyond 256 submitted turns; prune aliases with removed user items and preserve alias identity during item-only streaming.",
"commands": [
"ORCA_BACKGROUND_LAUNCH=1 pnpm test src/main/codex/codex-requested-close-turn-timing.test.ts src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts src/shared/structured-agent-session-turn-timing-retention.test.ts src/shared/structured-agent-session-turn-timing.test.ts src/main/codex/codex-structured-journal-translation-turn-lifecycle.test.ts src/main/runtime/rpc/methods/structured-agent-session-turn-item-capability.test.ts src/renderer/src/components/native-chat/NativeChatMessageList.turn-timing.test.tsx"
],
"testFiles": [
"src/main/codex/codex-requested-close-turn-timing.test.ts",
"src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts",
"src/shared/structured-agent-session-turn-timing-retention.test.ts",
"src/shared/structured-agent-session-turn-timing.test.ts",
"src/main/codex/codex-structured-journal-translation-turn-lifecycle.test.ts",
"src/main/runtime/rpc/methods/structured-agent-session-turn-item-capability.test.ts",
"src/renderer/src/components/native-chat/NativeChatMessageList.turn-timing.test.tsx"
],
"assertionRefs": [
{
"file": "src/main/codex/codex-requested-close-turn-timing.test.ts",
"assertions": ["keeps the first exit receipt when retry requestedClose=%s"]
},
{
"file": "src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts",
"assertions": [
"retains the exit receipt through failed settlement and a later loaded retry"
]
},
{
"file": "src/shared/structured-agent-session-turn-timing-retention.test.ts",
"assertions": [
"keeps an older page duration after the recent submission budget fills",
"drops an old alias once rewind removes its user item"
]
},
{
"file": "src/renderer/src/components/native-chat/NativeChatMessageList.turn-timing.test.tsx",
"assertions": ["renders a host-settled duration without ever clocking the turn locally"]
}
],
"evidenceRuns": [
{
"date": "2026-09-09",
"runner": "local",
"platform": "macos",
"command": "ORCA_BACKGROUND_LAUNCH=1 pnpm test src/main/codex/codex-requested-close-turn-timing.test.ts src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts src/shared/structured-agent-session-turn-timing-retention.test.ts src/shared/structured-agent-session-turn-timing.test.ts src/main/codex/codex-structured-journal-translation-turn-lifecycle.test.ts src/main/runtime/rpc/methods/structured-agent-session-turn-item-capability.test.ts src/renderer/src/components/native-chat/NativeChatMessageList.turn-timing.test.tsx",
"result": "passed",
"durationSeconds": 6.29,
"summary": "51 tests passed across seven files at 45036bb52c plus coordinator-owned compatibility/timing/rewind edits; working-state evidence, not final commit signoff."
}
],
"runtimeBudget": {
"p95Seconds": 30,
"scope": "Deterministic focused tests without an app launch; initial target budget pending CI soak."
},
"flakeHistory": {
"status": "not-started",
"evidence": "No CI soak history for this combined gate."
},
"redGreenEvidence": {
"status": "complete",
"evidence": "Before fixes, failed settlement stored 60000 instead of observed 2000 and older-page duration was undefined instead of seven seconds after 257 submissions. The focused regressions pass after fixes."
},
"performanceBudget": {
"required": true,
"evidence": "No polling, process fanout or new timer. Alias retention follows loaded user items plus 256 recent records; lookup uses a Set, removal/reset prunes aliases, and item-only stream batches retain the submission array identity."
},
"knownGaps": [
"This deterministic gate does not launch Electron or prove a full app restart; exact-head manual screenshots are separate PR evidence.",
"Native mobile, live SSH/relay transport and Windows/Linux execution are not exercised by this command.",
"Accumulated-history wall-clock profiling and CI soak remain unmeasured."
],
"promotionCriteria": [
"Complete CI soak without unexplained flakes and retain the value-based retry, pagination and rendering oracles."
],
"demotionRule": "Keep experimental until soak and platform evidence support promotion; do not relax value or identity assertions to hide failures."
},
{
"id": "agent-session.history-forward-read-budget",
"title": "Journal catch-up reads only the next page and one lookahead row",