OriginAIProduct specs for Claude Code, Cursor, and Codex

Release as source of truth

Why coding agents implement from immutable release snapshots, not a live workspace.

The idea

A release is an immutable snapshot of your product context at a moment in time. When a coding agent implements your product, it should build from a release — not from an in-flux workspace and certainly not from a chat thread.

This is the most important convention in OriginAI: releases are what get implemented. Everything else is there to help you produce good releases.

What makes a release trustworthy

PropertyWhat it means
ImmutableA content hash identifies the exact snapshot; it never changes.
The default for agentsRead commands return the latest release unless you override them.
An unambiguous unit of handoff"Build this hash" leaves no room for interpretation.
HistoricalPrevious hashes remain available for auditing or pinning (--release-tag).

Because a release is content-addressed, "implement release a1b2c3" always means the same thing to everyone, forever.

The sync pointer

Each linked repository tracks a release_hash in its .origin.json file. This is the last release the repository was synced to, and it drives a clean three-step loop:

  1. get-diff compares the last synced hash to the latest release. This is read-only — it shows what changed without moving anything.
  2. You implement the changes in code.
  3. sync advances the pointer once the code actually matches the release.

Treat sync like a green build. Advancing the pointer without implementing the changes breaks your team's trust in what "synced" means.

When an agent needs to change the spec itself, that write is not a new release. It becomes a change request you apply in OriginAI, then publish.

On this page