Merge codex/goel-jaimini-strength-20261022 (#94) into staging
# Conflicts: # CHANGELOG.md # docs/tasks/README.md
This commit is contained in:
@@ -0,0 +1,206 @@
|
||||
上游 `5fb8379c` 原文;我方 Niryaana 选择器在 `scripts/rashi_dashas_native.py`;书稿未入库
|
||||
|
||||
# Goel Jaimini public calculation module
|
||||
|
||||
## Scope and entry points
|
||||
|
||||
`scripts/goel_jaimini_strength.py` publishes the existing frozen runtime's
|
||||
position-only arithmetic, with input validation and explicit blocked points.
|
||||
It contains no customer identity, birth record, report, private fixture, or
|
||||
runtime dependency on a frozen directory. The historical frozen-engine
|
||||
publication receipt remains true: its complete payload is not published.
|
||||
|
||||
Public functions:
|
||||
|
||||
- `calculate_goel_strength(planet_longitudes, node_occupancy_policy=...)`
|
||||
- `build_goel_chart_evidence(planet_longitudes, ascendant_longitude)`
|
||||
|
||||
Both accept already calculated sidereal longitudes in degrees, in `[0, 360)`.
|
||||
Supply exactly Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu and Ketu;
|
||||
nodes must be opposite. The builder also requires a finite numeric Ascendant.
|
||||
No ayanamsa, node mode, birth time or ephemeris is inferred. The caller owns
|
||||
those upstream settings. Invalid inputs raise `ValueError`; equal seven-karaka
|
||||
degrees block the calculation instead of inventing a ranking.
|
||||
|
||||
The native `jaimini --mode special` / `--mode all` commands and `full-reading`
|
||||
now expose `goel_full_strength` and `goel_special_points`. The builder's
|
||||
`strength` and `special_points` keys map to those two report keys. Existing
|
||||
eight-karaka and other Jaimini profiles remain independent.
|
||||
|
||||
## Sources and page numbering
|
||||
|
||||
V. P. Goel, *Predicting through Jaimini Astrology*, Chapter 1, printed pp10–17
|
||||
(PDF file pages14–21). Local source:
|
||||
`V. P. Goel, Predicting through Jaimini Astrology`.
|
||||
Transcription SHA256:
|
||||
`0a8eb5e6de409d5d8ae6684be927b1273acdc5fa72a7f1c36c31de33907341a6`.
|
||||
Line numbers below refer to that transcription, not printed line numbers.
|
||||
|
||||
| Calculation | Printed pages | PDF pages | Transcription locator |
|
||||
|---|---|---|---|
|
||||
| Dignity values and natural friendship | 10–11 | 14–15 | L461 onward |
|
||||
| Seven-karaka rank; Kendriya, Kartari, Adhipati | 11–12 | 15–16 | L510–553 |
|
||||
| Sign permanent and karaka components | 13 | 17 | L558–593 |
|
||||
| Sthana, aspect roles, sign-lord strength | 14 | 18 | L598–632 |
|
||||
| Worked planetary/sign totals | 15 | 19 | L636–697 |
|
||||
| Brahma and Maheshwara; first Rudra rule | 16 | 20 | L701–727 |
|
||||
| Rudra malefic-contact exception | 17 | 21 | L731–736 |
|
||||
| Mercury/Jupiter as sign lord: double role credit | 103 | 107 | L4359–4389 |
|
||||
|
||||
The p103 clarification occurs in Goel's **short method** chapter. Only its
|
||||
explicit double-role explanation is used to clarify the three-role reading
|
||||
of p14. The short method's different weights are NOT mixed into this full
|
||||
method. Numeric reproduction of p15 also checks this role convention.
|
||||
|
||||
Degree-specific Moolatrikona ranges reuse the existing named
|
||||
`raman_manual_degree_mt_exaltation_first_v1` profile from
|
||||
`scripts/trikona_raman.py`: B. V. Raman, *A Manual of Hindu Astrology*,
|
||||
section29, printed p12. Goel provides the score categories; this auxiliary
|
||||
profile supplies degree ranges. Exaltation is checked first. This is an
|
||||
explicit method choice, not a claim that all Goel/Raman conventions coincide.
|
||||
|
||||
## Formula contract
|
||||
|
||||
Planet total is dignity + karaka + kendriya + kartari + adhipati.
|
||||
|
||||
- Dignity: exalted60, Moolatrikona45, own30, friend22.5, neutral15,
|
||||
enemy7.5, debilitated3.75; natural friendship, not compound friendship.
|
||||
- Seven classical planets ranked by degree within sign: 60,45,30,22.5,15,7.5,3.75.
|
||||
Nodes never receive these karaka points.
|
||||
- Kendra / Panaphara / Apoklima from AK: 60 / 30 / 15.
|
||||
- Kartari: 60 when the planet is in an odd sign and both adjacent signs have
|
||||
occupants; nodes count in this component under both occupancy policies.
|
||||
- Adhipati: 60 for a qualifying odd-sign lord with a malefic conjunction or
|
||||
Jaimini rasi aspect. All classical planets except Moon own an odd sign.
|
||||
This implementation declares Sun/Mars/Saturn/Rahu/Ketu malefics and excludes
|
||||
self-contact; phase-dependent Moon and conditioned Mercury are not added.
|
||||
|
||||
Sign total is permanent + occupying karaka points + Sthana + aspect roles
|
||||
+ sign-lord total. Movable/fixed/dual permanent values are15/30/60.
|
||||
Sthana is zero if empty, otherwise45+15*n. Jupiter, Mercury and sign lord are
|
||||
three roles worth60 each; if one planet fulfills two roles it can earn120.
|
||||
Conjunction and aspect qualify a role once, not twice. Aspects are Jaimini
|
||||
sign aspects, not Parashari planetary aspects.
|
||||
|
||||
Special points:
|
||||
|
||||
- Brahma first checks AK's eighth lord occupying AK's eighth. Otherwise it
|
||||
compares Lagna/seventh Goel totals and selects the strongest non-Saturn
|
||||
6/8/12 lord from the stronger anchor. The Saturn exclusion belongs to the
|
||||
fallback branch; it is not silently applied to the first override.
|
||||
- Maheshwara is AK's eighth lord; if exalted, compare AK's twelfth lord.
|
||||
Saturn is allowed.
|
||||
- Rudra compares Lagna's second/eighth lords. The weaker candidate wins when
|
||||
it alone has malefic contact; when both have contact the stronger wins.
|
||||
The frozen convention treats conjunction and rasi aspect as contact;
|
||||
the p17 exception itself says “aspect” and its discussion adds association.
|
||||
Retain this declared convention when porting rather than hiding it.
|
||||
- Equal final scores remain `blocked`; no silent degree or list-order tie-break.
|
||||
|
||||
## Node discrepancy and default
|
||||
|
||||
Printed p14 explicitly includes Rahu and Ketu in Sthana. The p15 worked
|
||||
totals reproduce when they are excluded from **that component only**.
|
||||
`include_nodes_text` is the default because it follows the explicit rule.
|
||||
`exclude_nodes_worked_example` is the reproducibility alternative, retained
|
||||
under `strength.worked_example_node_exclusion` by the builder.
|
||||
|
||||
This switch does NOT remove nodes from Kartari or malefic contacts and does
|
||||
not give them karaka points. For the published example, excluding nodes gives
|
||||
Virgo281.25 / Pisces363.75; including them gives296.25 /378.75. The other ten
|
||||
sign totals and all seven planet totals agree between policies. This is an
|
||||
observed text/table discrepancy, not proof of the author's intended erratum.
|
||||
|
||||
## Relation to 9f08b57b and 258e08e3
|
||||
|
||||
These are **different algorithms**:
|
||||
|
||||
| Field / producer | Comparison | Method / use |
|
||||
|---|---|---|
|
||||
| `lagna_seventh_strength` | First/seventh Goel numeric totals | Goel Brahma/Sthira-related explicit selector evidence |
|
||||
| Historical `niryaana_shoola_strength` | Same first/seventh totals | Deprecated frozen-export alias only |
|
||||
| `select_niryaana_shoola_start_sign` | Second/eighth | PVR Ayur ordered comparison: occupancy, all-planet rasi aspects, exalted-occupant presence |
|
||||
|
||||
`9f08b57b` implements the last row and `258e08e3` explicitly includes both
|
||||
nodes in its occupancy/aspect counts. Those changes are already on main.
|
||||
This publication does not replace them. The legacy alias now carries
|
||||
`deprecated: true`, `comparison: lagna_vs_seventh`, and `not_for` metadata.
|
||||
Use the canonical new key for Goel totals; use the existing PVR selector for
|
||||
Niryaana. Sthira's existing explicit-input short selector is a separate
|
||||
contract: do not label Goel full weights as the Chapter5 short weights, and
|
||||
do not infer that publishing these points automatically executes Sthira Dasha.
|
||||
|
||||
## Portable synthetic example
|
||||
|
||||
```python
|
||||
from scripts.goel_jaimini_strength import build_goel_chart_evidence
|
||||
|
||||
positions = dict(Sun=29., Moon=58., Mars=87., Mercury=116.,
|
||||
Jupiter=145., Venus=174., Saturn=203., Rahu=245., Ketu=65.)
|
||||
result = build_goel_chart_evidence(positions, 0.)
|
||||
```
|
||||
|
||||
This is deliberately invented positional data, not a real birth chart.
|
||||
|
||||
| Planet | Dignity | Karaka | Kendriya | Kartari | Adhipati | Total |
|
||||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| Sun | 60 | 60 | 60 | 0 | 0 | 180 |
|
||||
| Moon | 60 | 45 | 30 | 0 | 0 | 135 |
|
||||
| Mars | 7.5 | 30 | 15 | 60 | 60 | 172.5 |
|
||||
| Mercury | 7.5 | 22.5 | 60 | 0 | 0 | 90 |
|
||||
| Jupiter | 22.5 | 15 | 30 | 60 | 60 | 187.5 |
|
||||
| Venus | 3.75 | 7.5 | 15 | 0 | 60 | 86.25 |
|
||||
| Saturn | 60 | 3.75 | 60 | 0 | 0 | 123.75 |
|
||||
|
||||
AK=Sun. Lagna=367.5; seventh=225. Brahma=Jupiter; Maheshwara=Mars;
|
||||
Rudra=Mars. Gemini Sthana=75 (alternative60); Sagittarius Sthana=60
|
||||
(alternative0). The existing PVR Niryaana selector instead selects Taurus.
|
||||
|
||||
`tests/test_goel_jaimini_strength.py` contains these literal expectations,
|
||||
the printed p15 totals without birth identity, branch checks, input rejection,
|
||||
blocked points and native entry wiring. Run:
|
||||
|
||||
```bash
|
||||
python3 -m pytest -q tests/test_goel_jaimini_strength.py tests/test_niryaana_shoola_dasha.py
|
||||
```
|
||||
|
||||
Status: source-bounded wired, with one published numerical table replay and
|
||||
synthetic arithmetic regression. No predictive-case validation, global
|
||||
closure, PL9 parity or automatic change to a frozen customer pin is claimed.
|
||||
|
||||
Verification:166 tests passed across `test_goel_jaimini_strength`,
|
||||
`test_niryaana_shoola_dasha`, `test_sthira_brahma_goel_short_method`,
|
||||
`test_trikona_raman_native`, `test_jaimini`, `test_jaimini_source_identity`
|
||||
and `test_bphs_validation_runtime`. This includes the real full-reading CLI
|
||||
and its Goel output, as well as the existing PVR Niryaana behavior.
|
||||
|
||||
## Current-window exploration and publication boundary
|
||||
|
||||
Started from main258e08e3 in an isolated `codex/goel-publication` worktree;
|
||||
the original workspace was on customer-export-r32-release with unrelated
|
||||
dirty files, all preserved. Checked all six existing linked worktree paths,
|
||||
branch/recent-commit status, tracked file inventory, producer/CLI/report/test
|
||||
searches and the two whole-machine sweep records. WorkBuddy skill is a
|
||||
symlink to the primary repository; its registry remains a separate authority.
|
||||
The configured r32 runtime supplies the reviewed position-only Goel module;
|
||||
its hash was235fc8f90718b6da45af0ee1edc2a7c195be92664ff55bbb7b8e0398b605b33d.
|
||||
The archived 10-16 publication receipt confirms the full payload was excluded.
|
||||
The separately inspected local 10-16 r2 engine has neither this named module
|
||||
nor the two Goel output fields; therefore the archive date must not be used
|
||||
as proof of that report's actual generating pin. This extraction is from
|
||||
the inspected r32 source, not a claim that the omitted r2 payload contained it.
|
||||
Repository APIs/renderers remain consumers of the native engine, not a second
|
||||
implementation. No external engine code or book pages are republished here.
|
||||
|
||||
Pre-work check passed, including external adapter diagnostics and remote
|
||||
visibility; direct `git ls-remote origin refs/heads/main` returned258e08e3.
|
||||
The broader governance audit separately flags `main_worktree_dirty` and
|
||||
`remote_head_unverified`; the former is real and preserved, and the latter
|
||||
does not certify publication despite the successful direct visibility check.
|
||||
Capability authority snapshot and governance audit were invoked;
|
||||
the former's historical customer examples are not authority for this module.
|
||||
The reused chains are Goel position arithmetic, Raman dignity helpers,
|
||||
Jaimini rasi aspects, and the existing PVR Niryaana selector. Unclosed items
|
||||
are lineage differences, equal-strength selections without a source rule and
|
||||
independent predictive verification. This is code publication, not a chart
|
||||
interpretation, personal report export, or MEVG predictive validation.
|
||||
@@ -484,3 +484,9 @@ Prevention: 打分路径新增或改动输入模块时,先查它在不在两
|
||||
`TASK-report-chart-blank-columns-20261003` T2 写的是「`_map_to_houses_values` 增字段」,`scripts/ashtakavarga.py` 在 `sealed_holdout_rerun.PRODUCTION_FILES` 里,只加字段、分数不变也让 `test_rectification_validation_integrity_gate` 4 条与 `test_sealed_holdout_contract_freshness` 3 条失败(ERR-110 同型)。改为在 `pl9_reader_export.py` 用引擎已有字段拆分,冻结文件零改动,门禁恢复全绿,无需重新冻结。
|
||||
|
||||
Prevention: 写任务书时(不只是执行时)就对照 `PRODUCTION_FILES` 与 dataset `frozen_scoring.files`;只为展示的字段优先在消费层(reader / mapper)从已有数据推出,不进冻结文件。关联 ERR-110、BUG-1200。
|
||||
|
||||
## ERR-116 | Goel 首/七强度不是 PVR Niryaana 的二/八,完整法也不是简法 | observed 2026-10-22
|
||||
|
||||
Goel《Predicting through Jaimini Astrology》第 1 章完整强度的 `lagna_seventh_strength` 比的是命宫和第七宫的 Goel 总分。弃用别名 `niryaana_shoola_strength` 是同一组首/七数字,带 `deprecated`、`replacement`、`not_for`。我方 Niryaana Shoola(#84)的 `select_niryaana_shoola_start_sign` 在 `scripts/rashi_dashas_native.py`,比的是第二宫和第八宫的 PVR Ayur 口径。两套不能互相接入。`scripts/goel_short_strength.py` 是第 5 章简法,给 Sthira / Niryaana 等用,也不是这一套完整法。
|
||||
|
||||
Prevention: 不要把 `lagna_seventh_strength` 或 `niryaana_shoola_strength` 接到 Niryaana 选择或大运计算。不要用 `goel_jaimini_strength` 替换 `goel_short_strength`。报告里印这一章交给 #91。关联 issue #94、#84。
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
# 进度:Goel Jaimini 强度(issue #94,2026-10-22)
|
||||
|
||||
执行分支 `codex/goel-jaimini-strength-20261022`。工作树 `.worktrees/goel-jaimini-strength-20261022`。未 push。Python 用 `G:\Ferti\Jyotisha\.worktrees\agent-loop\.venv\Scripts\python.exe`(本工作树没有 `.venv`)。`core.autocrlf=false`。上游只读仓 `G:\Ferti\yinduzhanxing-ref`,提交 `5fb8379c`。
|
||||
|
||||
## 做了什么
|
||||
|
||||
- T1:四个上游模块放到 `scripts/` 根目录。`ROOT_PY_BUDGET` 448 → 452,常量旁写了三栏。`scripts/*.py` 计数 452。
|
||||
- T2:测试原样搬入,只把 Niryaana 选择器的 import 改到 `scripts.rashi_dashas_native`。`test_bphs_validation_runtime.py` 新增 `test_full_reading_exposes_goel_jaimini_strength`,用文件里已有的虚构 `BASE_BIRTH_ARGS`。
|
||||
- T3:`_goel_jaimini_evidence` 接到 `cmd_jaimini`(`mode` 为 `all` 或 `special`)和 full-reading 写入 `modules.jaimini` 之前。
|
||||
- T4:接线后的口径测试(两种交点政策、七星同度 blocked 且不出 AK / 排序、full-reading 喂给 Goel 的经度)。
|
||||
- T5:三张固定虚构盘与 200 张固定种子虚构盘。没有让步缩盘:三张盘 full-reading 均值 5.212 秒,200 张 × 交点两种口径约 34.74 分钟,低于 40 分钟,mean 与 true 都跑了。
|
||||
- T6:研究笔记、ERR-116、CHANGELOG。Skill 版本不 bump。
|
||||
|
||||
## 四个 blob
|
||||
|
||||
| 文件 | 上游 `5fb8379c` | 落地后 `git hash-object` |
|
||||
| --- | --- | --- |
|
||||
| `scripts/goel_jaimini_strength.py` | `2170f781740affbad7b8ff4e048b88d87f997bcc` | `d13b3f785a86a17970e450f111d60fc8d52108ac` |
|
||||
| `scripts/trikona_raman.py` | `1fc9283396acba98b9113bde7af0e27a80841a30` | 相同 |
|
||||
| `scripts/sthira_brahma_goel_short_method.py` | `6e010b54f5ba480db3e6d8d79e711a1cc2d59fbf` | 相同 |
|
||||
| `scripts/trikona_dasha.py` | `e6c8a27cf5e23e5c686154406ba5183226d12d79` | 相同 |
|
||||
|
||||
`goel_jaimini_strength.py` 相对上游的 diff 只有 `SOURCE` 一行,LF。旧值是上游本地书稿路径,没有入库。新值是 `SOURCE = 'V. P. Goel, Predicting through Jaimini Astrology'`。
|
||||
|
||||
测试文件上游 blob `e29c47182c03c2277cff46e271a7f664c3349601`。相对上游先只改一行:
|
||||
|
||||
```
|
||||
-from scripts.niryaana_shoola_dasha import select_niryaana_shoola_start_sign
|
||||
+from scripts.rashi_dashas_native import select_niryaana_shoola_start_sign
|
||||
```
|
||||
|
||||
T4 在这个文件末尾另加了三条接线测试,不再是单行 diff。
|
||||
|
||||
## 接线与上游的两处差异
|
||||
|
||||
1. 捕获 `(ImportError, KeyError, TypeError, ValueError)` 时 `logger.warning` 记下异常类和信息,`reason` 写成 `f'{exc.__class__.__name__}: {exc}'`。这几类失败在 helper 内返回 blocked,不会抛进 full-reading 外层的 `except Exception`,因此不会把整个 `modules.jaimini` 带掉。
|
||||
2. `cmd_jaimini` 传给 Goel 的经度用 `pd.get('degree_raw', pd['degree'])`。模拟盘只有 `degree` 时回退,上游那条特殊点测试仍过。full-reading 本来的 `planet_lons` 已是 `degree_raw`,原样传给 Goel。上升点仍用原来的 `asc_deg`(`lon`)。
|
||||
|
||||
没有把 `lagna_seventh_strength` / `niryaana_shoola_strength` 接到 Niryaana 选择或大运。没有改冻结文件、报告渲染、API 主文件、数据库。
|
||||
|
||||
## T5 数据(全是虚构盘)
|
||||
|
||||
三张盘是 `tests/test_report_english_edition.py` 的 day / night / south。`PYTHONHASHSEED=0`。
|
||||
|
||||
单独计时的 full-reading:day 6.343 秒、night 4.692 秒、south 4.600 秒,均值 5.212 秒。三张都是 `executed`,Goel AK 与 `chara_karaka_7` 的 AK 都是同一颗星(Venus / Mercury / Jupiter)。四个新键都在。
|
||||
|
||||
改前引擎是接线提交的父本 `eb67962d7`。改前改后:
|
||||
|
||||
| 检查 | 结果 |
|
||||
| --- | --- |
|
||||
| 中文完整数据版 Markdown | 三张 SHA-256 相同(day `1de47056e69f…`,night `0415e1a20dfe…`,south `51eb80c838cf…`) |
|
||||
| 英文完整数据版 Markdown | 三张 SHA-256 相同(day `3e6eaadae15e…`,night `a36abde746d5…`,south `adef6214ebbb…`) |
|
||||
| full-reading 与 `cmd_jaimini` 的 jaimini,去掉四个新键 | SHA-256 相同 |
|
||||
| 改后四个新键 | full-reading 与 `cmd_jaimini`(mode=all)都有,状态 `executed` |
|
||||
| `build_domain_facts` 选出的对话卡 | 12 个域 × 3 张盘,规范化 JSON 相同 |
|
||||
|
||||
`read_full_data_domain` 的原始副本不是逐字节相同。它整份拷贝 `worksheets`,其中 `advanced_systems.jaimini` 多了四个新键;这是任务书已经写明的资料包 JSON 变大,正文不印。另外两边还有运行时噪声:审计耗时、缓存时间、PyJHora 年盘快照、一张盘的 Yogini `reference_date`。去掉四个新键和这些噪声字段后,day / night 还剩 PyJHora 年盘快照差异,south 只剩 `reference_date`。没有为了抹平这些差异去改渲染或对话卡。
|
||||
|
||||
200 张固定种子(`Random(20261022)`,年 1940–2015、日 1–28、纬度 −45~60、经度 −120~150、时区按经度取半小时、岁差在 lahiri / raman / kp 间)。mean 与 true 各 200 次,4 个进程,墙钟 556.6 秒。
|
||||
|
||||
| 项 | 数 |
|
||||
| --- | --- |
|
||||
| 次数 | 400 |
|
||||
| `goel_full_strength.status == executed` | 400 |
|
||||
| blocked | 0 |
|
||||
| AK 与 `chara_karaka_7` 不一致 | 0 |
|
||||
| 单次 full-reading | 均值 5.537 秒,最小 4.839,最大 7.848 |
|
||||
| mean / true 均值 | 5.530 / 5.544 秒 |
|
||||
|
||||
三张盘改前改后的 full-reading 耗时互相重叠(改前均值 5.672 秒,同一次改后 6.069 秒,另一次改后计时 5.212 秒),没有拆出稳定的增量。
|
||||
|
||||
冻结身份交集(`PRODUCTION_FILES` + `RESEARCH_FILES` + `frozen_scoring.files` 对上 `origin/staging...HEAD`)输出是 `[]`。
|
||||
|
||||
## 测试
|
||||
|
||||
工作树内 `pytest -q`。Windows 默认 GBK 标准输出打不出 full-reading 里已有的 emoji(`U+1F4D0`、`U+1F534`),`test_bphs_validation_runtime.py` 两条因此在子进程退出码 1。下面的数字是 `PYTHONUTF8=1` 再跑的结果。屏蔽 PyJHora 用临时目录的 `sitecustomize.py` 放在 `PYTHONPATH` 最前(`import jhora` 变成 `ModuleNotFoundError`),没有卸载包。
|
||||
|
||||
两次都是 238 条收集、237 通过、1 跳过、0 失败。跳过的是 `test_consultation_contract_golden.py` 里未设置 `JYOTISH_LIVE_CONTRACT_GOLDEN=1` 的线上重抓。
|
||||
|
||||
| 文件 | 结果 |
|
||||
| --- | --- |
|
||||
| `tests/test_goel_jaimini_strength.py` | 22 通过 |
|
||||
| `tests/test_bphs_validation_runtime.py` | 3 通过 |
|
||||
| `tests/test_python_hygiene_budget.py` | 2 通过 |
|
||||
| `tests/test_rashi_dashas_native.py` | 18 通过 |
|
||||
| `tests/test_niryaana_shoola_dasha.py` | 3 通过 |
|
||||
| `tests/test_jaimini.py` | 42 通过 |
|
||||
| `tests/test_runtime_jhora_import_scan.py` | 4 通过 |
|
||||
| `tests/test_api_server_growth_contract.py` | 9 通过 |
|
||||
| `tests/test_consultation_contract_golden.py` | 2 通过,1 跳过 |
|
||||
| `tests/test_sealed_holdout_contract_freshness.py` | 9 通过 |
|
||||
| `tests/test_rectification_validation_integrity_gate.py` | 22 通过 |
|
||||
| `tests/test_reported_offset_research.py` | 14 通过 |
|
||||
| `tests/test_rectification_engine_memoization.py` | 25 通过 |
|
||||
| `tests/test_repo_privacy_markers.py` | 62 通过(文档提交前再复跑一次) |
|
||||
|
||||
没有弱化既有断言。没有重冻,没有改冻结记录或 golden。
|
||||
|
||||
## 移交 #91
|
||||
|
||||
本单不印报告。交给 #91:
|
||||
|
||||
- 报告印「Goel Jaimini 强度与特殊点」章,中英标签齐全。`blocked` 的中文写「无法判定」、英文写「Not determinable」,并注明原因(七星度数相同 / 强度相同无唯一选择)。
|
||||
- `jyotish_engine.py` 受限资料 `jaimini_special_points.reason` 里「Brahma/Maheshwara/Rudra still lack a same-profile structured producer」随印章一并改。
|
||||
- 交点两种口径并列印出,标明默认遵循正文(`include_nodes_text`)。
|
||||
@@ -518,7 +518,7 @@
|
||||
| `TASK-report-english-han-leak-20261021.md` | `PROGRESS-report-english-han-leak-20261021.md` | #89 个人报告英文版约 4 成整份丢弃:漏译汉字源头补英文孪生字段、修吃空格;200 张固定种子回归 + 快速门 smoke(复发自 BUG-1272);中文逐字节不变 | 待领取(最先做;#91/#92 在后) | `codex/report-english-han-leak-20261021` |
|
||||
| `TASK-chart-dasha-yogini-20261021.md` | — | #88 星盘页大运右栏切换 Chara / Yogini,Yogini 补小运(按比例,内部核对,页面注明未经外部软件核对);Ashtottari 另立单(起运表与 PyJHora 8/12 宿不一致) | 待领取(等 #86、#87 合入) | `codex/chart-dasha-yogini-20261021` |
|
||||
| `TASK-full-data-parity-1-20261021.md` | — | #91 完整数据版补齐(一):A 段渲染(中文附录改中文源、71 小节归 6 章、导出星座名)→ B 段引擎(Yogi 点、标准大运子运、Kalachakra 简化子运、年运三年全展开、36 个月星历、解释补长);不设大小上限 | 待领取(等 #89 合入;T3 与 #90 串行) | `codex/full-data-parity-1-20261021` |
|
||||
| `TASK-goel-jaimini-strength-20261022.md` | — | #94 搬上游公开的 Goel Jaimini 强度与 Brahma / Maheshwara / Rudra(4 个上游原样文件,按 #81 决策 A 先例根目录预算 448→452;来源串改书目引用);只做计算、不改报告;冻结身份不变 | 待领取(可与 #89 并行;须在 #91 印章前合入) | `codex/goel-jaimini-strength-20261022` |
|
||||
| `TASK-goel-jaimini-strength-20261022.md` | `PROGRESS-goel-jaimini-strength-20261022.md` | #94 搬上游公开的 Goel Jaimini 强度与 Brahma / Maheshwara / Rudra(4 个上游原样文件,按 #81 决策 A 先例根目录预算 448→452;来源串改书目引用);只做计算、不改报告;冻结身份不变 | 已合入 staging | `codex/goel-jaimini-strength-20261022` |
|
||||
| `TASK-chart-subject-table-fix-20261022.md` | `PROGRESS-chart-subject-table-fix-20261022.md` | **#86 第 1 次打回**:报告所有表被强制单行(打印跑出纸面);保存他人复制了档案页代码且已分叉;点编辑框内边距会丢修改 | 已合入 staging | `codex/chart-subject-table-20261021` |
|
||||
| `TASK-full-data-parity-3-20261022.md` | — | #93 完整数据版补齐(三):「独立年度方法参考」正式环境调 PyJHora(子进程隔离;装上后其余输出逐字节不变,7 个换路径开关钉死);输入默认用本地时间与正确年份(D6 待产品确认) | 待领取(等 #91 合入) | `codex/full-data-parity-3-20261022` |
|
||||
| `TASK-synastry-staging-fix-fix-20261022.md` | `PROGRESS-synastry-staging-fix-20261021.md` | **#85 第 1 次打回**(T7~T11 主体通过):新地址没登记进路由清单致快速门红;CHANGELOG 与 T11 矛盾;侧栏点亮测试是空断言 | 待领取 | `codex/synastry-staging-fix-20261021` |
|
||||
|
||||
Reference in New Issue
Block a user