Repository navigation
fix(auto-sync): mirror trusted manifest acquisition into research repairs - #358
Conversation
…airs Run 38328179891 failed validation because the cann/vllm proposal recorded every base tag's manifest-list digest as platform_digest and wrongly concluded the tags are linux/amd64-only. Validation caught the mismatch, but the bare reason gave no field-level detail, and the proposal could no longer be repaired at that stage. - Report the field-level difference (field, claimed, acquired) when a candidate manifest differs from the trusted registry acquisition. - Mirror that acquisition in proposal finalization via _check_manifests, where a bounded repair session can still correct the reply; the error carries the acquired values, so the repair is transcription and needs no network. - State the manifest recording rule in the proposal prompt, its output contract, the runner-release-sync skill, and release-automation.md: a tag digest resolving to a manifest list or OCI index means platform_digest is the row platform's child digest, never the list digest. - Record in the cann/vllm upgrade guide that Ascend base tags publish multi-platform manifest lists, so platform rows come from list children and matrix platforms are never narrowed without listing the children. Signed-off-by: thxCode <[email protected]>
There was a problem hiding this comment.
Code Review
This pull request introduces stricter validation and documentation for image manifest fields (such as digest, platform_digest, and config_platform) acquired from crane output, ensuring they correctly map to multi-platform manifest lists or OCI indices. It refactors tools/auto_sync/run.py to extract manifest validation into a reusable _require_acquired_manifest helper, which is now also executed during the finalization phase via _check_manifests. Feedback on the changes suggests using defensive dictionary access in _require_acquired_manifest to prevent potential KeyError or TypeError crashes when the manifest field or its keys are missing or null.
Review triage summaryFeedback accounted for: 1 review (Gemini Code Assist, COMMENTED), 1 inline thread, 0 issue comments, no suppressed comments in the review body.
Reasoning in brief: the five-key manifest shape of a ready row is an enforced invariant of |
What
platform_digest: claimed sha256:…, acquired sha256:…) instead of a bare sentence._check_manifests), where a bounded repair session can still correct the reply. The error carries the acquired values, so the correction is transcription and needs no network access.platform_digestis the row platform's child digest, never the list digest (only a single-platform image manifest keeps them equal).Why
Auto-sync run 38328179891 failed validation: the cann/vllm proposal recorded every base tag's manifest-list digest as
platform_digest(37c73f9e…etc.) and concluded the tags are linux/amd64-only, dropping arm64 from the matrix. All fourv0.30.0rc1*tags actually publish amd64+arm64 children (verified with crane: amd64 children05d4352c…,72da828d…,fc3e3d52…,58b68393…, plus arm64 children in every list). Validation's trusted acquisition caught the mismatch correctly — this PR makes that failure diagnosable at a glance and repairable before validation.Tests
test_fabricated_manifest_rejected_before_write: the failed group's reason namesplatform_digestand carries both the fabricated and the acquired digest.test_research_manifest_mismatch_repair_transcribes_acquired_values: a fabricatedplatform_digestis rejected during proposal finalization, the repair prompt carries the acquired values, and the corrected proposal completes the research stage.tests/auto_syncsuite: 827 passed, 17 skipped. Pre-commit hooks andmkdocs build --strictpass.