Skip to content

4-hourly full run: red on main (CI) #28849

Closed

Description

@github-actions

os-4-hourly-full-run-ci — machine-findable marker for this generated card. ⛔ Do not delete this line: it is how the 4-hourly full run finds this card instead of filing a new one every 4 hours.

4-hourly full run: red on main (CI)

Swept 2026-11-02T00:32:07.615Z · run log · commit 2cba2eb3f1f50ff1678dfa7b2925e37965b6f9c5 · conclusion failure.
CI runs the FULL battery on main every 4 hours (#16467, #25771). A push run on
main tests only the packages the merge touched, and a merge-queue build tests only what the group
contained — so this scheduled run is the only thing that says whether the WHOLE tree is green, and
this card is the only channel that reports it. Nothing is blocked by it.
⛔ The remedy is never to narrow, skip or delete the failing check to make the 4-hourly run green.
Fix what it names and let the next 4-hourly run refresh this card; a card nobody reopens is closed by
the next green run being uneventful, not by editing this one.

What landed since the last green 4-hourly run

Range: d9c4cdc4e5 (run 41344864428, the last green CI schedule run) .. 2cba2eb3f1 — compare

Activity

  1. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p0 confirmed · deterministic · domain:devx · 2026-11-02T00:54Z

    ⛔ Not a claim. The lane claims this round (execution-duties.md: first read of an open p0, unclaimed ⇒ claim and dispatch in the same round).

    • Not a flake, and not a merge. The red is a clock that crossed a retention boundary. The same three dogfood files go red on every run since the UTC day turned: the 4-hourly full run on 2cba2eb3, then the main push runs on 00918c88 and 7f4cbc9d. 00918c88 is a skills-docs commit. The last dogfood run that executed its shards before midnight was green.
    • Failing tests: every test that boots the 18.0 upgrade fixture (packages/qa/dogfood/test/upgrade-harness/fixture-18.0, ref 5b14b7f3ad8e):
      • upgrade-18x-harness.dogfood.test.ts step 3: no such table: sys_activity__r20261019
      • audit-key-material.dogfood.test.ts step 2: expected 8, got 4
      • audit-mail-bodies.dogfood.test.ts step 2: expected 4, got 2
      • identity-mail-read-gate.dogfood.test.ts, the sys_activity mirror: expected > 0, got 0
    • Root cause: sys_activity is a rotation object, storage: { strategy: 'rotation', shards: 14, unit: 'day' } (packages/plugins/plugin-audit/src/objects/sys-activity.object.ts). ensureRotation (packages/drivers/driver-sql/src/sql-driver-schema-sync.ts) keeps only shards within the last 14 days of Date.now() and drops the rest. The fixture's activity shard is sys_activity__r20261019. From 2026-11-02 the oldest kept shard is 20261020, so the boot drops the fixture's activity rows. The tests then find half their copies, or no table at all.
    • Shape of the fix (the lane decides): the fixture tests must not depend on the wall clock. One option is a pinned clock for the fixture boot. Another is re-dating the fixture's shard keys relative to the run. ⛔ Not by skipping or narrowing these tests, and ⛔ not by widening the production retention window.
    • Every main push and every merge group that runs the dogfood shards stays red until this lands. The merge queue has been green only because no group since midnight ran the shards.

    Generated by Claude Code

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Triage: p0 escalated by name · dispatch now · 2026-11-02T01:51Z

    ⛔ Not a claim.

    @marchtian, domain:devx#2 (seat post #20163): this p0 is your lane's, and it is unclaimed a full round after the mailbox bell (#28536). Claim it and dispatch the fix now. execution-duties.md: an open, unclaimed p0 is claimed and dispatched in the same round it is read, and other work pauses for it.

    • main is red on every push that runs the dogfood shards, and it stays red until the fixture tests stop depending on the wall clock. The root cause and the fix's boundaries are in the comment above.
    • The fix is mechanical and test-only, so it qualifies for the p0 fix-forward that skips the queue (landing-operations.md).
    • If no lane claim is on this card by the next triage round, triage dispatches the stop-bleed itself.

    Generated by Claude Code

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Claim: PM loop round 2
    Session: session_017ihL2gLghEqeDKTbDTC7Zd
    Account: marchtian
    Branch: claude/issue-28849-fixture-rotation-clock
    Worktree: objectstack-issue-28849
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: packages/qa/dogfood/test/upgrade-harness/** and the dogfood test files that boot the 18.0 upgrade fixture (upgrade-18x-harness, audit-key-material, audit-mail-bodies, identity-mail-read-gate); test-side only. ⛔ No change to sys_activity's retention (plugin-audit) or to ensureRotation (driver-sql), and no test skipped or narrowed
    Container & model: M test-fixture fix, mode:subagent, model: default tier, effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the fixture's rotation shard keys are absolute dates (sys_activity__r20261019), so the boot's 14-day retention dropped them once the UTC date reached 2026-11-02; no merge caused it
    Thread-read: 6566499307
    Premise: holds
    Serial constraints cleared: none (no open PR touches the upgrade harness, sql-driver-schema-sync.ts or sys-activity.object.ts at claim time)

    p0 main-red, claimed in the round of its first read per the triage (6566499307). The fix makes the fixture boot independent of the wall clock (a pinned clock for the fixture boot, or shard keys re-dated relative to the run, whichever the fixture's design admits). The dev measures both against the harness first and states the choice.

  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    os-dev-report

    {
      "issue": 28849,
      "status": "done",
      "branch": "claude/issue-28849-fixture-rotation-clock",
      "pr": 28867,
      "head": "48a5608202",
      "base": "3e62a22c4f",
      "premise_still_valid": true,
      "summary": "Test-side only. readFixtureAsOf (packages/qa/dogfood/test/upgrade-harness/fixture-as-of.ts) re-dates each rotation shard in the fixture dump's SQL text to the day before the run (tables, shard-named indexes and INSERTs together) and maps the manifest's physical names the same way. Every 18.0 and 18.0.0 fixture load goes through it; the 18.0.0 fixture (shard 20261020) would have gone red on 2026-11-03 and is covered too. A pinned clock was rejected: the suites spawn os migrate binaries that run the same rotation on their own clock, faking Date there would move every timestamp they write, and the only time seam (ensureRotation nowMs) is not reachable from a boot without a product change. ensureRotation, sys-activity.object.ts and retention are untouched; no test skipped or narrowed.",
      "files_changed": [
        "packages/qa/dogfood/test/upgrade-harness/fixture-as-of.ts (new)",
        "packages/qa/dogfood/test/upgrade-harness-fixture-as-of.test.ts (new)",
        "packages/qa/dogfood/test/upgrade-18x-harness.dogfood.test.ts",
        "packages/qa/dogfood/test/audit-key-material.dogfood.test.ts",
        "packages/qa/dogfood/test/audit-mail-bodies.dogfood.test.ts",
        "packages/qa/dogfood/test/identity-mail-read-gate.dogfood.test.ts",
        "packages/qa/dogfood/test/upgrade-18x-index-equivalence.dogfood.test.ts",
        "scripts/cross-package-test-inputs.mjs",
        "turbo.json"
      ],
      "repro": "base 3e62a22c4f on 2026-11-02, the five fixture-booting dogfood files: Test Files 4 failed | 1 passed (5), Tests 4 failed | 55 passed (59), the four failures exactly as triaged. Same base with the clock +1 day in every process (local preload, not committed): the 18.0.0 leg adds no such table: sys_activity__r20261020 (tomorrow's red).",
      "after": "head 48a5608202: the five files plus the new unit test, Test Files 6 passed (6), Tests 81 passed (81). Clock +1, +30 and +180 days in every process: Test Files 5 passed (5), Tests 59 passed (59) each. New unit test: real SqlDriver#rotateShards with sys_activity's declaration at offsets -20..+400 days, 22 passed, including the control where the fixture read as written loses its shard at day 14.",
      "gates": "pnpm --filter @objectstack/dogfood typecheck exit 0; eslint on touched files exit 0. dispatch-gates --commands: 69 families, 68 exit 0, check:dual-build-cjs-loads exit 3 (needs the whole tree's dist) = NOT MEASURED, left to CI. --ran: 68 run, 1 NOT-MEASURED, exit 0.",
      "changeset": "none: @objectstack/dogfood is private; turbo.json and scripts/ are repo config. skip-changeset label set at pr_create.",
      "deviations": [
        "The dev worked local-only (no WIP push) because this session's GitHub writes were held until 田騏 allowed them at 02:03Z; the seat pushed and opened the PR.",
        "Scope addition: fixture-18.0.0 goes through the same loader (same defect, red from 2026-11-03).",
        "Scope addition: turbo.json and scripts/cross-package-test-inputs.mjs each gain one dogfood input line, required by check:cross-package-test-inputs for the new test's import of sys-activity.object.ts. Neither is a governed surface."
      ],
      "mcp_calls": "0",
      "api_writes": "dev 0; the seat made the pr_create and this comment",
      "out_of_scope_findings": [
        "noted, not filed: fixture-18.0.0-next.5 carries no rotation shard, so cli-prerelease-fixture.ts still loads it directly; a regenerated fixture with a sys_activity shard must switch to readFixtureAsOf."
      ]
    }
  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Landed · 2026-11-02T02:57Z · PR #28867 merged as 0518fd7afe (reviewed head 48a5608202, seat record ACCEPT 6567624636). The 18.0 and 18.0.0 upgrade fixtures now load with their sys_activity rotation shards re-dated to the day before the run, so a boot's 14-day retention no longer drops them. Production retention and ensureRotation are unchanged. The dogfood shards skip on PRs, so the seat reads the next main push run that executes them. The 4-hourly full run refreshes this card's family on its next green sweep. pm:dispatched is removed in this stroke.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:devxpriority:p0Critical: blocker, must ship before MVP

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions