Context
The publication pipeline is untracked and manual. The live dataset card, CHANGELOG.md, metrics/definitions.md, metrics/weights.json, and scripts/{generate,evaluate,contamination_check}.py exist only in /Users/caiotheodoro/Documents/personal/hf-publish/ — a directory that is not a git repo. No huggingface_hub/HfApi/upload_folder usage exists anywhere in reconforge. Card drift is already real: hf-publish/reconforge-recon-lora/README.md is 3 hunks behind reconforge/model/README.md. Every card fix in the other issues will be hand-copied twice unless this is fixed first — which is why this issue should land before the wave of card edits.
Evidence
ls /Users/caiotheodoro/Documents/personal/hf-publish/ — recon-eval/ and reconforge-recon-lora/ staging dirs; git -C .../hf-publish status → not a repository.
diff reconforge/model/README.md hf-publish/reconforge-recon-lora/README.md — 3 hunks.
grep -rn "huggingface_hub\|HfApi\|upload_folder" reconforge/ — no hits.
Task
- Move the staging content into the repo:
publish/recon-eval/ and publish/reconforge-recon-lora/ (or make model/README.md the single source and generate the staging copy).
- Write
scripts/publish.py using huggingface_hub.upload_folder with explicit repo_id, revision tagging, and a --dry-run diff mode.
- Single-source the cards: the model card lives at
model/README.md only; publish script pushes it. Kill the second copy.
- Add a drift check (used by the CI issue):
publish.py --check fails if the Hub card differs from the repo card.
- Bring
metrics/definitions.md + weights.json under the repo and link them from both cards (this also closes spec §11.7).
Acceptance criteria
hf-publish/ contents tracked in reconforge; one canonical card file per artifact.
python scripts/publish.py --dry-run shows a clean diff against the live Hub repos.
- Drift check exists and passes.
Dependencies
Do this before the T0 card-fix issues are pushed to the Hub, so those fixes flow through the tracked pipeline instead of adding one more manual copy.
Cost tier
T1-cheap — file moves + one small script; Hub uploads are free.
Context
The publication pipeline is untracked and manual. The live dataset card,
CHANGELOG.md,metrics/definitions.md,metrics/weights.json, andscripts/{generate,evaluate,contamination_check}.pyexist only in/Users/caiotheodoro/Documents/personal/hf-publish/— a directory that is not a git repo. Nohuggingface_hub/HfApi/upload_folderusage exists anywhere in reconforge. Card drift is already real:hf-publish/reconforge-recon-lora/README.mdis 3 hunks behindreconforge/model/README.md. Every card fix in the other issues will be hand-copied twice unless this is fixed first — which is why this issue should land before the wave of card edits.Evidence
ls /Users/caiotheodoro/Documents/personal/hf-publish/—recon-eval/andreconforge-recon-lora/staging dirs;git -C .../hf-publish status→ not a repository.diff reconforge/model/README.md hf-publish/reconforge-recon-lora/README.md— 3 hunks.grep -rn "huggingface_hub\|HfApi\|upload_folder" reconforge/— no hits.Task
publish/recon-eval/andpublish/reconforge-recon-lora/(or makemodel/README.mdthe single source and generate the staging copy).scripts/publish.pyusinghuggingface_hub.upload_folderwith explicitrepo_id,revisiontagging, and a--dry-rundiff mode.model/README.mdonly; publish script pushes it. Kill the second copy.publish.py --checkfails if the Hub card differs from the repo card.metrics/definitions.md+weights.jsonunder the repo and link them from both cards (this also closes spec §11.7).Acceptance criteria
hf-publish/contents tracked in reconforge; one canonical card file per artifact.python scripts/publish.py --dry-runshows a clean diff against the live Hub repos.Dependencies
Do this before the T0 card-fix issues are pushed to the Hub, so those fixes flow through the tracked pipeline instead of adding one more manual copy.
Cost tier
T1-cheap — file moves + one small script; Hub uploads are free.