Skip to content

fix(image): support pinned Fabric archive links on Python 3.10 - #11833

Closed
jyaunches wants to merge 2 commits into
v1from
codex/voiceclaw-r0-image-python310
Closed

jyaunches wants to merge 2 commits into
v1from
codex/voiceclaw-r0-image-python310

Conversation

@jyaunches

Copy link
Copy Markdown
Contributor

Outcome

The pinned Fabric source archive now extracts on Python 3.10. Safe in-tree symbolic links remain intact, and links that escape the archive root are rejected.

Reason

Python 3.10 resolves archive link targets differently from newer tarfile.data_filter behavior. The pinned Fabric archive contains an in-tree metadata link that blocked the isolated ARM64 image build used for VoiceClaw R0 qualification.

Related issues

Refs #11752

Changes

  • Ignore link metadata during the ordinary member filter path.
  • Resolve symbolic-link targets relative to each archive member.
  • Reject targets outside the pinned archive root.
  • Add a regression test for safe and escaping links.

Verification


Signed-off-by: Julie Yaunches jyaunches@nvidia.com

Failure: the checksum-pinned Fabric archive contains a repository-only .claude/skills symlink that Python 3.10's safe tar filter resolves outside the extraction destination, so the qualified native ARM64 image build stops before compiling any source.

Decision: retain tarfile.data_filter for every build input while excluding only that unused repository metadata symlink; do not disable traversal checks or alter the pinned archive.

Validation: focused regression test passes; the isolated Brev ARM64 build is the live acceptance check.
Failure: Python 3.10's backported data filter resolves every relative Fabric archive link from the extraction root instead of the member directory, so required in-tree LICENSE links still fail after excluding repository metadata.

Decision: normalize symlink targets using tar semantics, require them to remain inside the archive's single top-level root, retain tar_filter path and mode checks, and clear archive ownership metadata.

Validation: focused tests accept member-relative in-tree links and reject traversal outside the archive root; isolated ARM64 image build follows.
@copy-pr-bot

copy-pr-bot Bot commented Sep 15, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@jyaunches

Copy link
Copy Markdown
Contributor Author

CI disposition for v1 at cce800fa9d5dd4910e76a162018b29911cbcbfe8: the failing codebase-growth-guardrails and package-openshell-sdk jobs stop because this base lacks .github/actions/setup-reviewed-npm/action.yml. Where scheduled, check-pr-limit stops because this base lacks .github/pr-limits.json. These jobs do not reach the PR diff. Candidate-focused validation is recorded in the PR body; no candidate-owned CI failure was observed.

@cv

cv commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Superseded by 6141179, which replaced the host-side image/fabric/build.py runner with Docker Bake and shared Docker build stages. The current build verifies the pinned archive checksum and extracts it with tar inside Docker, so the Python 3.10 tarfile code path fixed here no longer exists. The replacement image builds passed on Linux ARM64. Closing without merging; no compatibility helper or helper-specific regression test needs carrying forward.

@cv cv closed this Sep 16, 2026
@wscurran wscurran added area: packaging Packages, images, registries, installers, or distribution area: security Security controls, permissions, secrets, or hardening labels Oct 5, 2026
@cv cv added the v1 NemoClaw v1 branch label Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: packaging Packages, images, registries, installers, or distribution area: security Security controls, permissions, secrets, or hardening v1 NemoClaw v1 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants