Add Apache-2.0 @4n6h4x0r/stem-branch 0.8.0, a seven-governors adapter,
and POST /api/qizheng, /api/western, /api/ephemeris_events.
BUG-700 remains blocked (do not call --pillars). BUG-701 and BUG-702 are
resolved. BUG-703 is investigating (panchanga Lahiri). Skill is not bumped.
Rebind after sanitize, write an explicit binding_scope, and make the quality gate recompute coverage. Wall-clock fields stay in the packet but out of the hash.
20 public AA cases, raman/mean. Lowering MIN_BOUNDARY_DAYS narrows ±10 from
15 to 11 minutes but drops top-1 0.80→0.75; wider radii get wider ranges.
Varga sensitivity weights (V1/V2) match production; D60 (V3) hurts ±10.
Day-precision events offset ±7 never squeeze the true minute out. Production
45/30 gate and equal varga weights stay unchanged.
Offline v4 holdout probe. Last round's width=window result was the
no-elimination metric; production still-valid ranges after six answers
are 15/33/56 minutes. Adjacent merge never fires under step-2 radii.
W1/W2 match baseline; W3 is uncertain after one coverage squeeze.
No production clustering or scoring defaults changed.
Build holdout v4 from the public AA set, correct the two v3 dates, and sweep
R1–R5 plus pairs offline. No production scoring defaults change. No
implementation brief: delivered width stays the full window on every radius.
Offline H1-H4 measurement on 20 public AA holdout cases.
Block unique top-1 did not rise; H4 made it worse; minute layer unchanged.
Leave production scoring untouched. Transits must not drive minute conclusions.
Skipped or already-reported health must not be asked again as health_pressure, and occupation declined as other must still close the occupation line.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hide the button once both personality cards are answered, persist the second card in the same opt-in round, and freeze Skill 10.0.26.
Co-authored-by: Cursor <cursoragent@cursor.com>
After six dated answers, refresh can use 30-day same-year windows plus pratyantar and D9/D10 Narayana. First-round probe rules stay at 45 days.
Co-authored-by: Cursor <cursoragent@cursor.com>
Empty engine refresh now records an already_answered attempt so GET can leave wait-to-narrow; collect kinds map onto the table CHECK; remaining candidates drive probe refresh.
Co-authored-by: Cursor <cursoragent@cursor.com>
Dated-choice exhaustion is not convergence. Refresh probes from remaining
active candidates, then ask a targeted collect, then deliver. Skill 10.0.24.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop domain-wheel collecting and age-band years in prompts. Ask until the training gate, then discriminate until convergence, then deliver a range plus a concrete follow-up. Reserve holdout only with four dated events.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ask finance and health like other domains, put year-cued collect questions first, and let the classifier distinguish decline vs skip. Skill 10.0.22.
Co-authored-by: Cursor <cursoragent@cursor.com>
Host only says 记下了 after a real write; Mastra schema rejections fail closed. Ledger year keys no longer drop quality probes, dual-dasha agreement is per cluster, width uses cluster span, and public house tables follow the inference minute.
Co-authored-by: Cursor <cursoragent@cursor.com>
Dated life events with clock times were swallowed as birth-window replies, and compare columns still stopped at the first nine candidates after the hour-window cap.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ask dated dasha probes first; D9/D10 and nakshatra wait until that pool is empty, score at half weight, and never eliminate. Skill 10.0.21.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hour windows no longer drop later signature clusters. Credible range uses cluster coverage, and a mid-session spoken birth window gets a fixed reply without calling the model.
Co-authored-by: Cursor <cursoragent@cursor.com>
Engine by_time ledgers now include the full candidate set so posterior columns can look up fit and windows. Delivery turns keep up to three sentences after idle persist; the card subtracts repeated traits and folds the board chart.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consultation was passing the birth mahadasha into event-class splits, so marriage hits stayed empty and timing still said 缔结. Read live MD/AD from dasha_sub_periods, derive activation copy from the split, and isolate fence failures so one bad varga cannot 500 the whole report.
Co-authored-by: Cursor <cursoragent@cursor.com>
Venus/Jupiter/Moon periods no longer collapse into one marriage-opportunity line. Full reading reports the ten BPHS conditional dasha families; Skill 6.9.16.
Co-authored-by: Cursor <cursoragent@cursor.com>
Longform report pages kept the D1/D9/Moon and varga headings but skipHtml
stripped the engine's inline SVG. Emit a jyotish-chart JSON fence beside
each SVG and render a diamond chart on the reader without relaxing HTML
sanitization. BUG-607.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the minute-row delivery card with up to three compare columns so users can pick the time that fits, and apply the adult-year floor on inspect fallbacks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Engine asked_probe_keys no longer include varga split hashes that 400 the scorer, failed compares become visible and retry, user stop can still deliver a range on a stale snapshot, and holdout no longer reasks domains already in the ledger.
Co-authored-by: Cursor <cursoragent@cursor.com>
Engine calls already returned markdown; the worker failed because local postgres upsert required onConflict and the appendix write omitted it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Intake stores how sure the user is; rectification now searches that range, offers a one-click widen when event fit is low at the edge, and trisects windows longer than two hours before the minute grid.
Co-authored-by: Cursor <cursoragent@cursor.com>
Choice copy was comparing the search window, so every answer said the range had not changed. Block-scan summed raw scores, so longer afternoon windows won before any evidence difference.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep askable cards after exhaustion, explain each probe, read the adopted credible range in reports and chat, and compare declared periods before the minute grid when the clock is unknown.
Co-authored-by: Cursor <cursoragent@cursor.com>
Implement offset and softmax relative-support scales and a public holdout calibration script, but leave the default proportional because no scheme passed the coverage-and-width gate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pass asked probe keys into the engine without changing result fingerprints, block nearby years already asked, and require a dated same-domain ledger event before rendering varga_style cards.
Co-authored-by: Cursor <cursoragent@cursor.com>
Heading-ensure only covered empty packets, so present KP months still dropped MD/AD titles and sanitizer blanked source_path. Also lock the quality gate onto the new contracts.
Co-authored-by: Cursor <cursoragent@cursor.com>
New reports skip the writer, persist pl9 Markdown as the body, and settle zero-token usage on the catalog model. Planned longform sections now emit blocked rows instead of vanishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Web export now calls the same full pack as the long skill report and caches an owner-only Markdown download. Appendix failure stays unavailable and does not change the main report status.
Co-authored-by: Cursor <cursoragent@cursor.com>
Five-theme personal_full assembled nine charts after health vargas landed, but the document schema still capped at six. Bind the count to the enum, align JSON/Python contracts, and log final-parse paths without values.
Co-authored-by: Cursor <cursoragent@cursor.com>
API birth payloads store hour/minute as floats, and datetime() rejected them
after sensitivity was wired into every consultation_workflow call.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consultation and personal reports otherwise ignore the merged friendship table, timing seed, module audit, and Pratyantar windows.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
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>
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>
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>