# Release acceptance A Codex MMO release is acceptable only when the source tree, generated archives, and cleanly extracted archive trees all represent the same package. ## Required gates Run from the project root: ```bash make clean-bytecode make test make validate make release ``` `make test` runs the offline integration suite. `make validate` checks required files, source syntax, configuration syntax, profile semantics, model inventories, output contracts, package safety, catalog reproducibility, and the integration suite. `make release` repeats validation, builds deterministic tar.gz and ZIP artifacts, verifies every archived file against the staged file manifest, and performs a second build to confirm byte-for-byte reproducibility. A successful source release must satisfy all of the following: - Every bundled profile resolves and compiles into a content-addressed snapshot. - The installed Codex binary is exactly 0.149.0 and its 401 generated experimental schema files match the pinned digest, including Unix host, thread/goal/turn/history/control, pending-input, elicitation, and approval request/response contracts. - Every role receives the snapshot's exact generated `AGENTS.md`. Spawn- or control-capable roles receive the registered orchestration `SKILL.md`; true leaf homes do not materialize it, and leaf config layers explicitly disable the inherited skill. Leaf guidance declares the no-spawn/no-control boundary, and changed guidance changes snapshot identity. - The bundled set is exactly eight featured workload profiles plus four documented experimental labs; retired IDs have no aliases, compatibility readers, or install-time migration. - Every profile has a nonredundant purpose, a justified exact route-qualified model assignment, and a matching smoke/evaluation scenario. - Native-agent, Agent-MCP, and hybrid capabilities are represented where their enforcement trade-offs fit; no pure-native profile is required merely to exercise a mode. - Tool MCP definitions remain operator-owned, profile grants can only narrow finite tool allowlists, snapshots contain no credential values, and generated native-role overlays do not widen authority. - Low-trust roles are mechanically restricted. - Native-only roles do not claim strict contract enforcement, and no profile documents an advisory native control as an MCP guarantee. - Roots use dependency-only waiting instructions; spawn- or control-capable generated guidance describes inspect/trace/steer/interrupt/pause/continue/detach/stop/finalize/compact/respond/effort/fork controls; write-heavy MCP work has at most one active worker writer or read-only workers; and bounded nesting cannot exceed declared depth/budget. - Every root and Agent-MCP worker uses a non-ephemeral Unix app-server thread, authoritative event and terminal history, goal/turn lifecycle, warning-only stall policy, bounded explicit finalization, exact-thread recovery, `suspended` continuation, and partial-result retention. - Mutating controls serialize revision assignment through delivery; a lost reply after delivery begins is retained as `delivery_unknown`, not rewritten as a definite rejection or failure. - Interactive and noninteractive roots use the same app-server host; the TUI is a remote client. An external harness wall limit detaches while work continues, and pause, continue, detach, graceful full-stop, and immediate cancel have distinct tests. - Positive decomposable evaluation tasks require their intended reachable MCP roles, while negative controls remain free to reject unnecessary delegation. - Required multimodal roles preserve image input through the complete compiled transport, and the visual evaluation carries a real reference image. - The release-time OpenRouter, OpenCode Zen/Go, Z.AI, Z.AI Coding Plan, and Codex inventories match their hash-checked common snapshots and the generated catalog baseline. - Python, shell, TOML, and JSON files parse successfully. - No credentials, private keys, unresolved template markers, development markers, bytecode, or symlinks are present. - The release tree includes the runtime, CLI, catalog, profiles, documentation, evaluations, tests, installer, and uninstaller. - Tar and ZIP member names, exact permission modes, sizes, and content hashes match the staged release tree. - Archive member-count and expanded-byte ceilings are enforced progressively during streaming tar inspection/extraction and bounded ZIP extraction. - Repeated builds with the same source epoch produce identical archive hashes. - Remote TUI launch passes the PTY color, foreground-process-group, live-resize, and host-retention regression test. - Every external selected model has an exact startup catalog slug and validated context, reasoning, modality, and patch-tool metadata. - Mixed built-in/external native-agent processes preserve the active Codex bundled catalog while adding generated external route rows. - Every featured suite provides matched configured-root, strongest-single, accessible-service, root-plus-worker, full-profile, and complete worker-ablation evidence; release evaluation uses five trials per task. - Worker results use explicit read/accept/reject/integrate states, and delegated writer patches cannot reach the canonical workspace without accepted, audited integration. - OpenRouter policy and telemetry distinguish the aggregator route from the actual serving provider, and incomplete route identity fails featured promotion. - API dollars, API-equivalent estimates, subscription units, and local resource time remain separate ledgers with no aggregate score. - Every MMO-owned document uses exact schema 8 and, where applicable, exact package/profile version 8.0.0. Other generations are rejected at load time without mutation, compatibility inspection, alternate host, fallback, or migration. No redundant lifecycle-version field exists. Exactly one immutable run exists per session and terminal sessions do not resume. - A generation-8 immutable snapshot whose resolved profile is not generation 8 is rejected before its policy can be interpreted by the current runtime. ## Archive verification The release builder writes a generation-8 `PACKAGE-MANIFEST.json` inside each archive. The manifest records every packaged source file, normalized mode, size, SHA-256 digest, aggregate file count, and total payload bytes. The verifier compares exact permission bits rather than only executable status and calculates a deterministic tree digest over paths, modes, sizes, and bytes. Verify externally supplied artifacts with: ```bash sha256sum -c codex-multimodel-orchestrator-8.0.0-SHA256SUMS.txt ``` Inspect member counts: ```bash tar -tzf codex-multimodel-orchestrator-8.0.0-linux.tar.gz | wc -l unzip -Z1 codex-multimodel-orchestrator-8.0.0-linux.zip | wc -l ``` Extract each archive into a separate empty directory and run: ```bash make test make validate ``` The extracted package must pass the same gates as the source tree. ## Live acceptance Offline acceptance proves package integrity and orchestration semantics without consuming provider quota. Deployment acceptance additionally requires credentials and reachable endpoints: ```bash codex-mmo validate --all-profiles codex-mmo tool-mcp validate codex-mmo catalog verify --remote --codex codex-mmo doctor --profile adaptive-engineering --live --probe codex-mmo profile smoke adaptive-engineering --cwd "$PWD" ``` Repeat live smoke tests for every profile intended for production. A provider account may expose a different live inventory from the release-time baseline; refresh catalog overlays only after reviewing the discovered models and capabilities. ## Acceptance evidence For a formal release, retain: - Test and validation output. - The generated validation JSON report. - Both release archives. - The checksum file. - Archive member counts. - A clean-extraction comparison report. - Live doctor and smoke results for deployed profiles. Live provider checks are deployment evidence and are not substituted by offline tests.