Repository navigation
Define Comic Manifest v1 contracts and fixtures (Studio #89) - #13
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: 53e4bd7738
ℹ️ 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".
| eq(a.artifact_digests, artifacts.map(x => x.artifact.sha256).sort(), 'APPROVAL_ARTIFACTS'); | ||
| eq(a.scope, scope, 'APPROVAL_SCOPE'); | ||
| const at = Date.parse(s.at); | ||
| check(Date.parse(a.decided_at) <= at && at < Date.parse(a.expires_at) && Date.parse(scope.publication_time) < Date.parse(a.expires_at), 'APPROVAL_TIME'); |
There was a problem hiding this comment.
Reject publication times that precede approval
When scope.publication_time is earlier than decided_at, this predicate still accepts the approval because it checks only the publication time's upper bound. A candidate can therefore claim publication before its build and approvals while passing the oracle, contrary to the requirement that the binding be valid at the authorized publication time; require decided_at <= publication_time < expires_at in addition to validity at s.at.
Useful? React with 👍 / 👎.
| check(p.renditions.some(r => r.required), 'REQUIRED_OUTPUT'); | ||
| } | ||
| function verifyResult(p, r, bytes) { | ||
| eq(r.production, productionRef(p), 'PRODUCTION_LINK'); eq(r.inputs, p.inputs, 'INPUT_LINK'); |
There was a problem hiding this comment.
Require separate result and attempt IDs
A build result whose result_id and attempt_id contain the same UUID passes both the schema and this oracle, even though the new contract explicitly defines distinct result and attempt identities. This aliases two audit concepts and makes references unable to distinguish the result from its execution attempt; add an inequality check and a negative fixture.
Useful? React with 👍 / 👎.
| s.trust.attestation=null; rebind(s);schemaValid(s);verifyScenario(s,foundation); | ||
| }); | ||
| test('a correction preserves publication identity and history but gets new revisions/approvals', () => { | ||
| const original=canonical(base);const s=structuredClone(base); |
There was a problem hiding this comment.
Allocate fresh decision IDs in the correction fixture
Cloning base retains every original approval decision_id, and rebind merely rewrites those same decision records to approve the corrected production and release. Thus the test labeled as obtaining new approvals actually reuses historical decision identities for different subjects, masking the contract's fresh-approval requirement; assign new decision IDs and update the corresponding public approver entries before rebinding.
Useful? React with 👍 / 👎.
Summary
Comic Manifest needs separate contracts for protected production intent, build evidence and reader-safe public release candidates. This adds RFC 0007, the normative 1.0.0 candidate specification, a closed schema for all three records plus detached approval bindings, compatibility/release guidance, and synthetic schema/relational fixtures. It implements merged Studio ADR 0018; no production runtime or orchestration is added.
The contract defines ordered identities, exact references, classification propagation, revision/approval invalidation, rendition requirements, and public provenance that withholds protected input and intermediate-output hashes. Schema validity remains distinct from authorization and human disclosure/publication review.
Compatibility
Validation
npm test: 200 passing tests, including 89 focused Comic Manifest checks and existing release-bundle reproducibility checks.git diff --checkpasses.Checklist
Part of DefinitelySecureStudio/studio#89. Owner/CODEOWNERS and coordinated Platform review remain required. This proposal does not self-certify constitutional conformance or authorize production access, signing, publication or canon promotion.