Commit Graph
2479 Commits
Author SHA1 Message Date
jesse-uxandGrok (agent loop) b8a56c48ed fix(ondemand): beyond_next_return compares on one time basis (#175 round 2, BUG-1818)
打回:Mudda 原始段是返照地点的本地时刻,覆盖区间终点却拿 utc 去比,差一个时区偏移。

- 比较两边都改用 coverage.end.local(没有 local 时退回 utc + 返照地点偏移)
- 新增 4 条测试(北京 +08 与纽约 −05 各 ±3 小时);旧代码上 2 条失败
- 未改 scripts/solar_return.py 或任何冻结文件;既有 16 条未动

Tests: 本文件 20 条,连同 transit_window/transit_date/contract/api growth 共 70 条全过。

Co-Authored-By: Grok (agent loop)
2026-11-09 17:47:07 +08:00
ClaudeandClaude Opus 5.5 4651a7a486 docs(task): FIX-ondemand-solar-return-1.md — #175 review fail: beyond_next_return compares local time with UTC
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 17:33:42 +08:00
jesse-uxandGrok (agent loop) 54adb99073 feat(ondemand): solar return for any target year, location chosen by the caller (#175, BUG-1818)
只做后端:

- scripts/ondemand_calc/solar_return.py:target_year(1900–2100、不早于出生年);
  返回地点 birth_place / current_location,没选才回退出生地并写 fallback_note,
  current_location 缺项一律 blocked 且不回退
- 岁差必填、节点与位置口径显式传,position_mode=mean 阻塞
- 输出三层:mudda_raw(原始十段,每段标 beyond_next_return)、nominal_year
  (365.25)、coverage(到下一次实际回归);harsha_bala 恒 blocked
- 星历降级与引擎抛错都 blocked,不输出任何估算日期
- registry 加两行注册

Tests: tests/test_ondemand_solar_return_20261109.py 16 条;连同 transit_date、
transit_window、contract、api growth 共 66 条全过。合成盘两地返照时刻差 0 秒、
上升不同;覆盖终点与下一年返照时刻差 0.0 秒。

Co-Authored-By: Grok (agent loop)
2026-11-09 15:48:02 +08:00
ClaudeandClaude Opus 5.5 c7f8b6a623 docs(task): brief for ondemand-solar-return (#175, 2026-11-09)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 15:37:45 +08:00
ClaudeandClaude Opus 5.5 004cf9d88f docs(accept): BUG-1817 acceptance-fix note
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m39s
Independent Staging Quality Gate / validate-python (push) Successful in 7m6s
Independent Staging Quality Gate / publish (push) Successful in 3m24s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 14:45:07 +08:00
ClaudeandClaude Opus 5.5 6c774a4f28 fix(accept): #181 uses the astrologer's round-7 §5 P0.2 yoga status mapping
One shared table in yoga-status-words.ts (YOGA_STATUS_MAPPING / yogaStatus)
that the 解读依据 line uses now and #182's model wording must import:
candidate / support_only_candidate, computed, formed_under_source,
conditions_not_met, blocked / not_available_yet. Only formation.status can
say 成立 or 必要条件未满足; a hits-only name is 当前无法确认 with the gap named.
The grey line never clips a status text. Tests: one per table row plus the
hits-only case (13 in the file).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 14:44:57 +08:00
Claude 7505c841b2 Merge remote-tracking branch 'origin/codex/basis-candidate-status-20261109' into codex/accept-grok-batch2-1109
# Conflicts:
#	docs/BUG_HISTORY.md
2026-11-09 14:41:30 +08:00
jesse-uxandGrok (agent loop) 09a67aad5a fix(consult): 解读依据的格局行按卡上状态说话,不再写成成立 (#181, BUG-1824)
- 新增 yoga-status-words.ts:conditions_not_met → 不成立;candidate → 候选;
  computed → 未确认;其他 → 未标状态;结构观察不进这一行
- yogaLine 逐个名字到 card.base.natal.yogas_detail.rows 取状态词并按状态分组
  (候选:A、B;未确认:C),没有可列的写「本题没有检测到相关格局」
- 「格局」兜底文案改为「盘上检测到的格局已列出各自状态」(三栏注释)
- 数据卡、回执 schema、行状态判定、页面组件都不动

Tests: 新增 consult-basis-candidate-status-1824.test.ts(8 条);
consult-technique-evidence-1793 / consult-answer-basis-receipt-20261108 /
consult-answer-mode-ui-20261108 继续通过;tsc 0 错,lint 0 error。

Co-Authored-By: Grok (agent loop)
2026-11-09 14:33:47 +08:00
jesse-uxandGrok (agent loop) 78c34c09ab feat(ondemand): transit window — ingress, stations, retrograde loops, target longitude (#174, BUG-1817)
按 #173 的合同加第二个按需工具,只做后端:

- scripts/ondemand_calc/transit_window.py:四类事件(ingress / station /
  retrograde_loop / target_longitude),黄经与日速度来自
  _calc_sidereal_planets_for_jd(先配星历路径),口径由调用方显式传
- 事件二分到 ≤1 分钟;逆行往返给两个停滞、retrograde_span、影子期进出,
  区间外每侧最多 400 天并标 outside_requested_window
- 节点不报停滞:partial + node_station_not_supported 的 gap
- 位置口径 mean 阻塞;缺项返回 blocked 信封并点名,不编任何日期
- registry 加两行注册

Tests: tests/test_ondemand_transit_window_20261109.py 17 条;连同 transit_date、
contract、api growth 共 47 条全过。2026 水星逆行停滞与直接 SwissEph 速度二分
相差 1.41 分钟。

Co-Authored-By: Grok (agent loop)
2026-11-09 14:18:39 +08:00
ClaudeandClaude Opus 5.5 21b1fe1aae docs(task): brief for basis-candidate-status (2026-11-09)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 14:03:27 +08:00
ClaudeandClaude Opus 5.5 636b24f081 docs(task): brief for ondemand-transit-window (2026-11-09)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 14:03:27 +08:00
ClaudeandClaude Opus 5.5 afac4ea92f fix(accept): #179 module moves into scripts/ondemand_calc (scripts-root budget)
Independent Staging Quality Gate / validate-frontend (push) Successful in 6m51s
Independent Staging Quality Gate / validate-python (push) Successful in 8m26s
Independent Staging Quality Gate / publish (push) Successful in 3m1s
test_python_hygiene_budget forbids new root-level scripts/*.py; the brief named
scripts/muhurta_search_api.py. Same code at scripts/ondemand_calc/muhurta_search.py;
route, CLI import and tests follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 10:07:39 +08:00
Claude 8213aadad6 merge: codex/ondemand-transit-date-20261109 into acceptance batch 1109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8

# Conflicts:
#	docs/BUG_HISTORY.md
#	scripts/jyotish_api_server.py
2026-11-09 09:58:55 +08:00
Claude 5967b394eb merge: codex/counterexamples-20261109 into acceptance batch 1109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8

# Conflicts:
#	docs/BUG_HISTORY.md
2026-11-09 09:58:54 +08:00
Claude 1860b74e84 merge: codex/muhurta-20261109 into acceptance batch 1109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8

# Conflicts:
#	docs/BUG_HISTORY.md
2026-11-09 09:58:54 +08:00
Claude 137b964d80 merge: codex/dasha-dates-engine-only-20261109 into acceptance batch 1109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8

# Conflicts:
#	docs/BUG_HISTORY.md
2026-11-09 09:58:54 +08:00
Claude c723f7333d merge: codex/reports-no-web-wording-20261109 into acceptance batch 1109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8

# Conflicts:
#	docs/BUG_HISTORY.md
2026-11-09 09:58:53 +08:00
jesse-uxandGrok (agent loop) 99273b8ec2 fix(muhurta): per-day windows, per-window verdicts, per-day offsets (#179 round 2, BUG-1822)
按 FIX-muhurta-1 改掉打回的四点:

- 候选日不再由「日出 + 6 小时」单点分数筛选:每天单独取当天报告,用
  _select_recommended_windows 取候选;单点分数只留在 legacy_reference(not_final)
- 每个时段在起止两端各调一次 check_activity_muhurta,写 verdict_at_start /
  verdict_at_end / window_verdict;两端不同写 mixed 并点名变化要素;每天写
  rejected_windows(不吉时段、判定不宜、被 time_window 裁掉)
- 跨夏令时:每天用自己的偏移取日出与当天报告;profile 改为 tz_policy=per_day
  + first_day_offset
- time_window 生效并校验格式;删掉死代码
- CLI 打印时区策略与每段判定

Tests: 20 条(+6),api_server_growth_contract 9 条;pytest -k muhurta 122 过
5 败(5 条为基线既有失败,已在基线 commit 复现)。

Co-Authored-By: Grok (agent loop)
2026-11-09 09:21:11 +08:00
ClaudeandClaude Opus 5.5 2726b96a1b docs(task): fix brief FIX-muhurta-1 for #179 (review fail on 28c719cb)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 09:09:35 +08:00
jesse-uxandGrok (agent loop) 8dcc6537af feat(ondemand): shared on-demand calculation skeleton + transit on a date (#173, BUG-1816)
产品 2026-11-09 拍板 C 方案:本单只做后端共用模块与信封,前端另开单。

- scripts/ondemand_calc/contract.py:信封 jyotish.ondemand_calc.v1;必填校验不猜
  默认值;节点/位置口径缺省用产品默认值 mean/apparent 并标 profile_source;
  输入指纹 sha256;失败只留缺口,不回显推断日期
- registry.py:TOOLS + ondemand_calc_api 分派;未知 tool 阻塞并点名
- transit_date.py:九曜黄经/星座/度数/星宿与 pada/逆行/日速度,按传入的本命
  参考算宫位,UTC 与当地时间都给;position_mode=mean 返回 blocked
- 薄路由 /api/ondemand_calc(_load_local_module,无新增类方法)

Tests: contract 8 条、transit 12 条、api_server_growth_contract 9 条全过。

Co-Authored-By: Grok (agent loop)
2026-11-09 09:09:16 +08:00
ClaudeandClaude Opus 5.5 53b0609846 docs(task): #173 decision — backend shared module only (option C), explicit product defaults, mean position blocked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 09:03:41 +08:00
jesse-uxandGrok (agent loop) 28c719cbde feat(muhurta): location-exact on-demand muhurta search (BUG-1822)
原做法把参考时刻当 UT 12:00、不用地点、五要素只取「日出 + 6 小时」一个点。

- 新增 scripts/muhurta_search_api.py:必填 activity/日期/地点/tz 或 timezone_id/
  岁差/交点,缺一项报错;每天取实际日出日落,取不到整天 blocked;每个候选时段
  在起止两端各取一次五要素与 Hora,时段内变化标出变化时刻;现有单点评分放进
  legacy_reference 并标 not_final
- 薄路由 /api/muhurta_search(_load_local_module,无新增类方法)
- CLI 加 --lat --lon --tz --timezone-id --ayanamsa --node-mode;无地点时首行写明
  近似值、不给推荐时段,并去掉 int(hour_from_sunrise + 6) 冒充 UT
- 全局时区推断收紧为「lat/lon 都给了才推断」,否则择时不给地点会崩

Tests: tests/test_muhurta_search_api_20261109.py 14 条;
test_api_server_growth_contract 9 条通过;pytest -k muhurta 116 过 5 败,
5 条在基线 b453505d 上同样失败(无关)。

Co-Authored-By: Grok (agent loop)
2026-11-09 08:50:19 +08:00
jesse-uxandGrok (agent loop) 74a739b2dc feat(card): seven acceptance counterexamples end to end (BUG-1812)
- career layer gets the D1 longitudes, so the paksha has one source (Obama
  base vs career mismatch fixed)
- card carries movable_lagna_moon.reason, Narayana ad_status / ad_reason and
  the mahadasha cycle_index; running line says "sub-period undecided"
- engine keeps the MD when the AD is undecided; timingFollowing skips
  zero_duration rows explicitly
- timingKeys allowlist: adstatus / adreason / cycleindex / zeroduration
- fixtures + capture script, 16 engine tests, 7 card tests, PROGRESS, BUG-1812

Co-Authored-By: Grok (agent loop)
2026-11-09 08:38:56 +08:00
jesse-uxandGrok (agent loop) 152b298dd3 fix(chart): Chara dasha dates come from the engine, not the page (BUG-1811)
占星师 2026-11-08 第五轮裁定 5:所有大运日期必须由原生大运引擎生成,显示层
不得自己按年数比例重算。BUG-1752 只修了星盘页的 Vimshottari 轨;Chara 轨仍在
浏览器里按 365.25 天/年从出生日推大运、按年数比例切分运,与报告页的公历周年
口径最多差一天。

- 新增 scripts/chart_dasha/chara_dates.py:给 jaimini 的十二段与每段十二个
  分运写 start / end(本地日历日)与 start_ts / end_ts(UTC 秒);[start, end),
  末段终点钉在父段终点,0 年段保留 start == end,平年 2 月 29 日落 28 日。
- /api/dasha/chara 返回前写这些字段并带 date_basis。
- rashi_dashas_native._chara 改读同一模块(报告输出不变,已与旧版逐段对照)。
- 星盘页 charaTrack 只复制引擎日期;删掉 addYears;没有日期的行不显示。
- 文案 CHARA_ANTARDASHA_DATE_NOTE 改为「与大运同一套边界」。
- 两份真实引擎响应 fixture 的 chara 段用 _compute_chara_dasha 重抓。
- BUG_HISTORY BUG-1811;PROGRESS-dasha-dates-engine-only-20261109。

验证:pytest 新用例 6 passed,相关 63 passed;node --test 新用例 4 pass、
既有 105 pass;tsc exit 0;lint 0 error。

Co-Authored-By: Grok (agent loop)
2026-11-09 08:32:21 +08:00
jesse-uxandGrok (agent loop) 2e9ca2d73a fix(reports): drop web-verification wording from user-visible report text (BUG-1810)
产品负责人 2026-11-08:用户看到的报告文字不出现「联网 / 外部资料 / 外部核验 /
MEVG / 真实案例 / Real Case / Global Web」,后台记录保留。

- 个人报告写作提示词:依据与边界改为「没有用户经历可对照」,置信度封顶 B 不变
- 年报:技法执行情况跳过 MEVG / Real Case 两行;没有纳入的删掉对应条目
- 合盘:技法执行情况删掉「外部资料与真实案例核对:未进行」整行
- 产品导出审计章节:这两行不再渲染,证据边界同类一句删除,packet 原样保留
- 质量门:只要求 Functional Benefic/Malefic 渲染;新增后台检查,要求 packet
  仍带这两行且它们没有出现在 markdown 里

Tests: 新增 frontend/tests/report-no-web-wording-20261109.test.ts(4)与
tests/test_report_no_web_wording_20261109.py(3);更新年报、合盘、审计章节、
质量门既有断言(原值/新值/原因已注明)。

Co-Authored-By: Grok (agent loop)
2026-11-09 08:20:50 +08:00
ClaudeandClaude Opus 5.5 c032823f9e research(rectification): reseal round7_integration_2026_11_09 on staging b453505d (BUG-1809)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m18s
Independent Staging Quality Gate / validate-python (push) Successful in 6m37s
Independent Staging Quality Gate / publish (push) Successful in 2m27s
Product owner approved 2026-11-09 ("agree new result"). Same protocol as
BUG-1720 / BUG-1759: c1a69445^ replay tree + float_split + round5 overlays +
b453505d scripts/references + a small replay overlay (new tag paths, retired
scorer zero-row adapter, RuntimeError guards). Product default strength scope
seed_only_v0, comparability policy common_evidence_coverage_v1.

- sealed 20: top-1 0.35 -> 0.30, top-3 0.45 -> 0.45, mean error 6.80 -> 6.75
- offset 900: top-1 0.0156 -> 0.0100, coverage 0.900 -> 0.883 (164/900 vs
  round5 tag; 57/900 over 4 cases vs pre-integration staging)
- live v5 231: best = truth 8 -> 8; 124 changes vs round5 tag, 115 vs
  pre-integration staging
- leaders: sealed 40/40 comparable; offset 863 comparable / 35 provisional /
  2 no single leader; live 226 / 5

Trial-for-trial identical to the integration agent's seed_only runs.
Sensitivity only, not accuracy (event scoring near chance, BUG-1644).
Older tags unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 07:28:04 +08:00
ClaudeandClaude Opus 5.5 7cdf83106a docs: task brief for #179 muhurta (2026-11-09)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 07:18:34 +08:00
ClaudeandClaude Opus 5.5 f5356c62c1 docs: task brief for #173 ondemand-transit-date (2026-11-09)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 07:18:29 +08:00
ClaudeandClaude Opus 5.5 41862634f3 docs: task brief for #169 counterexamples (2026-11-09)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 07:18:12 +08:00
ClaudeandClaude Opus 5.5 ae714e0349 fix(narayana): default strength scope back to seed_only_v0 pending the astrologer (BUG-1784)
Owner 2026-11-09: the R2 widening is on hold until the astrologer rules on it.
STRENGTH_SCOPE_DEFAULT returns to seed_only_v0. All R2 code stays: local
propagation, the selected / equal / unresolved statuses, and
seed_ad_start_p43d_v1 as a named non-default profile. profile_config and the
cache keys record strength_scope = seed_only_v0. R1 and R3 are unchanged.
Tests that pinned the widened scope now pass it explicitly, with
原值 / 新值 / 原因 notes. Evidence-card golden recaptured (TTL=0; only the
profile labels changed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 00:21:12 +08:00
ClaudeandClaude Opus 5.5 8feabcc588 docs(task): brief for dasha-dates-engine-only-20261109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 00:14:47 +08:00
ClaudeandClaude Opus 5.5 9c7b35ef63 docs(task): brief for reports-no-web-wording-20261109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 00:14:42 +08:00
ClaudeandClaude Opus 5.5 b7ba7f4e4f fix(consult): R3 witness fields and Narayana profile_config reach the real card (BUG-1786, BUG-1783)
Found in the round-7 cross-branch check: on public charts (Zidane, Obama)
the Neecha Bhanga row never reached yogas_detail. The compact detector entry
dropped formation_evidence, and the row sat past the 30-row cap. Keep the
witness fields when compacting and never cut a row that carries them (the
cap stays 30). The card's Narayana method_status also dropped the engine's
profile_config (timing key allowlist); carry it through.

Evidence-card golden recaptured with TTL=0 (Obama: row 30 is now Neecha
Bhanga); the load-dependent VedAstro closure reason is kept as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 00:03:21 +08:00
ClaudeandClaude Opus 5.5 b1a83761b3 feat(consult): 解读依据 rows read the receipt's result_line / display_status (BUG-1793)
The 简明解读 list's grey line is the receipt row's result_line (fallback: what
the layer computed); firm → 已算, conditional → 有条件. One backstage filter
(isBackstageAuditRow: external / MEVG / real-case, plus provider, engine,
packet, calibration, Western) is shared by withTechniqueEvidence and the list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 23:46:30 +08:00
ClaudeandClaude Opus 5.5 a9111fae20 merge: codex/chat-mode-ui-1108 into round7 integration (BUG-1795..1798)
Contract keeps BUG-1794 (no web / external / MEVG / real-case wording in either
mode) with BUG-1795's 深度解读 / 简明解读 names; the missing-audit-table repair
prompt keeps BUG-1794's "no verification rows" wording under the new name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 23:43:49 +08:00
ClaudeandClaude Opus 5.5 8aa0d0cbcd merge: codex/round7-rect-kp-1108 into round7 integration (BUG-1801..1804)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 23:41:07 +08:00
ClaudeandClaude Opus 5.5 94d5bd8008 merge: codex/round7-evidence-1108 into round7 integration (BUG-1789..1794)
Evidence card independence keeps both the engine's R3 `self_reference_only`
name list and the evidence branch's `self_reference` notes map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 23:40:37 +08:00
ClaudeandClaude Opus 5.5 5b0c206ee8 docs: BUG-1789..1794 history with r8 blind-eval results
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 23:31:06 +08:00
ClaudeandClaude Opus 5.5 fc319ab5ec docs: BUG-1801..1804 rectification comparability, API guard, lookup budget, KP note
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 22:41:31 +08:00
ClaudeandClaude Opus 5.5 f60e49c59f docs: BUG-1785 rectification sensitivity of round-6 R1 + R2, grouped by case
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 22:39:01 +08:00
ClaudeandClaude Opus 5.5 d784e99867 feat(narayana): round-6 R1 default AD direction, R2 strength scope and local propagation, R3 self-reference
- R1: default AD direction rath_p50_md_parity_v1 (start parity kept as a research
  profile); full profile config + algorithm version on every Narayana output, cache
  keys (consult, api chart, probes, long report, synastry) and the rectification run.
- R2: one strength profile at the seed, AD start and p.43 (d); selected / equal /
  unresolved kept apart; unresolved nodes block only what depends on them (seed
  candidates kept, dated MDs before an unresolved length kept, AD-only loss in
  rectification keeps the MD).
- R3: Neecha Bhanga witness fields (reference, relative_house, self_reference,
  independent_confirmation_allowed, self_reference_only) from the main detector to
  the evidence card yogas_detail rows; self-reference-only never counts as support.
- Sync her b54812c3 KP clock validation; port her round-5 / round-6 tests.
- BUG-1783..1787; golden recaptured with TTL 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 22:38:00 +08:00
ClaudeandClaude Opus 5.5 d9306658fb docs: BUG-1798 capability-audit note
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 22:10:23 +08:00
ClaudeandClaude Opus 5.5 9795033da7 feat(consult): 解读方式 pill, 解读依据 list, no 联网 rows (BUG-1795..1798)
Owner-approved chat answer-mode UI (2026-11-08):
- Modes named 深度解读 (professional, default) / 简明解读 (plain) in the UI,
  the model-facing mode line and the runtime contract (names only).
- 解读方式 pill left of send (常用问题 pill look); menu reuses the preset
  popup rows; 功能吉凶口径 (PVR 表 30 / BPHS 例外表) under 深度解读 only;
  Drawer on phone. Remembered per user in localStorage; applies from the
  next question; 重新生成 uses the current choice.
- Mode resolution: this question's words -> pill -> 深度解读; history no
  longer sets the mode. Request carries answerMode (+ functionalProfile
  only under 深度解读); engine gets analysis_mode / functional_profile.
- Receipt records answerMode / functionalProfile; 简明解读 answers show a
  collapsed 解读依据 hairline list built from the receipt audit rows.
- External verification rows (联网 / MEVG / 真实案例) are dropped from the
  rendered 深度解读 audit table and never listed.
- Composer stacks when the single-row field would be under 64px (320px).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 22:07:21 +08:00
ClaudeandClaude Opus 5.5 04b4960933 docs: BUG-1773 / BUG-1774 history with r7 blind-eval results
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m9s
Independent Staging Quality Gate / validate-python (push) Successful in 6m47s
Independent Staging Quality Gate / publish (push) Successful in 2m51s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 21:13:44 +08:00
ClaudeandClaude Opus 5.5 d889617f2a fix(consult): backstop audit section starts its own paragraph (BUG-1765)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m15s
Independent Staging Quality Gate / validate-python (push) Successful in 6m50s
Independent Staging Quality Gate / publish (push) Successful in 3m15s
The missing-section continuation shared the length-continuation splice, so a
table written after an answer that ended mid-line was glued to the last
sentence and its H2 did not render.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 18:41:35 +08:00
Claude 528eaefb6a Merge branch 'codex/round6-engine-1108' into codex/round6-fixes-1108
# Conflicts:
#	docs/BUG_HISTORY.md
#	frontend/tests/fixtures/consult-evidence-card-golden.json
2026-11-08 16:52:48 +08:00
ClaudeandClaude Opus 5.5 a1241cbfcd docs: r5 and plain-mode r1 blind-eval evidence for BUG-1758/1763/1764
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 16:52:14 +08:00
ClaudeandClaude Opus 5.5 473d3fe2f3 docs: BUG-1768..1772 for the round-5 item reply (N1-N5, K1-K3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 15:22:11 +08:00
ClaudeandClaude Opus 5.5 d610756966 fix: chart dasha exact boundaries as UTC seconds (BUG-1752 privacy marker collision)
The first exact-boundary format printed local clock times; a generated
hour:minute collided with a private marker the repo scan forbids. Boundaries
are now start_ts / end_ts (UTC epoch seconds) beside the engine's local days;
no time string is printed. Goldens recaptured (evidence card TTL=0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 15:11:10 +08:00
ClaudeandClaude Opus 5.5 d676292343 fix: astrologer acceptance for BUG-1758/1763/1752 (source ledger, audit acceptance, engine boundaries)
- BUG-1758: the card's affliction layer is a source ledger: one entry per fact
  with its input, effect (conflicts / not_executed) and every house it bears
  on; a fact shared by two houses is one source, never two votes.
- BUG-1763: output acceptance after the one repair: a professional answer
  without the Technique Audit Table, or any answer without the engine audit
  rows (plain mode's evidence entry), fails as incomplete (kept text, no charge).
- BUG-1752: engine rows carry exact local start/end with UTC offset, parent
  start, cycle, and a meta block (365.25-day years, zone, [start, end)); the
  chart page copies them. Tests: midnight crossing, birth balance, second
  cycle, zero-length rows and 0-year Narayana / Chara MDs never current.
- Goldens recaptured (evidence card TTL=0; chart-view dasha from the engine).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-08 14:59:50 +08:00