Skip to content

Define Comic Manifest v1 contracts and fixtures (Studio #89) - #13

Merged
andrewperis merged 1 commit into
mainfrom
codex/issue-89-comic-manifest-contracts
Sep 17, 2026
Merged

andrewperis merged 1 commit into
mainfrom
codex/issue-89-comic-manifest-contracts

Conversation

@andrewperis

@andrewperis andrewperis commented Sep 17, 2026 •

Copy link
Copy Markdown
Collaborator

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

  • Classification: additive new family; unreleased 1.0.0 candidate.
  • Exact version negotiation; unknown fields and behavior fail closed.
  • Released Prompt SDK, Context Package and Context Builder sources/artifacts remain unchanged; no migration required.
  • Affected consumers: Platform #90–#98 and Epic Define Context Package v1 contracts #7; Universe public release records and approved private provenance stores.
  • Related RFC: 0007. Production consumption waits for #99's immutable publication and complete verified artifact tuples.

Validation

  • npm test: 200 passing tests, including 89 focused Comic Manifest checks and existing release-bundle reproducibility checks.
  • Repository JSON parses; 37 new/relevant local documentation links resolve; git diff --check passes.
  • Released schema digest checks pass; existing foundation specs, schemas, fixtures, release catalogs and builder scripts are unchanged.
  • Adds pinned test-only dependencies and Node 22/24 CI so the conformance suite is reproducible.
  • Platform companion proof validates exact candidate fixture/schema bytes against the unchanged released SDK, including historical-use rejection. Merge this Codex PR before the Platform proof PR #30.

Checklist

  • Specification, schema and fixture expectations agree under the conformance suite.
  • Valid and invalid synthetic fixtures cover structural and cross-record behavior.
  • Compatibility, migration/deprecation and immutable-release boundaries are documented; no existing contract is broken.
  • Changelog records the additive candidate family.
  • No production runtime, real private context, proprietary lore, unpublished canon, credentials or personal data is included.

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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 17, 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-09-17T16:59:17.682733Z 53e4bd7 PR opened
ℹ️ 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: 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');

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 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');

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 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);

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 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 👍 / 👎.

@andrewperis
andrewperis merged commit e415596 into main Sep 17, 2026
2 checks passed
@andrewperis
andrewperis deleted the codex/issue-89-comic-manifest-contracts branch September 17, 2026 17:02
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