Commit Graph
37 Commits
Author SHA1 Message Date
jesse-uxandGrok (agent loop) 2e9ca2d73a fix(reports): drop web-verification wording from user-visible report text (BUG-1810)
产品负责人 2026-11-08:用户看到的报告文字不出现「联网 / 外部资料 / 外部核验 /
MEVG / 真实案例 / Real Case / Global Web」,后台记录保留。

- 个人报告写作提示词:依据与边界改为「没有用户经历可对照」,置信度封顶 B 不变
- 年报:技法执行情况跳过 MEVG / Real Case 两行;没有纳入的删掉对应条目
- 合盘:技法执行情况删掉「外部资料与真实案例核对:未进行」整行
- 产品导出审计章节:这两行不再渲染,证据边界同类一句删除,packet 原样保留
- 质量门:只要求 Functional Benefic/Malefic 渲染;新增后台检查,要求 packet
  仍带这两行且它们没有出现在 markdown 里

Tests: 新增 frontend/tests/report-no-web-wording-20261109.test.ts(4)与
tests/test_report_no_web_wording_20261109.py(3);更新年报、合盘、审计章节、
质量门既有断言(原值/新值/原因已注明)。

Co-Authored-By: Grok (agent loop)
2026-11-09 08:20:50 +08:00
ClaudeandClaude Opus 5.5 62d3da37fe feat(yoga): sync astrologer Yoga rule batch (733a931b / 30dee7b0 / 1307bf69)
产品 2026-11-07 同步占星师 Yoga 规则批次:
- lord(a) != lord(b) guard on ten two-lord rules (raja 1_4, 1_10, 4_9, 5_9,
  7_9, 2_10, 2_7; dhana 5_11, 2_5; kalatra 7_1); Jobs raja_yoga_1_10 and
  Presley dhana_yoga_2_5 no longer form, matching her output.
- 23 rules become structural_observation "(Observation)" rows; old effects
  move to traditional_effects; engine rows carry claim_kind, legacy_name,
  condition_evidence, strength 'observation', strength_basis.
- formation contracts + assess_yoga_formation, formation_checks /
  formation_assessment / strength_factors on every JSON-rule row;
  participants_expr support; natal yoga context chart_type D1.
- consultation: compact rows, sieve hits and yoga_conditions carry
  claim_kind / formation / formation_checks; observation status is
  structural_observation; card yogas_detail copies them plus formation_rule.
- reports: personal report never lists an observation as a formed
  combination; annual facts rank observations last and the evidence lists
  them under 结构观察, not 格局; PL9 tables print 结构观察 for strength /
  category and group observations as mixed.
- governed rules (BUG-1207, 1205, 1187/1206, 1596/1624, 1597/1625, 1571)
  untouched; Parvata stays disabled; 69 not_implemented unchanged.
- card golden recaptured.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-07 21:58:06 +08:00
ClaudeandClaude Opus 5.5 cd07b3e018 fix: sync astrologer handoff 99076dad (Ashtottari cycle gap, Bhava MC frame, Narayana coverage, compatible fields)
Ported from handoff/product-parity-20261107 (28823446, 99076dad):
- Ashtottari: cycle index counts from the balance-shifted first MD (no
  gap before the 108th birthday); dasha_balance_at_birth / dasha_at_birth /
  timeline_basis now emitted (the report already read them).
- Bhava Chalit MC in the natal frame (_bhava_midheaven_in_natal_frame).
- Narayana current lookup: no modulo replay outside the two generated
  cycles; status selected / outside_generated_timeline.
- Bhava Bala: no unvalidated absolute level; _meta.score_unit = Virupas.
- Field names lined up with hers: required_strength_pct (+ semantics
  marker, via shadbala_display sidecar; shadbala.py stays frozen),
  Harsha missing_inputs / score_range, cmd_yoga evaluation_error_count.
Already equivalent: yoga failures (BUG-1571), Drik determinism (BUG-1576),
standalone transit ephemeris path, Chara dignity location (BUG-1566), Harsha
max 20 / unknown day-night. Tests: tests/test_handoff_99076dad_sync.py.
Golden recaptured (Narayana status field only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-07 21:17:30 +08:00
ClaudeandClaude Opus 5.5 b0e93904c5 fix(tajika): unknown day/night leaves Harsha incomplete instead of scoring 0
Astrologer third-round review 2026-11-07, item 2. With is_daytime unknown
the fourth Harsha component is None (status unknown), the total is
withheld and only the known three-component sum (out of 15) is given.
The annual pack, report facts, interpretation rows and the parity
strength table carry the incomplete state instead of a full score.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-07 20:04:47 +08:00
ClaudeandClaude Opus 5.5 676b7d47cd fix: parity3 product-side defects and upstream lag (Vimsopaka, Narayana ages, asc precision, labels, Sade Sati)
Three-way parity audit 2026-11-07 (U ea2a9d65 / F frozen / P f70ae94e):
- Vimsopaka: look vargas up by "D{n}_" prefix (D60 key was misspelt, every
  D60 fell to Neutral) and score only the sign-owner relation (upstream
  ab5b8709, BPHS 7.21-27). All 16 varga scores now equal U on 3 charts.
- Narayana: age = total_seconds / (86400 x 365.25) keeping the birth time
  (upstream ab5b8709); Rath rows carry start_date / end_date from the
  unrounded ages; consult layer, report facts, API and calendar read them.
- Ascendant degree_raw / lon unrounded (engine and chart API).
- position_mode label: legacy is the apparent frame since BUG-1275; the
  profile and module labels now say "apparent" (legacy still accepted).
- Functional profile label v2 -> v3_166q4 (the table actually used).
- full-reading Sade Sati uses the dated transit Saturn (upstream e628118d):
  Jobs 2026-11-07 peak, owner / Obama not active, as U.
Consult evidence card golden recaptured.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-07 19:01:10 +08:00
ClaudeandClaude Opus 5.5 df7ad8ee89 feat(report): export gains upstream's KP house view, Cuspal Promise, KP house checks, KP monthly support, key months, annual points, varga dignity matrix, Bhava aspects and the rectification contract chapter
- KP monthly support read the birth-balance lord every month (no current_dasha in the issue #137 timeline); now the running lords, matching upstream
- ported prediction_verdict_matrix.py and references/rectification_evidence_contract_v1.json (the contract was always blocked as file missing)
- English audit statuses run / not_run written as Ran / Not run (run is also a packet key)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-07 17:05:27 +08:00
Claude f3e794973a merge codex/up-report-1107 into upstream-full integration 2026-11-07 15:03:53 +08:00
ClaudeandClaude Opus 5.5 67335ce827 feat(report): run the astrologer's skill in the report reading and keep the audit in the export
产品 2026-11-07 占星师方案 (item 4/5/6/8/10): the report reading and the export follow her skill.

- reading_facts v2 contract: birth parameters (no name/coordinates), 12 houses with KP cusps,
  functional roles and natural-vs-functional conflicts, per-domain vargas (wealth D2+D11+D10,
  A2/A11/A10; career D10+A10, AK/AmK; marriage D9+UL, A7/DK), special points, Jaimini, yogas as
  candidates with conditions, Vimshottari to PD + Narayana with dates (birth date + age) and the
  legacy variant, every dasha family's current period/status, transits from four reference points,
  Sade Sati, double transit, strengths, KP, annual, technique audit, evidence paths, method
  differences, blocked / parameter_sensitive / withheld states
- consult card facts: multi-varga domains, A2/A11/A10/AK/A7 participation, D1 varga resolves,
  yoga path fixed, Narayana ages; KP is conditional (参数敏感) instead of 不参与
- report writer: professional prompt (evidence first, A/B/C, dual-track timing, status labels),
  ninth section 依据与边界 (stored reading v2; v1 still reads), Latin allowed, longer limits
- export: technique audit chapter (Functional Benefic/Malefic, MEVG / Global Web Evidence,
  Real Case Calibration rows), parameter/method differences, dasha system status, evidence
  boundaries and the D1–D60 ledger (20 formal + 40 research D-N); upstream
  varga_evidence_matrix / generic_varga_research_audit + registries ported so the ledger is no
  longer blocked
- ordinary projection no longer deletes technique audit / MEVG / 参数敏感; parameter_sensitive
  is relabelled 参数敏感
- quality gate: upstream technique_audit_table check restored, plus required-row check

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-07 14:57:58 +08:00
ClaudeandClaude Opus 5.5 9cfc823e2e fix(dasha): astrologer second ruling — Drig uses Narayana years, Ashtottari decided by the Rahu gate, Sthira variants kept apart (BUG-1676, BUG-1677, BUG-1678)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m9s
Independent Staging Quality Gate / validate-python (push) Successful in 5m49s
Independent Staging Quality Gate / publish (push) Successful in 2m50s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-07 14:05:06 +08:00
ClaudeandClaude Opus 5.5 16457906f9 fix(dasha): astrologer rulings — strict Ashtottari gate, Sthira full Brahma, Drig years pending (BUG-1676, BUG-1677, BUG-1678)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m18s
Independent Staging Quality Gate / validate-python (push) Successful in 5m52s
Independent Staging Quality Gate / publish (push) Successful in 2m49s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-07 13:10:31 +08:00
ClaudeandClaude Opus 5.5 c081fbe00d fix(report): R/C column and Vimshottari balance start (BUG-1674, BUG-1675)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m14s
Independent Staging Quality Gate / validate-python (push) Successful in 5m48s
Independent Staging Quality Gate / publish (push) Successful in 2m45s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-07 12:00:13 +08:00
ClaudeandClaude Opus 5.5 2028d7fdf7 feat(report): 「大运传统参考」 from the astrologer's bilingual nine-lord text (yinduzhanxing 058c4f5f)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m8s
Independent Staging Quality Gate / validate-python (push) Successful in 5m55s
Independent Staging Quality Gate / publish (push) Successful in 3m9s
- Sync references/mahadasha_editorial_bilingual.json (9 lords x 3 paragraphs,
  zh + en, per-paragraph source locators) and mahadasha_editorial_policy.md,
  plus the one-line pointers in SKILL.md and vimshottari_dasha_guide.md.
- New chapter after 大运解释 in both editions: the three paragraphs side by
  side (general / traditionally supportive / traditionally strained), never
  picked by lord or chart, Mahadasha layer only; source labelled as secondary
  study notes with the original edition pending verification; English only
  in the English edition.
- Coverage contract: the topic moves from NOT_CARRIED to the checked list.

No change to the frozen exporter, dates or any scoring.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-06 21:48:09 +08:00
ClaudeandClaude Opus 5.5 fd3737359f test(report): coverage contract against the upstream export; Shattrimshatsama reference table; keep an empty Tajika presence section
Product: turn the upstream coverage audit into our own automated check.

- scripts/report_render/upstream_coverage.py maps 140 upstream topics to our
  zh/en sections and checks presence, real content, key columns (transit
  sign, yoga participants, Shadbala components, Kala Chakra signs) and
  degraded markers. NOT_CARRIED records the 4 topics we do not ship and why.
  It also runs as a CLI on any exported report.
- tests/test_report_upstream_coverage_contract.py runs it on two fictional
  charts in both editions, checks the contract itself, and proves it flags a
  bad report. The 2026-11-05 export gives 15 findings; today's gives 0.
- Fixes the contract found: Shattrimshatsama gets the opt-in reference table
  like the other conditional dashas; a year without a Tajika yoga keeps its
  section with one sentence instead of dropping it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-06 21:48:09 +08:00
ClaudeandClaude Opus 5.5 163b139f5a feat(report): annual chart numeric data with return time, ascendant, Muntha, year lord and houses (upstream parity)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m11s
Independent Staging Quality Gate / validate-python (push) Successful in 5m52s
Independent Staging Quality Gate / publish (push) Successful in 3m1s
Each annual chart now opens with its local return time, annual ascendant,
Muntha and year lord; every body gets its whole-sign house from the annual
ascendant, longitude and degree in sign.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-06 18:28:12 +08:00
ClaudeandClaude Opus 5.5 6f10cce7ae fix(report): Avastha state names follow the calculator; nakshatra dasha context as in the upstream export (BUG-1661)
- BUG-1661: Avastha states were translated by the general glossary, which had
  Young as 青年期 and Youth as 壮年期 (the calculator says 少年期 / 青年期) and
  left Old, Dina, Sabha and others in English ("Deep 睡眠"). One table taken
  from the calculator's enum comments now names them in the report body, the
  appendix and the frontend fact table. The Python export also uses a comma
  for simultaneous Deeptadi states in English (BUG-1391 fixed only the
  frontend).
- Nakshatra dasha context: natal Moon nakshatra, the current MD and AD lords'
  nakshatras and Taras, and the nakshatra of each AD lord in the MD. Both
  Ashtottari applicability rules are listed; when they disagree the report
  says no ruling has been made.

Frontend: report-fact-tables.test.ts assertions updated with 原值/新值/原因.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-06 18:25:02 +08:00
ClaudeandClaude Opus 5.5 2d03842765 feat(report): Prastara, Avastha and Goel Jaimini detail in the appendix (upstream parity)
Independent Staging Quality Gate / validate-frontend (push) Successful in 5m16s
Independent Staging Quality Gate / validate-python (push) Successful in 5m44s
Independent Staging Quality Gate / publish (push) Successful in 2m49s
- Prastara: per-planet table of the eight contributors' bindus by sign; the
  columns add up to the BAV.
- Avastha inputs: each planet's state in the five systems with its basis and
  method (BPHS rule / simplified rule); Chinese state names come from the
  module's own meaning text, no new glossary.
- Goel Jaimini: planet parts (Mooltrikona, Karaka, Kendriya, Kartari,
  Adhipati, malefic contacts) and sign parts (permanent, Karaka, Sthana,
  aspect, lord strength).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-06 17:55:14 +08:00
ClaudeandClaude Opus 5.5 4a937ff0e4 fix(report): name the Shadbala components; add Vimsopaka and varga-ruler detail (BUG-1660)
- BUG-1660: the six Shadbala columns used generic labels (合计 / 内容 / 分数 /
  年数 / 落座度数 / 容许天数). They are now Sthana, Dig, Kala, Cheshta,
  Naisargika and Drik, with totals, the BPHS minimum and the ratio, plus Sthana
  and Kala sub-part tables. Values are unchanged.
- Vimsopaka: per-varga dignity, points, weight and weighted score.
- Divisional mapping: per-varga sign, sign lord and sign-only dignity
  (Moolatrikona inside vargas awaits BUG-1622, so it is not marked).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-06 17:50:54 +08:00
ClaudeandClaude Opus 5.5 81f1ab45d6 fix(report): yoga participants, nine-body transits, four restored sections; opening and appendix parity (BUG-1657..1659)
Compared against the upstream customer export of 2026-11-05.

- BUG-1657: detected yogas carry the planets the rule bound (structured
  evaluators, solar/lunar rows, loop-free custom expressions via AST; an
  `or` over different planets names nobody). The report lists participants
  and current-Dasha overlap instead of 未判定.
- BUG-1658: the dated transit table reads transit_positions, so all nine
  bodies have sign, degree, speed and retrograde.
- BUG-1659: Navamsha AD durations, current convergence (12 houses), Pancha
  Pakshi and Rashi Tulya Navamsa are put on the worksheet and rendered;
  Pancha Pakshi uses the birth weekday instead of always Sunday.
- Opening: timeline (next PDs, Narayana current period) and career /
  finance / relationship evidence (house lords, AmK/DK, A10/UL, D10/D9/D2/D11)
  under 「重点」, then a reading guide. The focus card stays under the title
  (BUG-1316).
- Traditional supportive practices are wired to the remedies module (reference
  only, mistranslations fixed, duplicate table removed).
- Appendix: Argala per-source detail, nakshatra reference with lord, gana,
  degree and KP sub-lord, and verified calculation notes.

tests/test_full_data_parity_chapters.py: the four "public gap" sections now
must carry real cells (原值/新值/原因 in the test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-06 17:23:21 +08:00
ClaudeandClaude Opus 5.5 3e7388c37f feat(narayana): default to Sanjay Rath, keep the legacy algorithm as a labelled comparison (BUG-1601, #166 Q9)
Product decision 2026-11-04 on astrologer ruling #166 Q9. One builder,
narayana_legacy_label.product_narayana, makes the product Narayana object:
the Rath view on top (label "Sanjay Rath 版(默认;…)", seed sign, 24 MDs,
running MD / AD with remaining_years, the running MD's ADs) and the whole
labelled legacy result under `legacy`. When Rath cannot decide a start sign
the object says blocked in plain words; legacy never stands in.

- Consultation card: timing.narayana is Rath; the legacy running MD rides
  as a short timing.narayana_legacy; timing.narayana_rath is gone.
- Full reading / report: Rath block first, "- 对照:旧算法…" after; the
  parity chapter lists Rath (default), source-aware and legacy (comparison);
  dasha master pack Narayana periods are the Rath MDs.
- /api/dasha narayana: periods are Rath, legacy under `legacy`.
- Annual: Rath is the product timeline (used_by_product_timeline true),
  narayana_skeleton_profile "rath", legacy is the reference and never counts.
- CLI narayana-dasha prints Rath first, legacy as comparison.
- Consult full-data cache schema v2 -> v3 so old legacy-default packets miss.

Rectification scoring is untouched and still calls calc_narayana_mahadasha
(frozen identity). Evidence-card, biography and card-facts captures were
regenerated with their scripts; annual-report-facts.json was regenerated from
its endpoint function. Tests pinning legacy-as-default are rewritten with
原值/新值/原因.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-05 04:32:07 +08:00
ClaudeandClaude Opus 5.5 6e89ac175e fix(report): name the five-level sample 大运 / 小运 / 细运 / 微运 / 息运
Independent Staging Quality Gate / validate (push) Successful in 15m8s
Independent Staging Quality Gate / publish (push) Successful in 4m33s
Sookshma (subtle) becomes 微运 and Prana (breath) 息运, after their Sanskrit
sense, replacing the temporary Latin "Sookshma" header. Product, 2026-11-02.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-02 21:40:50 +08:00
ClaudeandClaude Opus 5.5 7d1057ccc5 feat(report): Vimshottari levels 大运 / 小运 / 细运 across the report pipeline
Independent Staging Quality Gate / validate (push) Successful in 21m50s
Independent Staging Quality Gate / publish (push) Successful in 4m21s
The personal report now uses the astrologer-approved names, matching the
chart page and the consult prompts since 7a56840f (issue #163 Q5): MD 大运,
AD 小运, PD 细运. Old names replaced in code-rendered text only: 主运 / 主大运
-> 大运, 子运 / 分运 / 副运 (AD) -> 小运, 次子运 / 次小运 / 再小运 and the
fact table's PD 小运 -> 细运. PD strings were converted before AD, and AD
before MD.

Covered: the focus card and its export text, the raw fact tables, theme
claim cards, the timing interpretation pack, the PL9 full-data export
(tables, dasha prose templates, AD/PD density anchors), rashi / Narayana
second level, KP monthly focus, orchestrator texts and technique-audit
rows. English translation keys follow the new Chinese labels
(大运 = Mahadasha, 小运 = Antardasha, 细运 = Pratyantardasha), and a new test
pins that no English mapping reads 小运 as the third level.

The five-level monthly sample table used 细运 for Sookshma; it now shows
Sookshma until the astrologer names the fourth level.

Saved reports are not migrated. Focus fences render from md/ad/pd codes,
and stored fact tables validate by structure, so old and new labels both
open. Goldens were updated in place and two hash pins re-pinned; reverting
only the term swap reproduces the old hashes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
2026-11-02 21:32:51 +08:00
Jesse_ChenandClaude Opus 5.5 3eeb898071 Copy the full-data packet once per report, not once per domain (issue #122, BUG-1471)
Independent Staging Quality Gate / validate (push) Successful in 15m27s
Independent Staging Quality Gate / publish (push) Successful in 3m43s
read_full_data_domain deep-copied the shared worksheets on every call; a long
report reads five domains twice, so ten copies for read-only use. The shared
part is now copied once (full_data_domain_base) and reused for every domain's
facts and their leaf check; each domain's facts are still copied out so domains
share no objects. Long reports byte-identical on four fictional charts; with
#121, -24–29% end to end.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoz1Qk3y9buDv1mkmTu
2026-10-28 07:06:32 +08:00
Jesse_ChenandClaude Opus 5.5 cad28ddc04 报告前面加一段模型写的解读(issue #113 R1)
引擎在同一份 packet 上给出与对话同源卡相同的事实(include_reading_facts),
报告任务交付前用一次结构化模型调用写八节解读,校验不过或失败就不出解读、
报告照常交付。解读存在计算快照里,读接口一起返回,页面放在引擎正文之前,
后面标「计算依据」。用量按实际 token 记账(BUG-1460、BUG-1461)。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-27 11:17:56 +08:00
jesse-uxandGrok (agent loop) c899e36509 把独立年度方法参考算进结果指纹,标准版不再白算这一章。
跑了修复单点名的测试、两次真算 PyJHora,以及 200 张英文扫描。

Co-Authored-By: Grok (agent loop)
2026-10-23 23:55:06 +08:00
jesse-uxandGrok (agent loop) c644881a30 feat(report): 完整数据版末尾增加独立年度方法参考
PyJHora 只在子进程里计算请求年及后两年。对话、校正和其余章节保持不导入时的结果。结果指纹不算这一章。

Windows 自测:隐私标记、导入扫描、结果指纹和 S7 退出码 0。阅读页、英文和年运章在此之前已通过。虚构盘 0 中英一起最高 59 秒。

Co-Authored-By: Grok (agent loop)
2026-10-23 20:13:28 +08:00
jesse-uxandGrok (agent loop) cfd0ab68ac 完整数据版补上行星和宫主解释、后两年年运细项,以及 72 年逐年年返。
定向测试和 200 张英文扫描通过。一张虚构盘中英合计约 20 秒。土星和 KP 结果段仍按修复单让步。

Co-Authored-By: Grok (agent loop)
2026-10-23 15:04:25 +08:00
jesse-uxandGrok (agent loop) 355946cd1a 从报告日期所在月起列出 36 个月的九星表。报告口径和 KP 岁差口径各一张,另有五级大运月采样。黄经仍走本系统恒星计算。
Co-Authored-By: Grok (agent loop)
2026-10-23 10:17:29 +08:00
jesse-uxGrok (agent loop)Cursor
9b2e6aa0b4 年运附表补上整宫、Tripataki 和特殊点公式轨迹。黄经沿用已算好的星盘,不改原有 Saham 数值。
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 23:11:48 +08:00
jesse-uxGrok (agent loop)Cursor
1c60926a13 完整数据版的 Yogi / Ava Yogi 以前因缺少模块被记成 blocked。改为读取本命日月黄经计算,空候选和空落入行星不再印一整行未判定。
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 23:00:04 +08:00
Jesse_ChenandClaude Opus 5.5 1dd6203883 fix(report): parity yoga category for ayur reads Constitution; only the boundary scan may be prose (#91 fix2)
"Longevity" in the canonical yoga table broke the BUG-1210 lifespan wording
test. Sections other than the dasha boundary scan must carry a table, so a
fixed sentence cannot pass as packet data.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
2026-10-22 22:01:33 +08:00
Jesse_ChenandClaude Opus 5.5 ac3dccbac8 fix(yoga): Chinese combination text from a Chinese source, not 未判定 (#91 fix2 F3, BUG-1418)
Removing the English-to-Chinese back-translation left every BVR semantic
note and every yogas_doshas raj/dhana "H*_Lord(...) in H*" sentence as
未判定 in the Chinese yoga table and pages.

- yoga_engine: semantic conditions return BiText(Chinese, old note). The
  Chinese comes from references/yoga_semantic_notes_zh.json, one sentence per
  note, so dedup keeps the same equality classes. English-only custom
  templates get the same lookup. combination_en is unchanged.
- yogas_doshas: raj/dhana rows add combination_zh; combination is unchanged.
- chinese_combination prefers a clean combination_zh.

Which yogas fire, their strength and category are unchanged (fictional
charts 0-19, same rows as staging; only set-iteration order differs).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
2026-10-22 21:55:02 +08:00
Jesse_ChenandClaude Opus 5.5 00c2b4d498 fix(report): six parity chapters read real packet records and sit at ## (#91 fix2 F1/F2/F4)
Eleven sections printed one-column tables of 未判定 and packet key names
(summary, p5, stats ...). They now read the nested records: KP profile and
ruling planets, Tara/Chandra combined rows, lagna vargottamamsa flags, LL/7L
P5/P8/exchange checks, Yoga Pinda planets and summary, Sodhita BAV totals and
Ekadhipatya audit, friendship method and bodies, multi-reference houses,
double-transit PAC targets, congregation houses, seven/eight karaka tables.
Argala, Birth Calendar, Tithi, Tajika candidates, Goel dignity and yoga
categories no longer print bare lower-case keys or enums either.

The six chapters are now ## and their sections ###, so the reader counts
six more chapters instead of seventy.

Tests: a section passes only with a real value outside the label column; no
table cell may be a raw key; heading counts equal the base report plus six.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
2026-10-22 21:44:51 +08:00
jesse-uxGrok (agent loop)Cursor
92b4e220f2 新六章有 12 节读错公开包字段,整节只剩未判定,而且六章绕过了口径替换。按资料包改读路径,先拼六章再统一替换措辞,并把中文附录实际丢掉的组合句数出来。
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 18:51:54 +08:00
jesse-uxGrok (agent loop)Cursor
4020c3958a 按六章补上已有数据的小附录,并把 Goel 强度与两种 Narayana 口径分开印出。
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 16:22:45 +08:00
jesse-uxGrok (agent loop)Cursor
8444660f36 中文完整数据附录改为按中文源和结构化字段渲染,不再把英文附录回译成中文。
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 16:22:25 +08:00
jesse-uxGrok (agent loop)Cursor
adfa98bf97 英文漏译改在渲染侧查表,测试不再放行 PyJHora 子进程。
冻结的 jaimini.py 恢复成 staging 原样。缺译单元格写成固定标记,不再留空。

Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 09:58:09 +08:00
jesse-uxandGrok (agent loop) dbba127e71 拆分报告渲染函数的第一阶段,把 34 个无外层依赖的辅助函数搬到 report_render。
同一份真实盘包在屏蔽与不屏蔽 PyJHora 下新旧渲染 sha 都一致,各 24 项且退出码 0。指定 pytest 233 通过、3 跳过。

Co-Authored-By: Grok (agent loop)
2026-10-15 20:59:11 +08:00