Skip to content

feat(helm): add pure Python sync planning package with jq parity tests - #30

Merged
geojitsu merged 5 commits into
mainfrom
fm/fm-helm-sync-python-build-001
Sep 17, 2026
Merged

geojitsu merged 5 commits into
mainfrom
fm/fm-helm-sync-python-build-001

Conversation

@geojitsu

Copy link
Copy Markdown
Owner

Intent

Captain's words, 2026-09-17: "Continue building it... send the idea over to the architect and let them know the current bash build details." (relayed from the prior Helm-sync prototype work; captain approved starting the real Python build after reviewing the architecture report.)

What Changed

  • Added a new python/helm_sync package (model.py, backlog.py, fleet.py, desired.py, routing.py, settings.py, planner.py) porting Helm's board reconciliation logic — backlog parsing, config validation, local-home union, project routing, desired-card rendering, and fieldwise plan building — into immutable Python records, as the first migration slice alongside the existing production Bash/jq path.
  • Added python/helm_sync/tests/jq_parity.py, a fixture suite that runs the live jq programs as subprocesses and asserts their output matches the new Python implementation, plus tests/fm-helm-sync-python.test.sh mapping any change under python/helm_sync/ to that parity suite.
  • Added architecture and API docs (docs/1.architecture/3.helm-sync-python.md, docs/2.api/3.helm-sync-python.md) describing the package and its usage, and registered both in docs/documentation-audiences.json.

Risk Assessment

✅ Low: All three prior review/test rounds' decisions were correctly and narrowly implemented: the Issue title/body write parity fix matches jq's logic exactly and is covered by a real subprocess-based jq comparison test, and the test-mapping churn ended with a clean revert of bin/fm-test-run.sh plus a correctly-relocated jq_parity.py under python/helm_sync/tests with accurate coverage-comment references; the module still does not touch live GitHub state, so there's no new security surface.

Testing

Completed 1 recorded test check.

  • Outcome: ⚠️ 1 error across 2 runs (1h2m11s)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

⚠️ **Test** - 1 error
  • 🚨 tests failed with exit code 1
  • bin/fm-test-run.sh --changed --exclude-family real-herdr-gated

🔧 Fix: test(helm): confirm python parity suite passes, other failures are unrelated env
1 error still open:

  • 🚨 tests failed with exit code 1
  • bin/fm-test-run.sh --changed --exclude-family real-herdr-gated
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@geojitsu
geojitsu merged commit 1365d4d into main Sep 17, 2026
14 checks passed
geojitsu added a commit that referenced this pull request Sep 18, 2026
…#31)

* feat(helm): add missing-card and deleted-card phases to the Python sync planner

The canary check before merging PR #30 found that plan_board() only
processed cards already in the desired set, so a board card whose task
left every backlog was never closed, and a captain-deleted card on a
still-live task was silently recreated instead of held. Both phases
now mirror bin/fm-helm-lib.sh's missing_entries and deleted_entries,
proven byte-for-byte against the production jq planner with fixture
data only (fixture-owner, boards 999/1000).

Known remaining gaps, documented in docs/1.architecture and
docs/2.api: the jq side's malformed-body-ignore and new-card-intake
wake branches, dispatch-marker cleanup on a closed card, and
in-flight/blocked-specific hold wording are not yet ported.

* no-mistakes(review): fix(helm): wake intake for unseen orphan cards and retain captain-held deletions

* no-mistakes(review): fix(helm): close orphan cards on first-ever sync, not wake

* no-mistakes(review): docs(helm): fix stale note on implemented intake wake

* no-mistakes(review): fix(helm): guard empty-backlog missing phase, sync API docs

---------

Co-authored-by: firstmate-crewmate <brokentao@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant