# Sphere constitution (cross-axis)

Last updated: 2026-09-12T16:24:31+09:00

Sphere = materials supply for content production & sales.
Axes are parallel faces on **one** contract — not separate products.

## Shared loop (every axis)
1. Register source (`sources/{id}.json` + registry)
2. Backfill into indexable cards (adapters)
3. Quality gate (axis-specific rubric) → PASS | MISS
4. Store + dual audience (human UI + agent `/data/`)
5. Derivatives only from PASS

## Invariants
- Quality gate is the center; **empty days are success**
- High discard by default
- Humans and agents share the same IDs / JSON truth
- Do not clobber live curated surfaces (wiki series, Prompt Library sqlite)
- No agent image generation on the art axis
- Hub (`/data/hub.json`) + spine (`/data/sphere.json`) are the only entrance maps

## Axis gates
| Axis | Face | Gate |
|------|------|------|
| plan | `/workbench/` | constitution + value-fn |
| tech | `/sphere-tech/` | digest + workflow / allowlist |
| art | `/sphere-art/` | world_fit + concreteness |

## Change rule
New axis/source → update spine `axes`, hub `axes`, pass `validate_sphere.py`, empty-stack legal until gate is real.
