Repository navigation
Conversation
…-slim The native file and storage helper image was the last place next still shipped Bun 1.4.2. Catalog the registry-derived oven/bun:1.4.4-slim index, platform manifests, configs and Bun/libc byte pins for linux/arm64 and linux/amd64, and use the 1.4.4-slim tag for new VM file preparation. Selection refuses any catalog entry whose Bun version is not current. Saved storage records and VM file manifests written under the earlier 1.4.2 helper still parse, so saved stop and recovery stay available. That artifact is no longer cataloged: storage enrolled under it refuses verification as artifact drift and is never relabeled or re-seeded. Refs HACK-1758 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Nice work! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
…the candidate channel Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
#633) ## What this is Merge train batch 4 into `next`. Each component PR's reviewed head is merged unchanged with `git merge --no-ff`, in this order: #603 is stacked on #602, and #604 on #599. Integration conflicts are resolved in the batch's merge commits, described below. Hosted CI on this branch is the full-suite gate for the combined result. | PR | Title | Linear | Head included | Review at that head | | --- | --- | --- | --- | --- | | #602 | feat(native): share many project roots in one development pool | - | `33293eaa` | Codex code + security: no findings; 0 open threads | | #603 | feat(native): add a new project root to the stopped shared pool on up | - | `a6a301cc` | Codex code + security: no findings; 0 open threads | | #589 | feat(native): add hack down --remove-data for stopped native projects | HACK-1120 | `8216321a` | Codex code + security: no findings; 0 open threads; restore/removal race closed at the runtime cleanup boundary (`--retained-only`) | | #599 | feat(native): review interpolated port defaults and IPv6 loopback ports | HACK-1907 | `fc41d228` | Codex code + security: no findings; 0 open threads | | #604 | feat(native): publish Compose ports on host loopback through owned bridges | HACK-1907 | `17ad74b4` | Codex code + security: no findings; 0 open threads | | #600 | fix(storage): re-pin native file and storage helper to oven/bun:1.4.4-slim | HACK-1758 | `7bcd47ea` | Codex code + security: no findings; 0 open threads | ## Integration changes - **#602** (`provider/network_update.rs`, `docs/reference/v5-model-coverage.md`): a network update first refuses while a share-update journal is pending (#602). Only then does it restore a clean stop's short-home alias (#613, batch 3), so a refusal makes no write. Both model-coverage rows are kept. - **#589** (`src/commands/project.ts`): native `down` keeps #589's early `--remove-data` branch and its config read after that branch, with batch 2's lazily computed lifecycle environment. - **#604**: an all-features build failed because the `native-config-plan` resources in `provider/graph/native/mod.rs` didn't set #604's new `loopback_ports` field. The fix (`17ad74b4`) went to #604's branch first, so the head included here is its reviewed head. #603, #599 and #600 merged without conflicts. ## Validation on this branch - CLI typecheck: pass, in a clean worktree. Biome on changed files: no errors. - Focused bun tests, bounded runner, the 11 changed test files plus the startup-log and DNS preview tests: 482 pass, 0 fail. - `RUSTUP_TOOLCHAIN=1.97.1 bun run check:local`: pass. All-features clippy `-D warnings` with Zig 0.15.2: pass. - Cargo: - `--lib` filtered to `share_update`, `lifecycle`, `network_update`, `state`, `graph` and `config_audit`: 596 pass. - `--features native-config-plan` filtered to `provider::graph::native`, `share_update` and `project_share`: 202 pass. - `project_contract`: 63 pass. `local_contract`: 14 pass. - `bun run test:models` with the pinned TLA+ 1.7.4 jar: exit 0. `tests/tla-runtime-models.test.ts`: 131 pass. - `docs:prepare` + `docs:check`, `privacy:check`, gitleaks over `origin/next..HEAD`: pass. The final merge of `next` (`f2d53ac7`) changes no file: `next` holds batch 3 with the same tree as the batch 3 head this branch already contained. Not run locally: the full bun suite, the Linux cargo jobs, docker-e2e and native host qualification. Hosted CI covers the first three; host qualification stays with each component's Linear issue. After this merges, each component PR is closed with a link to the merge commit. 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- codesmith:footer --> --- <a href="https://backend.blacksmith.sh/track/run-proof?expires=1796592995&installation_model_id=17053&pr_number=633&ref=codesmith_pr_footer&repository=hack-dance%2Fhack&return_to=https%3A%2F%2Fgithub.com%2Fhack-dance%2Fhack%2Fpull%2F633&variant=run_proof_on_this_pr&signature=0bfa867ef8fed79ca75d8e8a3a69eb445c6b0bfbf57e889af50e0201d406f292"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/proof-run-proof-on-this-pr-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/proof-run-proof-on-this-pr-light.svg"><img alt="Run Proof on this PR" src="https://pr-comments-assets.blacksmith.sh/codesmith/proof-run-proof-on-this-pr-dark-3x.png" width="168" height="28"></picture></a> <sup><a href="https://app.blacksmith.sh/hack-dance/codesmith/hack/pr/633?autoLogin=true&ref=codesmith_pr_footer">Open in [code]smith</a> · Need help on this PR? Tag <code>@codesmith-bot</code> with what you need.</sup> <!-- codesmith:autofix:disabled --> <!-- /codesmith:footer --> --------- Co-authored-by: Dimitri Kennedy <344842+roodboi@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Merged into 🤖 Addressed by Claude Code |
What changes
The native file and storage helper image moves from
oven/bun:1.4.2-slimtooven/bun:1.4.4-slim. This was the last placenextstill shipped Bun 1.4.2.src/lib/native-compose-storage-witness-docker-artifact.ts): new index, platform manifest, config, Bun and libc pins for linux/arm64 and linux/amd64. The helper bundle bytes (helperHash) are unchanged;bun scripts/generate-native-storage-witness-helper.ts --checkpasses.src/lib/native-compose-storage-witness-xattr-carrier.ts):NATIVE_STORAGE_HELPER_BUN_VERSION = "1.4.4". Dependency selection now also refuses any catalog entry whose Bun version is not the current one.src/lib/native-compose-vm-file-protocol.ts): new preparation usesoven/bun:1.4.4-slim.oven/bun:1.4.2-slim; the existingoven/bun:1.4.4-slimpull now covers the helper too.native-compose-storage-xattr-carrier.md,native-config-files.md,native-compose-benchmark.md,tests/e2e/README.md) name the new image and explain what happens to earlier state.State written by an earlier CLI (needs review)
The old pin was a single literal in the validator. Changing only that literal would make saved receipts, intents, references and carrier journals that hold the 1.4.2 artifact fail to parse. Saved stop and recovery for those instances would then refuse. To avoid stranding them:
bunVersion: "1.4.2"still parse, and capture keeps their version rather than relabeling it.oven/bun:1.4.2-slimoroven/bun:1.4.4-slim. The generation keeps its own pinned helper image ID for restore and retirement. Only new preparation uses the current tag.This is acceptable for the candidate channel: each candidate version starts with fresh native homes, so storage prepared under the 1.4.2 helper refuses afterward and is prepared again under the current helper.
docs/reference/native-compose-storage-xattr-carrier.mdnow says so.No existing guard was relaxed. Every other image, manifest, config, platform, helper-hash and policy check is unchanged.
How the pins were derived (no local Docker)
Everything came from the registry HTTP API with an anonymous pull token, in a scratch directory:
Check of the method: the same script run against the old index
sha256:cb3bbbb0…reproduced every existing 1.4.2 pin exactly: both manifests, both configs, both Bun hashes and both libc hashes.Result for
oven/bun:1.4.4-slim:sha256:1846adf22496bd711036aae8be147e57bdebbaea2e5264e3e0b5af1db187d9a4sha256:b0d169a695f779087d0fe8c08b5b17f0d3a927dceac2a087c87a1351340c6565sha256:13b43f8bb2c63f5d89c56205c4279b85620363296a00ada33ff7ad568f3688e7sha256:f545ab0408208347c62fad5822a4621a4b7fc3a7da43a1dea66dc17335535b7esha256:bca1fb36a1a809a0aec806c0a239364f4873ead989e7f069e0a47f17e0a83cfa/usr/local/bin/bun354c2b049c716aca07b2e5cddb887928ac58950675d1258bb6312083917793b610702245766b225e70bbf6235fd6b47214fd94b4760d00ffaed8ab0df57ac235libc.so.670fa4c4cf57eabeb96097cce47582d02379c4cd1de3db3e98ade4dd7089a1b139792e3cbb541c8f44c7acf5f14f4022ea62998ecc787d326bed4d8b6547dfd92Other facts from the configs: the image label
org.opencontainers.image.revisionis38afee6c…, matching the Bun 1.4.4 build CI uses. The base moved from Debian 13.6 to 13.7, and glibc from 2.41-12+deb13u3 to 2.41-12+deb13u4. That is the same glibc 2.41 ABI and the same fixed libc paths.User,Volumes,EntrypointandEnvare unchanged from 1.4.2.Validation
bun run --cwd packages/cli typecheck: pass.biome checkon the changed TypeScript files: pass.bun scripts/generate-native-storage-witness-helper.ts --check: pass (helper bytes unchanged).bun run docs:prepare && bun run docs:check: pass.native-compose-storage-*ornative-compose-vm-file-*): 613 pass, 15 skip, 1 fail. The failure pinned a hash of recorded daemon output that contains the old image ID. That test now keeps those recorded bytes as a literal with the hash unchanged, rather than rewriting the hash. Rerunning the two changed storage files after the fix: 111 pass, 0 fail. No outer Docker, launchctl orhackstub was called. The branch was then rebased ontonext6410d1c, whose two new commits touch none of these files, and typecheck passed again.gitleaks protect --stagedandgitleaks detectover this branch's commits: clean.Remaining gaps
--pull neverresolution of the new repository digest in classic and containerd image stores.oven/bun:1.4.2-slimas its pinned small-fixture workload image, to keep cohorts comparable. Storage-bearing benchmark trials now also needoven/bun:1.4.4-slimcached.Refs HACK-1758
🤖 Generated with Claude Code
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.