Adding Belgium (#163, #165) showed where the dashboard is not yet spec-driven: the release contract is artifact-driven, but adding a country still touches closed country unions and selector lists, dataset/geography labels, overview and target-browser copy, public/private link behaviour, and page gating. #163 also added a free-form external_validations manifest block rendered "whatever the manifest names" — removed in #165; cross-dataset comparison belongs only to the evaluation bundle (/microcosm/datasets, cross_dataset.frontend_bundle.v1, #164).
Acceptance test (in repo since #165): frontend/lib/microcosm/third-country-conformance.test.ts — a synthetic fourth country zz with four targets, filter-coded facets, a release description, and an unknown Chronicle publisher prefix must render the overview/targets shapes with one COUNTRY_REPO registration as the only country-specific change. Today: 4 assertions pass, 4 are test.todo:
- client country parsing is still a TypeScript country table;
- overview shaping does not read a typed artifact
presentation block;
- treemap/source labels do not consume
release_manifest.publisher_labels overrides;
- target shaping does not consume structured
dimensions; it needs the legacy filter-pattern adapter.
Schema additions that remove each remaining table are spelled out in docs/spec-driven-countries.md (typed country block with capabilities gating pages instead of country codes; narrow presentation block for existing text slots only; publisher_labels; a dimensions dictionary plus targets[].dimensions; structured targets[].source / targets[].variable). Readers stay backward-compatible while published releases migrate; after migration, name/filter parsing is a legacy adapter selected by artifact schema version, never by country.
Done when all four todos can be enabled without any zz conditional or table, and the cross-dataset page is configured per jurisdiction from the same registry (follow-up PR wires CROSS_DATASET_ARTIFACT_BASE_URL_<CC> and fails closed on the bundle's jurisdictions).
Adding Belgium (#163, #165) showed where the dashboard is not yet spec-driven: the release contract is artifact-driven, but adding a country still touches closed country unions and selector lists, dataset/geography labels, overview and target-browser copy, public/private link behaviour, and page gating. #163 also added a free-form
external_validationsmanifest block rendered "whatever the manifest names" — removed in #165; cross-dataset comparison belongs only to the evaluation bundle (/microcosm/datasets,cross_dataset.frontend_bundle.v1, #164).Acceptance test (in repo since #165):
frontend/lib/microcosm/third-country-conformance.test.ts— a synthetic fourth countryzzwith four targets, filter-coded facets, a release description, and an unknown Chronicle publisher prefix must render the overview/targets shapes with oneCOUNTRY_REPOregistration as the only country-specific change. Today: 4 assertions pass, 4 aretest.todo:presentationblock;release_manifest.publisher_labelsoverrides;dimensions; it needs the legacy filter-pattern adapter.Schema additions that remove each remaining table are spelled out in
docs/spec-driven-countries.md(typedcountryblock with capabilities gating pages instead of country codes; narrowpresentationblock for existing text slots only;publisher_labels; adimensionsdictionary plustargets[].dimensions; structuredtargets[].source/targets[].variable). Readers stay backward-compatible while published releases migrate; after migration, name/filter parsing is a legacy adapter selected by artifact schema version, never by country.Done when all four todos can be enabled without any
zzconditional or table, and the cross-dataset page is configured per jurisdiction from the same registry (follow-up PR wiresCROSS_DATASET_ARTIFACT_BASE_URL_<CC>and fails closed on the bundle'sjurisdictions).