Repository navigation
Conversation
scripts/chart_engine.py's gate_line() used OFFSET=-1.375, shifting the whole 64-gate Human Design wheel 0.375 deg from the published mandala (barneyandflow.com/gate-zodiac-degrees; Scribd "Gates and Zodiac Placements"): Gate 25 starts 358.25 deg, Gate 17 starts 3.875 deg, Gate 41 starts 302.0 deg. Only OFFSET=-1.75 puts all three anchors in their documented gate. Independently confirmed by npm hd-chart-engine@0.1.1 (WHEEL_START=223.25 = -1.75 + 40*5.625), already used by life-web's question-first path. At the wrong offset, ~6.5% of gate activations land in the wrong gate and ~83% of charts have at least one wrong gate. TDD: tests/test_human_design_gate_wheel_offset.py pins the three published mandala boundaries plus a preceding-gate, previous-line and 0 deg wrap-around case; all failed under -1.375 and pass under -1.75. Every Human Design fixture generated by the old offset is regenerated from the corrected engine, not hand-edited: - tests/fixtures/ephemeris_baseline.json via the new tests/fixtures/update_hd_baseline.py (11 of 12 fixtures' human_design changed; jupiter_station_before also changes type/authority/definition/ channels; the two human_design_boundary annotations are recomputed for the corrected wheel rather than left describing the old wheel's boundary). PROTECTED_SHA256 in tests/test_synastry_cli.py is updated deliberately for this regeneration, per its own comment. - tests/fixtures/golden_example.json/.md and examples/sample-output.json via their existing GOLDEN_PROVENANCE.md commands. - tests/fixtures/golden_example_pre_1_2.json is regenerated too (a documented exception): it freezes "1.1 -> 1.2 only adds one field", not a known-wrong gate wheel, so leaving it stale would permanently pin the bug through test_single_json_bytes_match_pre_1_2_after_version_bump. - tests/test_synastry_hd.py's test_time_unknown_channel_confidence_exhaustive_split_pinned pinned B0's noon fast-planet gate set, which also shifts under the corrected wheel (gate 60 -> 41), dropping the hd-chan-3-60 connection. - README.md and all 18 translations' Human Design sample snippet (profile 1/3 -> 2/4, gate 12.1/36.3 -> 12.2/36.4). See tests/fixtures/GOLDEN_PROVENANCE.md's 2026-09-15 entry for the full diff-scope writeup and regeneration commands. pyproject.toml version bumped 1.2.0 -> 1.2.1 (patch; no CHANGELOG file exists in this repo). schema_version stays "1.2" (JSON contract shape is unchanged). Full suite: 447 passed, 2 skipped (same 2 pre-existing skips as baseline; 441 passed before this change's 6 new anchor tests). Claude-Session: https://claude.ai/code/session_016ZLLbCYxw9wxqX6rsSrbMX
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This branch has not been deployed
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.
Root cause
scripts/chart_engine.py:98—OFFSET=-1.375ingate_line(). This shifts the entire 64-gate Human Design wheel by 0.375 deg away from its real position relative to the ecliptic.SEQ(the gate sequence) and the line-width math ingate_line()are correct; only the rotational offset constant is wrong.Sources
OFFSET=-1.375(currentmain) puts all three anchors in the wrong gate.OFFSET=-1.75puts all three in the documented gate.hd-chart-engine@0.1.1(used by life-web's question-first path,life-web/node_modules/hd-chart-engine/dist/index.js) hasWHEEL_START=223.25, i.e.-1.75 + 40*5.625— the same offset, derived independently.Impact
At
OFFSET=-1.375: ~6.5% of gate activations land in the wrong gate, ~39.7% land on the wrong gate-or-line, and ~83% of charts have at least one wrong gate. Every consumer of this engine (server.py, webapp.py, mcp_server.py, synastry.py, the WordPress plugin over HTTP) inherits the wrong values, since they all go throughgate_line().Fix
One line:
OFFSET=-1.375→OFFSET=-1.75.TDD
tests/test_human_design_gate_wheel_offset.py(new) pins the three published mandala anchors plus a preceding-gate/previous-line case and a 0°-wrap-around case:RED (at
OFFSET=-1.375, captured before the fix):GREEN (at
OFFSET=-1.75):6 passed.Fixtures regenerated from the corrected engine (no hand edits)
tests/fixtures/update_hd_baseline.py(new) regenerates onlybuild_json.human_designand thehuman_design_boundaryannotations inephemeris_baseline.json, assertingwesternstays within a sanity tolerance first so any unrelated drift would fail loudly instead of being silently baked in.golden_example.json/.mdandexamples/sample-output.jsonare regenerated with their existingGOLDEN_PROVENANCE.mdcommands. See that file's new 2026-09-15 entry for the full writeup, including whygolden_example_pre_1_2.jsonis regenerated too (it freezes "1.1→1.2 adds one field", not a known-wrong gate wheel — leaving it stale would permanently pin the bug through its byte-identity test).Per-case before/after (
tests/fixtures/ephemeris_baseline.json, viaupdate_hd_baseline.py)11 of 12 fixtures changed (the 12th,
placidus_lat70_invalid, hasok:false— nohuman_designto regenerate).taipei_standard1/3→2/4london_solar_sign_cusphigh_latitude_65_valid5/2→6/226-44; loses 「脾」from defined_centers (open_centers gains it)placidus_lat70_invalidok:false, unchanged)jupiter_station_before顯示者→生產者; authority意志力(心)權威→薦骨型權威; definition一分人→二分人[1-8,11-56,25-51]→[1-8,11-56,42-53]; defined_centers[G,喉,意志,邏輯]→[G,喉,根,薦骨,邏輯]jupiter_station_middle自我投射型權威→情緒型權威; definition一分人→二分人30-41; defined_centers gains 情緒,根jupiter_station_after4/6→4/1[1-8]→[7-31,23-43]; defined_centers gains 邏輯saturn_station_beforesaturn_station_middlesaturn_station_afterhd_boundary_design_sun5/2→6/2hd_boundary_personality_moongolden_example.json/.md(--examplesample): channel3-60replaced by27-50; 9 gate/line values change.examples/sample-output.json(小明 sample): profile1/3→2/4; 10 gate/line values change (matchestaipei_standardabove — same birth input).README.md+ all 18 translations: the embedded 小明 sample snippet updated to match (角色 1/3→2/4,12.1/36.3→12.2/36.4).tests/test_synastry_hd.py::test_time_unknown_channel_confidence_exhaustive_split_pinned(not in the original sweep) also pinned a gate set derived from the old offset — person B0's noon fast-planet gates shift{...,60}→{...,41}, dropping thehd-chan-3-60-dominanceconnection. Updated to match the corrected engine's actual output (verified by direct invocation, not guessed).Test commands
Verification run (this branch, HEAD)
447 passed, 2 skipped(1 pre-existingmcpextra skip, 1 other pre-existing skip; baseline onmainbefore this change was441 passed, 2 skipped— the +6 are the new anchor tests).ruff check .— all checks passed.Not merged, not deployed
Per instructions this PR is opened for review only.
pyproject.tomlversion bumped1.2.0→1.2.1(patch); noCHANGELOGfile exists in this repo so none was added.schema_versionstays"1.2"(JSON contract shape unchanged).Also fixed (same bug, separate copy, not part of this repo)
$HOME/Documents/CC Cli/agents-skills/life/scripts/chart_engine.pyis an older, separate fork (Swiss Ephemeris/py-iztro, not a copy of this engine) with the sameOFFSET=-1.375at its own line 72. Edited to-1.75in the working tree; not committed here (different repo, out of scope for this PR) — see the session notes for that repo's status.Out of scope, flagged not fixed
GATE_CENTER[19]in the CC Cli skill fork (agents-skills/life/scripts/chart_engine.py:78) is still'情緒'; this engine repo already fixed the equivalent bug on 2026-08-30 (docs/2026-08-30-gate19-root-fix-impact.md), but the older fork never got that fix. Separate issue, separate repo.placidus_lat70_invalid's frozenephemeris_baseline.jsonerror string ("swisseph.houses_ex: error") predates the AGPL→MIT/astronomy-engine migration; the current engine raises a different message for the same input ("placidus undefined at high latitude"). Unrelated to the OFFSET bug — theok:falseflag itself is unchanged and no test asserts the error text — left untouched.https://claude.ai/code/session_016ZLLbCYxw9wxqX6rsSrbMX