chore!: document the schema-first workflow, adopt gen3schemadev 3.1.0, remove dead scaffolding#9
Merged
Merged
Conversation
…, remove dead scaffolding The node YAMLs in dictionary/prod_dict/ are this repository's source of truth and are edited by hand, but nothing said so. The README documented a "generate into test_dict, copy elements into prod_dict" loop that nobody follows, leaving a new contributor no way to know where the model lives. dictionary/input_dd.yaml was a fork artefact, not a build input. It carried no property definitions at all - 27 node stubs and 26 link triples, frozen since 2025-11-10 while the dictionary moved on across 29 commits. Regenerating from it would have destroyed 343 of 448 properties, wiped every custom enum definition, dropped 11 links, and replaced project.yaml and program.yaml with a generic template that breaks Gen3 submission. It is removed, along with test_dict (a byte-identical mirror), both copy scripts, the enum injection script and its stale CSV, and a notebook that no longer runs. Upgrades gen3schemadev from 2.6.1 to 3.1.0. For a repository that only validates and bundles, the value is that generate now refuses to overwrite existing files - the accidental wipe described above is no longer possible. The bundle is re-serialised in sorted key order as a result; its content is unchanged. Extends CI, which previously validated only the loose YAMLs: the bundle is now validated in its own right, checked for staleness against a fresh build, and the dictionary version is checked for consistency. Each gate was confirmed to fail on the condition it guards. Brings pyproject.toml to 1.2.0 to match _dict_version, which the README now documents as canonical, and records the deployment loop - tag here, bump dictionary_version in acdc-aws-etl-pipeline, run deploy_dd.sh - which nothing captured before. No node schema is modified: all 32 dictionary YAMLs are byte-identical to main.
…lish # Conflicts: # dictionary/prod_dict/acdc_schema.json # dictionary/test_dict/_definitions.yaml # dictionary/test_dict/acdc_schema.json # dictionary/test_dict/metabolomics_assay.yaml # dictionary/test_dict/metabolomics_file.yaml # dictionary/test_dict/proteomics_assay.yaml # dictionary/test_dict/proteomics_file.yaml # dictionary/test_dict/qc_file.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This repository's model is maintained by hand — the node YAMLs in
dictionary/prod_dict/are thesource of truth. Nothing said so. The README documented a "generate into
test_dict, copy elementsinto
prod_dict" loop that nobody follows, so a new contributor had no way to know where the modelactually lives.
Why
input_dd.yamlhad to goIt was a fork artefact, not a build input — no property definitions at all, just 27 node stubs
and 26 link triples, frozen since 2025-11-10 while the dictionary moved on across 29 commits.
Regenerating from it would have:
proteomics_assay37 → 2,medical_history31 → 2$refs across the node filesqc_file,supplementary_file,analysis_workflowproject.yaml/program.yamlsystemPropertiesanduniqueKeys— breaks Gen3 submission_dict_versionThe README now states the rule and the reason, rather than just forbidding it.
Removed
dictionary/input_dd.yaml,dictionary/test_dict/(a byte-identical mirror ofprod_dict), bothcopy scripts,
scripts/add_enum_to_def.pywith its stale CSV, andnotebook.ipynb.On the enum script: it existed to re-inject enums after
generateoverwrote_definitions.yaml, andnothing generates. Nothing referenced it.
_definitions.yamlis now the richer record anyway — 373enumDefentries against the CSV's 195 rows, with moresourceandterm_idannotations — sodeleting the CSV loses no provenance.
gen3schemadev 2.6.1 → 3.1.0
For a validate-and-bundle-only repository the value is specific:
generatenow refuses tooverwrite existing files, so the accidental wipe described above is no longer possible. The bundle
is re-serialised in sorted key order as a side effect; content unchanged.
CI extended
It previously validated only the loose YAMLs. Now also:
_settings.yamlandpyproject.tomlEach gate was negative-tested: editing a schema without re-bundling, mismatching the version, and
adding a property with no type all fail as they should.
Verification
No node schema is modified. All 32 dictionary YAMLs are byte-identical to
main, verified byhashing before and after — the check that proves nothing regenerated. The bundle's content is
identical to what was committed, differing only in key order, confirmed by parsing both. All four
gates pass locally, bundling twice is byte-stable, and every README link resolves.
PR #8 and its branch are untouched.
Follow-ups, not done here
pyproject.tomlis brought to 1.2.0 to match_dict_version, but no tag is cut — releasing isa separate decision and six environments pin versions independently
docs/acdc_proteomics_metabolomics_methods_and_rationale.mdreferences a companion implementationspec that does not exist in the repository
🤖 Generated with Claude Code