Commit Graph

1919 Commits

Author SHA1 Message Date
Jesse_Chen cf6c8a9c36 test(api): stabilize vedastro timeout coverage 2026-09-04 03:20:21 +08:00
Jesse_Chen 4b711b72cb test(rectification): cover upstream acceptance 2026-09-04 03:06:43 +08:00
Jesse_Chen ae79911859 test(reports): prove export has zero model telemetry 2026-09-04 03:04:23 +08:00
Jesse_Chen 175e825cea fix(reports): redact internal export references 2026-09-04 02:18:36 +08:00
Jesse_Chen 9c987bebc3 fix(rectification): keep journey turn within size gate 2026-09-04 02:16:00 +08:00
Jesse_Chen a7041529c1 feat(reports): add birth time sensitivity 2026-09-04 02:11:57 +08:00
Jesse_Chen 44d3d3931b feat(rectification): pass ayanamsa per request 2026-09-04 00:26:57 +08:00
Jesse_Chen 3b09bbbee0 feat(reports): add professional reference export 2026-09-04 00:19:28 +08:00
Jesse_Chen c2f23131f7 feat: add health consultation report pipeline 2026-09-03 23:57:27 +08:00
Jesse_Chen 0be6fcfb4c feat(rectification): add adaptive question selector 2026-09-03 23:49:42 +08:00
Jesse_Chen 49cd66c537 docs(tasks): upstream-sync acceptance — fix brief for the degraded→blocked domain contract, finance strict-evidence drift, template registry refs, gate coverage; hygiene fix accepted
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-03 15:38:07 +00:00
Jesse_Chen c1e3f32a0f fix: restore ayanamsa state and keep tests hermetic
Independent Staging Quality Gate / validate (push) Successful in 21m34s
Independent Staging Quality Gate / publish (push) Successful in 2m1s
2026-09-03 23:22:50 +08:00
Jesse_Chen 027e4b0827 fix(frontend): remove undefined ayanamsa class
Independent Staging Quality Gate / validate (push) Successful in 16m5s
Independent Staging Quality Gate / publish (push) Successful in 2m7s
2026-09-03 22:34:51 +08:00
Jesse_Chen 734d20590c feat(upstream): wire merged engine fields into chat and reports
Independent Staging Quality Gate / validate (push) Failing after 31m48s
Independent Staging Quality Gate / publish (push) Has been skipped
Consultation and personal reports otherwise ignore the merged friendship table, timing seed, module audit, and Pratyantar windows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 20:58:47 +08:00
Jesse_Chen b631827fbe docs(tasks): repo-hygiene acceptance — fix brief for the gulika global ayanamsa leak, settings class style, hint copy, leftover literals, tests writing the repo
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-03 12:45:07 +00:00
Jesse_Chen f224146348 feat(upstream): merge a6f47abd engine, MCP, and orchestrator
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
Three-way-merge calculation modules and pl9-export into the product fork while keeping commercial API routes, Raman ayanamsa, and the consultation contract as a keypath superset.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 20:28:57 +08:00
Jesse_Chen 45d132588f feat(upstream): snapshot a6f47abd, REST VedAstro path, and 116-technique truth layer
Advance the one-way import to git commit a6f47abd with consultation keypath golden, switch official VedAstro comparison to the REST Calculate bridge, and receive the 25 new registry entries behind research_only_blocked.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 17:35:26 +08:00
Jesse_Chen 01a4536333 docs(tasks): record merged-branch cleanup and mark hygiene for review
Independent Staging Quality Gate / validate (push) Failing after 13m57s
Independent Staging Quality Gate / publish (push) Has been skipped
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:57:20 +08:00
Jesse_Chen 2415e751fe chore(repo): make the release gate reproducible and clean product URLs
PyJHora absence is now partial, tests write research manifests to tmp, the registry allows experimental_variant, and product links point at the Gitea repo. Early logs move to docs/history.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:55:26 +08:00
Jesse_Chen b6a70aa7df fix(ayanamsa): pin Lahiri on reference sets and add a user setting
Product default stays Raman. Public-case revalidation and fixture dashas now pass --ayanamsa lahiri; profiles store the four selectable values.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:33:46 +08:00
Jesse_Chen 58cae371bb docs(tasks): upstream sync brief — parallel rules against repo-hygiene
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-03 08:19:47 +00:00
Jesse_Chen 487fed40de docs(tasks): upstream sync brief — lift rectification freeze for three scoped items (task 7)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-03 08:15:45 +00:00
Jesse_Chen 2dba9e2597 docs(tasks): upstream sync brief — surface coverage matrix, rectification freeze rationale, task 6 wiring new engine fields
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-03 08:09:43 +00:00
Jesse_Chen 4ac9883de6 docs(tasks): upstream sync brief — data-file rules for the engine merge
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-03 07:58:48 +00:00
Jesse_Chen 2974ca5b85 docs(tasks): upstream sync brief — snapshot to a6f47abd, engine three-way merge, health/VedAstro REST/professional export
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VawU7Xfd5jS9wUEXz1XYmS
2026-09-03 07:52:25 +00:00
Jesse_Chen 591ffd21a1 fix(rectification): keep an open out-of-sample A–D card tappable
Independent Staging Quality Gate / validate (push) Successful in 11m52s
Independent Staging Quality Gate / publish (push) Successful in 1m46s
GET was dropping choice_card when the recast had no choice_frame, so the
embedded options rendered disabled. Replay the persisted reverse-verify /
out-of-sample schema instead of silencing the live question.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 15:30:49 +08:00
Jesse_Chen 74aaa1ba99 docs(tasks): repo-hygiene brief — product ruling: default ayanamsa stays Raman, user-selectable in settings; reference sets pin lahiri explicitly
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-03 07:27:30 +00:00
Jesse_Chen 62e1592001 docs(tasks): repo-hygiene brief — default ayanamsa back to Lahiri (P0), release gate reproducibility, registry allowlist, repo URLs, history logs, branch cleanup; status board rows
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-03 07:23:08 +00:00
Jesse_Chen d159f08eb2 Merge codex/rectification-ux-20260903: reveal the rectification surface once, one live row across choice and adoption, gaps as live rows, empty-case start, board first state
Independent Staging Quality Gate / validate (push) Successful in 10m47s
Independent Staging Quality Gate / publish (push) Successful in 1m54s
BUG-505..509. Verified: tsc 0, focused suites 186/186, full suite 2602/2568 with the 24 known no-Docker failures, lint 0 errors, next build 0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-03 07:16:12 +00:00
Jesse_Chen 99a91a97f4 docs(rectification): record the surface redo — BUG-505..509, DESIGN.md rectification surface, walkthrough section 8
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-03 07:07:45 +00:00
Jesse_Chen 3c33e59814 feat(rectification): confirm the tap on the choice card and show the declared minute on the empty board
The choice card now marks the tapped option with a check and 已选择 and,
while the tap is being recorded, carries the same live row shape as a
timeline step instead of only a wait cursor. Before any candidate exists
the board's clock shows the declared birth minute, its body says what
fills it later, and the column narrows to minmax(16rem, 18rem); the
compact peek reads "填报 HH:MM". No house table is invented for the
declared time — the Case API does not provide one.

BUG-508, BUG-509

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-03 07:07:31 +00:00
Jesse_Chen 1e50007c50 fix(rectification): keep one live row from a tapped choice or an adopted candidate through the follow-up turn
After a choice was recorded the chat removed its "正在记录本次选择…" row,
dropped `busy`, and let an effect start the follow-up turn a frame later —
one blank frame, and the next card could flash before the turn hid it.
Adopting a candidate showed nothing but a greyed button. `send` now takes a
continuation that reuses an existing live row, the choice and adoption
flows await it in the same async chain, `busy` is held throughout, and
adoption puts "正在采用 HH:MM…" at the end of the transcript before the
round trip.

BUG-506

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-03 07:07:31 +00:00
Jesse_Chen 360989ca2c fix(rectification): make every gap a live row with retries, give an empty Case a start, and say why a run stopped
The chat used to show "当前没有可回答的问题,正在等待服务端更新" / "当前问题暂时无法显示"
/ "题目加载失败,请刷新" as bare copy above the composer. The gap between a
settled turn and its next question is now a state: `preparing` renders the
same timeline live row the reply uses ("正在准备下一个问题…") and refetches the
Case on a 2s timer up to two retries; `unavailable` renders one line and a
44px reload button. A snapshot that never arrived at hydration is the same
gap. A resumed Case with no turns and no server-started opening shows
"这段校正还没有开始。" with one 开始提问 action. Stopping a run keeps what
streamed and says so instead of "暂时不可用"; the opening turn's live row
names what is happening; a 402 explains itself for 600ms before leaving.

BUG-505, BUG-507

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-03 07:07:31 +00:00
Jesse_Chen 53017d4153 fix(rectification): reveal the surface once — hydrate the Case before the switch, never remount, static entry feedback
Opening a rectification Case used to switch sessions first and read the
turns afterwards, so the reader saw a plain transcript, then an empty
panel, then a remount when the turns arrived (and again after the first
turn settled, because the panel key carried a ready/loading suffix).
The surface hook now reads turns and snapshot in one Case request under
the home reveal budget and only then makes the session active; the
sidebar defers the switch the same way; a session selected at bootstrap
(deep link, refresh) is hydrated during the prepare phase so the reveal
shows the surface itself; the panel key is the session/Case binding only,
later turns fill an empty transcript as a prop update, and unmounting
aborts any stream or snapshot read. The homepage card and the sidebar row
say 正在打开 statically while the Case opens — no spinner after the reveal.

BUG-505

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-03 07:07:31 +00:00
Jesse_Chen 0cefaea6a2 docs(tasks): add a status board with state and landing commit per task brief
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-03 07:05:15 +00:00
Jesse_Chen 8db71aaf81 docs: product-level README, AGENTS.md split into code/reading parts, add CLAUDE.md, move task briefs to docs/tasks
- README.md is now the product/repo front door (architecture, repo map,
  local dev, test tiers, delivery flow, doc map). Engine positioning,
  VedAstro/Codex setup and the oracle/benchmark command reference move
  verbatim to docs/engine/README.md, docs/engine/vedastro-gateway.md and
  docs/benchmark/README.md. Capability badges realigned with the registry
  (91/78/8/0); tests/test_readme_badges.py was red on staging.
- AGENTS.md: Part A (environment truth, delivery, worktrees, record
  placement, bug workflow, growth freeze, frontend red lines, privacy,
  pre-work check, test tiers) and Part B (reading-rigor constraints).
  GitHub issue-tracker/triage boilerplate removed: GitHub is a read-only
  mirror. All strings locked by tests/ are preserved.
- CLAUDE.md added: roles, three working modes, task-brief sections,
  acceptance criteria, session discipline; imports AGENTS.md.
- 50 tracked TASK-*/PROGRESS-* files and 3 never-committed briefs move to
  docs/tasks/ with an index; REPO_LAYOUT.md merged into README.

Docs-only change (no gated path touched).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-03 06:56:06 +00:00
Jesse_Chen af411f590a docs(rectification): restart note for the surface brief — new baseline 8e214e29, BUG-505+, items superseded by staging
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-03 06:43:37 +00:00
Jesse_Chen 8e214e290a fix(rectification): give the opening collect question concrete examples
Independent Staging Quality Gate / validate (push) Successful in 10m12s
Independent Staging Quality Gate / publish (push) Successful in 1m50s
The other-domain fallback copy was being used as the first question.
Opening now uses GENERIC_COLLECT_QUESTION; after-evidence other copy stays.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 14:31:23 +08:00
Jesse_Chen 0c0df42679 fix(rectification): require three answers before uncertainty stop
Independent Staging Quality Gate / validate (push) Successful in 9m19s
Independent Staging Quality Gate / publish (push) Successful in 1m52s
One "一时说不好" no longer ends the interview. Plateau streaks use the
same sample floor. Delivery copy states why the range stopped.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 12:08:37 +08:00
Jesse_Chen e8c98c37cf fix(rectification): restore collect-phase exit and drop the consult handoff
Independent Staging Quality Gate / validate (push) Successful in 8m29s
Independent Staging Quality Gate / publish (push) Successful in 1m45s
Public can_adopt no longer starves the collect fallback, 改选 scrolls to
the offer, opening collect uses other, and probe_year stays on the
schema. The status bar no longer starts an empty consultation chat.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 10:41:36 +08:00
Jesse_Chen 15cf6d3bbc docs(rectification): add uncertainty-stop task brief — one unsure answer must not end the interview (BUG-503)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-03 02:30:48 +00:00
Jesse_Chen 13bde020fb fix(staging): let migrate accept docs-only-ahead like deploy
Independent Staging Quality Gate / validate (push) Successful in 8m57s
Independent Staging Quality Gate / publish (push) Successful in 1m49s
Docs-only staging HEAD blocked Migrate Staging Database even when an ancestor already had a successful exact-SHA gate, so pending SQL could not be applied.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 10:29:19 +08:00
Jesse_Chen 1d77b5b129 docs(rectification): adopt-flow fix brief §4b — delete the consult handoff button per product decision
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-03 02:25:47 +00:00
Jesse_Chen 6a2dcde095 docs(rectification): adopt-flow fix brief adds §4b — consult handoff must refresh profile, carry the pending question, fail loudly
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-03 02:16:29 +00:00
Jesse_Chen cf6405ed88 fix(report): say chapters wrote when assembly never finished
Independent Staging Quality Gate / validate (push) Successful in 8m9s
Independent Staging Quality Gate / publish (push) Successful in 1m48s
The 09:31 staging card had four ready sections but showed only structural
validation failure. Derive the list copy from section status so a written
pipeline stop is not described as an empty schema miss.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 09:58:06 +08:00
Jesse_Chen fbd6e48036 fix(report): do not fail a written report when progress projection throws
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
Staging wrote four ready chapters then marked the job schema-invalid 34ms
later with no summary telemetry. Keep chapter persistence and assemble
going if onProgress or a non-lease heartbeat error fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 09:54:32 +08:00
Jesse_Chen f127ada413 docs(rectification): add adopt-flow fix task brief (exit fallback, 改选, opening domain, probe_year) 2026-09-03 01:40:56 +00:00
Jesse_Chen 35e5781e66 fix(rectification): gate collect-phase adopt cards and keep post-adopt verify answerable
Independent Staging Quality Gate / validate (push) Successful in 9m50s
Independent Staging Quality Gate / publish (push) Successful in 1m53s
Public can_adopt follows session_outcome; reverse_verify reuses the persisted question id; offer cards settle on the owning message with a status-bar handoff.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 09:29:34 +08:00
Jesse_Chen 5c0bec0c94 fix(report): keep personal-report heartbeats ref'd during chapter writes
Independent Staging Quality Gate / validate (push) Successful in 7m56s
Independent Staging Quality Gate / publish (push) Successful in 1m49s
Staging lost the job lease mid-chapter because the unref'd interval never
fired outside an HTTP request. Refresh the lease on section progress and
leave the heartbeat timer ref'd so a long model await cannot starve it.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 02:13:13 +08:00
Jesse_Chen 4329426530 fix(report): keep personal-report leases alive through serial chapter writes
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
Staging verification wrote four ready sections then lost the 120s job lease
mid-chapter. Lengthen the worker lease and cap summary tokens with the same
3072 ceiling the section budget already uses.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 02:07:18 +08:00