The pair key stays sorted for dedup, and generation now loads the two people in the order they were chosen. The report back link uses Link so the new route passes the page-link lint.
Co-authored-by: Cursor <cursoragent@cursor.com>
The gate now rejects that opening and asks for a rewrite, and the saved text no longer keeps the duplicate.
Co-authored-by: Cursor <cursoragent@cursor.com>
The shared report URL lit the personal-report item in the sidebar. The new address keeps the synastry item current and replaces the old link.
Co-authored-by: Cursor <cursoragent@cursor.com>
The previous commit stored the whole history file with Windows line endings. This puts it back to the repository's line endings and keeps the BUG-1404 entry.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
The two upstream files stay verbatim in scripts/. The path helper moved into a subdirectory so the root file budget rises by only those two. Niryaana Shoola is a placeholder until its rule is corrected. Targeted tests passed.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
Move the three local glue modules into scripts/marriage_match_service and point the invocation matrix at marriage_match.py. The upstream engine file stays where it is.
Checked the file-count and oracle contracts, the marriage-match tests, and a Windows full pytest. The 176 failures are python3-missing and path-separator noise; the named contracts passed.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>