This repository was archived by the owner on May 13, 2026. It is now read-only.
fix(nightly-qa-dogfood): bootstrap node before probing auto-identity - #928
Merged
Conversation
Sibling fix to PR #924, but for the QA dogfood harness instead of the sample-ingestion script. PR #908 (refactor(identity): load_or_generate -> provision) made /api/setup/bootstrap the canonical mint path; until it has run, /api/system/auto-identity returns 503 NotProvisioned. The 2026-05-06 nightly therefore failed at boot: [qa-dogfood] FAIL: [node-a] backend not ready within 60s: http://localhost:9101/api/system/auto-identity boot_stack used /api/system/auto-identity as its readiness probe, which no longer answers 200 on a fresh node. Replace it with a two-step: 1. Wait for /api/health (unauthenticated, side-effect-free, served the moment actix binds — see http_server.rs configure_health_route). 2. POST /api/setup/bootstrap with {name:"qa-dogfood-<label>"} and a 3-try retry around port-bind races (mirrors PR #924 retry shape). 3. Re-probe auto-identity to confirm the provisioned identity is queryable, so fetch_user_hash and the org-sync leg's auto-identity check at line 858 still work. Verified locally via: bash scripts/qa-harness-dogfood.sh --per-source-count 5 --skip-org Verdict: PASS (6 pass / 0 fail of 6 sources; set-org-hash: PASS). Closes #671. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The 2026-05-06 nightly QA dogfood run failed at boot:
PR #908 (
refactor(identity): load_or_generate -> provision) made/api/setup/bootstrapthe canonical mint path; until it has run,/api/system/auto-identityreturns 503 NotProvisioned. The dogfood harness used/api/system/auto-identityas its readiness probe, soboot_stacktimed out at 60s on every run.This is the sibling fix to PR #924 (
scripts/test-sample-ingestion.sh), but forscripts/qa-harness-dogfood.shinstead.Why Option B (bootstrap before probing) and not Option A (swap to a liveness endpoint)
The harness needs an identity by the time
boot_stackreturns:fetch_user_hash(line 331) calls/api/system/auto-identityandjq -r '.user_hash'— would crash on the 503 body./api/system/auto-identityto confirm node B is alive.Both depend on bootstrap having happened. So
boot_stacknow does the bootstrap itself rather than offloading it to the harness body. To keep readiness side-effect-free up to the bootstrap call, the new shape is:wait_http /api/health— unauthenticated, served the moment actix binds (http_server.rs::configure_health_route).POST /api/setup/bootstrapwith{"name":"qa-dogfood-<label>"}and a 3-try retry around port-bind races (mirrors PR test(nightly): bootstrap node before probing auto-identity #924's retry shape).wait_http /api/system/auto-identity— confirms the provisioned identity is queryable.fetch_user_hash(line 331) and the line-858 check now both succeed.report.mdsection markers (## Set-org-hash leg,## Org-sync leg,- **Status:** FAIL) are unchanged, so thenightly-qa-dogfood.ymlawk-scan at lines 248-265 keeps working as-is.Verification
(
--skip-orgis local convenience; CI runs both legs and the same boot path is exercised for node-b.)Test plan
--per-source-count 5,--skip-org) verdict PASS, set-org-hash PASS.gh workflow run nightly-qa-dogfood.ymlafter merge — conclusionsuccess.Closes #671.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com