Skip to content

Hermetic web builds and one Node version (attn-6q7b) - #20

Draft
angusbezzina wants to merge 1 commit into
mainfrom
angus/hermetic-builds
Draft

Hermetic web builds and one Node version (attn-6q7b)#20
angusbezzina wants to merge 1 commit into
mainfrom
angus/hermetic-builds

Conversation

@angusbezzina

Copy link
Copy Markdown
Collaborator

Draft — planning only. This PR carries the epic and its beads export; implementation lands on this branch behind it.

Why

The web staging deploy was blocked on 2026-09-03 by two build-infrastructure failures with no product-code cause. PR #18 unblocked it by pinning npm 11 in the deploy job — a workaround, not a fix. Each cause will recur until resolved.

Epic attn-6q7b

ID Task Blocked by
attn-6q7b.1 Vendor the icon packs and drop the three git dependencies
attn-6q7b.2 Run one Node version: align ci.yml with the deploy job and declare it
attn-6q7b.3 Retire the npm@11 pin from the deploy job .1
attn-6q7b.4 Run the native-hosted parity suite in CI, not only on deploy .2
attn-6q7b.5 Prove the whole thing on a fresh clone and write it down .1 .2 .3 .4

.1 and .2 are independent and can run in parallel.

Findings that shaped the plan

  • Three git dependencies, not one. eyecons, catppuccin-vsc-icons, and vscode-icons are all git+ssh:// in web/package-lock.json. The lockfile pins each commit, but npm still clones each repo and resolves that project's floating package.json against the live registry on every install — which is how an upstream eslint 10 publish crashed npm 10's arborist with no change here.
  • Registry packages are not an option. eyecons on npm is a 0.0.1 placeholder; the other two are unpublished. Vendoring is the only hermetic path. The generator's output is ~13 MB / 2,777 SVGs and is gitignored today; .1 records the design choice (vendor sources vs commit generated output) and recommends committing the output.
  • Node 22 is a hard floor. web/ depends on wrangler ^4.110, which refuses Node <22 — yet ci.yml runs all four jobs on 20, the root engines field says >=18, and there is no .nvmrc. That split is why CI never saw the failure the deploy hit.
  • The parity suite runs only on deploy. scripts/test-hosted-review-e2e.sh is referenced by exactly one workflow, the dispatch-only deploy. That is how the owner-rail regression fixed in Fix the owner's review rail going blank on an uncurated share #19 sat through two merges and a version bump.

About the diff

.beads/issues.jsonl had not been exported since 2026-07-23 (448 issues); the DB now holds 767. The diff is that resync — 199 issues added, 27 updated, none removed — plus the six records above. Verified no tracked id is missing from the export.

Out of scope

attn.sh/review still 404s (apex served by a stale Vercel deploy; only staging.attn.sh runs the worker). Native mints share links there, so links from a released binary are broken today. Separate issue; noted so it isn't forgotten before the tag.

🤖 Generated with Claude Code

https://claude.ai/code/session_015TnncCnVNhggoZ9QLQiqeW

The web staging deploy was blocked on 2026-09-03 by two build-infrastructure
failures unrelated to product code, and the fix that unblocked it (pinning
npm 11 in the deploy job, PR #18) is a workaround. This epic resolves the
causes so they stop recurring, before the next release is cut.

  attn-6q7b    Hermetic web builds and one Node version across CI and deploy
  attn-6q7b.1  Vendor the icon packs and drop the three git dependencies
  attn-6q7b.2  Run one Node version: align ci.yml with the deploy job
  attn-6q7b.3  Retire the npm@11 pin from the deploy job        (after .1)
  attn-6q7b.4  Run the native-hosted parity suite in CI          (after .2)
  attn-6q7b.5  Prove it on a fresh clone and write it down       (after all)

Not one git dependency but three: eyecons, catppuccin-vsc-icons and
vscode-icons are all git+ssh:// in the lockfile, and none has a usable
registry package (eyecons on npm is a 0.0.1 placeholder; the other two are
unpublished), so vendoring is the only hermetic option. Node 22 is a hard
floor, not a preference — wrangler 4 in web/ refuses anything older — yet
ci.yml still runs 20 and the root engines field still says >=18.

This commit carries only the beads export. .beads/issues.jsonl had not been
exported since 2026-07-23 (448 issues); the DB now holds 767. The diff is
that resync — 199 issues added, 27 updated, none removed — plus the six
records above. Implementation lands on this branch behind it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015TnncCnVNhggoZ9QLQiqeW
@vercel

vercel Bot commented Sep 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
attn Ready Ready Preview Sep 3, 2026 6:49pm UTC

Request Review

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