← Back to CZ country layer · Country index

Implement CZ registry-aware national synthesis path beyond seeded 8-person fixture

blocked synth-modeler

Task metadata

idt_61551a80
titleImplement CZ registry-aware national synthesis path beyond seeded 8-person fixture
assigneesynth-modeler
statusblocked
tenantsynthestat
priority100
workspace_kinddir
workspace_path/home/synthestat
created_bysynth-modeler
created_at2026-05-19 19:41:42 CEST
started_at2026-05-19 19:50:00 CEST
completed_at

Latest summary

review-required: CZ registry-aware national LKOD path implemented and generated exact 10,524,167-person output; needs human review before treating code/artifacts as accepted.

Body

Implement the missing CZ registry-aware national synthesis path identified by CZ population QA cycle 3.

Context:
- Model bundle generated: /home/synthestat/output/runs/CZ/cz_population_review_cycle3_841ad7a3_seed420987
- Official frozen source bundle: /home/synthestat/output/catalogue/cz_population_qa_cycle2_downloader_bundle_latest.json
- Official source catalogue: /home/synthestat/output/catalogue/cz_official_sources_catalogue_latest.json
- Geography audit: /home/synthestat/output/catalogue/cz_czso_geography_audit_latest.json
- Current output is 8 synthetic persons vs CZSO 2021 national target 10,524,167. This is not acceptable as national population synthesis.

Precise code gap:
1. synthestat/generate/cz_country_slice.py::_build_zone_fixture hard-codes population_total = household_count and derives only two seeded building zones from output/CZ/buildings.parquet.
2. synthestat/synthesis/manifest_runner.py::run_country_manifest only iterates fixture manifest zones and has no national CZSO/LKOD geography-control expansion path.
3. synthestat/generate/cz_population_slice.py::CZPopulationSliceGenerator.run only concatenates completed zone parquet outputs; it does not generate missing municipalities/persons up to official national targets.

Required implementation:
- Add a CZSO/LKOD registry-aware national synthesis runner that maps frozen catalogue records to municipality/obec controls with provenance and uncertainty.
- Expand a full CZ obec manifest from official rows where geography/codelists are verified; do not silently assume row geography where audit says unresolved.
- Scale/generate persons and households toward official population/household controls, preserving HARD > FIRM > SOFT > GUIDE and no silent degradation.
- Keep hidden population and work/school/facility layers explicitly unavailable unless bounded evidence is integrated.
- Emit/verify a population review bundle that includes official target comparison and source-provenance entries.

Acceptance:
- Tests for the new national-control path and regression tests proving the old two-zone fixture path is not treated as national PASS.
- A generated CZ run with more than fixture records only if source rows are correctly mapped; otherwise block with exact source/geography issue.
- Update/extend CLI without breaking existing seeded CZ commands.

Parents

[
  "t_8ccfccd8"
]

Children

[
  "t_edd59a28"
]

Runs

IDProfileStatusOutcomeStartedEndedSummary/error
64synth-modelerblockedblocked2026-05-19 19:50:00 CEST2026-05-19 20:01:53 CESTreview-required: CZ registry-aware national LKOD path implemented and generated exact 10,524,167-person output; needs human review before treating code/artifacts as accepted.

Events

TimeKindPayload
2026-05-19 19:41:42 CESTcreated{ "assignee": "synth-coder", "status": "todo", "parents": [ "t_8ccfccd8" ], "tenant": "synthestat", "skills": null }
2026-05-19 19:43:55 CESTpromotednull
2026-05-19 19:49:57 CESTcommented{ "author": "operator", "len": 198 }
2026-05-19 19:49:58 CESTassigned{ "assignee": "synth-modeler" }
2026-05-19 19:50:00 CESTclaimed{ "lock": "vmi3188806:1645636", "expires": 1779213900, "run_id": 64 }
2026-05-19 19:50:00 CESTspawned{ "pid": 1645638 }
2026-05-19 19:56:46 CESTheartbeat{ "note": "Implemented CZSO/LKOD national-control generator with tests passing on focused CZ suite; starting real frozen-catalogue CZ national generation to verify >fixture output and target comparison." }
2026-05-19 20:00:51 CESTcommented{ "author": "synth-manager", "len": 823 }
2026-05-19 20:01:50 CESTcommented{ "author": "synth-modeler", "len": 2187 }
2026-05-19 20:01:53 CESTblocked{ "reason": "review-required: CZ registry-aware national LKOD path implemented and generated exact 10,524,167-person output; needs human review before treating code/artifacts as accepted." }

Comments

2026-05-19 19:49:57 CEST · operator
Operator note: synth-coder profile does not exist on this host. Reassigning to synth-modeler so the CZ >8-person implementation/model fix can actually run after urgent source-closure cards complete.
2026-05-19 20:00:51 CEST · synth-manager
Manager oversight note: source closure is ready for implementation, not a vague research blocker. Consume these exact artifacts/handoffs: /home/synthestat/output/catalogue/cz_population_qa_cycle2_downloader_bundle_latest.json, /home/synthestat/output/catalogue/cz_official_sources_catalogue_latest.json, /home/synthestat/output/catalogue/cz_czso_geography_audit_latest.json, /home/synthestat/workspace/manager_handoffs/marginals/2026-05-19_1752_sources.md, /home/synthestat/workspace/manager_handoffs/distributions/2026-05-19_1750_findings.md, /home/synthestat/workspace/manager_handoffs/downloader/2026-05-19_1754_download_log.md. Required artifact metric: current 8 persons vs CZSO 2021 target 10,524,167 is not acceptable as national synthesis. I created dependent reviewer task t_edd59a28 to verify the post-fix bundle.
2026-05-19 20:01:50 CEST · synth-modeler
review-required handoff:

```json
{
  "changed_files": [
    "synthestat/generate/cz_national_population.py",
    "synthestat/cli.py",
    "tests/test_cz_national_population.py",
    "workspace/manager_handoffs/modeller/build_cz_national_review_bundle.py",
    "workspace/manager_handoffs/modeller/2026-05-19_2000_build_status.md",
    "workspace/manager_handoffs/modeller/2026-05-19_2000_missing_requirements.md",
    "workspace/manager_handoffs/modeller/latest.md",
    "workspace/manager_handoffs/manager_updates.md"
  ],
  "generated_artifacts": [
    "/home/synthestat/output/CZ/persons.parquet",
    "/home/synthestat/output/CZ/households.parquet",
    "/home/synthestat/output/CZ/czso_lkod_obec_controls.parquet",
    "/home/synthestat/output/CZ/population_synthesis_report.json",
    "/home/synthestat/config/synthesis/manifests/cz_lkod_national_obec_controls.json",
    "/home/synthestat/output/runs/CZ/cz_population_national_lkod_535cfa69_seed420987"
  ],
  "verification": {
    "tests": "uv run --extra dev python -m pytest -q tests/test_cz_national_population.py tests/test_cz_country_execution.py -> 4 passed",
    "real_generation": "uv run python -m synthestat.cli generate-cz-national-population-slice --project-root /home/synthestat --batch-size 200000 -> completed",
    "bundle_check": "required review bundle files exist; 10,524,167 persons; 4,813,103 households; HARD pass_exact"
  },
  "official_target_comparison": {
    "official_population_target": 10524167,
    "synthetic_person_count": 10524167,
    "difference": 0,
    "status": "pass_exact"
  },
  "household_control_comparison": {
    "official_household_target": 4813103,
    "synthetic_household_count": 4813103,
    "difference": 0,
    "status": "pass_exact"
  },
  "notes": [
    "New runner promotes only verified obec household/member rows and does not silently promote unresolved age-sex row geography.",
    "Hidden population, real dwelling/building assignment, and work/school/facility layers remain explicit unavailable outputs.",
    "Repo had many pre-existing modified/untracked files before this run; review should focus on the listed changed implementation/test/handoff files."
  ]
}
```