Commit Graph
2949 Commits
Author SHA1 Message Date
Jesse_ChenandClaude Opus 5.5 a9d68bf10c docs(research): rewrite astrologer workbook as an agent-executable brief
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 08:48:45 +08:00
Jesse_ChenandClaude Opus 5.5 53ee730fb0 docs(research): astrologer x AI ruling workbook for v3 questions
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 08:43:21 +08:00
Jesse_ChenandClaude Opus 5.5 3bbc2daab1 docs(tasks): report/chart blank columns — Kranti, Ashtakavarga house table, ascendant nakshatra, varga dignity, duplicate charts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-03 08:32:33 +08:00
Jesse_ChenandClaude Opus 5.5 1af3488093 docs(research): astrologer questions v3 — correct 甲5 (two Pancha Mahapurusha detectors, the card shows no break)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-03 07:49:46 +08:00
Jesse_ChenandClaude Opus 5.5 aaa086255f docs(research): astrologer questions v3 — status per item, corrected 甲7/甲8, 乙3/乙8/乙14 not live on the site
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-03 07:38:28 +08:00
Jesse_ChenandClaude Opus 5.5 c05d9e7e3d test(rectification): confirmation gate reads the sync5 re-freeze record
Independent Staging Quality Gate / validate (push) Successful in 14m12s
Independent Staging Quality Gate / publish (push) Successful in 3m36s
The sync5 re-freeze (1029cbaa) moved the product holdout's current-tree
record to sealed_holdout_rerun_upstream_sync5_2026_10_02.json; the test
still read the sync4 file. Three-column note added.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 01:17:49 +08:00
Jesse_ChenandClaude Opus 5.5 8c55d4dcfb docs: upstream sync 5 records — BUG-1192..1198, CHANGELOG, progress, backtest round 7
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 01:06:29 +08:00
Jesse_ChenandClaude Opus 5.5 90dcafe71d test(rectification): keep reviewed privacy-collision lines in place (BUG-1193 follow-up)
test_repo_privacy_markers pins two reviewed numeric collisions in
test_rectification_v5_services.py by line number; the R1 three-column note
replaced the now-stale C2 comment on the same line instead of adding one.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 00:36:56 +08:00
Jesse_ChenandClaude Opus 5.5 03d60e29e6 test: lock the two combustion orb tables together (U3 follow-up, BUG-1195)
pancha_mahapurusha keeps its own copy of the direct / retrograde orb table
(upstream eaf6918b shape); the test pins it equal to jyotish_engine
COMBUSTION_ORBS and exercises both helpers at every orb edge.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 00:17:58 +08:00
Jesse_ChenandClaude Opus 5.5 917e18a066 test(consult): regenerate biography backtest golden after upstream sync 5
capture_consult_biography_backtest_golden.py run twice (PYTHONHASHSEED=0,
chart cache TTL 0), byte-identical. Only change: one figure's retrograde Venus
is no longer combust in the graha drishti layer (retrograde orb 8 deg, U3
combustion table). consult-evidence-card-golden.json regenerated twice as
well and is byte-identical to the committed file.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 00:15:59 +08:00
Jesse_ChenandClaude Opus 5.5 1029cbaa0a chore(rectification): re-freeze research records for upstream sync 5 (ERR-110); scores unchanged, no version bump
scripts/jaimini.py (Chara Karaka 8 Rahu reversal), scripts/ashtakavarga.py
(Trikona / Ekadhipatya Shodhana, unwired) and scripts/rectification/
decision_policy.py (R1 floor, BUG-1193) are in the frozen production identity.
Records re-frozen under the label upstream_sync5_2026_10_02 (--freeze, then
replay; PYTHONHASHSEED=0, chart cache TTL 0); the upstream_sync4 records become
"previous", byte-for-byte preserved. Replays identical to upstream_sync4:
reported offset 0 of 900 trials changed, sealed holdout 20 trials identical,
metrics equal. ALGORITHM_VERSION stays rectification-v5-matrix-scoring-10.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 00:15:51 +08:00
Jesse_ChenandClaude Opus 5.5 758fee954b feat(rectification): range delivery needs 4 dated events across 3 domains (R1, BUG-1193)
Product decision 2026-10-02 (TASK-upstream-sync5 R1): a time range is offered
only with at least 4 dated, primary-scoreable events covering 3 domains,
counted on all of them (training + reserved holdout). Was 3 training events /
2 domains in three TS copies and the Python acceptance gate while the policy
file already said 4/3.

- One definition: references/rectification_policy.v1.json
  (minConfirmationEvents / minConfirmationDomains). TS core/types MIN_DATED_*,
  rectification-decision MIN_STANDALONE_*, evidence-model MIN_ACCEPTANCE_*,
  the convergence evaluator and the post-inference trainingGateOpen all read
  it; Python decision_policy MIN_ACCEPTANCE_* alias MIN_CONFIRMATION_*.
- Python receipt counts all scoreable events / domains for event_quality and
  domain_diversity; decision policy identity v3 -> v4 (candidate UUIDs carry
  it). Candidate scores unchanged (77 v5 cases A/B identical), so the
  algorithm stays rectification-v5-matrix-scoring-10.
- Memoization golden v3 written by write_golden; v2 frozen by sha256 with a
  test that its scores equal v3 and only the receipt policy moved.
- Collect gap copy names the exact gap ("再来两件……其中至少一件不是……")
  instead of always "再来一件"; VOICE.md updated. Legacy life-events form copy
  4/3 as well.
- 30 frontend test files, 4 Python tests: fixtures extended to the same
  scenario at 4/3, or assertions changed with 原值/新值/原因 notes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-03 00:08:00 +08:00
Jesse_ChenandClaude Opus 5.5 7fb165ecf6 fix: resolve Badhaka house by lagna in curse yogas, drop death wording (upstream 6abfe983 follow-up, BUG-1192)
Preta Yoga hard-coded the 11th house as Badhaka; it now uses the single
yoga_engine.badhaka_house() definition (movable 11 / fixed 9 / dual 7).
Remaining early-death / lineage-ending phrases removed from curse yoga
family effects and the Matru-hani yoga effects list.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 23:45:06 +08:00
732642856andJesse_Chen 67aa1b33d7 feat: add Ekadhipatya Shodhana
(cherry picked from commit 868f1dadb69e870fbf20223e4fcd0550286bc220)
2026-10-02 23:40:59 +08:00
732642856andJesse_Chen 54f6930b23 feat: add auditable Trikona Shodhana
(cherry picked from commit 9531d1dcc70d1c3e2b70c9627ac077d47d484b92)
2026-10-02 23:40:59 +08:00
Jesse_ChenandClaude Opus 5.5 45d6dbf6ca fix: bound Budhaditya yoga under combustion (upstream 994638f0, Budha-Aditya part only)
A combust Mercury keeps the Budha-Aditya formation visible but downgrades it
to conditional. Upstream's other card-gating fields in the same hunk come
from separate commits and are not taken. TASK-upstream-sync5-20261002 U7.

(cherry picked from commit 994638f0)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 23:40:55 +08:00
Jesse_ChenandClaude Opus 5.5 5172620c72 fix: use nakshatra seed for Yogini dasha (upstream cb7fe017)
(nakshatra + 3) mod 8 seed. The upstream edit to
tests/test_dasha_master_pack_coverage.py is dropped: that file does not
exist here. TASK-upstream-sync5-20261002 U5.

(cherry picked from commit cb7fe017)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 23:40:34 +08:00
Jesse_ChenandClaude Opus 5.5 cf78d4ca21 fix: align combustion thresholds across engine (upstream 080c286c, adapted)
One direct / retrograde orb table (Moon included) in the shared
COMBUSTION_ORBS / is_combust, used by the full reading and the consultation
graha-drishti layer. TASK-upstream-sync5-20261002 U3.

(cherry picked from commit 080c286c, resolved onto our shared helper)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 23:40:15 +08:00
732642856andJesse_Chen 765ff66ce5 test: cover Badhaka ascendant rules
(cherry picked from commit 6abfe98396af376c0d010f833ea9c0d8ce8595ad)
2026-10-02 23:38:55 +08:00
732642856andJesse_Chen 9959e5149b test: lock curse yoga claim boundary
(cherry picked from commit 28f419123b0ae436e17e1d9c727bde4627ba1b91)
2026-10-02 23:38:54 +08:00
732642856andJesse_Chen 533c3a30ff fix: bound curse yoga health language
(cherry picked from commit b40c7fde6cf87a9c33017b459ea3f736c56ea30e)
2026-10-02 23:38:54 +08:00
732642856andJesse_Chen bdbff99a9a fix: align Pancha Mahapurusha combustion profile
(cherry picked from commit eaf6918ba9cedc1ab6a7cbb70336dcf010fd77dd)
2026-10-02 23:38:54 +08:00
732642856andJesse_Chen cb9d942b9e fix: reverse Rahu degree in eight-karaka ranking
(cherry picked from commit 197672e3f1c5d06fe44f0da196d36f6cf4a856cf)
2026-10-02 23:38:54 +08:00
Jesse_ChenandClaude Opus 5.5 677d40f991 docs(tasks): upstream sync round 5 + rectification minimum 4 events / 3 domains
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 23:38:15 +08:00
Jesse_ChenandClaude Opus 5.5 e77ba6474f docs(research): astrologer questions v2 — 13 open items + 16 settled items to confirm
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 22:54:01 +08:00
Jesse_Chen 3d0c3cdf5a Merge remote-tracking branch 'origin/staging' into codex/upstream-sync4-20261002
Independent Staging Quality Gate / validate (push) Successful in 37m44s
Independent Staging Quality Gate / publish (push) Successful in 3m59s
2026-10-02 22:52:27 +08:00
Jesse_ChenandClaude Opus 5.5 2f2ac4ce05 docs(research): consolidated questions for the astrologer (2026-10-02)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 15:23:16 +08:00
Jesse_ChenandClaude Opus 5.5 ae74706e40 docs: upstream sync 4 — BUG-1183~1191, CHANGELOG, progress, task index, backtest round 6
Progress lists the delivery per item, F3 locations, the ERR-110 re-freeze
without a version bump (scores unchanged), the v5 evaluation (byte-identical
at a18f8d4e, bc9b9f89 and 0176cb30), upstream commits after 0a6696c5 not
taken and why, the Kemadruma difference from upstream, and open questions.
Backtest round 6 (86 answers read and scored): parents / requests / banned
phrases unchanged; career type conflict 5 -> 9 / 18, still failing the line.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 15:09:51 +08:00
Jesse_ChenandClaude Opus 5.5 b53f56b6fd style(tests): ruff import order and comparison order in the new sync4 tests
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:51:31 +08:00
Jesse_ChenandClaude Opus 5.5 26d4c204b0 test(rectification): confirmation gate reads the upstream_sync4 re-frozen rerun (ERR-110)
Original / new / reason recorded in the test. Shadow trials identical; gate
behaviour and thresholds unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:50:35 +08:00
Jesse_ChenandClaude Opus 5.5 8ae4cef7a6 fix(consult): marriage card drops the 7th-house "(对宫主)" twin rows to stay inside the 12,000-character budget (BUG-1185)
For house 7 the event lord and the opposite lord are the same planet, so
every double-transit hit arrived twice. With the corrected aspect count the
Taylor marriage turn reached 12,040 characters (budget 12,000, test
consult-condensed-checklist "size"). The card now keeps the "(宫主)" row and
drops its "(对宫主)" twin; values stay engine values (the "nothing rewritten"
contract holds), the budget assertion is unchanged (BUG-1155 precedent:
compress the format, not the budget). Taylor marriage 12,040 -> under 11,922.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:50:35 +08:00
Jesse_ChenandClaude Opus 5.5 79efaf83f4 test(consult): regenerate evidence-card and biography goldens for upstream sync 4
Both captured with their scripts (PYTHONHASHSEED=0, chart cache TTL 0), twice,
byte-identical. Changes against a18f8d4e: lunar/solar yoga hits and names
(five-planet rule, retired duplicates), double-transit conclusions and active
houses (aspect count from 1, stable order), and Shadbala Sun min_required /
ishta % / level (BPHS 6.5: all nine backtest figures drop one level).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:50:35 +08:00
Jesse_ChenandClaude Opus 5.5 5731b0af6e chore(rectification): re-freeze research records for upstream sync 4 (ERR-110); scores unchanged, no version bump
scripts/shadbala.py is in the frozen scoring identity (dataset
frozen_scoring.files), so the ported Kala/Chesta fixes and the BPHS Sun
minimum (BUG-1188/1189) turned the integrity gate red although the scorer only
reads the Sthana/Drik/Naisargika components. Records re-frozen under the label
upstream_sync4_2026_10_02 (--freeze, then replay; PYTHONHASHSEED=0, chart cache
TTL 0); the functional_v2 records become "previous", byte-for-byte preserved.
Replays are identical to functional_v2: reported offset 0 of 900 trials
changed, sealed holdout 20 trials identical; memoization golden v2 scores
unchanged and the v5 77-case evaluation is byte-identical to a18f8d4e, so
ALGORITHM_VERSION stays rectification-v5-matrix-scoring-10 (decision 6 only
bumps on a score change).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:40:04 +08:00
Jesse_ChenandClaude Opus 5.5 db5a0509da fix(transit): double-transit rows in a stable order; cross-layer tests follow the aspect fix (BUG-1185)
With the aspect count from 1 (42d1582f) the public charts get same-layer
overlaps for the first time, and the overlap / cross-layer loops iterated
Python sets, so the double_transit list order changed with PYTHONHASHSEED
(the D1/CL golden failed under seeds 1 and 2). The loops now iterate sorted
names; the golden is recaptured and passes under seeds 0/1/2/5.
tests/test_double_transit_cross_layer_pairing.py: three expectations updated
with original / new / reason (Jobs house-7 summary now leads with the D1
layer; the ninth-house non-pairing example moves to Jobs house 9; the
same-house set is recomputed).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:29:28 +08:00
Jesse_ChenandClaude Opus 5.5 0176cb3008 test: three-column updates for the ported transit and Shadbala fixes (BUG-1185, BUG-1188)
- tests/fixtures/double_transit_d1_cl_golden.json recaptured with the test's
  own --capture (PYTHONHASHSEED=0, chart cache TTL 0): 413 of 578 leaf entries
  and all 36 chart-house stats rows move (double-transit overlaps: D1 0 -> 15, CL 0 -> 6) because aspects are now counted
  from 1 (42d1582f).
- V.P. Jain benchmark: within tolerance 34 -> 36, variants 8 -> 6; Chesta
  Mars/Jupiter/Saturn now match the published values, Venus no longer does
  (08376cf0). Original / new / reason recorded in the test.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:09:39 +08:00
Jesse_ChenandClaude Opus 5.5 0a4e6d0aa4 fix(yogas): restore English combination text for the five-planet BVR rules; Kemadruma text says nodes are not counted (BUG-1187)
Follow-up to f3ed9509 (TASK-upstream-sync4-20261002 T5). The port dropped
combo_template_en from bvr_002/003/004/016/017/018, so the English edition had
no combination text for them; restored. kemadruma_yoga's text still said "only
the Sun and Moon" although the nodes no longer count. New tests: Ketu alone
next to the Moon leaves Kemadruma in place in both the rule and
detect_kemadruma; Saturn there cancels it and forms Sunaphaa.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:08:21 +08:00
Jesse_ChenandClaude Opus 5.5 09c0efc2a1 fix(shadbala): Sun minimum requirement is 6.5 rupas per BPHS ch. 27 sl. 32-33 (BUG-1189, F3)
BPHS ch. 27 (Evaluation of Strengths) sl. 32-33 gives 390, 360, 300, 420, 390,
330 and 300 virupas for Sun..Saturn; the Sun was 5.0. MIN_REQUIRED in
scripts/shadbala.py is the only requirement table in our code (the 5.0 default
in .get() is for unknown bodies; vendored jyotishganit / dashaflow tables
already say 6.5). Upstream yinduzhanxing 0a6696c5 still has 5.0 (to notify).
Product decision 2026-10-02 (added to TASK-upstream-sync4-20261002).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:06:23 +08:00
Jesse_ChenandClaude Opus 5.5 db55aef191 fix(arudha): AL and UL have one source, jaimini.calc_arudha_padas (BUG-1190)
TASK-upstream-sync4-20261002 T6, decision 4. Visible parallel calculators were
found in three places and all now read jaimini:
- yogas_doshas.calc_arudha_lagna / calc_upapada_lagna (house number taken as an
  Aries-based sign index, no 1/7 exception) are deleted; the module's
  arudha_lagna / upapada_lagna fields come from jaimini.
- special_lagnas.calculate_arudha_lagna / calculate_upapada_lagna ("count from
  the landing" 1/7 exception, which disagrees with jaimini when the lord is
  4th/10th from the source) are deleted; the full reading's Arudha_Lagna /
  Upapada_Lagna rows are built from jaimini padas.
- the transit multi-reference table took "ascendant degree + 12th-lord degree"
  as AL; it now uses jaimini's A1.
jaimini's own exception counting is unchanged (astrologer question 5); the
upstream "count from the landing" variant is not ported. A10 in special_lagnas
keeps its own exception rule (outside decision 4; listed in progress).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:05:24 +08:00
Jesse_ChenandClaude Opus 5.5 3522e85df0 test(api): yoga list keeps all twelve rows; empty module list is not replaced by a preview (BUG-1186)
Regression tests for 96767418 (TASK-upstream-sync4-20261002 T4). Both methods
are called unbound; no JyotishAPIHandler is forged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:01:13 +08:00
Jesse_ChenandClaude Opus 5.5 ba97fd5980 fix(marriage): counting method reports a neutral geometry index only; real Parivartana no longer crashes (BUG-1183/1184)
TASK-upstream-sync4-20261002 T1 (upstream yinduzhanxing 0afa2780 for the
idea; wording is ours, in Chinese, per decision 2). _interpret_marriage_count
and _marriage_recommendations no longer state relationship counts, order,
quality or loyalty; the Marriage-counting evidence is always neutral and
carries only geometric_index (the dead D9-quality line in the adjudication is
removed). The count is computed before the Parivartana override (the old order
raised UnboundLocalError) and the exchange check now tests a real exchange
instead of a conjunction with the dispositor.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 14:01:13 +08:00
Jesse_ChenandClaude Opus 5.5 bc9b9f89bb fix(engine): dispositor cycles are not collapsed to one planet; dasa convergence drops uncalibrated probabilities (upstream e9beae6b)
final_dispositor_from_chain and its regression test are upstream
yinduzhanxing e9beae6b; probability is None with probability_basis. The
Narayana convergence additions of that commit are out of scope.
TASK-upstream-sync4-20261002 T7.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 13:56:31 +08:00
Jesse_ChenandClaude Opus 5.5 08376cf0a8 fix(shadbala): Ayana hemisphere after wrap, civil-weekday hora lord, continuous mean motion, short-arc Chesta midpoint (upstream 0afa2780)
Ported from yinduzhanxing 0afa2780 (algorithm hunks and its four regression
tests; the PyJHora / profile-metadata hunks do not apply to our file). The
archived-PyJHora Kala test follows upstream's rewrite. The V.P. Jain
benchmark expectations still need the three-column update (follow-up in this
branch). TASK-upstream-sync4-20261002 T3.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 13:55:58 +08:00
Jesse_ChenandClaude Opus 5.5 96767418ee fix(api): yoga list is not cut to ten; an evaluated empty list is not replaced by a preview (upstream e9beae6b)
TASK-upstream-sync4-20261002 T4. Regression tests follow in the same branch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 13:53:20 +08:00
Jesse_ChenandClaude Opus 5.5 f3ed950982 fix(yogas): lunar and solar yogas count only the five true planets; retire duplicate rules (upstream 2dd6062a)
bvr_002..004 (Sunaphaa/Anaphaa/Duradhara) and bvr_016..018 (Vesi/Vosi/
Ubhayachara) take upstream yinduzhanxing 2dd6062a's logic (Mars..Saturn
only). kemadruma_yoga also ignores the nodes (product decision: classical
definition; upstream still counts them). The six lunar/solar duplicates of
upstream's RETIRED_RULE_IDS are retired; upstream's four other retirements
are out of scope. TASK-upstream-sync4-20261002 T5.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 13:53:02 +08:00
Jesse_ChenandClaude Opus 5.5 42d1582f4c fix(transit): double-transit aspect check counts houses from 1 (upstream 2dd6062a)
Saturn's 7th aspect was judged on the 8th house, Jupiter 5/9 on 6/10, Mars
4/8 on 5/9. Ported from yinduzhanxing 2dd6062a with product authorization
(TASK-upstream-sync4-20261002 T2).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 13:50:24 +08:00
Jesse_ChenandClaude Opus 5.5 a18f8d4e1a docs(tasks): upstream sync round 4 against yinduzhanxing 0a6696c5; lunar-node brief folded in as T5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-02 13:24:09 +08:00
Jesse_Chen 588282c21e Merge remote-tracking branch 'origin/staging' into codex/consult-upstream-functional-v2-20261002
Independent Staging Quality Gate / validate (push) Failing after 14m41s
Independent Staging Quality Gate / publish (push) Skipped
# Conflicts:
#	docs/tasks/README.md
2026-10-02 13:06:31 +08:00
Jesse_ChenandClaude Opus 5.5 51f3f47bbe docs: functional v2 wrap-up — BUG-1158 resolved, BUG-1180~1182, ERR-114, backtest round 5, progress
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 13:01:55 +08:00
Jesse_ChenandClaude Opus 5.5 dae2b99fe2 test(rectification): confirmation gate reads the 10-02 re-freeze report (BUG-1181)
Same procedure as 406d81b8 (BUG-1088): the contract's current_tree_scorer
now points at sealed_holdout_rerun_functional_v2_2026_10_02.json; release
keys and the closed gate are unchanged. 原值/新值/原因 in the test comments.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 12:54:41 +08:00
Jesse_ChenandClaude Opus 5.5 7806c72f2c feat(consult): cards carry functional profile v2; close round-4 backtest residue (BUG-1158, BUG-1176, BUG-1182)
- Evidence-card and biography-backtest goldens regenerated with the capture
  scripts (PYTHONHASHSEED=0, cache TTL 0; byte-identical twice); only the
  functional-role fields change.
- CAREER_FIELD_ASK_RULE: A10 / AL / Sun / 10th lord in 4/6/8/12 say
  resistance or cost only, never "not on stage / go deep", and houses are not
  translated into fields.
- AFFLICTION_RANGE_RULE: no portrait of an afflicted person from the lord's
  house or a benefic occupant ("managing / arranging / cares about your
  future"), actions do not presuppose reaching them, one ask per answer.
- Examples that paired "4th lord in 10th" with "her attention is on your
  future / close" now state the line is unafflicted (Monroe's chart had that
  exact placement and copied it). Retrograde line also bans "drags on".
- Backtest script: several follow-up domains in one run.
Changed assertions carry 原值 / 新值 / 原因 in the test comments.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 12:32:02 +08:00