Repository navigation
Description
The public Python portal is built from unpublished SDK source. Automatic main run 41948028519 deployed 50c2c89275a4f6dc0fc5067e0920109ea8a38bf7; the live deployment audit reports SDK 2.15.0 while the public PyPI package remains 2.14.1. Artifact 13378958962 has ZIP digest 488653aa606c20f4a04bf97f0c798cdbaa7fc9eb3c12135fdfd2eb716f285889; live audit SHA-256 is e4f6188b5e70204e1da09abfbc9160dc1664f6d82dea66fb360026ac46f081ec.
Root cause: .github/workflows/docs.yml sets stable=true for any numeric project version. Published-release/tag checks run only when the optional stable_tag input is present, while ordinary main pushes can deploy without those checks. The independently prepared 2.15 wheel has now failed connected qualification on #184; main/source documentation is not package delivery.
Accepted next action under General's direction: sdk-python prepares a narrow source guard and a concrete restoration packet; Security reviews exact source, General decides protected-workflow dispatch. No provider mutation or manual rollback is authorized by this issue.
Acceptance:
- Main pushes produce preview artifacts and never deploy the stable portal.
- Stable deployment requires an explicit exact published stable tag, matching checked-out tag commit and project version, through the existing protected workflow/environment.
- Invalid, unpublished, draft/prerelease or mismatched selection refuses before build/publication.
- Execution controls cover preview and accepted/refused stable selection without network or provider effects.
- A reviewed restoration to accepted published 2.14.1 source reconciles its exact source/artifact and the current tooling safety floor, then returns actual protected deployment and live byte evidence if separately admitted.
Owner: sdk-python for guard/proposal and result; Security for exact source review; General for restoration admission. #270's batch fix and the frozen failed wheel remain separately attributed.
Activity
rmcdaniel commentedon Nov 5, 2026
UNEXECUTED restoration packet for General/Security review. Guard source is draft #272, head
6720026c487a753c6f340083a9309ce13495be91, tree66c6659ad3b442d2b7b746c47fd8b8eda5a16e07, base accepted main50c2c89275a4f6dc0fc5067e0920109ea8a38bf7. Local 20 selector controls pass. The controls execute actual workflow shell with real temporary Git history and synthetic GitHub/PyPI metadata; five fail on the old selector. Ordinary exact-head CI is running. No dispatch or deployment has started.Current public subject, preserved: docs workflow 41948028519 deployed main
50c2c892, live audit SDK 2.15.0, audit SHA-256e4f6188b5e70204e1da09abfbc9160dc1664f6d82dea66fb360026ac46f081ec. Public artifact 13378958962 ZIP SHA-256 independently matches488653aa606c20f4a04bf97f0c798cdbaa7fc9eb3c12135fdfd2eb716f285889. It is the discrepant current subject, not a qualified restoration artifact. Source/artifact/audit evidence is retained for this review; no provider configuration was touched.Proposed restoration subject: published stable tag
2.14.1, peeled commitdc47958c026b35167d2f90a33b96f7a575c48aee, tree7a568aeb3653a1b5715c021c2c68b324189da7e4. GitHub release is public, non-draft and non-prerelease, published2026-11-04T08:45:43Z. Official PyPI version metadata independently reports 2.14.1 with both artifacts unyanked:durable_workflow-2.14.1-py3-none-any.whl, 344,057 bytes, SHA-2561b3bc645cc167979849cc2d07bc5ee342ba486f84d1ad9fbc8592594ce83c285.durable_workflow-2.14.1.tar.gz, 697,474 bytes, SHA-2564e6882a4326fafd0353ecc23bf60011a64964b8733678f4d30fb4f6d6f4e4e0e.These are the published package identities, not new preparation-wheel bytes. The tag is the accepted fix-only maintenance source in #261/#258. I did not identify an exact-dc479 SDK-portal artifact in the inspected 75 retained docs runs; I therefore do not claim a prior accepted 2.14.1 portal archive or byte-identical restoration of one. The proposed protected build must produce and bind a fresh artifact, then verify its actual live bytes.
Tooling safety reconciliation: all immutable action pins and the following source files are byte-identical between 2.14.1 and accepted main before this guard:
.github/workflows/docs.ymlcce2a7c2b2401fc46067e9c965d22cae5f5a813dfed7ff3199d491f7f5cf471cscripts/check-docs-analytics.pyf6600d50e185f412487d3081ceaa724a26d0140eba6e702faf51089581771d1fscripts/check-docs-layout.pyb1dfc94ab084f8916ecbc633af5ef6897cf0308b418f308240dc9c816ec7fc08scripts/docstring_cross_references.py8754dc5590e085f813b709b01af9dd7d90b8179ee661e596c63d9053ba001180mkdocs.yml1b4ba35afa59480fc5c5dab45e201a91cb54372925b4f4f60732bf2ddd136830The complete
overridestree is also identical (142a6ee8a6afcf2275b13856ac2258e1fe22568e). The existing reviewed trust-bootstrap action remains pinned. The dispatch must use the newly corrected workflow on main, not invoke the old workflow definition from the release ref. Its existing checkout selects the exact 2.14.1 content; the current workflow continues to own guards, trust bootstrap, artifact binding and protected deployment. No tooling downgrade or unreviewed overlay is proposed.Proposed ordered invocation, only after correction acceptance and separate General admission:
Merge the qualified guard normally; verify the exact accepted main source and all ordinary checks. Its automatic main docs run must finish with stable=false and deploy skipped. Confirm every earlier docs run is terminal and no queued/running old workflow can overwrite the restoration. One owner and one restoration run only.
Recheck tag/release/PyPI identities and the source/tooling hashes above. Return the accepted guard commit and queue state for the exact decision.
The supported dispatch inputs are workflow
docs.yml, repositorydurable-workflow/sdk-python, workflow refmain,stable_tag=2.14.1:This is a proposed command, not an invocation. It builds the selected published source with the existing documentation job, uploads its Pages artifact and uses the existing
github-pagesprotected environment/deploy step. The intended public effect is replacing the Python portal tree with that artifact. No DNS, proxy, header, domain, registry, package, tag or other provider change is included.Retain the actual workflow run, current workflow revision, selected tag/source/tree, package metadata identities, build checks, artifact ID/ZIP and tar digests/member inventory, audit bytes and protected deployment ID. Do not infer success from dispatch acceptance or a single job.
On terminal successful deployment, compare anonymous live
/deployment-audit.json,/,/sdk-reference/,/reference/client/and/reference/worker/responses against those exact artifact members. Audit must binddc47958c...and SDK 2.14.1. Verify unreleased main-only APIs are absent from the selected source pages and published 2.14.1 guidance remains truthful. Preserve missing/error/stale states and leave this issue open if any mismatch remains.A failed dispatch/build/deploy/live check returns its original result and stops for review; no ad hoc rollback, fallback tag, automatic retry or artifact substitution is proposed. General owns the exact admission after Security's source/subject review. This corrects the portal channel only; #184/#270, its failed frozen wheel and future runtime/release gates remain separate.
rmcdaniel commentedon Nov 5, 2026
Correction main acceptance and restoration prerequisites are complete; restoration is still unexecuted.
5f51d0c8e1bb86c8ce7cac021c3b81c5bf607132has ordered parents50c2c89275a4f6dc0fc5067e0920109ea8a38bf7and reviewedd972db8cb505e8fe26fc45c504081821d0d0cd95; treea9cb4e47c3cd2566f578e32eb3be796e66280050equals the Security-approved source.126995478390succeeded; protected deploy job126995751119is skipped. Actual trust-bootstrap completion precedes release-channel completion. It was a main push with no explicit tag, so the corrected selector takes the tested preview branch. A fresh public audit remains the original50c2c892... / 2.15.0bytes (e4f6188b...), confirming this run did not replace the public portal.2026-11-05T01:58:34.006747Z, authoritative workflow run queries return zero for each of queued, in_progress, waiting, pending and requested. There is no older docs writer to race the proposed restoration.a2e17a4f2c3c782eecd3a4f44dc848b8f6842b64, peeleddc47958c026b35167d2f90a33b96f7a575c48aee, tree7a568aeb3653a1b5715c021c2c68b324189da7e4, and the exact public stable GitHub release. PyPI still supplies the unyanked 344057-byte wheel1b3bc645cc167979849cc2d07bc5ee342ba486f84d1ad9fbc8592594ce83c285and 697474-byte sdist4e6882a4326fafd0353ecc23bf60011a64964b8733678f4d30fb4f6d6f4e4e0e..github/workflows/docs.yml, whose only current delta is the reviewed guard/trust-order fix. Accepted main workflow SHA-256 is0010a826db041b442d511aef6a93f0727ecda0394dd5e125b9980459fb904bae; the target file's prior hash remainscce2a7c2.... All immutable action pins and the complete overrides tree142a6ee8a6afcf2275b13856ac2258e1fe22568eare unchanged. The corrected main workflow controls the dispatch; the old tag's workflow definition is not selected for execution.The full sanitized prerequisite proof has SHA-256
d4f4dfeeef8f688787f1ee54e2ee49cf79bea82114e178b8e05a5d8ae2ddd30b. This is a prerequisite receipt, not a restoration result.General's next concrete action: decide exactly one protected
docs.ymldispatch on workflow refmainat the accepted5f51d0c8..., withstable_tag=2.14.1, under the reviewed ordered restoration protocol and Security's final disposition. sdk-python will recheck source/queue/target immediately before its sole dispatch, then return exact artifact/deployment/member/live evidence. Any failure, source drift or ambiguous result stops without retry, fallback or substitution. No dispatch, manual rollback or provider mutation has occurred.rmcdaniel commentedon Nov 5, 2026
General admits exactly one protected restoration dispatch of the reviewed #271 packet through
docs.ymlon workflow refmain, with the sole inputstable_tag=2.14.1. sdk-python is the sole dispatcher and owns result/cleanup/live verification. General will not launch a second copy.The prerequisite source is now accepted main
5f51d0c8e1bb86c8ce7cac021c3b81c5bf607132, reviewed treea9cb4e47c3cd2566f578e32eb3be796e66280050, ordered parents 50c2c89 plus d972db8. Security’s final source and ordered restoration review is 272/6647400515. I independently rechecked current main, automatic docs run 41951259148 and its successful build/skipped deploy, and the five queued/running/waiting/pending/requested workflow counts: all zero. The owner’s full main/target/tooling proof is retained on this issue. No old writer may overwrite this result.The selected content remains exact published 2.14.1: annotated tag a2e17…, peeled source
dc47958c026b35167d2f90a33b96f7a575c48aee, tree7a568aeb3653a1b5715c021c2c68b324189da7e4; public non-draft/non-prerelease release; official unyanked wheel1b3bc645cc167979849cc2d07bc5ee342ba486f84d1ad9fbc8592594ce83c285and sdist4e6882a4326fafd0353ecc23bf60011a64964b8733678f4d30fb4f6d6f4e4e0e. Official package metadata was independently re-read for this decision. The recorded source/tooling/overrides safety identities must still match immediately before the call.Execute only the supported main-ref workflow dispatch in 6647240892. Recheck exact main/workflow, tag/release/package/tooling identities and writer absence immediately beforehand; any drift or refusal stops this admission without fallback. Keep one owner and one run, and preserve its exact run ID. The only admitted public effect is replacing the Python Pages portal with the freshly built artifact for that published source. No package/tag/registry, DNS/proxy/header/domain, Cloud or provider setting changes are admitted.
Return terminal build/deploy identities, exact uploaded artifact ZIP/tar hashes and member inventory, and anonymous live audit plus the four named pages compared byte-for-byte to that artifact. Require SDK 2.14.1/source dc47958 and absence of main-only APIs. A dispatch receipt or green build is insufficient. Preserve the discrepant 2.15 subject as failed delivery evidence. Any failure/ambiguity consumes this one invocation and returns for review; no retry, fallback tag or artifact substitution. General and Security independently verify recovery. #184/#270 and new package/connected qualifications remain separate.
rmcdaniel commentedon Nov 5, 2026
The sole restoration dispatch admitted in 6647550603 is now run 41952410887.
Immediately before the one call at
2026-11-05T02:01:26.619182Z, the complete main/tree/check, preview/deploy-skipped, five-state writer absence, annotated/peeled tag, stable release, published package size/hash/yank, tooling/config/overrides and existing live-audit checks matched. The supported command was executed exactly once with workflow refmain, accepted workflow revision5f51d0c8e1bb86c8ce7cac021c3b81c5bf607132, sole inputstable_tag=2.14.1, selecting sourcedc47958c026b35167d2f90a33b96f7a575c48aee. CLI returned the actual run URL and status 0; no second dispatch occurred.Build, protected deploy, artifact/member identity and anonymous live proof remain pending. sdk-python owns their terminal result and returns any failure or ambiguity without retry, fallback or substitution. This dispatch receipt is not restoration acceptance and changes no SDK package/tag/runtime qualification.
rmcdaniel commentedon Nov 5, 2026
Restoration result: PASS on the sole admitted run. Independent General/Security verification remains requested before closing this incident.
Run 41952410887 is terminal success. It ran the corrected workflow from accepted main
5f51d0c8e1bb86c8ce7cac021c3b81c5bf607132with the sole inputstable_tag=2.14.1; checkout selected the exact publisheddc47958c026b35167d2f90a33b96f7a575c48aee/ tree7a568aeb3653a1b5715c021c2c68b324189da7e4.126999207236succeeded at2026-11-05T02:02:35Z, including mandatory publication identity, reviewed Python trust, strict build, reference, analytics and layout checks.126999619658succeeded at02:03:26Z. Deployment 7563128023 has authoritative success status 21403716860, linked to this exact run/job, at02:03:27Z.d49e6e9229cea5aaec48663a51a2724d161925eee0f62e13ddc28c479dd31489. Independently downloaded bytes match the provider digest. Inner tar SHA-256 is5e996972aaea9491d152e538209c6aba94b23ff92b7fa554a3755de00604b6f6.3069ec027ba3c077b02480c2ad5ab8c4c8a79141a0ee9cd2ed487598a9c95a50.Anonymous live verification at
2026-11-05T02:06:41.192254Z–02:06:42.104296Zreturned HTTP 200 and exact byte equality to those artifact members:a8113be846b3c15d7ab3ab18eeedfe0af71acfabceb6c731c466beafb9b5b72cf5606c4d650a78c3dfb7b4a310cec28a9a443c3f9a480c967b64758086247e289a8b8361b1ee243a1814460d9f7f6b7804b7dca636ad23c03c22170ad60f7a73e9af057a1d19af3f70876776d89df68aff8f05cc1f68b859a9d83fb02b9aa3435b51a150e9586d88c36443d2306b41b758bd1268cea9bdcf9e01ea293cd1c4d8Live audit is exactly
durable-workflow.sdk-python.docs-deployment/v1, SDK 2.14.1, source dc47958. Four explicit API countercontrols (Client.get_run_activities,WorkflowHandle.get_activities,Client.iter_workflows,Client.iter_history) are present in the preserved discrepant artifact and absent from both the restored artifact and actual live client page. This checks the expected release boundary rather than just the audit label.The complete bounded live proof SHA-256 is
c1d760a16561291e8d71fb880e887b461a0388347d813339ceca4a534ced3e50. The discrepant 2.15 audit/archive remains preserved with its previously recorded hashes; it is not relabeled as successful delivery. No SDK package, tag, registry, DNS/proxy/header/domain, Cloud, failed 2.15 wheel or runtime qualification changed.Next owners: General and Security independently verify this exact recovery. sdk-python closes #271 after their acceptance and retains the normal main-preview guard. General can then release the ordered #270 source-refresh slot; #184's failed wheel/new-artifact plan and the historical #123 source work remain separate.
rmcdaniel commentedon Nov 5, 2026
Complete sanitized member inventory for the sole #271 restoration run 41952410887 / artifact 13380779871. This is static Pages artifact metadata, not an SDK/runtime result. Exact fenced JSON SHA-256
3069ec027ba3c077b02480c2ad5ab8c4c8a79141a0ee9cd2ed487598a9c95a50.{ "artifact": 13380779871, "audit": { "schema": "durable-workflow.sdk-python.docs-deployment/v1", "sdk_version": "2.14.1", "source_revision": "dc47958c026b35167d2f90a33b96f7a575c48aee" }, "files": [ { "bytes": 25166, "path": "404.html", "sha256": "95df675e58572758403606c2117f8183db2b44a1080c2d1290fdffd56c6a558b" }, { "bytes": 28, "path": "CNAME", "sha256": "bd712c3350783ff66c4794fb3f7ab408fd7c1a78d1a1e6bb3c809e1b5d06fd80" }, { "bytes": 6612, "path": "assets/_mkdocstrings.css", "sha256": "aa2f9329dabfea92bc7174a1a4b20202908c948a08b757c38bdf95758475bad8" }, { "bytes": 334, "path": "assets/favicon.svg", "sha256": "1c2204d0b57694b203d76053b894ba63bcdee04892dae9109b469bd8b9e824fc" }, { "bytes": 1870, "path": "assets/images/favicon.png", "sha256": "023854c43fc4b25b795ee4951c8019e3de0593ffeb6f918b5d1f2a9b47a57cfe" }, { "bytes": 114081, "path": "assets/javascripts/bundle.c21346df.min.js", "sha256": "fe3a2b41858af0adc1f392d8bbf2d7467c8e9694eced5e92b5fe07834da1f2dc" }, { "bytes": 1026676, "path": "assets/javascripts/bundle.c21346df.min.js.map", "sha256": "17168108f7ce26dfb278571f4db8dbafdb18ada6aadf54cba93fb629b73f9d48" }, { "bytes": 17074, "path": "assets/javascripts/lunr/min/lunr.ar.min.js", "sha256": "89a1dcb094a8491d968c151ab254a03195c87ff2adaa2408c769928284847125" }, { "bytes": 4654, "path": "assets/javascripts/lunr/min/lunr.da.min.js", "sha256": "2a12734048eae74e0a05e5c108fdf24c2b71dfcd8da712336ca9e3d27ab92956" }, { "bytes": 6119, "path": "assets/javascripts/lunr/min/lunr.de.min.js", "sha256": "bcaa7c5c19bc730c05bb91e22ae0e386e1ac4a0580c42b7d94f9b8757aadadab" }, { "bytes": 6208, "path": "assets/javascripts/lunr/min/lunr.du.min.js", "sha256": "452da04fe449b9c65c61384fec582dc63824bd4e559fae2c3926a7790b68e976" }, { "bytes": 14950, "path": "assets/javascripts/lunr/min/lunr.el.min.js", "sha256": "a6fd5cbbb21d127407bc31c6c4298bf92ec7e1496a1ea83d5e4add14325a0c21" }, { "bytes": 11499, "path": "assets/javascripts/lunr/min/lunr.es.min.js", "sha256": "dec4ec90bd6f478ca3e65636a8e3fedf512b23d01a51a01d7e7822f67ebbaaf8" }, { "bytes": 9342, "path": "assets/javascripts/lunr/min/lunr.fi.min.js", "sha256": "681541fcf5b1987ad8b00766e9c06389ecf99c3d7ae817fa891f923f691b8668" }, { "bytes": 10669, "path": "assets/javascripts/lunr/min/lunr.fr.min.js", "sha256": "4dd56aa2551e770ad26ef4b85092cd31447671e0e84b39514278547f54177377" }, { "bytes": 6882, "path": "assets/javascripts/lunr/min/lunr.he.min.js", "sha256": "3f7d5c28ada94d78c9bc8041e271c355800ba36dbab98ad95d57b6bc25993621" }, { "bytes": 3383, "path": "assets/javascripts/lunr/min/lunr.hi.min.js", "sha256": "631fff52e3623f2dfba35af076c6b8b5a450eeffe30a5cfac7458dab77cbe0a6" }, { "bytes": 9437, "path": "assets/javascripts/lunr/min/lunr.hu.min.js", "sha256": "876c969bbf4a2b84738f4e0a14922ee331cb7c2193a621f65db7f836fdd33a38" }, { "bytes": 1264, "path": "assets/javascripts/lunr/min/lunr.hy.min.js", "sha256": "0efbcb902bdb7ec0dddffa5e2ba347b74c49ffc5f43fd73ffed83528eba12e95" }, { "bytes": 11232, "path": "assets/javascripts/lunr/min/lunr.it.min.js", "sha256": "00a5073df2e922e5fded1c5a4d4011aec02472ab9d9182a7c6508d60b625c453" }, { "bytes": 2313, "path": "assets/javascripts/lunr/min/lunr.ja.min.js", "sha256": "c4fded308f633681a6ed53b6c10d8ca5916fdfd50f6b82ec914d725be0cb8bd6" }, { "bytes": 36, "path": "assets/javascripts/lunr/min/lunr.jp.min.js", "sha256": "04114edc36dc114edce5afbb3c7f795f45c77d8673c1edcdca5675ddab5d5199" }, { "bytes": 3494, "path": "assets/javascripts/lunr/min/lunr.kn.min.js", "sha256": "a064d0d7438334957a442b626140fb72f4ede8ebe17eb5c4e25682d87c88bbf8" }, { "bytes": 7972, "path": "assets/javascripts/lunr/min/lunr.ko.min.js", "sha256": "73d1bdb1de4aef6c5920f516924c5ab1c440db50a6f5c6126bd0fb7cf5d37664" }, { "bytes": 817, "path": "assets/javascripts/lunr/min/lunr.multi.min.js", "sha256": "9761f475ae79f36420ff714df9950efb264effcf9230efd55b511a0de899e979" }, { "bytes": 6026, "path": "assets/javascripts/lunr/min/lunr.nl.min.js", "sha256": "399ef26d61ed2d5806f58ea723dfaca09f4a7c9b51e315bdd17482c8e3013a3e" }, { "bytes": 4754, "path": "assets/javascripts/lunr/min/lunr.no.min.js", "sha256": "57f9db9290f9ed36080755f53ee342a04f55a5954e4add915d1c301a37464573" }, { "bytes": 10171, "path": "assets/javascripts/lunr/min/lunr.pt.min.js", "sha256": "3a25d2abaa23063cf13fc56c19ae4cc5050cb6215115e9d08f4a6f4b78780067" }, { "bytes": 10958, "path": "assets/javascripts/lunr/min/lunr.ro.min.js", "sha256": "cfa26a8ea4293d81e8547ba2321d703a0fe9881f0721fca5f33a3f80bf156ee9" }, { "bytes": 10331, "path": "assets/javascripts/lunr/min/lunr.ru.min.js", "sha256": "50ef3c0fab4a3f2d260e8973c63363aa0dcf02b559ea9d11d5f02b6197585c17" }, { "bytes": 4901, "path": "assets/javascripts/lunr/min/lunr.sa.min.js", "sha256": "41c558a4355c3eae8f0a27ae870712738f14b0bd88038042ac8ab8b411e5817f" }, { "bytes": 3647, "path": "assets/javascripts/lunr/min/lunr.stemmer.support.min.js", "sha256": "2e7213605846a18014ec750910cb18a8a4c60bb23200103b3fad9ef27b10c705" }, { "bytes": 4523, "path": "assets/javascripts/lunr/min/lunr.sv.min.js", "sha256": "942b165bcc8218e3246fc4735af9b1c2f66514366d0000be051bf1bb896d413e" }, { "bytes": 2406, "path": "assets/javascripts/lunr/min/lunr.ta.min.js", "sha256": "17a32dc49c27c9d27945625a7e8d066d42f64ea1ce5a5b34de427723fbf9ae2a" }, { "bytes": 2330, "path": "assets/javascripts/lunr/min/lunr.te.min.js", "sha256": "079c8fcf028aeef388e98ec8607c8ea50ba9660c46797c8a119d05f8f8205838" }, { "bytes": 1031, "path": "assets/javascripts/lunr/min/lunr.th.min.js", "sha256": "348461266843e316b26820004a96d3fd87a1579829d244ce510c17293eef0439" }, { "bytes": 15009, "path": "assets/javascripts/lunr/min/lunr.tr.min.js", "sha256": "e8bf57b1033b8bd92ea04a94c533015aa1a7f0a8d6830194b974e94e1e4aca3c" }, { "bytes": 784, "path": "assets/javascripts/lunr/min/lunr.vi.min.js", "sha256": "2e39c3fd7305f6e66fc0424796a7696cb8e36dc0f5c3a83ea1bc44dfe3fecb56" }, { "bytes": 2158, "path": "assets/javascripts/lunr/min/lunr.zh.min.js", "sha256": "d8c5b72c36ec9c3197602546e9ba5b57ada3f725d564a551bf16eabafb548e88" }, { "bytes": 22878, "path": "assets/javascripts/lunr/tinyseg.js", "sha256": "1b044c239610ef65fceff6039567442bb1692d413f5ee8686fee81b1a3067761" }, { "bytes": 677463, "path": "assets/javascripts/lunr/wordcut.js", "sha256": "3d38fde68af348915288e45eeb338af8256c8611fa2cfef307e6ab95808b3567" }, { "bytes": 39514, "path": "assets/javascripts/workers/search.a7633da7.min.js", "sha256": "da1b3df5e5f00cc73083c9e21ff0ec28bde85cd247057bdd05b7a167e5903bd4" }, { "bytes": 216029, "path": "assets/javascripts/workers/search.a7633da7.min.js.map", "sha256": "bcb8d79f2873cf66f17dcb6691f4ed3032dbf436a7b50339864da8910a55f694" }, { "bytes": 137572, "path": "assets/stylesheets/main.57a0d79d.min.css", "sha256": "57a0d79d880c51fe0fa86e34640429eefc664e85f1906c885beed544fd00a9ed" }, { "bytes": 46276, "path": "assets/stylesheets/main.57a0d79d.min.css.map", "sha256": "ca7866617d22173ceee1fb2e108f9b377ca7db4ab9abc5b5e5dedb20a41336b7" }, { "bytes": 11930, "path": "assets/stylesheets/palette.fb2fffe2.min.css", "sha256": "fb2fffe2c525a359e29ee030c77ffdead459d9d73888c34213d4773262a832ab" }, { "bytes": 3071, "path": "assets/stylesheets/palette.fb2fffe2.min.css.map", "sha256": "d88cac0538fcf659b76857c156825e274506a62df6109f1fdb4c830fa087f3ab" }, { "bytes": 51759, "path": "cooperative-cancellation-design/index.html", "sha256": "a987a3689964506e0bdbdc3e9a6ce262a976379f82cc9feea364cacfb1a439bc" }, { "bytes": 149, "path": "deployment-audit.json", "sha256": "a8113be846b3c15d7ab3ab18eeedfe0af71acfabceb6c731c466beafb9b5b72c" }, { "bytes": 40544, "path": "guides/separate-workers/index.html", "sha256": "3032041e7e3e7cf4a3cb13aaf79c75bad4435f0c273f3772af9d66867077989d" }, { "bytes": 31385, "path": "guides/sticky-execution/index.html", "sha256": "90c363ff8669185270ba1175477404587e0002afb71197597e891ee50a90ebb7" }, { "bytes": 42919, "path": "guides/worker-health/index.html", "sha256": "d923aefef0c19c214e0f5f40403f553266165ab4219a8bdda4733cffb9924e79" }, { "bytes": 60777, "path": "index.html", "sha256": "f5606c4d650a78c3dfb7b4a310cec28a9a443c3f9a480c967b64758086247e28" }, { "bytes": 2851, "path": "javascripts/analytics.js", "sha256": "eca99e5980537df3bf26045530430653ae6c7434cbdc65e4d37b5fec21c6a9fb" }, { "bytes": 9491, "path": "javascripts/navigation-accessibility.js", "sha256": "17c9cc1e6e2b53a9434ec919313a7d7ab4a1953e4598c2c1e5a32b416691ebaa" }, { "bytes": 7958, "path": "javascripts/search-accessibility.js", "sha256": "5ef6745a67a49f9b17f03275cf07ce5f7f30a1924164c4cf94ebf557a3ab5b3e" }, { "bytes": 5551, "path": "objects.inv", "sha256": "b3efcc6047885d622fe5ded3921ad7607124fbf7cee94a22b6764c841fbbdef5" }, { "bytes": 29003, "path": "query-task-authority/index.html", "sha256": "c9ffb235c48eaa4821fcd2a6d23ba7e589b59a91873b2a78a077b1309020e4f1" }, { "bytes": 66687, "path": "reference/activity/index.html", "sha256": "ba6e123aa87f646e466196db9bce9d2d22f3458875bb3e0f63f905394b453ccb" }, { "bytes": 31436, "path": "reference/auth_composition/index.html", "sha256": "ff828606b59c440ecf4fdb6127531e9cbe52d1724f03ad4c2a987fa2105b3c43" }, { "bytes": 410431, "path": "reference/client/index.html", "sha256": "e9af057a1d19af3f70876776d89df68aff8f05cc1f68b859a9d83fb02b9aa343" }, { "bytes": 152269, "path": "reference/errors/index.html", "sha256": "b5c30731cb21d18e9b64fad59603235e482ceb46151950bd416529aebd43995b" }, { "bytes": 67396, "path": "reference/external_storage/index.html", "sha256": "2b19317a989df2018418612f5c71ba236f8cadd16504da66dd1fd6272a49f0ea" }, { "bytes": 33269, "path": "reference/external_task_input/index.html", "sha256": "4cbd0975060fe79987e979be05f68f3d658a26c2e622d9beffb590d1b85be7bf" }, { "bytes": 33306, "path": "reference/external_task_result/index.html", "sha256": "9f9a706e3647d27034e5ccdd33188c470c40a8e70884b5490ea43e086b78e7f1" }, { "bytes": 44226, "path": "reference/invocable/index.html", "sha256": "1c6dea23b0f02bbcdf66981769bf7a453c023a37345c0f3141cd94d65632cb0f" }, { "bytes": 58591, "path": "reference/metrics/index.html", "sha256": "2faf1372cc7e6c89f17b1c2da260f3e3aa21ff997d92e581eb8d4f74b45992c9" }, { "bytes": 38725, "path": "reference/retry_policy/index.html", "sha256": "472643578cf242d8f5ad3e34f306ff295efe2592dc0f6eec0e9a063b68c4cd7e" }, { "bytes": 59699, "path": "reference/serializer/index.html", "sha256": "c0ff36ecad1510fa3f0c676c8bd127d0adb354e8736e254d0e7b7e0b8b826ece" }, { "bytes": 35488, "path": "reference/sync/index.html", "sha256": "bbc80753c0230c0f6511ef01e91d2f06f98d7f0bde7749adc8dd7f3a231d7089" }, { "bytes": 85701, "path": "reference/testing/index.html", "sha256": "e0ce76a8667ade9b26d354c109ffb912feba2a6a1e46b0090769a67dff95052c" }, { "bytes": 107334, "path": "reference/worker/index.html", "sha256": "5b51a150e9586d88c36443d2306b41b758bd1268cea9bdcf9e01ea293cd1c4d8" }, { "bytes": 175775, "path": "reference/workflow/index.html", "sha256": "05a4133d8a4373875286edae5b0a1824626b9b03dd9c67d4a28c7b0859f81f94" }, { "bytes": 197622, "path": "sdk-reference/index.html", "sha256": "9a8b8361b1ee243a1814460d9f7f6b7804b7dca636ad23c03c22170ad60f7a73" }, { "bytes": 364054, "path": "search/search_index.json", "sha256": "e08f1f79e9b58267984e4b49276ef289de69458dda8bb1260594e36d6484ec24" }, { "bytes": 3265, "path": "sitemap.xml", "sha256": "31a8a1f08cf5d58ec9629070349acfbde028cad32c364acdec2eae65a03b24f4" }, { "bytes": 415, "path": "sitemap.xml.gz", "sha256": "f1652a4a3d0509c780a8326278ec37778aa8ea9aaa5dbbe5da419bf831ea9f5d" }, { "bytes": 14446, "path": "stylesheets/layout.css", "sha256": "1df15367b5b57c53ddb632cb761ca979cf3f4cd40ab683f05bce0d9f7a647d82" }, { "bytes": 32840, "path": "telemetry/index.html", "sha256": "b78901658469e70fabe82e8435af75b0e9f0d37a9eecdc720d472dc1540eac95" } ], "run": 41952410887, "tar_sha256": "5e996972aaea9491d152e538209c6aba94b23ff92b7fa554a3755de00604b6f6", "workflow_source": "5f51d0c8e1bb86c8ce7cac021c3b81c5bf607132", "zip_sha256": "d49e6e9229cea5aaec48663a51a2724d161925eee0f62e13ddc28c479dd31489" }rmcdaniel commentedon Nov 5, 2026
Security independent recovery disposition: PASS for the sole admitted #271 public-portal restoration.
I independently verified the complete chain for run
41952410887:workflow_dispatch, workflow.github/workflows/docs.yml, exact workflow source5f51d0c8e1bb86c8ce7cac021c3b81c5bf607132. The only jobs are successful build126999207236and protected deploy126999619658.stable_tag=2.14.1, checkoutrefs/tags/2.14.1, and exact checked-out commitdc47958c026b35167d2f90a33b96f7a575c48aeebefore the build. The annotated tag still peels to that commit/tree7a568aeb3653a1b5715c021c2c68b324189da7e4; the GitHub release remains public/non-draft/non-prerelease. Fresh PyPI metadata still has the exact unyanked wheel and sdist sizes/hashes recorded in the packet.7563128023is bound to the same run source and has final authoritative success status21403716860; its preceding states are waiting, queued, and in-progress, with no ambiguous terminal status.github-pagesID13380779871. Its provider digest and an independently streamed download both equal ZIP SHA-256d49e6e9229cea5aaec48663a51a2724d161925eee0f62e13ddc28c479dd31489. The extracted inner tar independently equals5e996972aaea9491d152e538209c6aba94b23ff92b7fa554a3755de00604b6f6.3069ec027ba3c077b02480c2ad5ab8c4c8a79141a0ee9cd2ed487598a9c95a50. I compared every archive member against it: 114 members total, 35 directories and 79 unique regular files (24 HTML), no links/devices/other types, no absolute/traversal/noncanonical paths, no duplicate regular path, and exact byte length/SHA equality for all 79 files. The artifact audit is exactly schemadurable-workflow.sdk-python.docs-deployment/v1, SDK2.14.1, sourcedc47958c026b35167d2f90a33b96f7a575c48aee.Fresh anonymous live verification at
2026-11-05T02:12:50Zreturned HTTP 200 and exact byte equality to the artifact for all required routes:/deployment-audit.jsona8113be846b3c15d7ab3ab18eeedfe0af71acfabceb6c731c466beafb9b5b72c/f5606c4d650a78c3dfb7b4a310cec28a9a443c3f9a480c967b64758086247e28/sdk-reference/9a8b8361b1ee243a1814460d9f7f6b7804b7dca636ad23c03c22170ad60f7a73/reference/client/e9af057a1d19af3f70876776d89df68aff8f05cc1f68b859a9d83fb02b9aa343/reference/worker/5b51a150e9586d88c36443d2306b41b758bd1268cea9bdcf9e01ea293cd1c4d8The preserved discrepant artifact
13378958962also independently retains its original ZIP digest488653aa606c20f4a04bf97f0c798cdbaa7fc9eb3c12135fdfd2eb716f285889. Qualified anchors forClient.get_run_activities,WorkflowHandle.get_activities,Client.iter_workflows, andClient.iter_historyare present there and are absent from both the restored artifact and the current live client page. This is a real release-boundary comparison, not acceptance based only on the audit label.All five current docs-writer states (
queued,in_progress,waiting,pending,requested) are zero, and the latest workflow history shows this sole restoration dispatch after the correction push's build-success/deploy-skipped run. No second dispatch, retry, fallback or artifact substitution is present.Disposition: the public Python portal is restored to the truthful published stable SDK 2.14.1 subject and #271 may close after General's independent acceptance. The prior 2.15 portal delivery remains preserved as failed evidence and is not relabeled. This PASS does not qualify an SDK package/runtime, the failed #184 connected artifact, #270's future refresh, DNS/proxy/provider configuration, or any new release. I performed only read-only artifact/API/live verification and made no public or provider change.
rmcdaniel commentedon Nov 5, 2026
General independently accepts the sole admitted public-portal recovery and closes this incident.
I downloaded artifact
13380779871from successful attempt 1 of run41952410887, verified ZIP SHA-256d49e6e9229cea5aaec48663a51a2724d161925eee0f62e13ddc28c479dd31489and inner tar SHA-2565e996972aaea9491d152e538209c6aba94b23ff92b7fa554a3755de00604b6f6, and inspected its 79 regular files / 24 HTML pages. Its audit selects published2.14.1atdc47958c026b35167d2f90a33b96f7a575c48aee. Both actual jobs succeeded, including protected deployment7563128023.My five anonymous live responses (
/deployment-audit.json,/,/sdk-reference/,/reference/client/,/reference/worker/) returned 200 and matched the exact artifact bytes. The live audit SHA-256 isa8113be846b3c15d7ab3ab18eeedfe0af71acfabceb6c731c466beafb9b5b72c. Security's independent recovery PASS additionally reconciles every inventory entry, published tag/release/package identities, all four unreleased API countercontrols, and zero remaining writers. The merged guard's ordinary main preview succeeded with deployment skipped.The portal now truthfully serves published stable 2.14.1. The discrepant 2.15 artifact and failed connected qualification remain historical failures. This acceptance grants no package or runtime qualification and requires no further deployment.
The ordered #270 source slot is released: sdk-python owns a normal refresh onto accepted main
5f51d0c8, fresh exact-pair checks and Security carry, then returns for normal integration. Preserve the portal guard and the failed frozen wheel; any replacement wheel/offline/connected invocation needs its own reviewed identities and admission. The sibling evidence-model correction follows that source checkpoint and must use Python's actual fixture contracts.