From 73889ed8606be80d961bb504b2c8a97a2b7751a1 Mon Sep 17 00:00:00 2001 From: autonomic-bot Date: Thu, 11 Jun 2026 11:55:41 +0000 Subject: [PATCH] =?UTF-8?q?claim(bsky):=20M1=20=E2=80=94=20root=20cause=20?= =?UTF-8?q?proven=20(:0.4=20republished=20w/=200.5.1/index.ts=20vs=20entry?= =?UTF-8?q?point=20index.js),=20mirror=20PR#2=20re-pin=200.4.219=20green?= =?UTF-8?q?=20at=20head=20via=20drone=20run=20427=20(level=205,=20upgrade?= =?UTF-8?q?=3Ddeclared=20intentional=20skip,=20negative=20control=20run=20?= =?UTF-8?q?423),=20screenshot=20verified=20real+credential-free?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BACKLOG-bsky.md | 6 +-- JOURNAL-bsky.md | 12 ++++++ STATUS-bsky.md | 102 ++++++++++++++++++++++++++++++++++-------------- 3 files changed, 87 insertions(+), 33 deletions(-) diff --git a/BACKLOG-bsky.md b/BACKLOG-bsky.md index e451e9e..e7cc4cb 100644 --- a/BACKLOG-bsky.md +++ b/BACKLOG-bsky.md @@ -6,9 +6,9 @@ - [x] B2: Upstream research persisted to cc-ci-plan/upstream/bluesky-pds.md (plan repo f395247) - [x] B3: DECISIONS.md entry — pin choice (exact 0.4.219 over 0.5.1-main / digest pin), version label bump - [x] B4: Mirror PR branch `upgrade-0.3.0+v0.4.219` — compose.yml re-pin + label bump; open PR on recipe-maintainers/bluesky-pds -- [ ] B5: `!testme` on the PR → full lifecycle green (install/health, upgrade-path status justified, backup/restore, functional, L5 lint); record level under de-capped semantics + reconcile expected baseline -- [ ] B6: Screenshot on the green PR run — verify PNG real/representative/credential-free (Read it); SCREENSHOT hook only if needed -- [ ] B7: Claim M1 (root cause + green fix PR + screenshot verified) +- [x] B5: `!testme` on the PR → full lifecycle green (install/health, upgrade-path status justified, backup/restore, functional, L5 lint); record level under de-capped semantics + reconcile expected baseline +- [x] B6: Screenshot on the green PR run — verify PNG real/representative/credential-free (Read it); SCREENSHOT hook only if needed +- [x] B7: Claim M1 (root cause + green fix PR + screenshot verified) - [ ] B8: Close DEFERRED bluesky entries with pointers; JOURNAL note updating shot-phase N/A disposition - [ ] B9: Operator handoff summary in STATUS-bsky.md (what was wrong, what the PR changes, post-merge expectations incl. canonical/warm reseed) - [ ] B10: Claim M2 diff --git a/JOURNAL-bsky.md b/JOURNAL-bsky.md index e9f4f43..1b78113 100644 --- a/JOURNAL-bsky.md +++ b/JOURNAL-bsky.md @@ -72,3 +72,15 @@ path (UPGRADE_BASE_VERSION="0.3.0+v0.4.219" once published). 6 new unit tests Verified: 253 unit tests pass on cc-ci (was 247), repo lint PASS. Pushed e9745c8. Re-triggered !testme (comment 14342) → build/run 427. Monitor armed. + +## 2026-06-11T12:05Z — run 427 GREEN: level 5 at PR head; M1 claimed (B5, B6, B7) + +Run 427 (drone build 427, comment 14342): level 5 — install/backup_restore/functional/ +lint PASS, upgrade = declared intentional skip (reason verbatim in skips.intentional), +clean_teardown + no_secret_leak true, ref f7b6c8dfb81c. Per-run recipe checkout at PR +head f7b6c8d with image 0.4.219 (the fix WAS what deployed). Bridge reflected success → +PR comment 14343 ✅. Screenshot Read and verified: genuine PDS landing page (ASCII +butterfly, "This is an AT Protocol Personal Data Server", /xrpc/ pointer) — exactly the +default capture the phase plan predicted would work once deploy works; no hook needed. +Card (summary.png): 5/5, upgrade shown INTENTIONAL SKIP with reason; badge "level 5" +green. M1 claimed in STATUS-bsky.md. diff --git a/STATUS-bsky.md b/STATUS-bsky.md index 6a917ee..958d45f 100644 --- a/STATUS-bsky.md +++ b/STATUS-bsky.md @@ -1,45 +1,87 @@ # STATUS — phase bsky (fix bluesky-pds recipe + screenshot) Phase SSOT: /srv/cc-ci/cc-ci-plan/plan-phase-bsky-fix.md -Gate: none claimed yet — working M1 (root cause + green fix PR). -## Root cause (established 2026-06-11, evidence below) +Gate: M1 — CLAIMED, awaiting Adversary. -bluesky-pds pins the MOVING image tag `ghcr.io/bluesky-social/pds:0.4` and overrides the -image entrypoint with a config script that ends `exec node --enable-source-maps index.js` -(relative to image WORKDIR `/app`). Upstream now publishes main-branch builds to `:0.4` -(== `latest`): the current manifest (digest `sha256:871194d2…`, created 2026-05-30) is -`@atproto/pds` 0.5.1 on Node v24.15.0 with the service restructured to `/app/index.ts` -(no `index.js`) and CMD `node --enable-source-maps index.ts`. The recipe's hardcoded -`index.js` therefore crash-loops `Cannot find module '/app/index.js'` (MODULE_NOT_FOUND). +## M1 claim — root cause + green fix PR + screenshot (2026-06-11T12:05Z) -Newest EXACT tag `0.4.219` keeps the layout the recipe assumes: Node v20.20.2, -`/app/index.js` present, dumb-init present, CMD `node --enable-source-maps index.js`, -`@atproto/pds: 0.4.219` (verified by running the image on cc-ci). +### WHAT -## How to verify the root cause (from any host with docker + ssh cc-ci) +1. Root cause proven with evidence (below). +2. Fix PR open on the recipe mirror: **recipe-maintainers/bluesky-pds PR #2**, branch + `upgrade-0.3.0+v0.4.219`, head `f7b6c8df` — 2-line compose.yml diff (image + `ghcr.io/bluesky-social/pds:0.4` → `0.4.219`; version label `0.2.0+v0.4` → + `0.3.0+v0.4.219`). UNMERGED (operator merges). +3. `!testme` on the PR green through the full lifecycle via the real drone path: + **run 427 = level 5** — install/backup_restore/functional/lint all PASS, upgrade = + DECLARED intentional skip (justification below), clean_teardown, no_secret_leak. +4. Screenshot captured on that PR run and visually verified by me: the genuine PDS + HTTP landing page (ASCII Bluesky logo, "This is an AT Protocol Personal Data + Server", /xrpc/ pointer, upstream links) — real, representative, credential-free. + No SCREENSHOT hook needed. -- `ssh cc-ci 'docker image inspect ghcr.io/bluesky-social/pds:0.4 --format "{{.Created}} {{.Config.Cmd}}"'` - → EXPECTED: created 2026-05-30…, cmd `[node --enable-source-maps index.ts]` +### Root cause + +The recipe pins MOVING tag `ghcr.io/bluesky-social/pds:0.4` and overrides the entrypoint +with a script ending `exec node --enable-source-maps index.js` (relative to WORKDIR /app). +Upstream now publishes main-branch builds to `:0.4` (== `latest`, manifest +`sha256:871194d2…`, created 2026-05-30): `@atproto/pds` **0.5.1**, Node v24.15.0, service +restructured to `/app/index.ts` (CMD `node --enable-source-maps index.ts`; **no +index.js**) → crash-loop `Cannot find module '/app/index.js'`. Exact tag `0.4.219` +(newest released; ghcr digest `sha256:e0b756701c92…`) keeps the expected layout: Node +v20.20.2, `/app/index.js`, dumb-init, CMD identical to the recipe's exec line. + +HOW to verify root cause (any host with ssh cc-ci): - `ssh cc-ci 'docker run --rm --entrypoint sh ghcr.io/bluesky-social/pds:0.4 -c "node --version; ls /app; grep @atproto/pds /app/package.json"'` - → EXPECTED: v24.15.0; index.ts (NO index.js); `"@atproto/pds": "0.5.1"` + → EXPECTED v24.15.0; index.ts, NO index.js; `"@atproto/pds": "0.5.1"` - `ssh cc-ci 'docker run --rm --entrypoint sh ghcr.io/bluesky-social/pds:0.4.219 -c "node --version; ls /app; grep @atproto/pds /app/package.json"'` - → EXPECTED: v20.20.2; index.js present; `"@atproto/pds": "0.4.219"` -- Recipe entrypoint: mirror `recipe-maintainers/bluesky-pds` @ b2d86ef, - `entrypoint.sh.tmpl` last line `exec node --enable-source-maps index.js`; - compose.yml `image: ghcr.io/bluesky-social/pds:0.4`. -- Upstream refs: Dockerfile@main (node:24.15-alpine3.23, CMD index.ts) vs - Dockerfile@v0.4.219 (node:20.20-alpine3.23, CMD index.js); - ghcr tags list (exact tags end at 0.4.219; `:0.4` digest == `latest` digest - `sha256:871194d2…` ≠ `0.4.219` digest `sha256:e0b756701c92…`). - Research persisted: cc-ci-plan/upstream/bluesky-pds.md (plan repo f395247). + → EXPECTED v20.20.2; index.js present; `"@atproto/pds": "0.4.219"` +- Upstream: Dockerfile@main = node:24.15-alpine3.23 + CMD index.ts; + Dockerfile@v0.4.219 = node:20.20-alpine3.23 + CMD index.js. Registry doc: + cc-ci-plan/upstream/bluesky-pds.md (plan repo f395247). -## Fix in flight (M1) +### Upgrade-rung justification (the "justify status either way" item) -Re-pin to exact tag `0.4.219` + version label bump `0.2.0+v0.4` → `0.3.0+v0.4.219` on a -mirror PR branch `upgrade-0.3.0+v0.4.219` (precedent: immich PR#2 naming). Entrypoint -script unchanged — it matches 0.4.219's layout exactly. Then `!testme` to green, then -screenshot verification. +Published versions exist (0.1.1+v0.4, 0.2.0+v0.4) but BOTH pin the republished `:0.4` → +no published version can deploy as the upgrade base anymore (negative control: run 423, +pre-harness-change, deployed base 0.1.1+v0.4 → identical MODULE_NOT_FOUND crash-loop, +install=fail, PR head never reached; run-423 recipe checkout sat at tag 0.1.1+v0.4). +Harness change e9745c8 (main): declaring the upgrade rung in recipe_meta EXPECTED_NA now +also suppresses the base deploy — single deploy = the PR head; the upgrade tier records +"skip"; derive_rungs classifies it the DECLARED intentional skip; reason fully visible in +results.json `skips.intentional` and on the card. NOT a weakening: the rung is never +reported pass; decision + re-enable path in machine-docs/DECISIONS.md (re-enable = +UPGRADE_BASE_VERSION="0.3.0+v0.4.219" once merged+published). +HOW: `cc-ci-run -m pytest tests/unit/ -q` from a cold clone of main on cc-ci → +EXPECTED 253 passed (6 new in tests/unit/test_upgrade_base.py); +`nix develop .#lint -c bash scripts/lint.sh` → EXPECTED `lint: PASS`. + +### Green-run evidence (run 427, drone path) + +- Trigger: PR #2 comment 14342 (`!testme`) → bridge log line + `[poll] triggered build 427 for bluesky-pds@f7b6c8df (PR #2, comment 14342)`; + outcome line `reflected outcome build 427 (bluesky-pds PR #2): success`; PR result + comment 14343 "✅ passed @ f7b6c8df". +- HOW: `ssh cc-ci 'cat /var/lib/cc-ci-runs/427/results.json'` → EXPECTED level=5, + ref=f7b6c8dfb81c, rungs install/backup_restore/functional/lint=pass + upgrade=skip, + skips.intentional.upgrade=, flags clean_teardown+no_secret_leak true. +- PR-head proof: run-427 per-run recipe checkout + (`/var/lib/cc-ci-runs/427/abra/recipes/bluesky-pds`) at `f7b6c8d chore: upgrade to + 0.3.0+v0.4.219`, compose.yml line 6 image=…:0.4.219. +- Visuals: https://ci.commoninternet.net/runs/427/summary.png (card: level 5 of 5, all + tiers PASS, upgrade INTENTIONAL SKIP + reason, screenshot thumb, clean-teardown + + no-secret-leak chips), …/badge.svg ("cc-ci: level 5", green), + …/screenshot.png (the PDS landing page described above). + +### WHERE + +- cc-ci main @ 72b3d6c (harness change e9745c8; journal/decisions 72b3d6c). +- Mirror PR #2: https://git.autonomic.zone/recipe-maintainers/bluesky-pds/pulls/2 + (head f7b6c8df; base main b2d86ef). +- Runs: /var/lib/cc-ci-runs/427 (green, PR head), /var/lib/cc-ci-runs/423 (negative + control, pre-change base trap). +- Upstream registry: cc-ci-plan/upstream/bluesky-pds.md @ plan-repo f395247. ## Operator summary