Commit Graph
3365 Commits
Author SHA1 Message Date
Jesse_Chen a2ebb28244 Merge codex/goel-jaimini-strength-20261022 (#94) into staging
Independent Staging Quality Gate / validate (push) Successful in 15m44s
Independent Staging Quality Gate / publish (push) Successful in 4m27s
# Conflicts:
#	CHANGELOG.md
#	docs/tasks/README.md
2026-10-22 08:53:17 +08:00
Jesse_ChenandClaude Opus 5.5 9a0d5e11f3 docs(tasks): English han-leak fix brief (agent loop, issue #89 round 1)
The branch edits scripts/jaimini.py, a frozen rectification scoring file;
the sweep's jhora block does not reach the replay subprocesses, so the
tests render a packet production never sees; missing English is blanked
instead of exposed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-22 08:05:18 +08:00
Jesse_Chen 28dd8df333 Merge codex/chart-subject-table-20261021 (#86) into staging
Independent Staging Quality Gate / validate (push) Successful in 15m56s
Independent Staging Quality Gate / publish (push) Successful in 3m36s
# Conflicts:
#	CHANGELOG.md
#	docs/BUG_HISTORY.md
2026-10-22 03:23:59 +08:00
jesse-uxGrok (agent loop)Cursor
52e5d6dc02 docs: publish the Goel note and the strength boundary
Issue #94 T6. Keep the upstream calculation note, replace the local manuscript path with a book citation, and add our one-line pointer. Record ERR-116 and a changelog line. Skill version is unchanged.

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 01:29:22 +08:00
jesse-uxGrok (agent loop)Cursor
489ae2fb35 docs: record the Goel Jaimini strength regression
Issue #94 T5. Two hundred fixed-seed fictional charts on mean and true nodes all execute, and the Atmakaraka matches chara_karaka_7. Chinese and English full-data markdown for the three fixed fictional charts is unchanged. The frozen-file intersection is empty.

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 01:28:51 +08:00
Jesse_Chen 680159bab3 Merge codex/chart-ascendant-slash-20261021 (#87) into staging
Independent Staging Quality Gate / validate (push) Successful in 14m14s
Independent Staging Quality Gate / publish (push) Successful in 4m9s
# Conflicts:
#	CHANGELOG.md
#	docs/tasks/README.md
2026-10-22 01:21:22 +08:00
Jesse_Chen 24ed3032fb Merge codex/report-export-dialog-polish-20261021 (#90) into staging
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 3m38s
2026-10-22 01:17:50 +08:00
jesse-uxGrok (agent loop)Cursor
3cbd0cbd33 fix(chart): 报告数值表才单行,保存他人共用一处,点内边距不关编辑框
F1 只有表头含速度、度数或黄经的表保持单行,其余表和打印都换行。
F2 保存他人收成 saveOtherProfile,档案页保存后也清星盘和星历缓存(BUG-1405)。
F3 编辑框只在点到框外时关闭,内边距不再丢掉未保存内容(BUG-1406)。

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 01:13:42 +08:00
jesse-uxGrok (agent loop)Cursor
a769533032 test: lock Goel node policy, tied degrees, and raw longitudes
Issue #94 T4. Wired jaimini output keeps both node policies, blocks equal seven-planet degrees without an Atmakaraka or a rank, and full-reading passes chart degree_raw into Goel within 1e-6 degrees.

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 00:57:58 +08:00
jesse-uxGrok (agent loop)Cursor
a1c7f6ce67 feat: attach Goel Jaimini strength to jaimini and full-reading
Issue #94 T3. Add _goel_jaimini_evidence and merge it for jaimini modes all/special and before modules.jaimini is stored. Goel failures are logged and returned as blocked so they cannot drop the jaimini module. cmd_jaimini passes degree_raw, falling back to degree.

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 00:56:10 +08:00
jesse-uxGrok (agent loop)Cursor
eb67962d70 test: port Goel Jaimini strength checks onto our Niryaana selector
Issue #94 T2. Keep the upstream test and retarget select_niryaana_shoola_start_sign to scripts.rashi_dashas_native. Add test_full_reading_exposes_goel_jaimini_strength using the existing fictional BASE_BIRTH_ARGS.

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 00:54:02 +08:00
jesse-uxGrok (agent loop)Cursor
424f03a4d5 feat: vendor four upstream Goel Jaimini strength modules
Issue #94 T1. Place goel_jaimini_strength, trikona_raman, sthira_brahma_goel_short_method, and trikona_dasha from upstream 5fb8379c under scripts/. The only local edit is the SOURCE book citation. Raise ROOT_PY_BUDGET from 448 to 452.

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 00:52:52 +08:00
Jesse_ChenandClaude Opus 5.5 7fbdcab113 docs(tasks): synastry T7-T11 fix brief (agent loop, issue #85 round 1)
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
2026-10-22 00:48:08 +08:00
jesse-ux 8652ccf9ac merge origin/staging into codex/chart-subject-table-20261021 2026-10-22 00:41:58 +08:00
Jesse_ChenandClaude Opus 5.5 2806bd5b75 docs(tasks): full data parity part 3 brief (agent loop, issue #93)
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
2026-10-22 00:37:54 +08:00
Jesse_ChenandClaude Opus 5.5 b662bf59fc docs(tasks): chart subject/table fix brief (agent loop, issue #86 round 1)
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
2026-10-22 00:34:24 +08:00
Jesse_ChenandClaude Opus 5.5 a9bf16816b docs(tasks): Goel Jaimini strength port brief (agent loop, issue #94)
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
2026-10-22 00:32:53 +08:00
jesse-uxGrok (agent loop)Cursor
d2edf8b7a8 fix(chart): 上升的状态格改成「/」
上升不是行星,本命、月亮盘和分盘的状态格不再写「不适用」。悬停或点一下说明原因。报告同一格写「/」,并在表下加中英文说明。

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 00:03:19 +08:00
Jesse_ChenandClaude Opus 5.5 f90020efda docs(tasks): full data parity part 1 brief (agent loop, issue #91)
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
2026-10-21 23:42:05 +08:00
Jesse_ChenandClaude Opus 5.5 8c63f31f12 docs(tasks): chart dasha Yogini switch brief (agent loop, issue #88)
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
2026-10-21 23:26:55 +08:00
jesse-uxGrok (agent loop)Cursor
a2f65842e6 fix(report): toast a missing English edition and tint export selection
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>
2026-10-21 23:13:15 +08:00
Jesse_ChenandClaude Opus 5.5 9812f31737 docs(tasks): English edition han-leak brief (agent loop, issue #89)
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
2026-10-21 22:39:37 +08:00
Jesse_ChenandClaude Opus 5.5 07730e3924 docs(tasks): export dialog polish brief (agent loop, issue #90)
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
2026-10-21 22:28:16 +08:00
jesse-uxGrok (agent loop)Cursor
885bd5665f fix(chart): 星盘页可以改出生资料,人名看得出能点,报告行星表不再挤断
报告行星表按内容定列宽,速度显示到 4 位小数,星宿英文名不再从中间拆开。星盘页出生行就地编辑;别人已保存的出生时间仍锁住。

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-21 20:38:23 +08:00
Jesse_ChenandClaude Opus 5.5 308ca2a65c docs(tasks): ascendant status slash brief (agent loop, issue #87)
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
2026-10-21 20:18:54 +08:00
Jesse_ChenandClaude Opus 5.5 bd3ce0e7b5 docs(tasks): brief for editable birth time of other subjects
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
2026-10-21 19:48:43 +08:00
Jesse_ChenandClaude Opus 5.5 117d8cbe53 docs(tasks): add T11 allow regenerating a synastry report to #85 brief
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-21 17:20:27 +08:00
Jesse_ChenandClaude Opus 5.5 ff6b228dd6 Merge codex/synastry-staging-fix-20261021 (#85 T3-T6) into staging
Independent Staging Quality Gate / validate (push) Successful in 20m26s
Independent Staging Quality Gate / publish (push) Successful in 4m4s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-21 16:45:44 +08:00
Jesse_ChenandClaude Opus 5.5 792f64ec32 docs(tasks): add T8-T10 (report scroll, repeated heading, name order) to #85 brief
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-21 16:38:05 +08:00
jesse-uxandCursor 6a761bc51e fix(synastry): show timeline spans and keep old chats on the default model
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>
2026-10-21 16:28:04 +08:00
Jesse_ChenandClaude Opus 5.5 fac29c0410 docs(tasks): add T7 synastry report own route to #85 brief
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-21 16:09:41 +08:00
Jesse_ChenandClaude Opus 5.5 998d07baf9 test(db): run the gte/lt check on a probe table the runtime role can read
Independent Staging Quality Gate / validate (push) Successful in 15m20s
Independent Staging Quality Gate / publish (push) Successful in 4m51s
The first version seeded chart_profiles, which the runtime role cannot read
directly; the gate failed with permission denied (run 4168).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-21 14:38:16 +08:00
Jesse_ChenandClaude Opus 5.5 05a2431208 docs(tasks): board row for #85
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-21 14:16:51 +08:00
Jesse_ChenandClaude Opus 5.5 503a16fb92 fix(db): add gte and lt to the self-hosted query builder so synastry reports can be created
Independent Staging Quality Gate / validate (push) Failing after 18m15s
Independent Staging Quality Gate / publish (push) Skipped
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
2026-10-21 14:15:59 +08:00
Jesse_ChenandClaude Opus 5.5 cb3bc330eb docs(tasks): synastry staging fix brief (create fails on missing gte)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-21 14:02:22 +08:00
jesse-uxandCursor 63984d4fca fix(synastry): use the shared 767px cut and drop the unused place class
Independent Staging Quality Gate / validate (push) Successful in 15m1s
Independent Staging Quality Gate / publish (push) Successful in 3m49s
The staging gate rejected a 760px breakpoint and a class with no CSS rule.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-21 09:24:20 +08:00
jesse-uxandCursor 67c1e68815 feat(synastry): lay out the match screens from the confirmed prototype
Independent Staging Quality Gate / validate (push) Failing after 18m11s
Independent Staging Quality Gate / publish (push) Skipped
The add-person card, the generating wait, and the report header follow the prototype the product owner pointed at.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 17:22:17 +08:00
jesse-uxandCursor 0a5d93ab75 fix(admin): save published models as a new draft and allow deleting them
Independent Staging Quality Gate / validate (push) Successful in 14m0s
Independent Staging Quality Gate / publish (push) Successful in 4m5s
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>
2026-10-20 15:02:42 +08:00
jesse-uxandCursor dac6b7fae9 test(db): expect the published synastry.full prices in the business schema
Independent Staging Quality Gate / validate (push) Successful in 17m30s
Independent Staging Quality Gate / publish (push) Successful in 4m5s
The local PostgreSQL check reads the whole feature_pricing table, so the 19-credit rows from the new migration have to be in the expected list.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 14:24:20 +08:00
jesse-uxandCursor 006b067e82 fix(synastry): open the match page from the live flag and price it at 19 credits
Independent Staging Quality Gate / validate (push) Failing after 14m48s
Independent Staging Quality Gate / publish (push) Skipped
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>
2026-10-20 12:52:28 +08:00
06dba28d3a docs(tasks): accept synastry report chat after the dasha wording fix
Independent Staging Quality Gate / validate (push) Successful in 15m56s
Independent Staging Quality Gate / publish (push) Failing after 24m38s
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>
2026-10-20 08:52:53 +08:00
jesse-uxandCursor 549e37b995 fix(synastry): check the dasha sentences the report actually writes
A shifted antardasha or English mahadasha was passing because the checker only recognized 大运 and 子运.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 07:36:32 +08:00
jesse-uxandCursor 8b12e502f4 merge origin/staging fix brief for synastry report chat
Keep the review notes with the implementation record. The feature commit stays off staging.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 07:33:11 +08:00
4702757974 docs(tasks): reject synastry report chat until dasha wording is checked
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>
2026-10-20 00:30:15 +08:00
jesse-uxandCursor 3956519f33 feat(synastry): open a follow-up chat from one stored report section
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>
2026-10-19 21:44:25 +08:00
jesse-uxGrok (agent loop)Cursor
123295135a fix(synastry): restore report paging and finish the third review gaps
Independent Staging Quality Gate / validate (push) Successful in 16m50s
Independent Staging Quality Gate / publish (push) Successful in 10m2s
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>
2026-10-19 15:53:06 +08:00
jesse-uxGrok (agent loop)Cursor
88d641974e Merge remote-tracking branch 'origin/staging' into codex/synastry-full-report-20261018
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>
2026-10-19 15:34:29 +08:00
Jesse_ChenandClaude Opus 5.5 32a51071aa docs(tasks): synastry full report third fix brief (issue #82)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-19 15:10:48 +08:00
jesse-uxGrok (agent loop)Cursor
362d903c31 fix(synastry): close the second review gaps on evidence, billing, and the sidebar
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>
2026-10-19 14:48:11 +08:00
jesse-ux 51bb3c1e7f Merge remote-tracking branch 'origin/staging' into codex/synastry-full-report-20261018 2026-10-19 14:16:04 +08:00