Skip to content

docs(ci): record where the macos-x86 wedge actually is (B8b of #110) - #129

Merged
mobileskyfi merged 3 commits into
mainfrom
docs/110-b8b-wedge-boundary
Aug 3, 2026
Merged

docs(ci): record where the macos-x86 wedge actually is (B8b of #110)#129
mobileskyfi merged 3 commits into
mainfrom
docs/110-b8b-wedge-boundary

Conversation

@mobileskyfi

@mobileskyfi mobileskyfi commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Evidence-only bite B8b of #110 produced two durable facts that belong in the scoped doc rather than only in an issue comment, plus a caveat against a defect found en route.

Three full-suite macos-x86 · stable legs (30767202175, 30767207011, 30767211555) all wedged in provisioning.test.ts after nine files in 772.9 s / 745.4 s (~12.5 min). Full report: #76 (comment)

What this adds

Per-file watchdog sectioncompleted_at runs ~50 min behind the wedge on this platform (47.6 and 50.4 min measured, longer than B5's 44.6 min on linux-x86), so the useful diagnostic boundary for #76 is ~13 min, not an hour. Read last_checkpoint_ts, never job_elapsed_s, as the wedge time — and expect targeted #76 repros to be cheap now. Also records that the runner stops reporting inside the wedged file's own 1200 s watchdog window, which is the concrete demonstration that nothing in-job can bound a lost runner.

Incomplete-leg ledger section — a caveat for #128: ci-leg-ledger build is not idempotent (finalizing a check run destroys the payload; the refold-retry path rebuilds from it), so a concurrent leg's entry can land with files_planned: 0 and no last_checkpoint_ts while its check run still holds the real numbers. B8b lost one leg of three that way. Until #128 lands, a missing timestamp means the instrument lost it — not that the leg died before its first file.

Docs only; no code or workflow changes. Deliberately does not touch OBSERVED_MAX_S — these are still not full-suite figures, and the caps stay generous while #76 is open.

Refs #110, #128. Not linked to close #76 — that issue's done-when is unsatisfied and the wedge is unexplained.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated CI troubleshooting guidance for macOS test runs, including observed delays and how to use checkpoint timestamps for diagnosis.
    • Clarified that watchdog monitoring cannot reliably determine when a runner is lost.
    • Documented an issue that may clear checkpoint details and create inaccurate runner-lost records; affected results should be verified against the corresponding check run.

B8b ran the full suite three times on macos-x86 and all three legs wedged in
provisioning.test.ts after nine files in ~12.5 min. Two facts worth having in
the scoped doc rather than only in an issue comment:

- completed_at runs ~50 min behind the wedge on this platform, so the useful
  diagnostic boundary for #76 is ~13 min, not an hour. Read last_checkpoint_ts,
  never job_elapsed_s, as the wedge time.
- The runner stops reporting inside the wedged file's own watchdog window, which
  is the concrete demonstration that nothing in-job can bound a lost runner.

Also records #128 against the ledger section: build is not idempotent, so a
concurrent leg's entry can land with zero counts and no last_checkpoint_ts while
its check run still holds the real numbers. Anyone reading attempted-legs.json
before that fix needs to know a missing timestamp means instrument loss, not an
early death.

Refs #110, #76, #128

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 2, 2026 22:31
@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7a5aa567-6d22-4792-9c96-3d04852ff517

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The CI instructions add macOS x86 runner-loss findings and document ledger defect #128. They specify checkpoint timestamps for diagnosis and the associated check run as the fallback for zeroed runner-lost entries.

Changes

CI diagnostics

Layer / File(s) Summary
Runner and ledger diagnostic guidance
.github/instructions/ci.instructions.md
Documents the recurring provisioning.test.ts wedge, delayed completed_at timestamps, watchdog limits, and ledger defect #128. It identifies the associated check run as the authoritative fallback for affected entries.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related PRs

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the documentation change and the B8b macos-x86 wedge finding.
Linked Issues check ✅ Passed The documentation records B8b evidence for issue #76, including the wedge location, delayed completion time, and ledger limitations.
Out of Scope Changes check ✅ Passed The changes are limited to CI documentation and directly support the linked issue's macos-x86 investigation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/110-b8b-wedge-boundary

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the scoped CI instructions doc to capture two durable, evidence-backed findings from #110 (B8b) about the macos-x86 · stable runner-loss wedge, so future debugging uses the correct timing boundary and avoids misreading incomplete ledger entries.

Changes:

  • Document that macos-x86 full-suite runner loss wedges in provisioning.test.ts after ~12.5 minutes, and that GitHub’s completed_at can lag the actual wedge by ~50 minutes on this pool—so last_checkpoint_ts is the meaningful wedge timestamp.
  • Add a “known defect” note (#128) explaining how ci-leg-ledger build can zero out an incomplete leg entry (e.g., files_planned: 0, missing last_checkpoint_ts) under refold-retry, and how to interpret such entries until fixed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/instructions/ci.instructions.md:
- Around line 162-165: Update the paragraph around the macos-x86 stable legs to
identify 772.9 s and 745.4 s as the two intact measurements, and explicitly note
that the third record was zeroed by `#128`. Preserve the existing
provisioning.test.ts and completed_at timing analysis.
- Around line 240-242: Revise the `lands` guidance to remove the claim that a
missing `last_checkpoint_ts` means the instrument lost the payload or that the
leg died before its first file. Preserve the check-run fallback for zero-count
`runner-lost` entries, and state that the timestamp remains unavailable until
the check-run and jobs APIs can distinguish corruption from a leg ending before
its first checkpoint.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 51472835-8857-4ad3-892e-e09435ab4c09

📥 Commits

Reviewing files that changed from the base of the PR and between f23ff00 and 3972a27.

📒 Files selected for processing (1)
  • .github/instructions/ci.instructions.md
📜 Review details
⏰ Context from checks skipped due to timeout. (6)
  • GitHub Check: copilot-pull-request-reviewer
  • GitHub Check: Unit Tests & Coverage
  • GitHub Check: Unit Tests (windows-latest)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Analyze (actions)

Comment thread .github/instructions/ci.instructions.md Outdated
Comment thread .github/instructions/ci.instructions.md Outdated
… not at its start

A live capture of the streaming job log (the blob is destroyed on runner loss,
so this is the only copy) shows each leg ran 3.5-7.6 min further into
provisioning.test.ts, freezing at its 5th/6th test. The previous text quoted the
file boundary from last_checkpoint_ts as if it were the wedge.

- boundary is ~16-20 min into the test step, not ~13
- completed_at lags the freeze by ~40 min, not ~50
- last_checkpoint_ts is the file boundary BEFORE the wedge, not the wedge

Also records the instrument gap the capture exposed: the host snapshot samples
at file boundaries only, so free disk, free memory and qemuCount have never been
sampled inside the one file every known #76 leg dies in.

Refs #110, #76

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…he two missing-timestamp cases apart

Both from CodeRabbit on #129.

- 772.9 s / 745.4 s are the two legs whose records survived; the third was
  zeroed by #128. The previous wording read as if all three were measured.
- "a missing last_checkpoint_ts means the instrument lost it" was too broad. It
  is separable, but by files_planned, not by the check-run/jobs APIs the review
  proposed: `open` writes the planned list before the first file runs, so a leg
  that genuinely died early reports files_planned: 12 / files_reported: 0, while
  the #128 corruption drops the payload and reports both as 0.

Refs #110, #76, #128

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mobileskyfi

Copy link
Copy Markdown
Contributor Author

Both findings addressed in fc9a5ec-range (latest push).

1. Which legs the figures come from — accepted as written. 772.9 s and 745.4 s are now explicitly the two legs whose records survived, with the third named as zeroed by #128. The old phrasing did read as if all three were measured.

2. Missing last_checkpoint_ts — the finding is right that my sentence was too broad, but the proposed fix isn't the accurate one. The two cases are distinguishable today, and not via the check-run/jobs APIs: ci-leg-checkpoint open writes the planned list before the first file runs and buildEntry takes files_planned from it (ci-leg-ledger.ts:151,164). So a leg that genuinely died before completing its first file reports files_planned: 12, files_reported: 0, while #128's corruption drops the payload wholesale and reports both as 0. The doc now says exactly that, keyed on zero planned, rather than saying the timestamp is simply unavailable.

Docs-only change; no code touched.

@mobileskyfi
mobileskyfi merged commit fc8f65e into main Aug 3, 2026
9 checks passed
@mobileskyfi
mobileskyfi deleted the docs/110-b8b-wedge-boundary branch August 3, 2026 09:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI: macos-x86 full suite wedges at position 10 in provisioning.test.ts — host-level runner loss, mechanism unexplained (HVF)

2 participants