Commit Graph
2939 Commits
Author SHA1 Message Date
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
Jesse_ChenandClaude Opus 5.5 3a40d42208 test(yogas): lock Pancha Mahapurusha self-conjunction fix (BUG-1180)
Before 57782aea `_has_malefic_aspect` skipped `pn == planet_sign` (planet
name vs sign name), so Mars / Saturn counted themselves as a malefic
conjunction and Ruchaka / Shasha were never valid. Fictional placements;
red on 57782aea^ (Ruchaka is_valid False), green now.

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:01 +08:00
Jesse_ChenandClaude Opus 5.5 3733b9787b fix(rectification): bump scoring identity to scoring-10 for functional profile v2; dated contract by generation (BUG-1181)
Functional roles feed the *_functional_*_auxiliary rules, so 57782aea changes
candidate scores for identical input (memoization fixture 12:00: 8.6274 ->
8.4977). Per the "scoring semantics change => bump ALGORITHM_VERSION"
precedent (scoring-7 -> 8 -> 9), the identity moves to scoring-10; policy v3,
input contract v5 and Skill versions are unchanged, history is not relabeled.

Five frontend sites and one SQL guard tested `=== "...scoring-9"` for the
dated candidate-window contract; they now use isDatedScoringAlgorithmVersion /
a generation regex (>= 9). Migration 20261002010000 only recreates
validate_dated_rectification_candidate (one-line guard change).

Memoization golden v2 written by the test's own write_golden; v1 (scoring-8)
frozen by sha256. Real-engine scoring-10 cross-midnight golden added. Research
records re-frozen per ERR-110 (label functional_v2_2026_10_02) and
scripts/functional_benefics.py added to the frozen production identity
(ERR-114: 57782aea changed scores without tripping it).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 12:31:50 +08:00
Jesse_ChenandClaude Opus 5.5 597e5d673d docs(research): engine-computed vs model-read gaps and astrologer doctrine questions (2026-10-02 sweep)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-02 12:24:13 +08:00
Jesse_ChenandClaude Opus 5.5 2900054012 docs(tasks): lunar yogas count nodes inconsistently (Kemadruma vs Anaphaa on one chart)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 12:03:57 +08:00
Jesse_ChenandClaude Opus 5.5 57782aea8a feat(functional): adopt upstream BPHS ch.34 profile v2; fix Pancha Mahapurusha self-conjunction; yoga engine reads the same functional roles
Ported verbatim from the upstream skill repo (yinduzhanxing e9beae6b) with
product authorization 2026-10-02: scripts/functional_benefics.py,
scripts/pancha_mahapurusha.py, references/functional-role-profile.md; only
the two functional-role methods of scripts/yoga_engine.py (our file diverged).
v5 77-case rectification eval: 5 cells up (to +7.8pp), one cell -1.3pp (one
case); product accepted. Rectification memoization golden still to be
regenerated (scores change with the grouping).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 10:57:14 +08:00
Jesse_Chen f85794661b Merge remote-tracking branch 'origin/staging' into codex/consult-career-yoga-functional-20261002
Independent Staging Quality Gate / validate (push) Successful in 15m8s
Independent Staging Quality Gate / publish (push) Successful in 3m37s
# Conflicts:
#	CHANGELOG.md
#	docs/BUG_HISTORY.md
2026-10-02 10:11:46 +08:00
Jesse_ChenandClaude Opus 5.5 407b72d8e6 docs: yogakaraka narrow fix + career ask rule decisions, backtest round 4, BUG-1158/1176 logs
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 09:49:47 +08:00
Jesse_ChenandClaude Opus 5.5 6a02e5e91e feat(consult): career answers don't guess the field — strength/resistance/timing + one ask; follow-up reads a stated job (BUG-1176 decision); goldens regenerated; rubric round-4 pass lines; backtest script career follow-up
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 09:12:06 +08:00
Jesse_ChenandClaude Opus 5.5 ffafa28b79 fix(functional): yogakaraka needs a kendra among 4/7/10 and a trikona among 5/9; grouping unchanged (BUG-1158 partial)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 09:06:29 +08:00
Jesse_ChenandClaude Opus 5.5 3bbe65a215 fix(rectification): out-of-window event dates no longer fail every rescore; future dates refused at intake; corrections revise without a focus (BUG-1178, BUG-1179)
Independent Staging Quality Gate / validate (push) Successful in 13m37s
Independent Staging Quality Gate / publish (push) Successful in 3m37s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-02 09:03:22 +08:00