378 lines
17 KiB
JSON
378 lines
17 KiB
JSON
{
|
|
"$schema": "../schemas/runtime-tuples.schema.json",
|
|
"schema_version": 2,
|
|
"migration_state": "candidate",
|
|
"promotion_readiness": {
|
|
"status": "blocked",
|
|
"reason": "Every observed alpha2 baseline fails the hardened exact-final-text contract, so none can be certified as the previous rollback tuple; the passing evidence is also bound to unmerged pull-request heads.",
|
|
"evidence": "evidence/2026-07-18-opencode-ruby-alpha2-regression.json",
|
|
"required_action": "Merge, deploy, and canary the exact main/merge tuple (or record an identical-tree attestation plus post-merge canary), then explicitly acknowledge bootstrap-current-only; previous remains null until the next meaningful independently passing release."
|
|
},
|
|
"consumers": {
|
|
"ajent-rails": {
|
|
"profile": "rails-persisted-turn",
|
|
"current": {
|
|
"status": "observed-production-contract-failed",
|
|
"consumer_commit": "8d8550265dca0ac06a41d5427c585ede56bbb808",
|
|
"opencode_ruby": {
|
|
"version": "0.0.1.alpha2",
|
|
"git_commit": "889d38332f98f5f7b76d16952b7204d8a5b9a662"
|
|
},
|
|
"opencode_rails": {
|
|
"version": "0.0.1.alpha2",
|
|
"git_commit": "9b0c4cd3cd31bdfebbb89567daca012d68a356ea"
|
|
},
|
|
"runtime": {
|
|
"tag_provenance": "docker-registry:5000/opencode-blackline:8d8550265dca0ac06a41d5427c585ede56bbb808",
|
|
"docker_image_id": "sha256:af479243e6ccf1206f57dffd13b8e9d2c028de401cccc954bcc2f00940274c60",
|
|
"source_commit": "8d8550265dca0ac06a41d5427c585ede56bbb808",
|
|
"reported_version": "1.18.3",
|
|
"upstream_base": "ghcr.io/anomalyco/opencode@sha256:c2d5d6398df72aac85cb1bdc8f900c71a9b75a33fb7c0a76dc1484e4b126e41e",
|
|
"upstream_base_proof": {
|
|
"method": "rootfs-prefix-layer-match",
|
|
"matched_layer_count": 4,
|
|
"status": "pass",
|
|
"note": "The deployed images match the exact 1.18.3 base layers even though this main commit selected the mutable upstream tag at build time."
|
|
},
|
|
"deployed_product_selection": {
|
|
"strategy": "mutable-latest",
|
|
"status": "observed-configuration-drift-failure",
|
|
"references": {
|
|
"aigl": "docker-registry:5000/opencode-aigl:latest",
|
|
"blackline": "docker-registry:5000/opencode-blackline:latest",
|
|
"raven": "docker-registry:5000/opencode-raven:latest"
|
|
},
|
|
"note": "The shared Blackline accessory used the SHA tag above, but Rails ProductConfig resolved per-user AIGL, Blackline, and Raven containers through mutable latest references."
|
|
},
|
|
"ci_built_product_images": {
|
|
"aigl": {
|
|
"tag_provenance": "docker-registry:5000/opencode-aigl:8d8550265dca0ac06a41d5427c585ede56bbb808",
|
|
"docker_image_id": "sha256:72c454f39d423618b75439122c9073dbba7c9071421e5f3abd12cf288dc1f898",
|
|
"source_commit": "8d8550265dca0ac06a41d5427c585ede56bbb808"
|
|
},
|
|
"blackline": {
|
|
"tag_provenance": "docker-registry:5000/opencode-blackline:8d8550265dca0ac06a41d5427c585ede56bbb808",
|
|
"docker_image_id": "sha256:af479243e6ccf1206f57dffd13b8e9d2c028de401cccc954bcc2f00940274c60",
|
|
"source_commit": "8d8550265dca0ac06a41d5427c585ede56bbb808"
|
|
},
|
|
"raven": {
|
|
"tag_provenance": "docker-registry:5000/opencode-raven:8d8550265dca0ac06a41d5427c585ede56bbb808",
|
|
"docker_image_id": "sha256:6c4da94a8dec6160f0b1b4d0e2cd9ff38a3faa18dbd2a8d6023a71f6416a544c",
|
|
"source_commit": "8d8550265dca0ac06a41d5427c585ede56bbb808"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"candidate": {
|
|
"status": "compatibility-certified",
|
|
"certification_scope": "pre-merge-pr-head-candidate-only",
|
|
"promotion_eligible": false,
|
|
"promotion_blockers": [
|
|
"consumer-ref-is-an-unmerged-pull-request-head",
|
|
"aigl-and-raven-candidate-content-artifacts-have-not-been-built-and-canaried",
|
|
"no-certified-previous-tuple"
|
|
],
|
|
"consumer_commit": "01cdf9da8e1b3f9a205d681e448aefefd9704db2",
|
|
"consumer_ref": {
|
|
"kind": "pull-request-head",
|
|
"repository": "ajaynomics/ajent-rails",
|
|
"commit": "01cdf9da8e1b3f9a205d681e448aefefd9704db2",
|
|
"tree": "9e93834ad16b60fa5edfe1cb3baaba193402be74",
|
|
"base_commit": "8d8550265dca0ac06a41d5427c585ede56bbb808",
|
|
"review_url": "https://gitea.ajay.to/ajaynomics/ajent-rails/pulls/946"
|
|
},
|
|
"opencode_ruby": {
|
|
"version": "0.0.1.alpha7",
|
|
"git_commit": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"tag_provenance": {
|
|
"tag": "v0.0.1.alpha7",
|
|
"annotated_tag_object": "abfce3ec8cb1ee468107d0845521769502251645"
|
|
},
|
|
"source": {
|
|
"type": "git",
|
|
"uri": "https://gitea.krishnan.ca/ajaynomics/opencode-ruby.git",
|
|
"requested_ref": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"locked_revision": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"loaded_source_proof": {
|
|
"status": "pass",
|
|
"source_class": "Bundler::Source::Git",
|
|
"loaded_version": "0.0.1.alpha7",
|
|
"observed_revision": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"test": "test/lib/opencode/runtime_image_provenance_test.rb"
|
|
}
|
|
}
|
|
},
|
|
"opencode_rails": {
|
|
"version": "0.0.1.alpha7",
|
|
"git_commit": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"tag_provenance": {
|
|
"tag": "v0.0.1.alpha7",
|
|
"annotated_tag_object": "61e128084b2b665c0ba20b332987e41794948d7c"
|
|
},
|
|
"source": {
|
|
"type": "git",
|
|
"uri": "https://gitea.krishnan.ca/ajaynomics/opencode-rails.git",
|
|
"requested_ref": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"locked_revision": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"loaded_source_proof": {
|
|
"status": "pass",
|
|
"source_class": "Bundler::Source::Git",
|
|
"loaded_version": "0.0.1.alpha7",
|
|
"observed_revision": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"test": "test/lib/opencode/runtime_image_provenance_test.rb"
|
|
}
|
|
}
|
|
},
|
|
"runtime": {
|
|
"reported_version": "1.18.3",
|
|
"upstream_base": "ghcr.io/anomalyco/opencode@sha256:c2d5d6398df72aac85cb1bdc8f900c71a9b75a33fb7c0a76dc1484e4b126e41e",
|
|
"product_selection": {
|
|
"strategy": "full-consumer-commit-tag",
|
|
"source_commit": "01cdf9da8e1b3f9a205d681e448aefefd9704db2",
|
|
"references": {
|
|
"aigl": "docker-registry:5000/opencode-aigl:01cdf9da8e1b3f9a205d681e448aefefd9704db2",
|
|
"blackline": "docker-registry:5000/opencode-blackline:01cdf9da8e1b3f9a205d681e448aefefd9704db2",
|
|
"raven": "docker-registry:5000/opencode-raven:01cdf9da8e1b3f9a205d681e448aefefd9704db2"
|
|
}
|
|
},
|
|
"product_images": {
|
|
"blackline": {
|
|
"tag_provenance": "ajent-opencode-blackline-canary:01cdf9da8e1b3f9a205d681e448aefefd9704db2",
|
|
"docker_image_id": "sha256:075cb49ac7fcb1f8972e051dff96d655fa0d0d911d83a523a6abf03a5e2e2935",
|
|
"source_commit": "01cdf9da8e1b3f9a205d681e448aefefd9704db2"
|
|
}
|
|
}
|
|
},
|
|
"deterministic_contract": {
|
|
"checked_at": "2026-07-18T23:16:13Z",
|
|
"docker_image_id": "sha256:075cb49ac7fcb1f8972e051dff96d655fa0d0d911d83a523a6abf03a5e2e2935",
|
|
"expected_text": "compat-ok",
|
|
"full_text": "compat-ok",
|
|
"authoritative_assistant_count": 1,
|
|
"model_request_count": 1,
|
|
"status": "pass"
|
|
},
|
|
"application_canary": {
|
|
"checked_at": "2026-07-18T23:28:16.435369Z",
|
|
"path": "Blackline::GenerateResponseJob",
|
|
"persisted_final_text": "compat-ok",
|
|
"authoritative_final_text": "compat-ok",
|
|
"authoritative_assistant_count": 1,
|
|
"model_request_count": 1,
|
|
"cleanup_status": "pass",
|
|
"status": "pass"
|
|
},
|
|
"certified_at": "2026-07-18T23:28:16.435369Z"
|
|
},
|
|
"previous": null
|
|
},
|
|
"travelwolf": {
|
|
"profile": "rails-persisted-turn",
|
|
"current": {
|
|
"status": "observed-production-contract-failed",
|
|
"consumer_commit": "1ca756d64f058c9e0379f69fc4a3d53330cfcd15",
|
|
"opencode_ruby": {
|
|
"version": "0.0.1.alpha2",
|
|
"git_commit": "889d38332f98f5f7b76d16952b7204d8a5b9a662"
|
|
},
|
|
"opencode_rails": {
|
|
"version": "0.0.1.alpha2",
|
|
"git_commit": "9b0c4cd3cd31bdfebbb89567daca012d68a356ea"
|
|
},
|
|
"runtime": {
|
|
"image": "ghcr.io/anomalyco/opencode@sha256:e975a0647576016dfdf77d54b979ca30d32b4750472c10263e9894aad6628c2a",
|
|
"reported_version": "1.16.1"
|
|
}
|
|
},
|
|
"candidate": {
|
|
"status": "compatibility-certified",
|
|
"certification_scope": "pre-merge-pr-head-candidate-only",
|
|
"promotion_eligible": false,
|
|
"promotion_blockers": [
|
|
"consumer-ref-is-an-unmerged-pull-request-head",
|
|
"no-certified-previous-tuple"
|
|
],
|
|
"consumer_commit": "b9a2c2dd361a6b2ea547cc67ee817b8eb4ce31e8",
|
|
"consumer_ref": {
|
|
"kind": "pull-request-head",
|
|
"repository": "ajaynomics/travelwolf",
|
|
"commit": "b9a2c2dd361a6b2ea547cc67ee817b8eb4ce31e8",
|
|
"tree": "8b3f8a97dc1f1d8b558a49523bf312d2810422df",
|
|
"base_commit": "75c92ed5248996e5278ac9a3351cc4eaf03df820",
|
|
"review_url": "https://gitea.ajay.to/ajaynomics/travelwolf/pulls/29"
|
|
},
|
|
"opencode_ruby": {
|
|
"version": "0.0.1.alpha7",
|
|
"git_commit": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"tag_provenance": {
|
|
"tag": "v0.0.1.alpha7",
|
|
"annotated_tag_object": "abfce3ec8cb1ee468107d0845521769502251645"
|
|
},
|
|
"source": {
|
|
"type": "git",
|
|
"uri": "https://gitea.krishnan.ca/ajaynomics/opencode-ruby.git",
|
|
"requested_ref": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"locked_revision": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"loaded_source_proof": {
|
|
"status": "pass",
|
|
"source_class": "Bundler::Source::Git",
|
|
"loaded_version": "0.0.1.alpha7",
|
|
"observed_ref": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"observed_revision": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"test": "test/services/travelwolf/opencode_env_wiring_test.rb"
|
|
}
|
|
}
|
|
},
|
|
"opencode_rails": {
|
|
"version": "0.0.1.alpha7",
|
|
"git_commit": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"tag_provenance": {
|
|
"tag": "v0.0.1.alpha7",
|
|
"annotated_tag_object": "61e128084b2b665c0ba20b332987e41794948d7c"
|
|
},
|
|
"source": {
|
|
"type": "git",
|
|
"uri": "https://gitea.krishnan.ca/ajaynomics/opencode-rails.git",
|
|
"requested_ref": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"locked_revision": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"loaded_source_proof": {
|
|
"status": "pass",
|
|
"source_class": "Bundler::Source::Git",
|
|
"loaded_version": "0.0.1.alpha7",
|
|
"observed_ref": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"observed_revision": "2a391ccad1d098e4bb51eb19b6ca52adaa79e5cb",
|
|
"test": "test/services/travelwolf/opencode_env_wiring_test.rb"
|
|
}
|
|
}
|
|
},
|
|
"runtime": {
|
|
"image": "ghcr.io/anomalyco/opencode@sha256:e975a0647576016dfdf77d54b979ca30d32b4750472c10263e9894aad6628c2a",
|
|
"reported_version": "1.16.1"
|
|
},
|
|
"deterministic_contract": {
|
|
"evidence": "evidence/2026-07-18-opencode-ruby-alpha7.json",
|
|
"checked_at": "2026-07-18T23:23:03Z",
|
|
"image": "ghcr.io/anomalyco/opencode@sha256:e975a0647576016dfdf77d54b979ca30d32b4750472c10263e9894aad6628c2a",
|
|
"opencode_ruby_commit": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"expected_text": "compat-ok",
|
|
"full_text": "compat-ok",
|
|
"authoritative_assistant_count": 1,
|
|
"model_request_count": 1,
|
|
"status": "pass"
|
|
},
|
|
"application_canary": {
|
|
"run_id": "travelwolf-alpha7-ref-20260718T232211Z-48eadf",
|
|
"checked_at": "2026-07-18T23:22:26.216140Z",
|
|
"final_text": "TRAVELWOLF_ALPHA7_REF_PIN_READY",
|
|
"subscription_ready_before_prompt": true,
|
|
"opencode_api_prompt_count": 1,
|
|
"provider_request_count_observed": false,
|
|
"message_roles": [
|
|
"user",
|
|
"assistant"
|
|
],
|
|
"cleanup_status": "pass",
|
|
"status": "pass"
|
|
},
|
|
"certified_at": "2026-07-18T23:35:57Z"
|
|
},
|
|
"previous": null
|
|
},
|
|
"mushu": {
|
|
"profile": "ruby-rest-sse",
|
|
"current": {
|
|
"status": "observed-production-contract-failed",
|
|
"consumer_commit": "fe16e5bab028e3c92cd5508ef2cebd9bfa23386f",
|
|
"opencode_ruby": {
|
|
"version": "0.0.1.alpha2",
|
|
"git_commit": "889d38332f98f5f7b76d16952b7204d8a5b9a662"
|
|
},
|
|
"runtime": {
|
|
"tag_provenance": "docker-registry:5000/mushu-opencode:sha-99d6328b1",
|
|
"image": "docker-registry:5000/mushu-opencode@sha256:ed6293ca87e6db1dc07870d3ed6da21960743e6e2e904533b3c566d334b58d6a",
|
|
"docker_image_id": "sha256:ed6293ca87e6db1dc07870d3ed6da21960743e6e2e904533b3c566d334b58d6a",
|
|
"source_commit": "99d6328b18ff8a340a928449a2aa8bc184a063f9",
|
|
"base_image": "docker-registry:5000/mushu-opencode-base@sha256:de8a6adeefb30ce1c474cde23fe173dfe059434a13df0a54d14c7473edb33e16",
|
|
"reported_version": "0.0.0-permission-shortcuts-202606300721"
|
|
}
|
|
},
|
|
"candidate": {
|
|
"status": "compatibility-certified",
|
|
"certification_scope": "pre-merge-pr-head-candidate-only",
|
|
"promotion_eligible": false,
|
|
"promotion_blockers": [
|
|
"consumer-ref-is-an-unmerged-pull-request-head",
|
|
"no-certified-previous-tuple"
|
|
],
|
|
"consumer_commit": "7cff22788b36ae703f6b1b8fa39b52d6dbafe7e0",
|
|
"consumer_ref": {
|
|
"kind": "pull-request-head",
|
|
"repository": "ajaynomics/mushu",
|
|
"commit": "7cff22788b36ae703f6b1b8fa39b52d6dbafe7e0",
|
|
"tree": "762eb8dcc7042a52cd240ca69acdb9cb45150a84",
|
|
"base_commit": "fe16e5bab028e3c92cd5508ef2cebd9bfa23386f",
|
|
"review_url": "https://gitea.ajay.to/ajaynomics/mushu/pulls/1"
|
|
},
|
|
"opencode_ruby": {
|
|
"version": "0.0.1.alpha7",
|
|
"git_commit": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"tag_provenance": {
|
|
"tag": "v0.0.1.alpha7",
|
|
"annotated_tag_object": "abfce3ec8cb1ee468107d0845521769502251645"
|
|
},
|
|
"source": {
|
|
"type": "git",
|
|
"uri": "https://gitea.krishnan.ca/ajaynomics/opencode-ruby.git",
|
|
"requested_ref": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"locked_revision": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"loaded_source_proof": {
|
|
"status": "pass",
|
|
"source_class": "Bundler::Source::Git",
|
|
"loaded_version": "0.0.1.alpha7",
|
|
"observed_ref": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"observed_revision": "78b6f9c9e9c7d58b699af1c3c17764acd33de798",
|
|
"loaded_file_within_spec": true,
|
|
"test": "test/services/mushu/runtime/opencode_dependency_provenance_test.rb"
|
|
}
|
|
}
|
|
},
|
|
"runtime": {
|
|
"tag_provenance": "docker-registry:5000/mushu-opencode:sha-99d6328b1",
|
|
"image": "docker-registry:5000/mushu-opencode@sha256:ed6293ca87e6db1dc07870d3ed6da21960743e6e2e904533b3c566d334b58d6a",
|
|
"docker_image_id": "sha256:ed6293ca87e6db1dc07870d3ed6da21960743e6e2e904533b3c566d334b58d6a",
|
|
"source_commit": "99d6328b18ff8a340a928449a2aa8bc184a063f9",
|
|
"base_image": "docker-registry:5000/mushu-opencode-base@sha256:de8a6adeefb30ce1c474cde23fe173dfe059434a13df0a54d14c7473edb33e16",
|
|
"reported_version": "0.0.0-permission-shortcuts-202606300721"
|
|
},
|
|
"deterministic_contract": {
|
|
"checked_at": "2026-07-18T23:23:41Z",
|
|
"image": "docker-registry:5000/mushu-opencode@sha256:ed6293ca87e6db1dc07870d3ed6da21960743e6e2e904533b3c566d334b58d6a",
|
|
"expected_text": "compat-ok",
|
|
"full_text": "compat-ok",
|
|
"authoritative_assistant_count": 1,
|
|
"model_request_count": 1,
|
|
"status": "pass"
|
|
},
|
|
"application_canary": {
|
|
"checked_at": "2026-07-18T23:26:06.865190Z",
|
|
"response_text": "compat-ok",
|
|
"authoritative_final_text": "compat-ok",
|
|
"message_roles": [
|
|
"user",
|
|
"assistant"
|
|
],
|
|
"authoritative_assistant_count": 1,
|
|
"provider_request_count": 1,
|
|
"mapping_and_last_turn_persisted": true,
|
|
"active_claim_cleared": true,
|
|
"opencode_session_deleted": true,
|
|
"synthetic_database_rows_after_cleanup": 0,
|
|
"status": "pass"
|
|
},
|
|
"certified_at": "2026-07-18T23:26:06.865190Z"
|
|
},
|
|
"previous": null
|
|
}
|
|
}
|
|
}
|