Repository navigation
QA run · platform-core.lifecycle-retention-sweep (1/1) · 55a806a7 · 2026-10-17 · 1 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #24117
Description
Run record for the re-run #24036 (half B) asks for after revising this item. Runner: an os-dev subagent dispatched by the domain:devx seat 2 PM (session session_016PVjjuVPte5XEJvaQx1E4t). Protocol: .claude/skills/checklist-test/SKILL.md + docs/qa/platform-checklist/RUNNER.md. Executed sequentially (no subagent tool in this runner).
Environment fingerprint
- framework:
55a806a78c0442243a8ac22e7dbc6f7b2c4b3bb0on branchclaude/issue-24036-ledger-b, the commit the app was built from. Its product tree isorigin/main8a83cebc1; the branch addsdocs/qa/platform-checklist/areas/*.jsononly, and its later commits touch those files alone. Built withpnpm install --frozen-lockfileandturbo run build(75/75 tasks). .objectui-sha:f8267df93aba8fb09cc1cc0692eadc0c8c5a5e56(no browser leg in this item).- boot:
objectstack dev --ui --seed-admin -p 41929 -d file:(run dir)/lc/data.dbfromexamples/app-showcase(the CLI provisioneddata.telemetry.dbbeside it — fixtures.requires[0]); one schema boot, then three boots on the same files: control and idle-heartbeat withOS_LOG_LEVEL=info, kill switch withOS_LOG_LEVEL=info OS_LIFECYCLE_DISABLED=1; each stopped by its process-group id. Fixtures hand-seeded with better-sqlite3 between boots. - persona(s): operator (local shell + sqlite); no API traffic touched the seeded rows
- timestamps: 2026-10-17, 00:57Z to 01:04Z
Scope
Selector platform-core.lifecycle-retention-sweep resolves to 1 runnable item: platform-core.lifecycle-retention-sweep at revision 4, P1, surface mixed. No planned or blocked-hidden item.
Per-clause verdicts
| # | clause (short) | verdict | evidence |
|---|---|---|---|
| 0 | retention reaps on the real timer | pass | seeded into data.telemetry.db: sys_automation_run qa_run_done_1, qa_run_done_2 (completed), qa_run_failed_3 (failed), qa_run_paused, qa_run_running (all 40 d old), qa_run_recent_done (5 d), sys_audit_log qa_audit_old (100 d); into data.db: sys_inbox_message qa_inbox_old (100 d). Control boot (engine up 00:57:54Z): INFO [lifecycle] sweep: 18 policy(ies) applied, ~4 rows reaped, 2 datasource(s) reclaimed, 0 error(s), 0 alert(s) at 00:58:55Z; the three terminal runs and the inbox row are gone |
| 1 | onlyWhen spares non-terminal rows | pass | survivors among the 40 d runs: exactly qa_run_paused and qa_run_running (+ the 5 d control) |
| 2 | archive-declaring object never hot-deleted | pass | qa_audit_old survives the control sweep and the heartbeat sweep; pin lifecycle-service.test.ts green incl. the archive-pending skip. The archive-pending report itself is not in the aggregate log line |
| 3 | reap bounded and per-id | pass | pin lifecycle-service.test.ts (114 passed) incl. the bounded-reap cases; live reaped count ~4 = the seeded expired set |
| 4 | OS_LIFECYCLE_DISABLED=1 disarms |
pass | reseeded qa_run_killswitch (completed, 40 d); same files, same info level: 0 sweep lines over 110 s after the engine came up, and the row survives. Bracketed by the armed control (above) and the idle heartbeat at 01:00:48Z: … 18 policy(ies) applied, ~0 rows reaped, …, survivors unchanged |
| 5 | class vocabulary matches the spec | pass | LifecycleClassSchema = z.enum([record, audit, telemetry, transient, event]) (packages/spec/src/data/object.zod.ts); SYSTEM_LEDGER_LIFECYCLE_CLASSES = new Set([audit, telemetry, event]) (packages/objectql/src/engine.ts) |
Automated pins run (RUNNER rule 6)
packages/objectql/src/lifecycle/lifecycle-service.test.ts(automated.ref): 114 passed, under the shared verify lock.
Reproduction rules
No clause scored fail, so none is owed. No authentication or authorization hole was found; nothing here is withheld under the RUNNER rule-2 carve-out.
Derived item verdict
platform-core.lifecycle-retention-sweep r4: pass (6 pass of 6 clauses).
- The revised fixture holds as written: on
os devwith a file primary the telemetry/audit rows live indata.telemetry.dband the transient inbox row indata.db, and the sweep reaped each from its own file.
Checklist-accuracy findings and fixture gaps from this run close out on #24036.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 17, 2026
Close-out (
domain:devxseat 2): every clause PASS; nothing to extract. Ruling C on #24127 (maintainer): a verification re-run of a ledger edit no longer carries aqa-runrecord, and the existing ones close out now. The revised itemplatform-core.lifecycle-retention-sweeplanded with #24141 (9ffe8af094), Part of #24036; itshistoryrow names #24036.Generated by Claude Code