Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

About the specifications

Note

Project status: pre-alpha. Core contracts have source implementations and conformance tests; approval, evidence, and local API implementations are partial and still need milestone validation. The first experimental CLI and Unix-daemon release is available; contracts remain subject to change before 1.0. Tests check implemented wire values against the schemas.

The specifications define the contracts that make Shiin interchangeable: the action request, the decision, the evaluation pipeline, and the approval protocol, along with JSON Schemas and test vectors that other tools can implement.

Each page distinguishes implemented behavior from remaining design work. The roadmap lists the milestone that delivers each specification’s implementation.

Status and lifecycle

StatusMeaning
draftThe specification is under active revision. Field names, IDs, and schemas may change.
proposedThe specification has stabilized enough to send to implementers for review.
acceptedThe content is settled and may be implemented against. Before 1.0 a correction may still raise the draft minor version, recorded in the revision history; after 1.0 a change requires a superseding version.
supersededA newer version replaces this one. Links to the replacement.

The status field in each page’s metadata reflects where the specification is in this lifecycle, not whether code exists.

Versioning

Each specification states its version near the top, in the form shiin.<name>/v<major>-draft.<minor>:

  • The major version is part of the schema $id URN (for example, urn:shiin:schema:action-request:v1).
  • A draft minor number (.1, .2, …) increments for any change that is not a new major version.
  • A new major version is issued when a change is not backward compatible.
  • The version string in the specification text, the $id in the schema, and the schema file name must all agree.

Requirement IDs

Every normative requirement in a specification starts with a bold, bracketed requirement ID, for example **[AR-001]**.

  • IDs are unique across all documentation and are defined only in their owning kind=spec page.
  • The prefix indicates which specification owns the requirement:

Schemas and test vectors

  • JSON Schemas live in schemas/ and are named <name>.v<major>.schema.json.
  • Shared definitions live in common.v1.schema.json and are referenced by $id.
  • Test vectors live in test-vectors/ and are validated against test-vector.v1.schema.json.

Specification list

Reading the specifications

  1. Start with How Shiin works for the end-to-end flow.
  2. Read the action request and decision for the core messages.
  3. Read evaluation for how decisions are combined.
  4. Read the adapter contract for integration.
  5. Consult the test vectors for concrete examples.