Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 2.87 KB

development.md

File metadata and controls

52 lines (37 loc) · 2.87 KB

Development

./setup.sh            # venv, editable install, tools
.venv/bin/pytest
python -m build       # sdist + wheel; releases publish to PyPI from GitHub Actions (trusted publishing)

CI runs the tests and builds a demo report on every push. Real raw-data files and *_analysis/ folders are git-ignored; never commit them.

Website

site/ is the landing page at https://gnomancer.com, served as a Cloudflare Worker with static assets (wrangler.toml). Deploy with npx wrangler deploy (Node 22+, wrangler login once). It is static: no cookies, no analytics.

Public synthetic demo

site/demo/ is the walkthrough at https://gnomancer.com/demo/. It contains only the synthetic sample from examples/make_demo.py, a generated report, a real MCP lookup result, and a captioned 28-second walkthrough video. No personal DNA file is used. The lightweight run deliberately skips haplogroup callers, ClinVar, and PharmCAT; the artificial sample positions cannot validate those tools.

To rebuild the sample/report assets from the repository root:

.venv/bin/python examples/make_demo.py /tmp/gnomancer-synthetic-input
.venv/bin/gnomancer /tmp/gnomancer-synthetic-input/demo_AncestryDNA.txt --out /tmp/gnomancer-synthetic-report --no-y --no-mt --no-clinvar --no-pharmcat
.venv/bin/python examples/prepare_launch_demo.py /tmp/gnomancer-synthetic-report /tmp/gnomancer-synthetic-input

The packaging helper verifies the synthetic header and writes provenance.json. Never substitute a real export. The walkthrough's example agent question is illustrative; its displayed tool output comes from the actual synthetic report, without a simulated model conversation.

Haplogroup pages

site/haplogroups/ is generated: edit gnomancer/data/haplogroup_context.tsv, run .venv/bin/python site/build_haplogroups.py, then deploy. The script also rewrites site/sitemap.xml.

Release checklist

  1. Bump the version in pyproject.toml, gnomancer/__init__.py, server.json (two places), .claude-plugin/plugin.json; tests/test_pipeline.py checks they agree.
  2. gh release create vX.Y.Z → the publish workflow uploads to PyPI (trusted publishing).
  3. mcp-publisher login http --domain gnomancer.com --private-key <seed> then mcp-publisher publish (key lives outside the repo).
  4. Homebrew tap: update url and sha256 in codebase/homebrew-tap/Formula/gnomancer.rb from the PyPI sdist (https://pypi.org/pypi/gnomancer/X.Y.Z/json).
  5. If a pinned tool version changes, update SHA256 in gnomancer/setup_cmd.py.

Homebrew tap caveat (Nov 2026)

On macOS 26.2 Homebrew's Python bottles have a pyexpat/libexpat mismatch that breaks pip inside the build sandbox, so the tap formula cannot be verified there until Apple's next point release. The formula is correct as written (python@3.13, pip via the venv's python); the installer and pipx paths are the verified routes meanwhile.