Problem
The three releases currently on policyengine/populace-us are mutually inconsistent:
| release |
build_manifest.json |
release_manifest.json |
sound_ecps_replacement_comparison.json |
populace-us-2024-1abddeb-20260611 |
❌ missing |
✅ (852 B, unversioned schema: release_id, country_id, artifacts, validation) |
❌ missing |
populace-us-2024-5da5a95-20260611 |
✅ |
✅ (168 KB, schema_version: 1) |
✅ |
populace-us-2024-9f1260b-20260611 |
✅ |
✅ (2.7 KB, schema_version: 1) |
✅ |
So a consumer iterating releases/ hits: a release with no build manifest at all, and two different release_manifest.json schemas (one without schema_version). The 5da5a95 vs 9f1260b size difference (168 KB vs 2.7 KB) also suggests the manifest contents aren't stable yet.
DESIGN.md makes "stage manifests are load-bearing" a binding process rule; the release directory is the most public manifest of all.
Proposal
- Name the mandatory files for a release to count as published (suggest:
build_manifest.json, release_manifest.json, sound_ecps_replacement_comparison.json).
- Version the release-manifest schema and reject publishing on schema drift (a ten-line check in the publish step, in the spirit of the behavioral-contract-tests rule).
- Either backfill or delete incomplete releases (
1abddeb) so the listing is trustworthy.
Consumer
PolicyEngine/calibration-diagnostics Populace mode currently defends against this by filtering to releases that contain build_manifest.json, but the contract should live with the producer, not in every consumer.
🤖 Generated with Claude Code
Problem
The three releases currently on
policyengine/populace-usare mutually inconsistent:populace-us-2024-1abddeb-20260611release_id,country_id,artifacts,validation)populace-us-2024-5da5a95-20260611schema_version: 1)populace-us-2024-9f1260b-20260611schema_version: 1)So a consumer iterating
releases/hits: a release with no build manifest at all, and two differentrelease_manifest.jsonschemas (one withoutschema_version). The 5da5a95 vs 9f1260b size difference (168 KB vs 2.7 KB) also suggests the manifest contents aren't stable yet.DESIGN.md makes "stage manifests are load-bearing" a binding process rule; the release directory is the most public manifest of all.
Proposal
build_manifest.json,release_manifest.json,sound_ecps_replacement_comparison.json).1abddeb) so the listing is trustworthy.Consumer
PolicyEngine/calibration-diagnosticsPopulace mode currently defends against this by filtering to releases that containbuild_manifest.json, but the contract should live with the producer, not in every consumer.🤖 Generated with Claude Code