Skip to content

fix(ci): verify served plugin checksums (D-1483) - #490

Merged
acamarata merged 1 commit into
mainfrom
dw3-plugins-4
Oct 26, 2026
Merged

acamarata merged 1 commit into
mainfrom
dw3-plugins-4

Conversation

@acamarata

Copy link
Copy Markdown
Contributor

Golden Path run 40261854806 fails installing licensed ai: /registry.json advertises d2c8c734…, while /catalog.json advertises 03071f9d…, exactly the bytes CI downloaded. ai is not in this repository's free registry. The authenticated download returns 401 to public requests, so the licensed artifact and signature cannot be reconciled within this task. D-1483 remains BLOCKED on owner repair of licensed metadata; this PR adds the missing public free-download regression gate.

The new verifier follows every installable free plugin's advertised download URL through the worker/CDN and hashes the served bytes. Registry sync verifies candidate checksums after refreshing versionless routes; a read-only dependent job checks live metadata even if sync fails. Offline fixtures cover mismatched/rebuilt bytes, conflicting checksum aliases, bad metadata, errors, tier exclusions and workflow ordering. Release checksum generation already reads published bytes, including assets uploaded to a draft release; corrected failure guidance removes the rebuild/upload workaround.

Investigation and validation:

  • git fetch origin main: branch starts at fresh 99abe444.
  • gh run view 40261854806 -R nself-org/cli --log-failed: step 9 confirms E124 and the two hashes above.
  • Public GETs of https://plugins.nself.org/registry.json, /registry.json?nocache=1, /catalog.json, /plugins/ai and /plugins/ai/tarball; public GET of https://ping.nself.org/plugins/ai/download: licensed metadata divergence confirmed; unauthenticated downloads refused (401).
  • gh release view v1.2.10 -R nself-org/plugins --json assets --jq '[.assets[] | select(.name|startswith("ai-")) | .name]': no free ai asset.
  • Temporary Python stdlib public-URL audit: all 130 free downloads match local registry, live registry, and free catalog entries; zero mismatches/errors. All resolve to GitHub release assets.
  • PYTHONDONTWRITEBYTECODE=1 TMPDIR=/Volumes/D5/tmp/dw3-plugins-4.MF3XpV python3 -m unittest discover -s scripts/ci/tests -p 'test_verify_registry_downloads.py': PASS.
  • PYTHONDONTWRITEBYTECODE=1 TMPDIR=/Volumes/D5/tmp/dw3-plugins-4.MF3XpV python3 -m unittest discover -s scripts/ci/tests -p 'test_registry_sync_triggers.py': PASS.
  • PYTHONDONTWRITEBYTECODE=1 python3 scripts/ci/verify_registry_downloads.py: all 124 installable free downloads verified, errors=0; six explicitly noninstallable entries excluded (the separate audit checked all 130).
  • actionlint .github/workflows/registry-sync.yml .github/workflows/tarball-checksum-gate.yml, jq empty registry.json, git diff --check: PASS.

Owner action: reconcile private bundles ai metadata/signature with its authenticated published bytes, then run gh workflow run registry-sync.yml -R nself-org/plugins --ref main and gh run rerun 40261854806 -R nself-org/cli --failed. The investigation document records the complete hashes and evidence; no verified private-repository repair command is available from public evidence. No production write, credential access, release publishing, asset replacement, version bump, tag, merge, or repository setting change was performed.

@acamarata
acamarata merged commit f9fc3d1 into main Oct 26, 2026
24 of 26 checks passed
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.

1 participant