Repository navigation
Adopt published Comic Manifest v1 in Platform - #44
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 53f0df620e
ℹ️ 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".
| !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(approval.approved_at) || | ||
| !Number.isFinite(Date.parse(approval.approved_at)) || typeof approval.decision_reference !== 'string' || |
There was a problem hiding this comment.
Reject calendar-invalid approval timestamps
When an approval contains a syntactically plausible but impossible timestamp such as 2026-02-30T00:00:00Z or 2026-10-10T24:00:00Z, Node's Date.parse normalizes it to a different instant, so this verifier reports approval_record_matches: true even though the documented RFC 3339 approved_at value is invalid. This can silently preserve an incorrect owner-decision time in release evidence; validate the calendar and clock fields explicitly or require a lossless normalized round trip.
Useful? React with 👍 / 👎.
Summary
Related to Studio #99. This draft adopts the exact published Codex Comic Manifest v1.0.0 release into Platform and prepares the separate Platform implementation for independent review.
contract/comic-manifest/v1.0.0at commit12e437e30328a3bb9cd2d15e6307a70b4b7e0e2a, including the exact schema, bundle and manifest tuples. The lock keeps declared media types separate from GitHub asset metadata and public-download MIME.1.2.0private and proposes component tagcomic-manifest/v1.0.0. Platform API publication remainscandidate-unpublished.approval_record_matches,owner_identity_authenticated: false, andexternal_owner_authentication_required: true. A matching JSON record does not establish an authenticated owner decision.This PR creates no Platform tag, release, asset upload, npm publication, security/visibility change, or issue closure.
Verification on this exact head
npm test: 701/701 passed.npm run test:comic-manifest-conformance: 326/326 passed in offline synthetic mode; all 29 protected fixture files remained byte-identical.node scripts/check-comic-manifest-release.mjs: Codex adoption ready; this is not final Platform release readiness.npm audit --json: zero findings; lock SHA-256ef90ff0593d91ed26980629ce896ac08294281ed2521db01d7e19ad89b5d87bd. Locked licenses andNOTICEwere reviewed; no dependency or notice changes were needed.53f0df620ec815bf445dfab9b03347e0b0b6e4a0/ treeb876a434e5f557d88d254cd1e75a8121f23c4ba3; all eight files matched byte-for-byte. Offline package/API/CLI smoke uses synthetic public fixtures only.Proposed identity and pre-merge preview
Component version/tag
1.0.0/comic-manifest/v1.0.0; additive package version1.2.0remains private. These pre-merge preview bytes are review evidence only. The post-merge source identity and manifest will differ.comic-manifest-v1.0.0.source.tar.gz040764364d6ed146ec948ee8d34b0cbaf16797006be0aa16193365b074cd7d96comic-manifest-v1.0.0.package.tgz98f9ad51546620a2197672b2bfd21e6bc31f72b274dc56bb3c50590edfe493eccomic-manifest-v1.0.0.package-lock.jsonef90ff0593d91ed26980629ce896ac08294281ed2521db01d7e19ad89b5d87bdcomic-manifest-v1.0.0.sdk-contract-lock.json6b4b515cc606f2c50b1baead50faaddd3d87d3a1d7b2c9b14e4170e36776dfabcomic-manifest-v1.0.0.context-builder-contract-lock.json297dfa1e7e1e89b63eba0df5d3e012d6243f449bdcddc9e9e34714e786f7e595comic-manifest-v1.0.0.contract-lock.jsond74950fc19669f1187aca54669b80f32c332685ef4f3a4a8361c4a9dd1a12e7acomic-manifest-v1.0.0.api-v1.json5f3d3e069a99f3533fb17d795d636cd9960c67ebd0be925d063652d3cfb71238comic-manifest-v1.0.0.manifest.jsona39eb8c90a74424d249a637f7acd5fc463d2fab00611f1f3216d33c64ba165e2Remaining gates
Independent review and merge, followed by exact-head CI. After merge, rebuild once from the merge commit, generate the detached approval packet for those bytes, and obtain an external authenticated owner decision naming the exact Platform tuples. The JSON verifier only matches that record to the bytes; it does not authenticate the decision. After the external decision is confirmed, publish the same eight files without rebuilding, then verify a fresh complete download. No Platform publication or Studio #99/Epic #6 closure is authorized by this PR.