diff --git a/docs/validation/publisher-admission-031-20261002/CLEANUP.rst b/docs/validation/publisher-admission-031-20261002/CLEANUP.rst new file mode 100644 index 0000000..8f1f09d --- /dev/null +++ b/docs/validation/publisher-admission-031-20261002/CLEANUP.rst @@ -0,0 +1,43 @@ +Owned disposable artifact closure +================================= + +Owner-authorised closure after publication and actual-byte proof archival. +Status: COMPLETE after docs-only PR22 became visible. Exact rm exited0; +all four targets were subsequently checked absent. No worktree was removed. + +Exact completed synthetic-test targets below +/home/ts/wt/polystore-publisher-admission-031-20261002/docs/validation/publisher-admission-031-20261002/: + +* source-test-temp:466944 allocated bytes. +* admission-test-temp:20480 allocated bytes. +* qualified-test-temp:483328 allocated bytes. + +Exact single public-wheel verification scratch: +/home/ts/.cache/agent-scratch/polystore-031-byte-proof-20261002.t9WrHD: +163840 allocated bytes. + +Total removed allocated bytes1134592 (1.08MiB); this is the du measured amount, +not a claim about system-wide df movement. Targets are exact real directories, +not worktrees, environments, Git backing stores or scientific result roots. +All selected source-test runs completed PASS; their XML/command/resource +evidence is outside these directories. Contents are reconstructable synthetic +unit fixtures, two local editable test wheels and one fetched public wheel. +The published wheel bytes passed the independently archived hash/length check. + +No tracked files, .git directories, .pth files or alternates were found inside +the targets. Pytest current symlinks point inside the same disposable roots; +removal does not follow symlinks. Process inspection found only the inspection +shell, not active source tests. Recursive lsof found no open files in any target. + +Preserved: all source, worktree/Git/branch metadata, both original publisher +logs (including lossless archived copies), raw metadata, test reports, +actual-byte proof, original native journal link, failed/uncertain external +inputs and every biological/scientific artifact. No other tree is in scope. + +Removed synthetic fixtures are reproducible from the unchanged tests; public +wheel bytes remain available from the recorded release URL and digest. These +disposable directories were deleted, not moved to trash. Both preserved gzip +log archives were rehashed afterwards: original failed job +542d75ef00bcd8677526131a1afe195cea6fa63edca7eca5aa8e0b1b4e4b703c, +original successful job +cd1723ac96587309e23dec9144476c0219ae2b2124b0e3c084fe701a8fedfa49. diff --git a/docs/validation/publisher-admission-031-20261002/PUBLIC-WHEEL-BYTE-PROOF.txt b/docs/validation/publisher-admission-031-20261002/PUBLIC-WHEEL-BYTE-PROOF.txt new file mode 100644 index 0000000..e923d6a --- /dev/null +++ b/docs/validation/publisher-admission-031-20261002/PUBLIC-WHEEL-BYTE-PROOF.txt @@ -0,0 +1,37 @@ +PUBLIC_WHEEL_ACTUAL_BYTE_VERIFICATION + +Artifact: polystore-0.3.1-py3-none-any.whl +Expected bytes: 157342 +Expected SHA256: d1c81414f9b5ec1373a68a41bf704ec76c4b1f60a1ea0f00bb031bc8ae264e50 + +Retained lookup: no exact public wheel found by filename under /home/ts/wt, +/home/ts/.cache/agent-scratch, /home/ts/.cache/uv or /home/ts/.cache/pip. +The two local 0.editable wheels were rejected as different artifacts. +One public fetch only; no retry/resubmit, dependency fetch, installation or import. + +Fetch command: +systemd-run --user --scope --quiet -p MemoryMax=512M -p MemorySwapMax=0 -p CPUQuota=100% timeout 25s taskset -c 0 curl --fail --silent --show-error --proto '=https' --max-time 20 --max-filesize 157342 --output /home/ts/.cache/agent-scratch/polystore-031-byte-proof-20261002.t9WrHD/polystore-0.3.1-py3-none-any.whl --write-out 'http_status=%{http_code} downloaded_bytes=%{size_download} elapsed_seconds=%{time_total}\nurl=%{url_effective}\n' https://files.pythonhosted.org/packages/e1/95/19cbd9b8d4c514434471f10e143c65dfacb117088272528e52a5d6e1b664/polystore-0.3.1-py3-none-any.whl + +Original fetch response: +http_status=200 downloaded_bytes=157342 elapsed_seconds=0.086730 +url=https://files.pythonhosted.org/packages/e1/95/19cbd9b8d4c514434471f10e143c65dfacb117088272528e52a5d6e1b664/polystore-0.3.1-py3-none-any.whl + +The first orchestration wrapper failed after the fetch because it tried to +store an absent session_id. Original HTTP200/byte result was already retained; +subsequent verification read that same completed file. Fetch was NOT replayed. + +Independent local-byte command: +systemd-run --user --scope --quiet -p MemoryMax=512M -p MemorySwapMax=0 -p CPUQuota=100% timeout 10s taskset -c 0 /home/ts/wt/openhcs-generated-inputs-installed-parent-20261001/.venv/bin/python -B -c 'import hashlib, pathlib; p=pathlib.Path("/home/ts/.cache/agent-scratch/polystore-031-byte-proof-20261002.t9WrHD/polystore-0.3.1-py3-none-any.whl"); data=p.read_bytes(); digest=hashlib.sha256(data).hexdigest(); print("file="+str(p)); print("actual_bytes="+str(len(data))); print("actual_sha256="+digest); assert len(data)==157342; assert digest=="d1c81414f9b5ec1373a68a41bf704ec76c4b1f60a1ea0f00bb031bc8ae264e50"; print("ACTUAL_BYTE_CHECK=PASS")' + +Independent local-byte result: +file=/home/ts/.cache/agent-scratch/polystore-031-byte-proof-20261002.t9WrHD/polystore-0.3.1-py3-none-any.whl +actual_bytes=157342 +actual_sha256=d1c81414f9b5ec1373a68a41bf704ec76c4b1f60a1ea0f00bb031bc8ae264e50 +ACTUAL_BYTE_CHECK=PASS + +Exit code: 0 + +Bounds: one CPU; 512MiB cgroup; no swap; fetch max20s plus25s command wall; +max response157342B; hash read max10s. Hash computed from actual read_bytes(), +not a cached digest or metadata copy. The frozen scientific environment was +not changed; the readonly Python interpreter executed standard library only. diff --git a/docs/validation/publisher-admission-031-20261002/PUBLICATION.rst b/docs/validation/publisher-admission-031-20261002/PUBLICATION.rst new file mode 100644 index 0000000..08420bb --- /dev/null +++ b/docs/validation/publisher-admission-031-20261002/PUBLICATION.rst @@ -0,0 +1,99 @@ +Original 0.3.1 publication attempt +================================= + +Parent merged PR21 normally at f07da0971947e7b7938503961a7014909e560307. +The original release.py session36811 was resumed once by the parent and +completed. No release invocation, retag, resubmission, rerun, environment install +or scientific operation was performed by this source worker. + +Exact publisher handle: +https://github.com/OpenHCSDev/PolyStore/actions/runs/36963152726 +Job 110701039079, run_attempt 1, event push, created 2026-10-02T04:07:22Z. +The native gh run watch observes this handle only. + +Verified remote tag objects: + +* v0.3.1 annotated tag 57740a8200d27633da81a9e7a7320d5f4ebb1147, + peels to f07da0971947e7b7938503961a7014909e560307. +* Immutable failed v0.3.0 tag 282c13750e40eb96135f6c7072d2b0c540db4309, + still peels to 84f322e46871de5ed47e7fd20976ad03e533c1c4. + +Initial observation: run queued, no GitHub release and PyPI 0.3.1 JSON HTTP404. +This is pending publication, not failure or artifact acceptance. + +Terminal publication acceptance +------------------------------- + +The SAME attempt completed SUCCESS, job start 2026-10-02T04:18:47Z, +job completion 2026-10-02T04:20:22Z. Every build/publish step passed: +editable installation, full release-candidate tests, ordinary distribution build, +immutable declaration validation, twine check, trusted PyPI publication, GitHub +release and original post-job cleanup. No attempt was resubmitted or replayed. + +Actual hosted suite: 570 PASS, 5 SKIP, zero failures in 17.57s. These are the +original full publisher selection plus the two new admission tests. No source +test, assertion or skip was weakened or added to avoid the original nine reds. +Do not substitute the earlier local 572/1skip count for this hosted result. + +PyPI JSON confirms version0.3.1, requires-python >=3.11, and roifile declared +only for the dev extra. Both PyPI distributions are non-yanked. GitHub release +401537625 is public/non-draft/non-prerelease, published 2026-10-02T04:20:19Z: +https://github.com/OpenHCSDev/PolyStore/releases/tag/v0.3.1 +PyPI release: https://pypi.org/project/polystore/0.3.1/ + +Programmatic artifact metadata comparison found BOTH filename/size/SHA256 +identities equal between PyPI JSON and the GitHub release assets. The original +publisher DSSE subject digests in its retained log match these same digests: + +* polystore-0.3.1-py3-none-any.whl, 157342 bytes, + d1c81414f9b5ec1373a68a41bf704ec76c4b1f60a1ea0f00bb031bc8ae264e50. +* polystore-0.3.1.tar.gz, 193442 bytes, + 0d1e78468581ead9c1cb13fcea0bc208ce52ba4e909bbcedf1662604be928dc7. + +GitHub also retains both publish.attestation assets. Workflow artifact inventory +is empty; these are actual GitHub RELEASE assets, not nonexistent Actions +artifact uploads. The initial publication check established metadata agreement +only. The subsequent bounded actual-byte verification below extends that proof; +neither check establishes fresh installed execution or biological acceptance. + +Full successful job log fetched through original GitHub SDK and archived +losslessly in original-job-110701039079.log.gz. Decoded original bytes169009, +including BOM/final newline, SHA256 +cd1723ac96587309e23dec9144476c0219ae2b2124b0e3c084fe701a8fedfa49. +Raw terminal-run, GitHub-release, PyPI and workflow-artifact JSON replies are +archived alongside it. The v0.3.0/v0.3.1 tag object identities were checked +again after successful publication and remained unchanged. + +Publication blocker is closed. The previously recorded offline uv.lock +limitation remains separate and unchanged; this publisher does not use it. + +Independent public-wheel byte verification +----------------------------------------- + +After the owner authorised one157KB public fetch, no retained exact public wheel +was found under the worktrees, agent scratch or uv/pip caches. Existing local +editable wheels were not substituted for the published artifact. One HTTPS fetch +of the original PyPI wheel URL completed HTTP200 in0.086730s,157342bytes. +An independent local file read and SHA256 calculation asserted: + +* Actual length157342bytes. +* Actual digest + d1c81414f9b5ec1373a68a41bf704ec76c4b1f60a1ea0f00bb031bc8ae264e50. + +Both expected identities matched, exit0. PUBLIC-WHEEL-BYTE-PROOF.txt retains +the original command/results and bounds: oneCPU/512MiB, fetch20s(max25s wall), +response maximum157342B, hash10s. No package installation/import, environment +creation, source change, native/science run or dependency download occurred. +The sdist remains metadata-agreement-only; its bytes were not independently +downloaded/hashed. The wheel byte check does not imply installed acceptance. + +The completed original synthetic-test scratch and single public-wheel scratch +are closed after proof archival; CLEANUP.rst records the exact targets/results. +Both original publisher logs, compressed evidence, source, branch history and +native journal remain preserved. + +The original append-only tool-call authority is linked at +/home/ts/wt/openhcs-issue-batch-20260929/agent-audit-20261002/Dewey/native-session.jsonl. +The existing link resolves to the original Codex session journal; it has not +been copied, edited or replaced. Source/publication work has no microscopy +screenshot claim. Original failed 0.3.0 publisher logs remain preserved. diff --git a/docs/validation/publisher-admission-031-20261002/github-release-0.3.1.json b/docs/validation/publisher-admission-031-20261002/github-release-0.3.1.json new file mode 100644 index 0000000..ca7d879 --- /dev/null +++ b/docs/validation/publisher-admission-031-20261002/github-release-0.3.1.json @@ -0,0 +1 @@ +{"url":"https://api.github.com/repos/OpenHCSDev/PolyStore/releases/401537625","assets_url":"https://api.github.com/repos/OpenHCSDev/PolyStore/releases/401537625/assets","upload_url":"https://uploads.github.com/repos/OpenHCSDev/PolyStore/releases/401537625/assets{?name,label}","html_url":"https://github.com/OpenHCSDev/PolyStore/releases/tag/v0.3.1","id":401537625,"author":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOQ4ptws4X7vpZ","tag_name":"v0.3.1","target_commitish":"main","name":"v0.3.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-10-02T04:07:19Z","updated_at":"2026-10-02T04:20:19Z","published_at":"2026-10-02T04:20:19Z","assets":[{"url":"https://api.github.com/repos/OpenHCSDev/PolyStore/releases/assets/604786538","id":604786538,"node_id":"RA_kwDOQ4ptws4kDE9q","name":"polystore-0.3.1-py3-none-any.whl","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":157342,"digest":"sha256:d1c81414f9b5ec1373a68a41bf704ec76c4b1f60a1ea0f00bb031bc8ae264e50","download_count":0,"created_at":"2026-10-02T04:20:18Z","updated_at":"2026-10-02T04:20:18Z","browser_download_url":"https://github.com/OpenHCSDev/PolyStore/releases/download/v0.3.1/polystore-0.3.1-py3-none-any.whl"},{"url":"https://api.github.com/repos/OpenHCSDev/PolyStore/releases/assets/604786536","id":604786536,"node_id":"RA_kwDOQ4ptws4kDE9o","name":"polystore-0.3.1-py3-none-any.whl.publish.attestation","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":9656,"digest":"sha256:fd72367cd42fb01d43e44bafbbc67228a2d2914ca0c7803caca87d9f560c2e0f","download_count":0,"created_at":"2026-10-02T04:20:18Z","updated_at":"2026-10-02T04:20:18Z","browser_download_url":"https://github.com/OpenHCSDev/PolyStore/releases/download/v0.3.1/polystore-0.3.1-py3-none-any.whl.publish.attestation"},{"url":"https://api.github.com/repos/OpenHCSDev/PolyStore/releases/assets/604786537","id":604786537,"node_id":"RA_kwDOQ4ptws4kDE9p","name":"polystore-0.3.1.tar.gz","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/gzip","state":"uploaded","size":193442,"digest":"sha256:0d1e78468581ead9c1cb13fcea0bc208ce52ba4e909bbcedf1662604be928dc7","download_count":0,"created_at":"2026-10-02T04:20:18Z","updated_at":"2026-10-02T04:20:18Z","browser_download_url":"https://github.com/OpenHCSDev/PolyStore/releases/download/v0.3.1/polystore-0.3.1.tar.gz"},{"url":"https://api.github.com/repos/OpenHCSDev/PolyStore/releases/assets/604786534","id":604786534,"node_id":"RA_kwDOQ4ptws4kDE9m","name":"polystore-0.3.1.tar.gz.publish.attestation","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":9550,"digest":"sha256:616ccdba1ce15293b9af97c593c16d3cf486644987abefe0fc1f3eae83a84a44","download_count":0,"created_at":"2026-10-02T04:20:18Z","updated_at":"2026-10-02T04:20:18Z","browser_download_url":"https://github.com/OpenHCSDev/PolyStore/releases/download/v0.3.1/polystore-0.3.1.tar.gz.publish.attestation"}],"tarball_url":"https://api.github.com/repos/OpenHCSDev/PolyStore/tarball/v0.3.1","zipball_url":"https://api.github.com/repos/OpenHCSDev/PolyStore/zipball/v0.3.1","body":"## What's Changed\n* Fix publisher checkout admission and ROI test dependencies for 0.3.1 by @trissim in https://github.com/OpenHCSDev/PolyStore/pull/21\n\n\n**Full Changelog**: https://github.com/OpenHCSDev/PolyStore/compare/v0.3.0...v0.3.1","mentions_count":1} diff --git a/docs/validation/publisher-admission-031-20261002/original-job-110701039079.log.gz b/docs/validation/publisher-admission-031-20261002/original-job-110701039079.log.gz new file mode 100644 index 0000000..42d7d36 Binary files /dev/null and b/docs/validation/publisher-admission-031-20261002/original-job-110701039079.log.gz differ diff --git a/docs/validation/publisher-admission-031-20261002/publisher-run-36963152726.json b/docs/validation/publisher-admission-031-20261002/publisher-run-36963152726.json new file mode 100644 index 0000000..dd1c624 --- /dev/null +++ b/docs/validation/publisher-admission-031-20261002/publisher-run-36963152726.json @@ -0,0 +1 @@ +{"conclusion":"success","event":"push","headSha":"f07da0971947e7b7938503961a7014909e560307","jobs":[{"completedAt":"2026-10-02T04:20:22Z","conclusion":"success","databaseId":110701039079,"name":"Build and publish to PyPI","startedAt":"2026-10-02T04:18:47Z","status":"completed","steps":[{"completedAt":"2026-10-02T04:18:50Z","conclusion":"success","name":"Set up job","number":1,"startedAt":"2026-10-02T04:18:48Z","status":"completed"},{"completedAt":"2026-10-02T04:18:52Z","conclusion":"success","name":"Checkout code","number":2,"startedAt":"2026-10-02T04:18:51Z","status":"completed"},{"completedAt":"2026-10-02T04:18:52Z","conclusion":"success","name":"Set up Python","number":3,"startedAt":"2026-10-02T04:18:52Z","status":"completed"},{"completedAt":"2026-10-02T04:19:29Z","conclusion":"success","name":"Install build dependencies","number":4,"startedAt":"2026-10-02T04:18:52Z","status":"completed"},{"completedAt":"2026-10-02T04:19:49Z","conclusion":"success","name":"Test release candidate","number":5,"startedAt":"2026-10-02T04:19:29Z","status":"completed"},{"completedAt":"2026-10-02T04:19:53Z","conclusion":"success","name":"Build package","number":6,"startedAt":"2026-10-02T04:19:49Z","status":"completed"},{"completedAt":"2026-10-02T04:19:54Z","conclusion":"success","name":"Validate immutable release declaration","number":7,"startedAt":"2026-10-02T04:19:53Z","status":"completed"},{"completedAt":"2026-10-02T04:19:54Z","conclusion":"success","name":"Check distribution","number":8,"startedAt":"2026-10-02T04:19:54Z","status":"completed"},{"completedAt":"2026-10-02T04:20:10Z","conclusion":"success","name":"Publish to PyPI","number":9,"startedAt":"2026-10-02T04:19:54Z","status":"completed"},{"completedAt":"2026-10-02T04:20:19Z","conclusion":"success","name":"Create GitHub Release","number":10,"startedAt":"2026-10-02T04:20:10Z","status":"completed"},{"completedAt":"2026-10-02T04:20:19Z","conclusion":"success","name":"Post Publish to PyPI","number":18,"startedAt":"2026-10-02T04:20:19Z","status":"completed"},{"completedAt":"2026-10-02T04:20:19Z","conclusion":"success","name":"Post Set up Python","number":19,"startedAt":"2026-10-02T04:20:19Z","status":"completed"},{"completedAt":"2026-10-02T04:20:20Z","conclusion":"success","name":"Post Checkout code","number":20,"startedAt":"2026-10-02T04:20:19Z","status":"completed"},{"completedAt":"2026-10-02T04:20:20Z","conclusion":"success","name":"Complete job","number":21,"startedAt":"2026-10-02T04:20:20Z","status":"completed"}],"url":"https://github.com/OpenHCSDev/PolyStore/actions/runs/36963152726/job/110701039079"}],"status":"completed","url":"https://github.com/OpenHCSDev/PolyStore/actions/runs/36963152726"} diff --git a/docs/validation/publisher-admission-031-20261002/pypi-0.3.1.json b/docs/validation/publisher-admission-031-20261002/pypi-0.3.1.json new file mode 100644 index 0000000..7cde2ac --- /dev/null +++ b/docs/validation/publisher-admission-031-20261002/pypi-0.3.1.json @@ -0,0 +1 @@ +{"info":{"author":null,"author_email":"Tristan Simas ","bugtrack_url":null,"classifiers":["Development Status :: 3 - Alpha","Intended Audience :: Developers","Intended Audience :: Science/Research","Programming Language :: Python :: 3","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Topic :: Scientific/Engineering","Topic :: Software Development :: Libraries :: Python Modules"],"description":"# PolyStore\n\nFramework-agnostic storage primitives for scientific applications.\n\n[![PyPI version](https://badge.fury.io/py/polystore.svg)](https://badge.fury.io/py/polystore)\n[![Documentation Status](https://readthedocs.org/projects/polystore/badge/?version=latest)](https://polystore.readthedocs.io/en/latest/)\n[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)\n\nPolyStore owns backend interfaces, execution-local backend registries,\n``FileManager`` routing, storage formats, ROI values, virtual-workspace source\nreferences, and viewer-streaming payload mechanics. Applications retain\nownership of domain artifact names and materialization policy.\n\n## Quick start\n\nPass an explicit mapping of backend names to instances. ``FileManager`` has no\nglobal fallback and does not infer a backend from a path.\n\n```python\nfrom pathlib import Path\nimport numpy as np\n\nfrom polystore import DiskBackend, FileManager, MemoryBackend\n\nregistry = {\n \"disk\": DiskBackend(),\n \"memory\": MemoryBackend(),\n}\nfiles = FileManager(registry)\n\ndata = np.arange(6).reshape(2, 3)\nfiles.save(data, Path(\"output.npy\"), backend=\"disk\")\nloaded = files.load(Path(\"output.npy\"), backend=\"disk\")\n```\n\nFor application startup where every discoverable context-free backend is\nwanted, use the package-owned lazy registry:\n\n```python\nfrom polystore import FileManager, ensure_storage_registry, storage_registry\n\nensure_storage_registry()\nfiles = FileManager(dict(storage_registry))\n```\n\nBackends requiring context-specific construction, including virtual workspaces\nand OMERO, must be instantiated by the application and added to its registry.\n\n## Nominal backend extension\n\nConcrete backends inherit ``DataSource``, ``DataSink``, ``StorageBackend``, or\n``ReadOnlyBackend`` and declare their backend key. The authoritative class\ncatalog is ``BackendBase.__registry__`` (also exported as\n``STORAGE_BACKENDS``). Do not build a second backend class table.\n\n## Installation\n\n```bash\npython -m pip install polystore\n```\n\nThe core install includes NumPy, ArrayBridge, metaclass-registry, file locking,\nplatform-aware cache paths, image I/O, Zarr/OME-Zarr support, and ZMQRuntime.\nFramework and streaming extras add their corresponding optional runtimes.\nInstall ``polystore[bioformats]`` for the package-owned PyImageJ and\nBio-Formats bridge. Its first use materializes a checksummed Fiji, JDK, and\nPyImageJ bridge runtime; later processes reuse that complete local cache\nwithout Maven resolution.\n\nFull documentation: [polystore.readthedocs.io](https://polystore.readthedocs.io)\n","description_content_type":"text/markdown","docs_url":null,"download_url":null,"downloads":{"last_day":-1,"last_month":-1,"last_week":-1},"dynamic":["License-File"],"home_page":null,"keywords":"storage, backend, multi-framework, numpy, pytorch, jax, tensorflow, zarr, io, data","license":null,"license_expression":"MIT","license_files":["LICENSE"],"maintainer":null,"maintainer_email":null,"name":"polystore","package_url":"https://pypi.org/project/polystore/","platform":null,"project_url":"https://pypi.org/project/polystore/","project_urls":{"Bug Reports":"https://github.com/OpenHCSDev/PolyStore/issues","Documentation":"https://polystore.readthedocs.io","Homepage":"https://github.com/OpenHCSDev/PolyStore","Source":"https://github.com/OpenHCSDev/PolyStore"},"provides_extra":["zarr","torch","jax","tensorflow","cupy","streaming","omero","bioformats","all","dev","docs","gpu"],"release_url":"https://pypi.org/project/polystore/0.3.1/","requires_dist":["arraybridge>=0.3.0","numpy>=1.26.0","portalocker>=2.8.0","metaclass-registry>=0.1.5","imageio>=2.37.0","zarr>=3.0.10","numcodecs>=0.14.0","ome-zarr>=0.12.2","zmqruntime<0.4,>=0.3.0","platformdirs>=4.0.0","torch>=2.0.0; extra == \"torch\"","jax>=0.4.0; extra == \"jax\"","tensorflow>=2.12.0; extra == \"tensorflow\"","cupy>=12.0.0; extra == \"cupy\"","pyzmq>=25.0.0; extra == \"streaming\"","pandas>=2.3.1; extra == \"omero\"","omero-py>=5.19.0; extra == \"omero\"","pyimagej==1.7.0; extra == \"bioformats\"","imglyb==2.1.0; extra == \"bioformats\"","scyjava==1.12.5; extra == \"bioformats\"","torch>=2.0.0; extra == \"all\"","jax>=0.4.0; extra == \"all\"","tensorflow>=2.12.0; extra == \"all\"","cupy>=12.0.0; extra == \"all\"","pyzmq>=25.0.0; extra == \"all\"","pyimagej==1.7.0; extra == \"all\"","imglyb==2.1.0; extra == \"all\"","scyjava==1.12.5; extra == \"all\"","pytest>=7.4.0; extra == \"dev\"","pytest-cov>=4.1.0; extra == \"dev\"","coverage>=7.3.2; extra == \"dev\"","genbadge[coverage]; extra == \"dev\"","pandas>=2.3.1; extra == \"dev\"","jpype1>=1.4.0; extra == \"dev\"","roifile; extra == \"dev\"","black>=23.0.0; extra == \"dev\"","ruff>=0.1.0; extra == \"dev\"","sphinx>=4.0.0; extra == \"docs\"","sphinx-rtd-theme>=1.0.0; extra == \"docs\"","sphinx-toolbox>=3.0.0; extra == \"docs\"","sphinx-design>=0.5.0; extra == \"docs\"","torch<2.8.0,>=2.6.0; extra == \"gpu\"","torchvision<0.23.0,>=0.21.0; extra == \"gpu\"","jax<0.6.0,>=0.5.3; extra == \"gpu\"","jaxlib<0.6.0,>=0.5.3; extra == \"gpu\"","jax-cuda12-pjrt<0.6.0,>=0.5.3; extra == \"gpu\"","jax-cuda12-plugin<0.6.0,>=0.5.3; extra == \"gpu\"","cupy-cuda12x<14.0.0,>=13.3.0; extra == \"gpu\"","cucim-cu12<26.0.0,>=25.6.0; extra == \"gpu\"","tensorflow<2.20.0,>=2.19.0; extra == \"gpu\"","tensorflow-probability[tf]<0.26.0,>=0.25.0; extra == \"gpu\"","pyclesperanto>=0.17.1; extra == \"gpu\""],"requires_python":">=3.11","summary":"Framework-agnostic multi-backend storage abstraction for ML and scientific computing","version":"0.3.1","yanked":false,"yanked_reason":null},"last_serial":41716188,"ownership":{"organization":null,"roles":[{"role":"Owner","user":"trissim"}]},"urls":[{"comment_text":null,"core-metadata":{"sha256":"83f0489c548279806d82fc90c7dc2e2e3026ae23064b5a8dd8a7b53f0b8378de"},"digests":{"blake2b_256":"e19519cbd9b8d4c514434471f10e143c65dfacb117088272528e52a5d6e1b664","md5":"6a98df057cb94022461bc1b5844badd3","sha256":"d1c81414f9b5ec1373a68a41bf704ec76c4b1f60a1ea0f00bb031bc8ae264e50"},"downloads":-1,"filename":"polystore-0.3.1-py3-none-any.whl","has_sig":false,"md5_digest":"6a98df057cb94022461bc1b5844badd3","packagetype":"bdist_wheel","python_version":"py3","requires_python":">=3.11","size":157342,"upload_time":"2026-10-02T04:20:07","upload_time_iso_8601":"2026-10-02T04:20:07.351131Z","url":"https://files.pythonhosted.org/packages/e1/95/19cbd9b8d4c514434471f10e143c65dfacb117088272528e52a5d6e1b664/polystore-0.3.1-py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":null,"core-metadata":false,"digests":{"blake2b_256":"10c9be208526be5f7c247a320f1b76e73a6561448fdb1c8e22117e1e3a5879c7","md5":"e1242f24b99e62230f8d9e827425c92a","sha256":"0d1e78468581ead9c1cb13fcea0bc208ce52ba4e909bbcedf1662604be928dc7"},"downloads":-1,"filename":"polystore-0.3.1.tar.gz","has_sig":false,"md5_digest":"e1242f24b99e62230f8d9e827425c92a","packagetype":"sdist","python_version":"source","requires_python":">=3.11","size":193442,"upload_time":"2026-10-02T04:20:09","upload_time_iso_8601":"2026-10-02T04:20:09.166862Z","url":"https://files.pythonhosted.org/packages/10/c9/be208526be5f7c247a320f1b76e73a6561448fdb1c8e22117e1e3a5879c7/polystore-0.3.1.tar.gz","yanked":false,"yanked_reason":null}],"vulnerabilities":[]} diff --git a/docs/validation/publisher-admission-031-20261002/workflow-artifacts-36963152726.json b/docs/validation/publisher-admission-031-20261002/workflow-artifacts-36963152726.json new file mode 100644 index 0000000..08944e0 --- /dev/null +++ b/docs/validation/publisher-admission-031-20261002/workflow-artifacts-36963152726.json @@ -0,0 +1,3 @@ +{ + "artifacts": [] +}