Skip to content

Prepare v0.1.1 release evidence without publishing - #277

Merged
joshyorko merged 20 commits into
masterfrom
prepare/pid-safety-release
Oct 30, 2026
Merged

joshyorko merged 20 commits into
masterfrom
prepare/pid-safety-release

Conversation

@joshyorko

@joshyorko joshyorko commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Latest head: 81068a4fb0aa0e657f755a98a5bc8132d0e76fcc. Sol found that a tag could move during release publication after the last pre-publication source check. The publisher now checks that the newly immutable release's frozen tag still resolves to the approved commit before verifying its release and assets. A disposable Git/fake-GitHub regression reproduces the move during PATCH, failed on the prior workflow and passes on this head. The 20 publisher tests, 30 release tests, OCI tests and actionlint passed; the full synthetic gate also passed locally on exact head 81068a4fb0aa0e657f755a98a5bc8132d0e76fcc, using a temporary target-directory symlink to the worker's build cache (removed after the run). Its operator dogfood lane was skipped. PR CI and all 19 jobs of the reproducibility preflight passed on GitHub synthetic merge f6f1b7421f621599796bb695da0ca8b0eab2c9bf, whose tree is identical to this head and whose parents are current master and this head. All four native and both OCI pairs matched. The focused release/OCI tests and actionlint also passed in a checkout of the exact head. The earlier intermittent macOS ARM mismatch remains unexplained; these candidate comparisons do not establish reproducibility for the eventual release commit. Sol independently re-reviewed this exact head and the unchanged Homebrew head 9475ba7fe01d526e68e6fabb11576bb4d124aa79, verified the tag-movement fix with a separate race probe, and reported no remaining safety findings in scope. This is not a GitHub approval; the exact-head connector review is still pending. Isolated acceptance receipts for this exact head include the raw 25-step passing report and build identity. The fixture used the temporary proxy-CA overlay. These are candidate results, not final merged-source or published-artifact evidence.

The PID-safety fix was merged in #275. This draft prepares the v0.1.1 source and a manually invoked publisher. No release, image, tap update, or deployment has been made.

  • Update rustls-webpki to 0.103.16 for RUSTSEC-2026-0382, and raise the direct Tokio minimum and lock to 1.53.3 for RUSTSEC-2026-0386. Tokio's deprecated legacy AsyncFd constructors remain callable and are not made sound by a version update; a static search found no use outside Tokio in the production graphs for the four release targets.
  • The publisher verifies the exact tag, commit, version, PID-fix ancestry, matching native and OCI candidates, and provenance. It publishes and verifies the immutable GitHub release and downloaded assets before any GHCR write. It uses the normal workflow token and OIDC; no extra audit token is required. If immutability is disabled, a release can become public before the post-publication check fails. GHCR latest is not moved.
  • Sol's independent review of head 4dbfceb35494af71ca286dbd3fd8a1bf62d2dd02 found that an OCI version tag could move between platform validation and selection of the attestation subject. The publisher now resolves one index digest, validates the platform list through that digest, and attests the same digest. A later check rejects a tag that no longer points to the subject. Regression tests execute the workflow shell with a disposable fake registry, including movement between reads, movement after selection, an invalid selected index, and an unchanged tag. The movement-between-reads regression failed on the prior workflow and passes on this candidate. Registry publication and attestation remain untested.
  • The dogfood heartbeat and later Compose shutdown use the same project selector. All 25 steps of the operator lane passed against a synthetic cloud fixture at exact head 3cebac0f2d3de9f7530feb61254594e6d2bd8dfe, with a temporary proxy-CA Dockerfile overlay. Final merged-source acceptance remains pending; fixed container/image names, port, host-memory mount, database writes, and Dreamer apply require separate isolation and authorization.
  • Homebrew PR #154 prepares the released-source guard, with an optional existing source pin. Its consumer checks and full-package CI passed on the previous tap head, including both previously failing Devsy checks; checks for the new head are pending. Have the reviewed tap guard in place before merging this source PR to master, unless an operator-approved alternative prevents the scheduled updater from publishing unintended source.
  • The release handoff records accepted macOS fail-closed behavior, safe migration, operator acceptance, publication order, and remaining risks.

Validation of earlier head 3cebac0f2d3de9f7530feb61254594e6d2bd8dfe: its tree exactly matches locally tested commit 4e4dd2db16a053f2b66c54e0dec9785281643d4e. The 19 focused publisher tests passed, including actual workflow-shell tests for mutable publication and changed downloaded assets. The full synthetic gate and isolated dogfood gate passed locally; the latter used a temporary proxy-CA Dockerfile overlay. The exact-head PR gate passed. The release preflight failed the macOS ARM binary comparison (17 jobs passed, one failed, one skipped); independent review remains pending. Diagnostic output found differences in unwind metadata, UUID and code signature, while executable code sections matched. The runners reported different macOS versions, but an earlier failure occurred with matching runner images, so a root cause has not been established. Reproducibility has not been waived.

Earlier validation of candidate head 1aa0e3e0115bcd71a48b391807a57ffb966e8426:

  • The Rust 1.88 cargo check --locked --all-targets, 11 HTTP tests, 14 native PID-safety tests, the MCP interoperability test, five native process-handle tests, and 16 publisher tests passed. The scoped publisher workflow passed actionlint. The earlier actionlint run on the unchanged preflight reported its old runner-label list did not recognize GitHub's macos-15-intel; the preflight lint passed with only that known-label diagnostic excluded.
  • The same RustSec database no longer reports the webpki or Tokio advisories. Seven vulnerable-crate advisories remain and cargo-audit exits nonzero. GitHub's seven default-branch Dependabot alerts are inaccessible and cannot be equated with those results.
  • Two clean Linux release builds of the exact head in separate source, Cargo-home, and target paths matched byte-for-byte (6715b2007a46cb32c0c0af10bc4267bfbeeaf46c6b722ffef20ba0d3e367fcba) and each passed a disposable lifecycle smoke. These are experimental candidate binaries, not published artifacts.
  • The full local synthetic gate passed at this head, with the operator dogfood lane skipped. The PR gate passed; all 19 jobs in the candidate preflight passed, including four native and two OCI comparisons against GitHub's synthetic merge 5dc587e95fd62a6ad049539e4c12d54fb002ea89; those results are not evidence for the eventual release commit.
  • Sol independently re-reviewed this head and tap head 269d640eea05a3f7aec0f21f000d0ff4f0dc29db, finding no unresolved safety issues in the reviewed scope. Sol reproduced the old OCI race and tested the corrected digest binding, 34 upstream Python checks, 32 tap checks, 24 Rust provider/native checks, and an isolated lifecycle smoke. This is review evidence, not a GitHub approval. The connector review of this head completed without findings.
  • Earlier macOS ARM reproducibility mismatches remain unexplained, even though later pairs passed. Final-source comparisons, actual signer and registry operations, and published artifact provenance remain to be verified.

Publication of v0.1.1 is conditionally authorized only after required acceptance, review, and provenance gates pass. The publisher verifies immutability after publishing rather than requiring an Administration:read secret. No credentials were created. Publication may leave a draft or public release or versioned image on failure, so inspect state before retry. Deployment remains separately controlled.

PRE_RELEASE_ACCEPTANCE: PENDING

This is a pre-release handoff, not deployment authorization. The candidate branch head is 81068a4fb0aa0e657f755a98a5bc8132d0e76fcc; the final merged release commit, tag, published checksums, Homebrew version, GHCR digest and attestations are pending. Earlier GitHub synthetic merge 5dc587e95fd62a6ad049539e4c12d54fb002ea89 tested the previous head, not this one. The prior isolated candidate acceptance debug binary SHA-256 was 0214224857cca6058a9998abe12d272dcbf81c1b5aeeb14fcc71bd6a674697a1; the matching Linux release candidates are recorded above. These are experimental builds, not published artifacts or expected cross-machine hashes.

The coordinator must establish an explicitly authorized isolated environment with its own Docker daemon, container/image namespace, loopback port, checkout, HOME/memory mount, runtime directory, and databases. Do not run this lane on the live host merely by changing the Compose project name: it uses a fixed container name, image and port, mounts host memories, applies sync to .dogfood/memory.db, enables Dreamer automatic apply, and refreshes sandbox databases. The coordinator must determine whether a safely isolated copy provides the required operator evidence; synthetic evidence alone is not assumed to satisfy the dogfood gate.

After the final release source settles, use a fresh checkout, verify its full commit SHA and clean tracked state, and ensure copied Docker build-context paths contain no extra files. Build target/debug/codex-memoryd with cargo build --locked --bin codex-memoryd, record its SHA-256, and confirm native-lifecycle-protocol prints memoryd-pidfd-v1. Ensure gate, native-helper and sandbox binary overrides select that build. Only within the approved isolated environment, run scripts/v0.1-release-gate.sh --include-dogfood --artifact-dir <new-empty-report-directory> without the child-reaper launcher.

The report must say status: pass, operator_dogfood_included: true, and have no skipped or failed steps; verify the required labels with the jq command in the linked handoff. The report does not itself prove source identity, so supply a separate content-free source/build receipt. Do not share memory contents or raw logs. Never use the vulnerable v0.1.0 native down or restart based on a PID file; use the verified original supervisor or terminal and preserve the database and backups.

DEPLOYMENT_READY remains BLOCKED / NOT_READY until acceptance, publication and verification of actual artifacts and provenance are complete. Deployment remains a separate coordinator action.

@joshyorko joshyorko changed the title Prepare non-publishing release candidate checks Prepare v0.1.1 release evidence without publishing Oct 29, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T00:00:47.710151Z 81068a4 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: d8213d30e4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: 06902aedab

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 7486146a45

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 1fdb464210

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: 4dbfceb354

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Raise the Tokio minimum to the advisory-patched version and document the legacy constructor limitation.

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 1aa0e3e011

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

joshyorko commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner Author

Isolated candidate acceptance receipts (not final release evidence)

The following is the raw machine-readable report for isolated candidate 3cebac0f2d3de9f7530feb61254594e6d2bd8dfe (tree 010cdb4783316e83ad8c8c9474b77250c79f19bf). The gate used a clean tracked source checkout, a synthetic HOME/fixtures and a separate cloud Docker daemon. It is not the subsequently corrected head, final merged source, or a published artifact, and does not by itself establish operator acceptance. Absolute paths are historical references within that isolated worker, not shared files.

The raw report SHA-256 was 9ab9d237296d0f8b7d694532a850e860046f8f9f468c14a29dc39f10e9ff5019; the source-built debug binary SHA-256 was 0214224857cca6058a9998abe12d272dcbf81c1b5aeeb14fcc71bd6a674697a1. These are receipts for this test only.

{
  "operator_dogfood_included": true,
  "status": "pass",
  "steps": [
    {
      "label": "child-reaper-tests",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/child-reaper-tests.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-project-tests",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/dogfood-compose-project-tests.log",
      "status": "pass"
    },
    {
      "label": "release-evidence-tests",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/release-evidence-tests.log",
      "status": "pass"
    },
    {
      "label": "native-mismatch-diagnostic-tests",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/native-mismatch-diagnostic-tests.log",
      "status": "pass"
    },
    {
      "label": "native-release-build-env-tests",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/native-release-build-env-tests.log",
      "status": "pass"
    },
    {
      "label": "release-publisher-tests",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/release-publisher-tests.log",
      "status": "pass"
    },
    {
      "label": "oci-layer-evidence-tests",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/oci-layer-evidence-tests.log",
      "status": "pass"
    },
    {
      "label": "cargo-fmt",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/cargo-fmt.log",
      "status": "pass"
    },
    {
      "label": "git-diff-check",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/git-diff-check.log",
      "status": "pass"
    },
    {
      "label": "cargo-test",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/cargo-test.log",
      "status": "pass"
    },
    {
      "label": "doctor-json",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/doctor-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/doctor.json",
      "status": "pass"
    },
    {
      "label": "eval-substrate-compare-json",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/eval-substrate-compare-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/eval-substrate-compare.json",
      "status": "pass"
    },
    {
      "label": "eval-procedures-json",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/eval-procedures-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/eval-procedures.json",
      "status": "pass"
    },
    {
      "label": "perf-json",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/perf-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/perf.json",
      "status": "pass"
    },
    {
      "label": "demo-substrate-dry-run",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/demo-substrate-dry-run.log",
      "status": "pass"
    },
    {
      "label": "dogfood-write-sandbox-dry-run",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/dogfood-write-sandbox-dry-run.log",
      "status": "pass"
    },
    {
      "label": "release-required-files",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/release-required-files.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-heartbeat",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/dogfood-compose-heartbeat.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-down-before-native",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/dogfood-compose-down-before-native.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-start",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/native-runtime-start.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-status",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/native-runtime-status.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-smoke",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/native-runtime-smoke.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-restart-survival",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/native-runtime-restart-survival.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-stop",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/native-runtime-stop.log",
      "status": "pass"
    },
    {
      "label": "dogfood-write-sandbox-run",
      "log": "/workspace/scratch/issue-269/acceptance-3cebac0-gate/logs/dogfood-write-sandbox-run.log",
      "status": "pass"
    }
  ],
  "suite": "v0.1-release-gate",
  "tag_caveat": null
}

The cloud network requires a proxy CA. The Dockerfile overlay used SHA-256 b2dec342e549da7b0fe698d0bee9337aa254cd6f854403261526a15559c9159e and differed from the candidate Dockerfile exactly as follows; the CA was supplied as a BuildKit secret, never committed or embedded as an image layer:

--- Dockerfile
+++ acceptance-Dockerfile
@@ -12,10 +12,10 @@
 COPY migrations ./migrations
 # Create a stub lib/bin so `cargo build` can resolve+compile dependencies and
 # cache them in a separate layer before the real sources are copied.
-RUN mkdir -p src \
+RUN --mount=type=secret,id=proxy_ca,required=true mkdir -p src \
     && echo "fn main() {}" > src/main.rs \
     && echo "" > src/lib.rs \
-    && cargo build --release --locked --quiet
+    && CARGO_HTTP_CAINFO=/run/secrets/proxy_ca cargo build --release --locked --quiet
 
 # Now copy the real source and build for real.
 COPY src ./src
@@ -25,8 +25,8 @@
 # not the .rs test files, so the container build matches a host build exactly.
 COPY tests/fixtures ./tests/fixtures
 # Touch sources so cargo rebuilds them (stub timestamps are older).
-RUN touch src/main.rs src/lib.rs \
-    && cargo build --release --locked \
+RUN --mount=type=secret,id=proxy_ca,required=true touch src/main.rs src/lib.rs \
+    && CARGO_HTTP_CAINFO=/run/secrets/proxy_ca cargo build --release --locked \
     && strip target/release/codex-memoryd
 
 # ---- Runtime ----------------------------------------------------------------

Compose override SHA-256 9287eaa037ef10083c3386011cf046209a666a060575c0ead70f234ddf3ecc83:

services:
  codex-memoryd:
    build:
      dockerfile: /workspace/scratch/issue-269/acceptance-Dockerfile
      secrets:
        - source: proxy_ca
          target: proxy_ca
secrets:
  proxy_ca:
    file: ${CODEX_PROXY_CERT}

Build output recorded the overlay and the image ID below; the source build step was cached. This is a local fixture image ID, not an OCI registry digest or release artifact.

#15 [builder 8/8] RUN --mount=type=secret,id=proxy_ca,required=true touch src/main.rs src/lib.rs     && CARGO_HTTP_CAINFO=/run/secrets/proxy_ca cargo build --release --locked     && strip target/release/codex-memoryd
#15 CACHED

#16 [runtime 4/5] COPY --from=builder /build/target/release/codex-memoryd /usr/local/bin/codex-memoryd
#22 exporting to image
#22 exporting layers done
#22 writing image sha256:16cc9bf42c7cfd1426cd8e3971879ab33ea3e5d102a560d20a4039991a6bc2ce done
#22 naming to docker.io/library/codex-memoryd:latest done
#22 DONE 0.0s

The local Compose container was stopped and the fixture image removed after testing. The report intentionally excludes fixture memory contents and raw logs. A final merged-source acceptance and actual release artifact/provenance verification remain pending.
Additional content-free checkout/build checks: tracked diff against the candidate commit was empty and there were no untracked files under the copied src, migrations, or tests/fixtures paths. Cargo.lock SHA-256 was 62a815445e2f75079edabb448028cf0dc65f663e0717e41d860c5fb6d5ca35d4; the test binary reported codex-memoryd 0.1.1 and lifecycle protocol memoryd-pidfd-v1. The test-only Docker wrapper selected the local cloud daemon using docker --host=unix:///var/run/docker.sock; it was checked empty before using the fixed Compose container name and loopback port. The build output above identifies the cached build step and local fixture image; it is not a clean final-source build receipt.

Copy link
Copy Markdown
Owner Author

Isolated acceptance for corrected head 81068a4

This is a synthetic cloud acceptance run at exact commit 81068a4fb0aa0e657f755a98a5bc8132d0e76fcc and tree e2cc083d0e39aa761725cf901f3ac5d6920151ae, not final merged-source acceptance or published-artifact evidence. A fresh detached worktree had no tracked modifications or untracked files under Docker-copied source paths. It used a separate fixture HOME, fixture memories and database, an empty local cloud Docker daemon, and an unused loopback port 8787. No live system was accessed.

Built cargo build --locked --bin codex-memoryd from that checkout using the shared worker Cargo target cache, then copied the resulting executable into that checkout's target/debug/codex-memoryd. That binary reported codex-memoryd 0.1.1 and memoryd-pidfd-v1; SHA-256 3a420778feb06a6b0d40b92f7ef72964e5d8ee062fc999db96a0c5a40be277d1. Cargo.lock SHA-256 was 62a815445e2f75079edabb448028cf0dc65f663e0717e41d860c5fb6d5ca35d4. These identify this test build, not a release artifact.

The retry ran the full scripts/v0.1-release-gate.sh --include-dogfood --artifact-dir /workspace/scratch/issue-269/acceptance-81068a4-gate-retry --bin /workspace/scratch/issue-269/acceptance-81068a4/target/debug/codex-memoryd, with fixture HOME, project memoryd-acceptance-810, the shared Cargo target cache, and the temporary proxy-CA Compose/Dockerfile overlay. A first attempt passed source tests but stopped before starting Compose because the restricted PATH omitted the worker's SQLite CLI. The retry included the existing SQLite 3.46.1 fixture tool.

Raw machine-readable report SHA-256: 15f9542278474d8f30bce92dd382106850a0e270b4d58949e4e50eeb840f8cfc:

{
  "operator_dogfood_included": true,
  "status": "pass",
  "steps": [
    {
      "label": "child-reaper-tests",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/child-reaper-tests.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-project-tests",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/dogfood-compose-project-tests.log",
      "status": "pass"
    },
    {
      "label": "release-evidence-tests",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/release-evidence-tests.log",
      "status": "pass"
    },
    {
      "label": "native-mismatch-diagnostic-tests",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/native-mismatch-diagnostic-tests.log",
      "status": "pass"
    },
    {
      "label": "native-release-build-env-tests",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/native-release-build-env-tests.log",
      "status": "pass"
    },
    {
      "label": "release-publisher-tests",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/release-publisher-tests.log",
      "status": "pass"
    },
    {
      "label": "oci-layer-evidence-tests",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/oci-layer-evidence-tests.log",
      "status": "pass"
    },
    {
      "label": "cargo-fmt",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/cargo-fmt.log",
      "status": "pass"
    },
    {
      "label": "git-diff-check",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/git-diff-check.log",
      "status": "pass"
    },
    {
      "label": "cargo-test",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/cargo-test.log",
      "status": "pass"
    },
    {
      "label": "doctor-json",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/doctor-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/doctor.json",
      "status": "pass"
    },
    {
      "label": "eval-substrate-compare-json",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/eval-substrate-compare-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/eval-substrate-compare.json",
      "status": "pass"
    },
    {
      "label": "eval-procedures-json",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/eval-procedures-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/eval-procedures.json",
      "status": "pass"
    },
    {
      "label": "perf-json",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/perf-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/perf.json",
      "status": "pass"
    },
    {
      "label": "demo-substrate-dry-run",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/demo-substrate-dry-run.log",
      "status": "pass"
    },
    {
      "label": "dogfood-write-sandbox-dry-run",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/dogfood-write-sandbox-dry-run.log",
      "status": "pass"
    },
    {
      "label": "release-required-files",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/release-required-files.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-heartbeat",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/dogfood-compose-heartbeat.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-down-before-native",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/dogfood-compose-down-before-native.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-start",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/native-runtime-start.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-status",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/native-runtime-status.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-smoke",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/native-runtime-smoke.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-restart-survival",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/native-runtime-restart-survival.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-stop",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/native-runtime-stop.log",
      "status": "pass"
    },
    {
      "label": "dogfood-write-sandbox-run",
      "log": "/workspace/scratch/issue-269/acceptance-81068a4-gate-retry/logs/dogfood-write-sandbox-run.log",
      "status": "pass"
    }
  ],
  "suite": "v0.1-release-gate",
  "tag_caveat": null
}

Build output records a cached build step and a local fixture image, not a registry release digest:

#22 exporting to image
#22 exporting layers done
#22 writing image sha256:79e2220410beece6f5c7c47e9deed4cf002b50a095e0aa711fb6d4a43472234c done
#22 naming to docker.io/library/codex-memoryd:latest done
#22 DONE 0.0s

After the run, the local daemon had no containers, port 8787 had no listener, and the fixture image was removed after its ID was checked against the build log. The report omits fixture memory contents and raw logs. Final merged-source acceptance, artifact publication and verification remain pending.

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep them coming!

Reviewed commit: 81068a4fb0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@joshyorko
joshyorko marked this pull request as ready for review October 30, 2026 00:00
@joshyorko
joshyorko merged commit c28ace6 into master Oct 30, 2026
21 checks passed

Copy link
Copy Markdown
Owner Author

Final merged-source isolated acceptance

All 25 steps passed in an isolated cloud fixture at merged source commit c28ace686d4f32d2265e8aa62da65ef8f92b0cd0, tree e2cc083d0e39aa761725cf901f3ac5d6920151ae. This is the same tree as the reviewed CI merge f6f1b7421f621599796bb695da0ca8b0eab2c9bf. A detached checkout had no tracked changes or untracked files in Docker-copied source paths. The test used synthetic memories, a separate HOME and databases, an empty cloud Docker daemon, and an unused loopback port 8787. No live service or operator data was accessed.

The checkout built cargo build --locked --bin codex-memoryd with the worker's shared Cargo target cache and copied the result into its own target/debug/codex-memoryd. The test binary SHA-256 was 8ee88b97bd7441f3cf17c6fbc45ee34fe45c22bd6ad33655ee4f5056fc58114f; it reported codex-memoryd 0.1.1 and memoryd-pidfd-v1. Cargo.lock SHA-256 was 62a815445e2f75079edabb448028cf0dc65f663e0717e41d860c5fb6d5ca35d4. The binary hash identifies this experimental debug build, not a published artifact.

The run used scripts/v0.1-release-gate.sh --include-dogfood --artifact-dir /workspace/scratch/issue-269/acceptance-c28ace6-gate --bin /workspace/scratch/issue-269/acceptance-c28ace6/target/debug/codex-memoryd, fixture HOME, Compose project memoryd-acceptance-c28, the worker's SQLite 3.46.1 fixture CLI, and the temporary proxy-CA Dockerfile/Compose overlay. The Dockerfile build step shown below was cached.

Raw report SHA-256: d4cb8738ce971db79a8720c08862310d64d8a047abd45950e5b4d34d0ac27d26:

{
  "operator_dogfood_included": true,
  "status": "pass",
  "steps": [
    {
      "label": "child-reaper-tests",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/child-reaper-tests.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-project-tests",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/dogfood-compose-project-tests.log",
      "status": "pass"
    },
    {
      "label": "release-evidence-tests",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/release-evidence-tests.log",
      "status": "pass"
    },
    {
      "label": "native-mismatch-diagnostic-tests",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/native-mismatch-diagnostic-tests.log",
      "status": "pass"
    },
    {
      "label": "native-release-build-env-tests",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/native-release-build-env-tests.log",
      "status": "pass"
    },
    {
      "label": "release-publisher-tests",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/release-publisher-tests.log",
      "status": "pass"
    },
    {
      "label": "oci-layer-evidence-tests",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/oci-layer-evidence-tests.log",
      "status": "pass"
    },
    {
      "label": "cargo-fmt",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/cargo-fmt.log",
      "status": "pass"
    },
    {
      "label": "git-diff-check",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/git-diff-check.log",
      "status": "pass"
    },
    {
      "label": "cargo-test",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/cargo-test.log",
      "status": "pass"
    },
    {
      "label": "doctor-json",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/doctor-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/doctor.json",
      "status": "pass"
    },
    {
      "label": "eval-substrate-compare-json",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/eval-substrate-compare-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/eval-substrate-compare.json",
      "status": "pass"
    },
    {
      "label": "eval-procedures-json",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/eval-procedures-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/eval-procedures.json",
      "status": "pass"
    },
    {
      "label": "perf-json",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/perf-json.log",
      "output": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/perf.json",
      "status": "pass"
    },
    {
      "label": "demo-substrate-dry-run",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/demo-substrate-dry-run.log",
      "status": "pass"
    },
    {
      "label": "dogfood-write-sandbox-dry-run",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/dogfood-write-sandbox-dry-run.log",
      "status": "pass"
    },
    {
      "label": "release-required-files",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/release-required-files.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-heartbeat",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/dogfood-compose-heartbeat.log",
      "status": "pass"
    },
    {
      "label": "dogfood-compose-down-before-native",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/dogfood-compose-down-before-native.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-start",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/native-runtime-start.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-status",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/native-runtime-status.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-smoke",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/native-runtime-smoke.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-restart-survival",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/native-runtime-restart-survival.log",
      "status": "pass"
    },
    {
      "label": "native-runtime-stop",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/native-runtime-stop.log",
      "status": "pass"
    },
    {
      "label": "dogfood-write-sandbox-run",
      "log": "/workspace/scratch/issue-269/acceptance-c28ace6-gate/logs/dogfood-write-sandbox-run.log",
      "status": "pass"
    }
  ],
  "suite": "v0.1-release-gate",
  "tag_caveat": null
}
#22 exporting to image
#22 exporting layers done
#22 writing image sha256:dd3d0365927c83069b429111725d90d59e72d64d164d99c3a9173290b36f2261 done
#22 naming to docker.io/library/codex-memoryd:latest done
#22 DONE 0.0s

Afterward the daemon had no containers, port 8787 had no listener, and the fixture image was removed after its ID matched the build log. This evidence exercises the tag-required lane in a synthetic isolated environment; it does not establish deployment acceptance or identify a released artifact. Final published hashes, attestations, Homebrew version and GHCR digest remain pending.

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