Skip to content

Retain published-cell failures and isolate Buildx state - #325

Merged
rmcdaniel merged 2 commits into
mainfrom
sdk-python/211-acceptance-diagnostics
Nov 14, 2026
Merged

rmcdaniel merged 2 commits into
mainfrom
sdk-python/211-acceptance-diagnostics

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 14, 2026 •

Copy link
Copy Markdown
Member

The first published activity-identity cell failed during a public Buildx manifest lookup before any Server or SDK activity, and its receipt discarded command stderr. This retains bounded command stdout/stderr and gives each Buildx lookup fresh private tool state while preserving the empty Docker credential configuration and fixed local engine.

A bounded metadata-only comparison reproduces mkdir /proc/self/fd/buildx failure under the original environment. Adding only BUILDX_CONFIG pointing to an empty owner-only directory returns the exact 647-byte Server index with SHA256 8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9. Tool state is held and checked by directory identity, removed afterward, and supplied only to Buildx; ordinary Docker commands and ID cleanup keep their original authority. The original hosted attempt remains NONPASS because its missing stderr cannot establish that attempt's cause.

Validation: 189 focused tests and Ruff pass, including bounded diagnostics, terminal failure and cleanup after output refusal, credential/state separation, normal state removal, and foreign-directory preservation with the original command error retained. The SDK, wheel lock, image tuple, container admission and installed assertion are unchanged.

Tracks durable-workflow/.github#211 and follows #324. No SDK release or new installed attempt is claimed. Exact source review and terminal CI precede any owner-selected repeat.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Complete runner correction is frozen at d4be6e1, tree 53ab828f9116d67213e3313e2c8db6332621ba39, based on accepted main 4dc4e7f. The first dispatch remains NONPASS; no full workflow retry, SDK installation or container activity has been launched for this revision.

The proven observability defect is closed: CalledProcessError/TimeoutExpired now retain at most 64 KiB per stdout/stderr stream, full original byte lengths and hashes, command identity, and return code or timeout. Diagnostic-path refusal is recorded without disabling independent cleanup or the held terminal failure receipt. Tests cover both truncation and the real main-path failure handler.

One bounded read-only two-case comparison used the same frozen public Server index and fixed empty Docker credential authority. With DOCKER_CONFIG=/proc/self/fd, the current lookup returns exit 1 and exact stderr ERROR: mkdir /proc/self/fd/buildx: no such file or directory. Its stderr SHA256 is a89f5e70ed0deda771c1a51ba44b9f3dfdb315ff6c76a44417ea882be194b2de. Adding only a fresh private BUILDX_CONFIG returns exit 0, 647 stdout bytes hashing exactly to 8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9, and empty stderr. No Docker container, image pull/build, package install, SDK or Server command ran in this comparison; the private tool state was removed. This establishes a current config compatibility defect without assigning an authentication or historical cause to the stderr-less hosted failure.

The correction allocates fresh host-only mode0700 Buildx state per manifest lookup, holds its no-follow directory descriptor, verifies owner/mode/device/inode before and after use, and removes the normal state afterward. Its path is never mounted into the SDK consumer or included as an artifact. Docker credentials remain absent at /proc/self/fd, engine authority remains the fixed Unix socket, and normal Docker/cleanup calls never inherit Buildx state. Directory replacement refuses cleanup of the foreign pathname. When a command and state check both fail, the original command error/streams remain available with the state failure recorded.

189 offline tests and Ruff PASS. New controls exercise main-path stderr retention plus cleanup/failure reporting, output-directory refusal, full-stream hash/truncation, clean private state, unchanged credential authority, no state for normal/cleanup commands, foreign-directory preservation, and original command-error retention. Existing exact package/RECORD/checker, platform/container/network, retry-identity and ID-cleanup controls remain unchanged. Fresh normal CI and exact source review are pending; no installed PASS or shared closure is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-source review: PASS for d4be6e12f065bdf30d3a1330b2ad7bd9f201a88d / tree 53ab828f9116d67213e3313e2c8db6332621ba39, scoped to the pre-effect diagnostic and Buildx-state correction.

Independent comparison establishes:

  • the direct parent is accepted Verify shipped activity identity and document local retries #324 main 4dc4e7f5257a2c98a8be6a19b2d8a6718d8c461c; the complete delta is four files and changes no SDK, wheel lock, image tuple, container profile, network, retry assertion or cleanup ownership predicate;
  • only commands whose exact prefix is docker buildx receive a fresh BUILDX_CONFIG. DOCKER_CONFIG=/proc/self/fd, the fixed Unix engine, closed PATH, and absent inherited proxy/SSH/registry credentials remain unchanged. Ordinary Docker and cleanup calls cannot receive Buildx state;
  • each Buildx state directory is freshly created mode 0700, opened no-follow, and bound by device/inode/owner/group/mode through a held descriptor before and after the subprocess. The normal state is removed after use. A replaced pathname refuses and preserves the foreign directory rather than deleting it;
  • if the Buildx command and state teardown both fail, the original command exception and streams remain authoritative while the state failure is recorded separately;
  • CalledProcessError and TimeoutExpired retain at most 64 KiB per stream, while recording full lengths and SHA-256, exit code or timeout, and hashed argv. Diagnostic-file refusal is non-authoritative: it cannot disable independent Docker cleanup or the held terminal result descriptor;
  • the two-case public lookup establishes a current compatibility correction only: the original environment fails trying to create /proc/self/fd/buildx, while adding only private Buildx state returns the exact 647-byte public index. It does not retroactively assign that cause, or an authentication cause, to the stderr-less first hosted NONPASS.

I independently ran the complete exact-head test_published_activity_acceptance.py file: 120 tests PASS. git diff --check is clean. The reported broader 189 focused tests and Ruff result are consistent with the reviewed source.

This clears source review only. Keep any controlled repeat held until exact-head integration and all current checks are terminal. The first dispatch remains NONPASS; no SDK installation, Server/container activity, workflow retry, package publication or shared closure is inferred.

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 14, 2026 01:21
@rmcdaniel

Copy link
Copy Markdown
Member Author

Independent current-head gate readback for exact d4be6e12f065bdf30d3a1330b2ad7bd9f201a88d / tree 53ab828f9116d67213e3313e2c8db6332621ba39:

  • all 21 reported checks are terminal;
  • 20 are SUCCESS, including integration, target-branch qualification, package, Python 3.10–3.15, both CodeQL analyzers/status, both public-boundary jobs, SonarQube, and SonarCloud;
  • the only SKIPPED check is the manual published-activity-acceptance job.

This closes the current-head source/CI prerequisite for the already reviewed bounded repeat. It does not convert the earlier dispatch NONPASS into a product result and does not establish any SDK, Server, container, or published-activity outcome; those remain dependent on one exact controlled execution and its retained cleanup/evidence review.

@rmcdaniel
rmcdaniel merged commit d7eb1fe into main Nov 14, 2026
21 checks passed
@rmcdaniel
rmcdaniel deleted the sdk-python/211-acceptance-diagnostics branch November 14, 2026 01:23
@rmcdaniel

Copy link
Copy Markdown
Member Author

Normal merge is complete at d7eb1fe, with tree 53ab828f9116d67213e3313e2c8db6332621ba39 equal to reviewed d4be6e1. The topic ref was deleted with its expected-head lease and verified absent. The accepted-main CI 43540262548, Sonar 43540262507, Public Boundary 43540262505, and Push-on-main 43540262299 are now terminal success.

The single changed-runner repeat is manual run 43540355424, exact head d7eb1fe, attempt 1. Its published cell 132279402177 completed success from 01:24:35Z to 01:25:32Z on 2026-11-14. The exact-head PR source/quality gates and merge-tree equality preceded dispatch; the duplicated accepted-main checks were still running when it was queued at 01:23:59Z. I have withheld qualification while those main checks completed, and the overall manual run plus independent evidence review are still pending. No further dispatch is selected.

Retained observation, not final shared closure: the actual installed SDK 2.17.2 activity callback ran twice. Both attempts reported logical execution 01M7BTGHTSCTWVZ9EQCW0Z0E5S, workflow python-activity-identity-7fb1300f909940daae5d88a05c4665c0, and run 01M7BTGHT650R2Q62NGZRN3QZV. Attempt numbers were 1 and 2; task IDs and activity-attempt IDs were nonempty and different. The logical ID differed from all four attempt/task identities. The second callback result matched the workflow result. JUnit reports exactly the intended one case, zero errors/failures/skips.

Artifact 14091746046 has 36 entries; I downloaded the raw ZIP and independently matched SHA256 972def3f71d33d88aaf8d05e8d00f526d1b4eb6526d4227ea1d760d6597270b1 before reading its regular relative members. The approved SDK wheel remains 7dc77d3882fa5cbddbeaee6a4cc63b05285e280523c8ea40dc31e03cc12a40bc. All 15 retained wheel hashes, all six captured source-file hashes against accepted Git, and all 51 original non-RECORD SDK wheel members against the 59-member installed inventory reconcile. The recorded complete dependency environment matches the frozen lock. The retained immutable bootstrap digest is b2d044518c2b3d63c1c662ba874678cb408ecc66b26025667b8b317c0c50e111.

The selected Server tuple remains 3.9.2 / source 5614274d2629d03f92932a07dfee0fb10349ddd9, index 8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9, amd64 child 813c9337c44be7d497efd29e1b463546519e488aa796b5ecf9dfc6f4f10d2128. Official Python remains 3.12.16 / index 935c3c5b12357a7e10caa9c1e6ca5692344d97cf229832ef584be2cec9fc03df, amd64 child 0f086103b026048cc50cb5da25ec435c023c5241a83fc44daea593377abc61c4. Before/after authority files are byte-identical, SHA256 84481a10668d10a0c3408b6c26a5079854138df5dd1cb1afeb1926efafeeea77.

Captured runtime 9e3f4df6b1a6fe0e1ee95b777e3ad8ff3fe85b90096f84d2513a2e170a3e9354, consumer 2a72093657ac062027503ae778263d7467f909a56ff55754fa73a4171d31ccc7, and internal network a33584afd2bbb40edc36fcbf5a490d4bc1c4e6356fd26948bbb964c2bd93a3d5 remain bound across both authority snapshots. Both containers had no OOM. The terminal receipt reports both full IDs and the network absent, followed by an independent owner/run-label absence check. Consumer exit is 0 and complete=true. Result SHA256 c91771ffd72997b867fb913ed8284bb42aa9bd4ed250b6a0d9f966d3c3c2a590; JUnit SHA256 5419843345210f4be8ab0d91b9ee4470b7446d7c8f4412e6c564cbe0483bf989; installed-inventory SHA256 9f92e20dc6334a551eaf68ce1e518fb5fc18c0139b1d0279f569b4672e54c043. Diagnostics retain seven days.

The first dispatch 43536387547 remains NONPASS before SDK/Server effects. This observation does not establish external side-effect recovery, local/prepared/session behavior, generated-policy default-cap delivery, timer-redrive acceptance, another binding/backend, or a new SDK release. Please review this exact retained cell and gate sequence before it is used as the remaining Python #211 receipt.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact evidence PASS for the scoped published-activity identity cell only.

  • Accepted-main source is d7eb1fe3300cbf514a169d8e76d5854ccc183232 / tree 53ab828f9116d67213e3313e2c8db6332621ba39; its two parents are accepted main 4dc4e7f... and reviewed source d4be6e1.... All six source-file SHA-256 values in result.json independently match those Git bytes.
  • Manual run 43540355424 is terminal SUCCESS at that exact source. Job 132279402177 is SUCCESS; integration and target-branch qualification are also SUCCESS.
  • Artifact 14091746046 is named for the exact commit, reports 6,384,709 bytes, and its raw ZIP independently hashes to 972def3f71d33d88aaf8d05e8d00f526d1b4eb6526d4227ea1d760d6597270b1. result.json hashes to c91771ffd72997b867fb913ed8284bb42aa9bd4ed250b6a0d9f966d3c3c2a590.
  • The published SDK wheel is exactly durable_workflow-2.17.2-py3-none-any.whl, SHA-256 7dc77d3882fa5cbddbeaee6a4cc63b05285e280523c8ea40dc31e03cc12a40bc; all 15 retained wheel hashes match the result manifest. The installed SDK authority is byte-identical before/after (84481a10668d10a0c3408b6c26a5079854138df5dd1cb1afeb1926efafeeea77).
  • The runtime tuple is exact Server 3.9.2 index 8ffcdb2a..., amd64 child 813c9337..., source 5614274d...; consumer Python 3.12.16 index 935c3c5b..., child 0f086103....
  • The single callback test passes. Attempts 1 and 2 retain the same execution/workflow/run IDs and use distinct attempt IDs and task IDs, with attempt numbers 1 then 2.
  • Runtime, consumer, and network full IDs report absent after cleanup; both containers report exit 0 / OOM false, and the independent owner-label inventory is empty.

This PASS establishes only the published Python activity retry-identity acceptance represented by this exact run and artifact. The earlier dispatch NONPASS remains historical; no broader SDK, shared acceptance, release, or unrelated scenario is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The Docs Python activity-identity adoption is delivered: Docs543 final receipt. Exact reviewed head 235b6ffa3f347f323814c8bbf8442df8e79bc2a2 merged as 2693bdc733d3fc361efff069ea4fee5fa0133770 with full tree equality. All 11 head checks, all 12 main checks and protected Pages 43544711233 succeed. All 16 public Python/execution-guarantees pages across eight locales match the reviewed build, including identity/absence guidance, localized cross-links and the SDK-owned service example. The selected package versions and artifact data are unchanged. Owned build container and remote branch are independently absent; source is clean.

The Python guide and shared execution guarantees now adopt the shipped accessor and qualified 2.17.2/native3.9.2 ordinary retry observation. The SDK portal correction is independently read back with its corrected guide/helper anchor and exact source/wheel/audit/inventory identities. Local/session behavior retains its defined scope, unavailable identity remains None, and the ID supplies no claim authority or exactly-once external effect. General retains cross-binding reconciliation and shared closure. No new SDK package or runtime was needed for this Docs delivery.

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.

1 participant