Skip to content

docs(design): publish the compass-agent image for linux/arm64 (RIG-3625) - #1167

Merged
trunk-io[bot] merged 5 commits into
mainfrom
compass-native/rig-3625-arm64-agent-image
Sep 12, 2026
Merged

docs(design): publish the compass-agent image for linux/arm64 (RIG-3625)#1167
trunk-io[bot] merged 5 commits into
mainfrom
compass-native/rig-3625-arm64-agent-image

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

The Apple container runtime tier on macOS is arm64, and the compass-agent image
is published linux/amd64 only, so that tier has no agent image to run. This
records the multi-arch publish lane.

Consumer-facing tags stay bare and become an OCI image index, so no consumer
changes: every puller already relies on engine platform negotiation. Per-arch
tags are internal immutable building blocks.

Each arch builds natively on its own runner rather than under QEMU. The image
closure dominates CI cost and emulating a nix build multiplies it; GitHub now
offers free arm64 runners on public repositories.

No guard is dropped to make the pipeline green. Immutability, two-tag coherence
and the semver re-tag move to manifest-list digests, and the linux/amd64
tripwire becomes an exact platform-set assertion with per-member arch and os
checks, which is a stricter contract than it replaces.

The toolchain has never run on aarch64-linux, so a dispatch-only spike gates the
lane rather than a claim that it works.

Co-authored-by: Matt Wilkinson matt@rigel.build

The Apple container runtime tier on macOS is arm64, and the compass-agent image
is published linux/amd64 only, so that tier has no agent image to run. This
records the multi-arch publish lane.

Consumer-facing tags stay bare and become an OCI image index, so no consumer
changes: every puller already relies on engine platform negotiation. Per-arch
tags are internal immutable building blocks.

Each arch builds natively on its own runner rather than under QEMU. The image
closure dominates CI cost and emulating a nix build multiplies it; GitHub now
offers free arm64 runners on public repositories.

No guard is dropped to make the pipeline green. Immutability, two-tag coherence
and the semver re-tag move to manifest-list digests, and the linux/amd64
tripwire becomes an exact platform-set assertion with per-member arch and os
checks, which is a stricter contract than it replaces.

The toolchain has never run on aarch64-linux, so a dispatch-only spike gates the
lane rather than a claim that it works.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@linear-code

linear-code Bot commented Sep 12, 2026

Copy link
Copy Markdown

RIG-3625

@trunk-io

trunk-io Bot commented Sep 12, 2026

Copy link
Copy Markdown

😎 Merged successfully - details.

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-native-rig-3625-arm6.compass-eng-docs.pages.dev

Deployed from compass-native/rig-3625-arm64-agent-image at fb49ac6.

Changed pages:

rigel-mintaka and others added 2 commits September 12, 2026 16:07
T1 scoped the arm64 entrypoint work to the nodeModules FOD hash alone, but the
native-addon copy block names linux-x64 three times and its modern/baseline
split is an AVX2 concept with no arm64 analogue. An implementer following T1 as
written would not have touched it. T1 now owns that edit, and the unverified
part is narrowed to which variant names the arm64 package actually ships.

The index immutability guard and the clean re-run after a mid-compose failure
both assumed an OCI index recomposes to identical bytes. The spec does not
canonicalize an index, and an unproven assumption sat inside a guard whose
failure arm hard-fails against an immutable tag. It is now OQ-5, gated on the
spike, with a fallback identity (assert the member digest set) that keeps the
immutability property without depending on byte-stable serialization.

Also hedge the nix2container claim where it is made rather than two sections
away, and anchor the ledger row into the decision it records.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
…G-3625)

Both T1 edits need an aarch64 value only the spike runner can produce, so
landing the seam alone would put a fakeSha256 placeholder and an unresolved
copy block on main where nothing selects them until the arm64 lane exists.
That is config that provably does nothing. T1 now lands with the measured hash
and variant names in one change, or waits for the cutover.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@rigel-mintaka
rigel-mintaka marked this pull request as ready for review September 12, 2026 20:26
rigel-mintaka and others added 2 commits September 12, 2026 16:39
Another lane landed DL-364 on main while this PR was in review, so the row
collided and the ledger gate failed in CI. Main is now at DL-365, making
DL-366 the free id.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
The ledger row collided with another lane, so this branch needs main in its
history for the ledger gate to see every id.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@trunk-io
trunk-io Bot merged commit 788205d into main Sep 12, 2026
15 checks passed
@trunk-io
trunk-io Bot deleted the compass-native/rig-3625-arm64-agent-image branch September 12, 2026 21:54
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.

2 participants