Commit Graph
2926 Commits
Author SHA1 Message Date
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
Jesse_ChenandClaude Opus 5.5 81f6e5130a docs: BUG-1174~1177, BUG-1158/1159/1164/1167/1168 updates, backtest round 3, progress (T1 held by rectification gate)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 09:02:43 +08:00
Jesse_ChenandClaude Opus 5.5 5af6b2224e docs(backtest): rubric adds career expected_field and public (BUG-1167)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 08:32:11 +08:00
Jesse_ChenandClaude Opus 5.5 dd817c8eb8 feat(consult): career list reads field and public/behind-the-scenes from chart evidence (BUG-1176); opener keeps the affliction rule (BUG-1177)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 08:32:11 +08:00
Jesse_ChenandClaude Opus 5.5 c74bfcc06b feat(consult): rule engine always runs and merges with chart yogas (BUG-1174); closed-list traditional_yogas on general/career/wealth cards (BUG-1175)
Goldens regenerated by the capture scripts (PYTHONHASHSEED=0, cache TTL 0; two runs byte-identical).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 08:32:11 +08:00
Jesse_ChenandClaude Opus 5.5 8e978cabc4 docs(tasks): career field/fame reading, opener rule, BPHS functional table, traditional yogas
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 08:03:33 +08:00
Jesse_ChenandClaude Opus 5.5 6987875b84 feat(rectification): post-adopt verdict says whether the adopted time still fits and offers 改用 HH:MM; renumber BUG-1170→1172 (BUG-1173)
Independent Staging Quality Gate / validate (push) Successful in 14m56s
Independent Staging Quality Gate / publish (push) Successful in 3m23s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-02 07:40:30 +08:00
Jesse_ChenandClaude Opus 5.5 7a75e7f8ef docs(bugs): BUG-1154~1168 deployed to staging (691ee440, f361365a)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 07:40:17 +08:00
Jesse_Chen f361365a2a Merge remote-tracking branch 'origin/staging' into codex/consult-no-presupposition-backtest-20261001
Independent Staging Quality Gate / validate (push) Successful in 17m11s
Independent Staging Quality Gate / publish (push) Successful in 3m23s
# Conflicts:
#	CHANGELOG.md
#	docs/BUG_HISTORY.md
2026-10-02 07:17:06 +08:00
Jesse_ChenandClaude Opus 5.5 cfa5c03f6e docs: product decision 2026-10-02 (pressure signs + range) and round-2 backtest results
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 07:12:16 +08:00
Jesse_ChenandClaude Opus 5.5 066558a665 feat(consult): affliction signals read as pressure signs with a range, never a biographical verdict (product decision 2026-10-02)
- AFFLICTION_RANGE_RULE (one definition, consultation-thinking-plan.ts):
  pressure / distance signs + evidence + a range of realities, no verdict on
  facts the user knows better, no opposite reassurance, one ask per answer;
  quoted by the shared reading (line 3) and NATAL_SECTION_RULE
- parents line 2, marriage line, health line 1 follow it; career gets a
  'lifetime career shape first' line and neutral three layers (no 面试/职位)
- follow-up correction rule: map only lines that fit; say 盘本身分不出这一点
- voice / VOICE.md parents example rewritten to the range form
- contract tests updated with 原值/新值/原因

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 06:49:17 +08:00
Jesse_ChenandClaude Opus 5.5 db568d1433 docs: progress, bug history, changelog, backtest after-run for consult no-presupposition (BUG-1164~1168)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 01:06:59 +08:00
Jesse_ChenandClaude Opus 5.5 ec06d422d3 feat(consult): annual and timing turns get the shared reading and annual list (product budget decision 2026-10-02)
Annual / timing single-domain turns take the career / marriage / wealth budget:
contract + card <= 12,000, total with the checklist <= 18,000.
CONSULT_READING_BUDGET_BLOCKED removed; size assertions and the pinned
blocker test changed (原值/新值/原因 in the tests and brief 2's progress record);
BUG-1160/1161 resolved, BLOCKED.md entry struck through.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 00:46:59 +08:00
Jesse_ChenandClaude Opus 5.5 071a196d11 fix(research): backtest correction turn passes typed history messages
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-02 00:46:48 +08:00