Skip to content

build(runtime): refresh ADX rc1 and sandboxd Start fixes - #100

Merged
rcyw merged 2 commits into
inclusionAI:developfrom
WenYuLuo:build/adx-master-rc1-20261015
Oct 16, 2026
Merged

rcyw merged 2 commits into
inclusionAI:developfrom
WenYuLuo:build/adx-master-rc1-20261015

Conversation

@WenYuLuo

@WenYuLuo WenYuLuo commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Refresh the pinned ADX platform/Execd pair to Buildkite #162, source af7d82f04a52d4604ea7ca4c550f09c6114dee4d, and pin sandboxd to PR #75 at 02386fea2050c4a77cfaa9df5edfe72fd35fc987.

The sandboxd update propagates Start cancellation through blocked OCI preparation, retains image-pull/runtime-start timeout types and stages, and preserves non-timeout registry error categories. The ADX #162 artifacts contain the corresponding ADX !51 propagation changes, persistent local checkpoint LRU reuse for S3-backed recovery, and scheduling-queue runtime requirements.

develop was refreshed at 9f24718638131b09ad03a274b9ba52ff76396a38; the existing release-pin commit was already based on it, so rebase required no history rewrite. Commit 9cd50bd3aa4ddff80fb1c6e13779bc2d4cb1fde4 adds the sandboxd gitlink update. The Dockerfiles keep matching immutable OBS URLs and compressed SHA-256 pins for the ADX platform and Execd pair.

Validation:

  • A full Linux/amd64 image builds successfully from this PR with runsc and runc enabled: akernel-local/pr100-sandboxd75:9cd50bd-20261016, image ID sha256:30a02448b384688707a6cfefa3b10c6397bb94427639f3e10e4f4a8890bbe216. The fixed ADX archive and all 31 manifest-listed files pass checksum verification. All 12 installed release files, four running component binaries and runtime rootfs are checked; SDK and native-fault fixtures have identical production binary/rootfs hashes. Runtime Execd SHA-256 is d371c08efc2e3ccaf3b16ed36901b1c3374025e4e513527b722f5d8cdbe8ce0d.
  • make sdk-check deploy-script-check deploy-standalone-test build-helper-test passes, including SDK tests, Ruff and mypy.
  • 19/19 public SDK E2E groups pass, 46 unittest cases and two script groups, zero skips: the complete standalone suite, unknown-create-result/transport-disconnect replay, concurrent claim, tenant isolation, admission, and one selected runc delete failure followed by automatic upstream retry. Exactly one public DELETE is issued in the fault case; metadata, bundle, storage and netns remain present at the retry boundary, then ordinary cleanup converges. Redis state/reservations and backend inventory end empty.
  • Four early internal-timeout cases and eight non-timeout registry controls pass through real Redis/API Server/Coordinator/adxlet/sandboxd. With a 180-second create budget, image TLS timeouts return at 102.776/102.739 seconds (JSON/SSE), and runc's internal 10-second startup timer returns at 10.890/10.234 seconds. Responses retain the concrete stage and 504 / DEADLINE_EXCEEDED / never / terminal. Same-request and authoritative failed-record replay preserve the exact message. Registry 401/403/404/429 preserve their corresponding error category and original message in both JSON and SSE; backend 429 is terminal instead of entering admission retry. Healthy create/delete succeeds before and after injection.
  • Four controlled OCI cases pass: successful control, total deadline expiry, DELETE queued during creation, and SSE deadline expiry. The three expired creates return at 35.004/35.006/35.005 seconds. Registry layer bodies remain withheld; readers disconnect on cancellation, no late Running is observed, and independent netns/state/mount/process audits stay empty for at least 30 consecutive seconds in each expiry case. No extra public DELETE or service restart is used to obtain cleanup.
  • GitHub CI run 38834150329 passes all 10 checks at 9cd50bd, including Standalone E2E. PR publication is skipped as intended. Both task-owned local deployments are removed and the pre-existing development node remains running.

DELETE submitted during the blocked create still waits behind that serialized create (32.847 seconds); DELETE after expiry returns in about 0.004 seconds. This dependency update retains lifecycle queue ordering.

The native cleanup fixture disables idle netns caching so independent physical-allocation checks can require an empty inventory. The SDK acceptance uses the normal standalone configuration. Sanitized local evidence is retained under out/pr100-sandboxd75-20261016/evidence/; development-host results are under /root/akernel-pr100-sandboxd75-20261016/.

Acceptance scope is Linux/amd64 standalone with runsc and native runc, using a complete new image built from this PR. Runtime fault fixtures use a metadata-only derived image and a rootfs extracted from this build; production binaries are unchanged. The fixed platform archive and every manifest file are verified independently, then the installed bin/sdk/runtime files and actual running binaries are checked against the artifacts. The runtime Execd matches that same platform manifest. The task-owned fixtures are isolated from the existing development node.

Refs #96. Keep the issue open for remaining integration and acceptance work.

Consume the matching platform and Execd archives built from Agent DX
master af7d82f, including persistent local checkpoint caching. Keep the
immutable OBS URLs and SHA-256 pins aligned with the ADX source gitlink.

Signed-off-by: robbluo <luo1442@gmail.com>
Use sandboxd PR inclusionAI#75 for cancellable OCI preparation and typed internal
timeouts with precise operation stages. Preserve registry rejection
categories through the backend adapter.

Refs inclusionAI#96.

Signed-off-by: robbluo <luo1442@gmail.com>
@WenYuLuo WenYuLuo changed the title build(adx): refresh v0.1.0rc1 from master build(runtime): refresh ADX rc1 and sandboxd Start fixes Oct 16, 2026

rcyw commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

@WenYuLuo Completed the read-only review at 9cd50bd3aa4ddff80fb1c6e13779bc2d4cb1fde4 (base 9f24718638131b09ad03a274b9ba52ff76396a38). Recommend Approve: no new blocking P1/P2 finding in the reviewed scope. HEAD and its 10 successful CI checks, including Standalone E2E, were rechecked before posting; publication is skipped as intended.

Independent checks completed in this review:

  • Initialized sandboxd and ADX from their declared canonical URLs and verified the exact gitlinks: 02386fea2050c4a77cfaa9df5edfe72fd35fc987 and af7d82f04a52d4604ea7ca4c550f09c6114dee4d. The build copies/compiles sandboxd and pairs its shim with manifest-selected runc.
  • Downloaded both Dockerfile-pinned archives. Their compressed SHA-256 values match 84f2cc11dca67aed642f4908c0e74ba1978d272491e239adad2ad03ba302da77 (platform) and 62edc1079f5fcb500d25f397bf6c43bc7ff74b885ec8ec386069df138c2c8db1 (Execd). All 31+2 manifest-listed files pass hashing and the ELF architecture checks pass. Both manifests identify af7d82f0; their Execd and rootfs files are byte-identical. The bundled SDK's 20 production modules have the same runtime AST as the indexed SDK.
  • make sdk-check deploy-script-check deploy-standalone-test build-helper-test passes: 298 SDK, 35 benchmark, 82 standalone-helper and 60 build-helper tests, plus Ruff/mypy and syntax checks.
  • Focused ADX checks pass 195 tests, including timeout-stage/replay and checkpoint LRU/lease coverage; Rust formatting and documentation checks pass. The 30 Coordinator RPC tests were ignored by their existing Redis/mTLS fixture gates and were not exercised. Checkpoint tests use temporary files, an in-memory object store and simulated drivers.

Merge order: merge sandboxd #75 first; then verify/update src/sandboxd to its final merged dependency, check tracked-tree equivalence and canonical availability, and require CI on #100's resulting HEAD before merging #100. The current PR-head pin is retrievable and matches the reviewed source, so this is a provenance/integration recommendation, not a build-defect finding based solely on SHA differences.

Keep #96 open until acceptance on the fixed merged build. Next, use an exclusive node with audited running binary/rootfs hashes for deadline-only with zero DELETEs, expiry followed by one DELETE, DELETE during creation, and successful cold import; verify phase/retry semantics, no late revival/duplicate allocation, and eventual independent physical cleanup without extra DELETEs or service restart. Logical deletion and physical reclamation remain separate; this does not require synchronous deletion or a new public cleanup API.

This review did not build/deploy the full image or rerun opt-in native-runc fault, large-image, KVM/QEMU/macOS guest, or restart/rollback-failure acceptance. The author's deployment campaign is separate evidence. Default AKernel CI disables runc, so Standalone E2E cannot substitute for those checks. Guest reuse still requires authentication, trusted host keys and a confirmed serial-use window.

This is a Conversation review recommendation, not a formal GitHub approval.

@rcyw
rcyw merged commit b5db829 into inclusionAI:develop Oct 16, 2026
11 checks passed
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