Skip to content

Prepare Comic Manifest v1 Platform release - #42

Merged
andrewperis merged 17 commits into
mainfrom
codex/issue-99-release-prep
Oct 7, 2026
Merged

andrewperis merged 17 commits into
mainfrom
codex/issue-99-release-prep

Conversation

@andrewperis

@andrewperis andrewperis commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Preparation draft for Studio #99. Base is Platform main after the Studio #98 DNS lookup guard merge 1b5fd00189e6dcc3f3c7f1a76f4229029c9fb8ea (tree ccc876bd1e8184d29e53b4aa4bec3d2d630cfd8e). Exact current prep head: 8b4d5e732db9345f915833289977aaa3b93175c9 (tree 683e2dd392c93f1e55502edeb8aeed54c46ba3a3).

Proposes component tag comic-manifest/v1.0.0 and additive Platform package version 1.2.0, still private: true. The Platform candidate lock still records the pre-merge Codex prep tuple at 028d5638e20d9283a2955aacbd38e1bfc6dca259; that tuple is historical and is not the merged Codex approval packet. The lock remains candidate-unpublished. Readiness stays blocked pending owner-approved Codex publication and independent immutable-download verification, then Platform adoption of that exact published tuple and validator regeneration. Historical SDK and Context Builder locks/assets remain separate.

The builder accepts a supplied source identity only when the full commit object exists locally and resolves to the exact declared and checkout tree. All Git calls set GIT_NO_REPLACE_OBJECTS=1 per-process, without changing global configuration; source archives and lock/API snapshots are read from the verified commit. Regressions cover missing/fabricated objects, non-commit objects, mismatched trees, symlinked outputs, and isolated replacement refs in both directions.

Verification on this exact head: Platform npm test passed 700/700 on an isolated rerun; targeted release tests passed 7/7; offline Comic Manifest conformance passed 325/325, with 29 reviewed fixtures byte-identical. Platform CI run 80 passed on code head af408d4bbe083de4f6da160c7f6c12dc28c1a468 across Node 22 and 24. The current head adds only this verification-record documentation correction. Platform CI run 81 passed on exact current head 8b4d5e732db9345f915833289977aaa3b93175c9 with Node 22 and 24; each job passed npm test and the offline Comic Manifest conformance step. Two clean candidate builds from exact current head/tree 683e2dd392c93f1e55502edeb8aeed54c46ba3a3 matched byte-for-byte.

Fresh npm audit --json reports from the official registry, captured at 2026-10-07T21:20:20Z, are retained in the owner packet: Platform report SHA-256 b966435ec31b7d61483d849d853d936f86183d654661604e532f1be934735a79, lock SHA-256 ef90ff0593d91ed26980629ce896ac08294281ed2521db01d7e19ad89b5d87bd; Codex report SHA-256 4f12cbad0e7ecd65f1b70fa84eeed108609f55f6d549ed8eaa29c377105b98e5, lock SHA-256 d655c146d12f82d5583ffe3a3c9740c1716cee4158035e8db5929977e1a48721. Both reports found zero vulnerabilities. A later reviewer refresh attempt could not resolve registry DNS (ENOTFOUND) and produced no new audit result; the recorded successful report above remains tied to the unchanged Platform lock SHA-256 ef90ff0593d91ed26980629ce896ac08294281ed2521db01d7e19ad89b5d87bd. The earlier moderate fast-uri 3.1.7 advisory (GHSA-hrr3-gc8f-f4qj) was fixed by a lock-only update to 3.1.8 within Ajv's existing range; package.json did not change, and THIRD_PARTY_NOTICES records BSD-3-Clause for fast-uri.

Candidate artifact identities (declared media type is in the manifest; future GitHub transport MIME must be measured separately):

  • comic-manifest-v1.0.0.source.tar.gz, 485,314 bytes, SHA-256 6038e17855cb7e4d7b151da9040e35b0d8f0010d44097d851935ed0384ce423d
  • comic-manifest-v1.0.0.package.tgz, 225,295 bytes, SHA-256 7cb4c088c1f28f2188d838063d1a258544362f6530e0b2b9026bc4a47ffba563
  • comic-manifest-v1.0.0.package-lock.json, 3,149 bytes, SHA-256 ef90ff0593d91ed26980629ce896ac08294281ed2521db01d7e19ad89b5d87bd
  • comic-manifest-v1.0.0.sdk-contract-lock.json, 7,588 bytes, SHA-256 6b4b515cc606f2c50b1baead50faaddd3d87d3a1d7b2c9b14e4170e36776dfab
  • comic-manifest-v1.0.0.context-builder-contract-lock.json, 1,366 bytes, SHA-256 297dfa1e7e1e89b63eba0df5d3e012d6243f449bdcddc9e9e34714e786f7e595
  • comic-manifest-v1.0.0.contract-lock.json, 1,793 bytes, SHA-256 41995510b4a0546198f139124a79e29b0f698718fc05e5b755a411753657b52a
  • comic-manifest-v1.0.0.api-v1.json, 1,274 bytes, SHA-256 1ae2605069c38d40bac6c6ea65dff901e27893b95b1c977a694096d77728e052
  • comic-manifest-v1.0.0.manifest.json, 5,256 bytes, SHA-256 0beea6176c32152222784c5563cfe6574e9660d4bf8a65ad7f7fa975d50ac341; its digest is reported separately because the manifest does not self-reference.

The owner-provided A3 AI-review exception applies to code-merge review only. It does not authorize a release decision, tag, release asset, or publication; no human review of final release artifacts is claimed. Preparation only: no tag, release, upload, npm publication, visibility/security change, or Issue #99 closure. Parent review/merge and separate explicit owner approval of exact post-merge artifact tuples are required.

@andrewperis
andrewperis marked this pull request as ready for review October 7, 2026 21:44
@andrewperis
andrewperis merged commit 9476aeb into main Oct 7, 2026
2 checks passed
@andrewperis
andrewperis deleted the codex/issue-99-release-prep branch October 7, 2026 21:44
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 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-07T21:47:32.775760Z 8b4d5e7 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 chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8b4d5e732d

ℹ️ 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".

Comment on lines +46 to +50
if (pin?.status !== 'released' || pin?.repository !== 'DefinitelySecureStudio/codex' ||
pin?.version !== '1.0.0' || pin?.tag !== 'contract/comic-manifest/v1.0.0' || pin?.commit !== lock?.commit ||
pin?.schema_id !== lock?.schema_id || pin?.artifact_uri !== schema?.artifact_uri ||
pin?.media_type !== schema?.media_type || pin?.byte_size !== schema?.byte_size || pin?.sha256 !== schema?.sha256) {
blockers.push('Runtime validator pin has not adopted the exact published contract tuple.');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bind readiness to the generated validator

When the published contract is adopted, updating contract.js and the release lock is sufficient for this condition to pass even if src/comic-manifest/generated/schema-v1.js was never regenerated. comicManifestReleaseReadiness() would then report ready and the non-candidate builder could package validator code carrying the old source provenance—or old validation behavior if the schema changed. Read and validate the generated header/hash against the adopted commit and schema tuple, as the Context Builder release checker does.

Useful? React with 👍 / 👎.

Comment on lines +55 to +56
if (expected.some(filename => !manifest.assets.some(asset => asset.filename === filename))) throw Error('Trusted manifest omits an expected release asset.');
return { verified: true, commit: manifest.commit, assets: expected.length + 1 };

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reject unexpected files in the download directory

When a fresh-download directory contains every expected asset plus an unexpected release asset, this verifier still returns verified: true: the allowlist is applied only to filenames declared inside the trusted manifest, and the directory itself is never enumerated. This defeats the documented complete-set/exact-allowlist check and can approve a release containing unreviewed additional assets; compare the directory entries against the seven assets plus the manifest before succeeding.

Useful? React with 👍 / 👎.

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