How do I submit data through a pull request?
Fork MICharisma/ascent_seed_data, add a YAML or JSON manifest under manifests/contributions/<your-organization>/, regenerate the catalog if needed, and open a pull request. CI validates structure and codes. After merge, Ascent can import the new records on the next seed load.
Where should my files go?
Put new place and election graphs, stances, communications, stance evidence, party channels, and approaches under manifests/contributions/<your-organization>/. Verified official Channel records use candidate_accounts/; Image and ImagePlacement records use profile_images/. Do not edit manifests/2026/ or conversion/; those are generated from sourced ballot rows.
How do codes and references work?
Every record has a stable uppercase code such as TOPIC-EDUCATION or CANDIDACY-USA-NY-.... Refer to other records by those codes, never by database IDs. A Stance links one Candidacy to one Approach. An Issue references its Topic; an Approach references its Issue. Recipes live in Ascent's doc/entity_code_plan.md.
How do I find existing records before inventing new ones?
Browse catalog/ in the seed repo, or run tools/seed_contract.py lookup after the Python setup in WORKERS.md. Reuse an existing Person, Candidacy, Topic, Issue, or Approach code whenever the record already exists.