The new /synastry/[reportId] route is missing from the capability audit's
app_routes list (quick gate red), the changelog still promises reuse of a
ready report, and the sidebar highlight test asserts a constant.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
PyJHora runs in a subprocess worker for the annual method reference only;
installing it must leave every other output byte-identical (seven switch
points pinned, parent process never imports jhora). Inputs default to
local birth time and the requested year (D6, awaiting product confirm).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
nowrap and max-content hit every report table and break print; the other-
person save is a drifted copy of the archive page; a click on the dialog
padding closes the editor and drops edits.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
Four upstream files from 5fb8379c (the issue missed trikona_dasha.py),
root budget 448 -> 452 per the #81 decision A precedent, wiring into the
jaimini and full-reading outputs only. The source string becomes a plain
book citation; frozen rectification identity must not move.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
Stage A renders what the engine already computes (71 appendix sections in
6 chapters, zh appendix from its own renderer, export sign names); stage B
ports the missing annual, dasha sub-period and Yogi point calculations on
our sidereal frame. No size cap per product; overturns fix2 F5.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
Product decided 1A 2A: Yogini sub-periods proportional with internal
checks (majors still matched against PyJHora); Ashtottari leaves this
ticket because its start table disagrees with PyJHora on 8 of 12
nakshatras and will get its own issue.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
Opening the export sheet now says once, at the top, why English is unavailable. Selected borders, radios and checks use the theme color while fills stay neutral.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
140 fixed-seed fictional charts reproduce 40% han_leak. Fix at the source
with English twin fields, no tail glossary entries; Chinese output must stay
byte-identical; 200-chart sweep in full pytest plus a smoke file in the
quick gate. Recurrence of BUG-1272.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
The English-unavailable note moves from a line inside the dialog to one
top toast per open; selected states take the theme accent on borders,
dots and boxes with neutral backgrounds. Reverses the DESIGN.md neutral
selected-state sentence; BUG-1078's no-dark-block rule stays.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
Queued after #86. The ascendant's status cell says "/" with a hover/tap
explanation on the chart page, and the report row says "/" with a note
under the table. Reverses the 2026-10-15 "不适用" wording.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
Queued after Gitea #86. Drops the reported_birth_time immutability in
chart_profiles_guard_birth (copied from the owner guard that was lifted on
07-21); active_* locks stay. Not for the agent loop: touches the database.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
English reports hid the analysis fold, timeline titles left out the month span, and deleting a pinned model stopped the next consultation turn.
Co-authored-by: Cursor <cursoragent@cursor.com>
createSynastryFullReport counted today's reports with .gte(), which the
self-hosted client did not implement; every create threw before any credit
was reserved and surfaced as a generic 500 (BUG-1399). The synastry create
path now uses the shared DataQueryBuilder type, and a scan test requires every
builder method used in src to exist on the self-hosted client.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
Editing a published model tried to update a non-draft row, so the save collapsed into a generic constraint error.
Co-authored-by: Cursor <cursoragent@cursor.com>
The closed sentence was prerendered when the build had no database. The page now asks for the flag in the browser, and synastry.full is published at 19 credits.
Co-authored-by: Cursor <cursoragent@cursor.com>
The follow-up checker now rejects a shifted antardasha or English mahadasha, and the onboarding source contract matches the new sentence.
Co-Authored-By: Claude (agent loop) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
A wrong antardasha or English mahadasha date still passes the follow-up checker, and the home onboarding source contract was left behind.
Co-Authored-By: Claude (agent loop) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The chat stays bound to that section's saved calculation, checks each chart fact before answering, and bills like an ordinary turn.
Co-authored-by: Cursor <cursoragent@cursor.com>
The list query had been split into four reads, so older pages no longer followed one cursor. A7 was read from the wrong module, and the shell asked for the product switch on every mount.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
Renumber the synastry records to BUG-1394 and BUG-1395 so they no longer collide with BUG-1393 from issue 84.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
The second review still failed on missing database and route coverage, an unmarked relationship structure, a stuck English lease, and a sidebar that fetched the product switch itself.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
The review found empty sections and an English job that stayed running. Take evidence from reader briefs, retry one section, and settle before marking the report ready.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
The report used the same nine-year rule as Shoola. Start from the stronger second or eighth sign and list mahadashas only.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
The pair page and reader replace the leftover chat draft, and the same pair is not charged again.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>