{ "schema_version": "distribution-contract-v1", "contract_version": "1.0.0", "artifact": { "name": "codex-controller-loop", "entrypoints": [ "codex-controller-loop" ], "distribution_index": { "canonical": "dist/index.json", "legacy": [ { "path": "dist/{contract_version}/index.json", "status": "deprecated", "deprecation_sunset": "2026-07-01T00:00:00Z", "migration_deadline": "2026-07-01T00:00:00Z", "notes": "Temporary compatibility path while downstream scripts migrate to dist/index.json." } ], "resolution_precedence": [ "dist/index.json", "dist/{contract_version}/index.json" ] }, "versioning": { "model": "semver", "release_channels": [ "stable" ], "pre_release": "supported", "pinning_guidance": "Pin by exact tuple: version, target, profile, git_rev, toolchain, dist_revision" }, "naming": { "namespace": "dist", "canonical_pattern": "codex-controller-loop-v{version}-{target}-{profile}-{rust}-{gitsha}-{dist_revision}.{ext}", "immutable_fields": [ "version", "target", "profile", "rust", "gitsha", "dist_revision" ] }, "release_artifacts": { "formats": [ "tar.gz" ], "required_manifests": [ "checksums.json", "manifest.json", "provenance.json" ], "index_path_template": "dist/index.json", "legacy_index_path_template": "dist/{contract_version}/index.json", "artifact_directory_template": "dist/{contract_version}/{version}/{target}/{profile}/{toolchain}/{gitsha}/{dist_revision}", "orchestrator": { "name": "scripts/release-orchestrator.py", "config": "scripts/release-orchestrator.config.json" } } }, "compatibility_matrix": [ { "platform_family": "linux", "os": "Linux", "arch": [ "x86_64", "aarch64" ], "compatibility": "recommended", "runtime_expectations": [ "posix-like terminal with ANSI support", "UTF-8 locale", "interactive TTY for full features" ] }, { "platform_family": "darwin", "os": "Darwin", "arch": [ "x86_64", "aarch64" ], "compatibility": "recommended", "runtime_expectations": [ "POSIX terminal", "UTF-8 locale", "interactive TTY for full features" ] }, { "platform_family": "windows", "os": "Windows", "arch": [ "x86_64" ], "compatibility": "planned", "runtime_expectations": [ "UTF-8 locale", "terminal support in Windows console" ] } ], "assumptions": { "rust": { "edition": "2021", "toolchain": "release-time explicit rustc version", "minimum_guaranteed": null, "minimum_for_release": "recorded per artifact in manifest" }, "terminal": "ANSI-capable terminal and TTY are required for interactive TUI mode", "non_tty_mode": "operable only for restricted command-and-control paths" }, "reproducibility_metadata": { "required": true, "fields": [ "version", "target", "profile", "build_time_inputs", "git_rev", "toolchain", "checksums" ] }, "provenance_metadata": { "schema_version": "distribution-provenance-v1", "required_fields": [ "artifact", "build_inputs", "build_artifact", "generated_at" ] }, "checksum_policy": { "algorithm": "sha256", "required": true, "file": "checksums.json", "consumer_check_required": true }, "maintenance_governance": { "release_ownership": { "primary_owner": "Repository maintainers and release steward on duty", "ownership_handoff_required": [ "Update docs/distribution.md, docs/distribution-changelog.md, and docs/distribution-contract.json in lockstep for any compatibility-relevant changes", "Attach a passing scripts/release-gate.py run log to the release PR or merge checklist", "Verify the release steward handoff note in the PR description before publish" ], "handoff_minimum_gap": "at least one full release cycle" }, "deprecation_governance": { "required_notice_days": 60, "retention_for_retirement": "one release cycle", "retirement_announcement_channels": [ "docs/distribution.md", "docs/distribution-changelog.md" ] }, "retention_minimum_generations": 6 }, "compatibility_policy": { "contract_versioning": "distribution-contract-v1", "breaking_change_requires_bump": true, "deprecation_notice_cycles": 1, "assumption_changes_requires_changelog": true }, "deprecation_policy": { "legacy_index_path": { "supported_until": "2026-07-01T00:00:00Z", "sunset_reason": "Canonical index migration to dist/index.json.", "required_action": "All consumers must resolve artifacts from the canonical index path and remove legacy hard-coding before sunset.", "notice_channels": [ "docs/distribution-changelog.md", "docs/distribution.md" ] }, "migration_window": { "minimum_notice_days": 60, "default_alias_removal_after": "2026-07-01T00:00:00Z" } }, "retention_policy": { "kept_release_generations": 6, "retention_rationale": "Keep at least six release generations to support rollback and reproducible debugging.", "migration_required_on_removal": true, "migration_minimum_notice_window": "one release cycle" }, "migration_steps": { "breaking_change_notice": [ "Add an entry to docs/distribution-changelog.md with impact summary and effective release", "Provide compatibility matrix and assumption deltas in docs/distribution.md", "Publish manifest/metadata updates alongside artifacts before deprecation cutoff" ], "rollback_path": "Consumers can repin immutable artifact tuple in their integration config." }, "changelog": { "file": "docs/distribution-changelog.md", "required_on_contract_changes": true } }