Skip to content

Preserve DevTools package contract in release and PR snapshots - #1456

Closed
schickling-assistant wants to merge 2 commits into
mainfrom
schickling-assistant/fix/devtools-artifact-peer-deps
Closed

Preserve DevTools package contract in release and PR snapshots#1456
schickling-assistant wants to merge 2 commits into
mainfrom
schickling-assistant/fix/devtools-artifact-peer-deps

Conversation

@schickling-assistant

@schickling-assistant schickling-assistant commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

Problem

The DevTools artifact repacker discarded the verified artifact's peer contract: it moved Vite and LiveStore core packages into runtime dependencies and widened Vite to *. Separately, trusted PR snapshots packed only the 14 workspace-owned packages, so @livestore/devtools-vite could not be installed at the exact snapshot version used by downstream integration tests.

Goal

Preserve the artifact-owned host compatibility contract, exact-pin its LiveStore peers, and publish DevTools as part of the same immutable 15-package trusted PR snapshot cohort.

Decisions

  • Preserve every artifact peer range except @livestore/adapter-web and @livestore/utils; bind those two peers to the exact target version.
  • Retain only the externalized native @parcel/watcher package as a runtime dependency and fail closed if it is absent.
  • Keep workspace release discovery unchanged at 14 packages. Model DevTools explicitly as an externally repacked snapshot package, and derive a separate 15-package snapshotPackageNames topology.
  • Expose a typed snapshot-only repack entry point. It cannot select publish or uncertified modes.
  • Make trusted-main validation require DevTools' exact core peers, non-empty Vite peer range, and watcher-only runtime dependencies before attestation or publication.

Verification

  • node --test .github/scripts/pr-snapshot-artifact.test.mjs: 13/13 passed, including negative DevTools peer/runtime-boundary cases and generated workflow/topology checks.
  • vitest run scripts/src/commands/devtools-artifact.test.ts: 15/15 passed for snapshot and release manifest rewrites.
  • devenv tasks run check:quick --no-tui --show-output: passed after merging current main, including TypeScript, formatting, oxlint, Genie, lockfile, source-policy, and megarepo checks.
  • Real release:snapshot:pack:git-sha proof: packed 15 packages as 0.0.0-snapshot-pr.1447.1d789fbcaaef68b2fef50936410a578e18d164b2; trusted manifest creation accepted all 15.
  • Repacked DevTools tarball SHA-256: f9ced6987ddbbec23b4c194ce72f80073ea8f9fcd7665e06f34f98885b79b04b.
  • Its manifest contained only @parcel/watcher@^2.5.0 in runtime dependencies, exact snapshot peers for adapter-web/utils, and the artifact's unchanged vite@^8.0.16 peer range. Embedded release metadata bound it to build dt-20260718-51c22feb with ci-snapshot certification.

No package was published during local verification.

Complexity

The release topology now distinguishes workspace-published packages from externally repacked snapshot packages. The distinction is necessary because DevTools is built in a separate artifact pipeline but must participate in the same immutable npm cohort.

Concerns

The checked-in artifact currently declares Vite 8 only. This PR deliberately preserves that source contract; a refreshed artifact must widen the source peer range before Vite 7 consumers can install the cohort.

The trusted topology change must merge before any PR head expecting a 15-package candidate can be promoted. Older 14-package candidates remain valid only against the older trusted topology digest.

Friction & bottlenecks

The real snapshot proof takes about two minutes because it rebuilds and packs the complete release group. No persistent product bottleneck was introduced.

Follow-ups

  • Refresh the checked-in DevTools artifact after its source peer range includes the supported Vite versions.
  • Re-run the exact 15-package trusted snapshot proof against that artifact before consuming it downstream.

References

Closes #1454.

Related: #1458.

No changeset or changelog entry: this changes repository-local release tooling and does not itself publish or alter a package version.

Posted on behalf of @schickling
field value
agent_name ☁️ co3-billow
agent_session_id 7f3b9666-034f-4e9e-890b-491957f7f75b
agent_tool Codex CLI
agent_tool_version 0.144.1
agent_runtime Codex CLI 0.144.1
agent_model unknown
runtime_profile /nix/store/1n76sy6i9y3ki3k4w04jksqvygw67sj0-coding-agent-runtime-profile/share/coding-agents/profile.json
skills_manifest /nix/store/jn6r0r7r59x3a525jch4pwzwykszqp60-agent-skills-corpus/share/agent-skills/manifest.json
worktree livestore-devtools-artifact-peer-deps/schickling-assistant/fix/devtools-artifact-peer-deps
machine dev3
tooling_profile dotfiles@4eac376

@schickling-assistant schickling-assistant added bug Something isn't working devtools Devtools · Set: manual tooling labels Jul 18, 2026
@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

PR preview

Subject Status Report Details Updated
LiveStore docs preview success Docs preview deployed (livestore-docs-dev) PR aliases: pr-1456-1e9790e, pr-1456 2026-07-25 16:32 UTC
web-linearlite success web-linearlite deployed (preview) Worker: example-web-linearlite-preview.livestore.workers.dev 2026-07-25 16:23 UTC
web-todomvc success web-todomvc deployed (preview) Worker: example-web-todomvc-preview.livestore.workers.dev 2026-07-25 16:23 UTC
web-todomvc-script success web-todomvc-script deployed (preview) Worker: example-web-todomvc-script-preview.livestore.workers.dev 2026-07-25 16:23 UTC
web-todomvc-sync-cf success web-todomvc-sync-cf deployed (preview) Worker: example-web-todomvc-sync-cf-preview.livestore.workers.dev 2026-07-25 16:23 UTC
Report history

PR 1456 · 2026-07-25 16:38 UTC

Subject Status Report Details Updated
LiveStore docs preview success Docs preview deployed (livestore-docs-dev) PR aliases: pr-1456-1e9790e, pr-1456 2026-07-25 16:32 UTC
web-linearlite success web-linearlite deployed (preview) Worker: example-web-linearlite-preview.livestore.workers.dev 2026-07-25 16:23 UTC
web-todomvc success web-todomvc deployed (preview) Worker: example-web-todomvc-preview.livestore.workers.dev 2026-07-25 16:23 UTC
web-todomvc-script success web-todomvc-script deployed (preview) Worker: example-web-todomvc-script-preview.livestore.workers.dev 2026-07-25 16:23 UTC
web-todomvc-sync-cf success web-todomvc-sync-cf deployed (preview) Worker: example-web-todomvc-sync-cf-preview.livestore.workers.dev 2026-07-25 16:23 UTC

PR 1456 · 2026-07-19 15:39 UTC

Subject Status Report Details Updated
LiveStore docs preview success Docs preview deployed (livestore-docs-dev) PR aliases: pr-1456-5cc037c, pr-1456 2026-07-19 15:34 UTC
web-linearlite success web-linearlite deployed (preview) Worker: example-web-linearlite-preview.livestore.workers.dev 2026-07-19 15:27 UTC
web-todomvc success web-todomvc deployed (preview) Worker: example-web-todomvc-preview.livestore.workers.dev 2026-07-19 15:27 UTC
web-todomvc-script success web-todomvc-script deployed (preview) Worker: example-web-todomvc-script-preview.livestore.workers.dev 2026-07-19 15:27 UTC
web-todomvc-sync-cf success web-todomvc-sync-cf deployed (preview) Worker: example-web-todomvc-sync-cf-preview.livestore.workers.dev 2026-07-19 15:27 UTC

PR 1456 · 2026-07-18 13:24 UTC

Subject Status Report Details Updated
LiveStore docs preview success Docs preview deployed (livestore-docs-dev) PR aliases: pr-1456-b0ab936, pr-1456 2026-07-18 13:18 UTC
web-linearlite success web-linearlite deployed (preview) Worker: example-web-linearlite-preview.livestore.workers.dev 2026-07-18 13:08 UTC
web-todomvc success web-todomvc deployed (preview) Worker: example-web-todomvc-preview.livestore.workers.dev 2026-07-18 13:08 UTC
web-todomvc-script success web-todomvc-script deployed (preview) Worker: example-web-todomvc-script-preview.livestore.workers.dev 2026-07-18 13:08 UTC
web-todomvc-sync-cf success web-todomvc-sync-cf deployed (preview) Worker: example-web-todomvc-sync-cf-preview.livestore.workers.dev 2026-07-18 13:08 UTC

@schickling-assistant schickling-assistant added type:bug Something broken or a regression · Set: manual and removed bug Something isn't working labels Jul 19, 2026
@schickling
schickling marked this pull request as ready for review July 19, 2026 15:12
@schickling
schickling self-requested a review as a code owner July 19, 2026 15:12
@schickling-assistant schickling-assistant changed the title Preserve DevTools peer dependencies during artifact repack Preserve DevTools package contract in release and PR snapshots Jul 19, 2026
@schickling-assistant
schickling-assistant enabled auto-merge (squash) July 19, 2026 15:13

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f3640a2945

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/src/commands/release.ts
@schickling-assistant schickling-assistant added area:tooling Developer tooling, scripts, and utilities · Set: manual and removed tooling labels Jul 19, 2026
@schickling-assistant

Copy link
Copy Markdown
Collaborator Author

Superseded by the DevTools source-available migration — tracked in epic #1497.

The external-artifact machinery this PR extends is retired once @livestore/devtools-vite is built from source in livestore-contrib. Holding this rather than landing it — it's listed for closure as part of #1497's cleanup, after cutover is proven.

Posted on behalf of @schickling
field value
agent_name 🎈 cl1-swell
agent_session_id 5a1e2097-a640-400a-a2b8-be55050a58b4
agent_tool Claude Code
agent_tool_version 2.1.202
agent_runtime Claude Code 2.1.202
agent_model claude-opus-4-8
runtime_profile /nix/store/393xxjd29yx4b41rsjaglp3r47q9k7s5-coding-agent-runtime-profile/share/coding-agents/profile.json
skills_manifest /nix/store/xhnp6r3s5n46kpcq182d56ib1dia1179-agent-skills-corpus/share/agent-skills/manifest.json
worktree livestore/schickling/2026-07-19-misc
machine dev3
tooling_profile dotfiles@ab9375c

@schickling schickling closed this Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:tooling Developer tooling, scripts, and utilities · Set: manual devtools Devtools · Set: manual type:bug Something broken or a regression · Set: manual

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Preserve DevTools peer dependency contract during artifact repack

2 participants