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
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
- 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)
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
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
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
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
- 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
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
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
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
- 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