jesse-ux and Grok (agent loop)
b7ec8e78ed
星盘页换成组件库:页签、盘型条、可拖分栏和换盘动效(#107)。
...
Independent Staging Quality Gate / validate (push) Failing after 9m20s
Independent Staging Quality Gate / publish (push) Skipped
四个页签用下划线,盘型条用分段并可以横滑,全部盘型从底部打开。桌面上盘和参数可以拖宽,窄屏上下排。行星表仍跨满整行。换盘型时星体移到新位置;减少动态效果只淡入。第一次进场不重播。
自测:tsc 退出码 0;frontend 下 npm run lint 0 error(122 警告);定向测试 188 通过、0 失败、0 取消;npm run build 后 / 仍是 Static;首屏 JS gzip-9 为 640131,相对 d25dfdbe 记下的 639127 多 0.16%。没有跑全量 npm test、Python 快速门和 test:db。
Co-Authored-By: Grok (agent loop)
2026-10-25 04:02:14 +08:00
jesse-ux and Grok (agent loop)
d25dfdbe1a
对话页换成组件库,桌面旁边可以打开本命盘(#106)。
...
Independent Staging Quality Gate / validate (push) Failing after 9m13s
Independent Staging Quality Gate / publish (push) Skipped
输入框里左边选模型、右边发送。回答下的赞、踩、复制、重新生成和追问改用组件库按钮。不满意原因和兑换窗改用对话框,句子不变。桌面顶栏可以打开当前人物的本命盘,能拖宽,刷新后还在;手机没有这个入口。当前会话和流式状态从 Home() 移进已有会话 store,useState 从 33 减到 25。流式、停止、排队、撤回、退点和寒暄免费没有改。
自测:tsc 退出码 0;lint 0 error、122 条警告;定向测试 275 通过、失败 0、取消 0;npm run build 退出码 0,/ 仍是 Static。首屏 gzip-9 639127,相对基线 634528 多 0.72%。隐私标记测试退出码 0。
Co-Authored-By: Grok (agent loop)
2026-10-25 03:15:13 +08:00
jesse-ux and Grok (agent loop)
e4e240bf86
启程第一次出现时会动一下(#99)。
...
Independent Staging Quality Gate / validate (push) Failing after 9m8s
Independent Staging Quality Gate / publish (push) Skipped
建档、起步问题、清单打勾、天空过场和合盘按 T7 播放一次。减少动态效果时只剩淡入,没有星点和闪烁。Motion 仍按需加载,首屏 gzip 631199,相对 627046 约 +0.66%。
自测:tsc --noEmit、npm run lint(0 error)、定向测试 58 项 fail 0、npm run build(/ 仍 Static)。
Co-Authored-By: Grok (agent loop)
2026-10-25 02:17:32 +08:00
jesse-ux and Grok (agent loop)
352d45b2ef
外壳换成组件库:侧栏可拖宽,会话可排序(#105)。
...
Independent Staging Quality Gate / validate (push) Failing after 9m12s
Independent Staging Quality Gate / publish (push) Skipped
桌面侧栏可在 200 到 360 像素之间拖宽,拖到最左收起,宽度记在本机。手机从左边滑出。会话在同一组里拖动排序,顺序写入可空的 sidebar_order,收藏仍置顶。账户菜单、设置、反馈和退出确认改用组件库。顶栏点数只显示图标和数字。启程清单还在。菜单、拖宽、拖动排序和翻页在首屏之后再载入。
自测:tsc 退出码 0;npm run lint 0 error、121 warning;改到的前端测试 205 项全过;npm run build 后首页仍是 static;首屏 gzip 630350,相对 8f7c0f7d 的 621226 为 +1.47%。test:db 92 项里 79 过、13 败,失败名与 Windows 已知清单一致,排序列在通过的 ok 37。没有跑全量 npm test,没有跑 Python 快速门。没有登录态,没有在浏览器里拖侧栏。
Co-Authored-By: Grok (agent loop)
2026-10-25 01:41:19 +08:00
jesse-ux and Grok (agent loop)
8f7c0f7db4
首页加上启程清单和一次性提示(#97)。
...
Independent Staging Quality Gate / validate (push) Failing after 9m6s
Independent Staging Quality Gate / publish (push) Skipped
右上角「启程 n/N」按真实使用打勾,收费项读计价表。八条提示一次一条,看过写入已有的 onboarding_state。没有新表、新接口,也没有增加 Home 的状态。
自测:tsc --noEmit 通过;frontend 下 npm run lint 是 0 error、121 warning;定向测试 94 项全过,清单测试在最后一次改动后再跑 12 项全过;npm run build 后 / 仍是 Static。首屏 JS gzip-9 是 617860 字节,相对 592895 增加 4.21%,原因写在进度里。没有跑全量 npm test,没有跑 Python 快速门,没有宣称 test:db。
Co-Authored-By: Grok (agent loop)
2026-10-24 23:48:15 +08:00
jesse-ux and Grok (agent loop)
4d63475caf
建档先问看谁的盘,空白首页给出起步三问(#96)。
...
Independent Staging Quality Gate / validate (push) Failing after 10m31s
Independent Staging Quality Gate / publish (push) Skipped
建档改为四步。帮别人看写入已有人物档案,不新增数据库列。本人没有出生资料时不显示今日星语,「和我合盘」改成一句说明。起步三问只读已有上升和月亮:前两问直接发送,第三问只聚焦输入框。
自测:tsc 退出码 0;lint 0 error、121 warning;定向测试 142 项,pass 142,fail 0,cancelled 0;build 成功,/ 仍是 Static。首屏 gzip 592895,相对基线 578435 为 +2.50%。未跑全量 npm test、Python 快速门和 test:db。
Co-Authored-By: Grok (agent loop)
2026-10-24 22:51:06 +08:00
jesse-ux and Grok (agent loop)
d3be9491ee
组件库 K0:换上 Motion 底座和 shadcn 零件,页面还没换(#104)。
...
Independent Staging Quality Gate / validate (push) Successful in 20m4s
Independent Staging Quality Gate / publish (push) Failing after 7m48s
去掉 GSAP。对话入场改为按需加载的 Motion,仍是 160 毫秒,仍尊重减少动态效果。
用 shadcn@4.21 .4 补上任务书列出的组件,不覆盖已有的 8 个。设计令牌映射到 shadcn 变量。
手写控件检查和只减不增的白名单。Motion 预设与四个 store 只是骨架,没有接到页面上。
自测:tsc --noEmit 退出码 0;npm run lint 0 error(122 条原有 warning);
定向测试 37 项、fail 0、cancelled 0;next build 后 / 仍是 Static;
首屏 JS gzip 578349 → 578435(+86 字节,+0.01%)。
Co-Authored-By: Grok (agent loop)
2026-10-24 15:37:29 +08:00
Jesse_Chen and Claude Opus 5.5
0f66d92d4d
docs(tasks): #93 fix brief round 2 (product chose Grok)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-24 10:27:10 +08:00
Jesse_Chen and Claude Opus 5.5
0b8fcdb842
merge full-data parity (二) research timing into staging (issue #92 )
...
Independent Staging Quality Gate / validate (push) Successful in 18m33s
Independent Staging Quality Gate / publish (push) Successful in 4m53s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-24 00:58:24 +08:00
Jesse_Chen and Claude Opus 5.5
4d0e398ab6
docs(tasks): #93 fix brief (agent loop, first rejection)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 23:04:36 +08:00
jesse-ux and Grok (agent loop)
a757af6b4e
标出研究章和 PyJHora 的已知差别(#92)。
...
10 张虚构盘逐体系对照。不一致的方法在标题下写明差在哪一类。本命 Tithi 顺行一致,逆行没有公开函数。Windows 上 1970 年以前的日出不再用 fromtimestamp。
自测:合同与研究章测试通过;200 张英文扫描约 1956 秒通过。未跑全量 pytest、快速门和前端。
Co-Authored-By: Grok (agent loop)
2026-10-23 22:29:52 +08:00
jesse-ux and Grok (agent loop)
e586886196
merge origin/staging into codex/full-data-parity-2-20261021
...
Bring in the #92 fix brief at bc6795e2 . No rebase.
Co-Authored-By: Grok (agent loop)
2026-10-23 20:29:52 +08:00
Jesse_Chen and Claude Opus 5.5
bc6795e2a3
docs(tasks): #92 fix brief (agent loop, first rejection)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 20:11:17 +08:00
jesse-ux and Grok (agent loop)
d45e65a9ec
完整数据版补上研究口径的推运、次小运和细分盘(#92)。
...
研究章在渲染时计算,不写入资料包。四种星座大运次小运和 Kalachakra 第三层不改原来的主运、子运。D81、D108、D144 只留在研究章。
自测:test_research_timing、星座大运、域读取、卫生预算、真恒星、jhora 扫描、API 增长、六章标题、英文版。三张虚构盘中英出稿都低于 180 秒。PyJHora 已导入但未做逐层对照。
Co-Authored-By: Grok (agent loop)
2026-10-23 18:20:44 +08:00
Jesse_Chen and Claude Opus 5.5
85e8adddbc
merge full-data parity (一) stage B into staging (issue #91 , BUG-1424..1426)
...
Independent Staging Quality Gate / validate (push) Successful in 16m30s
Independent Staging Quality Gate / publish (push) Successful in 5m32s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 16:48:08 +08:00
jesse-ux and Grok (agent loop)
41cbf38531
补上完整数据版 K4:年运新字段放在原键后面,Yogini 缺字段不再整段失败。
...
pytest tests/test_annual_tajika_pack.py tests/test_dasha_master_children.py tests/test_report_longform_gaps2.py:30 项,退出码 0。
Co-Authored-By: Grok (agent loop)
2026-10-23 15:24:11 +08:00
jesse-ux and Grok (agent loop)
be32dc02e6
merge origin/staging into the full-data parity branch
...
Keep this branch's #91 index row and take staging's #92 brief. No rebase.
Co-Authored-By: Grok (agent loop)
2026-10-23 15:20:31 +08:00
jesse-ux and Grok (agent loop)
cfd0ab68ac
完整数据版补上行星和宫主解释、后两年年运细项,以及 72 年逐年年返。
...
定向测试和 200 张英文扫描通过。一张虚构盘中英合计约 20 秒。土星和 KP 结果段仍按修复单让步。
Co-Authored-By: Grok (agent loop)
2026-10-23 15:04:25 +08:00
Jesse_Chen and Claude Opus 5.5
3b13888c8d
docs(tasks): full-data parity 2 brief (agent loop, issue #92 )
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 14:19:04 +08:00
jesse-ux and Grok (agent loop)
2a4646d8b2
合并 origin/staging。Yogi 记录改为 BUG-1424,避开已被占用的 BUG-1421。
...
Co-Authored-By: Grok (agent loop)
2026-10-23 14:18:25 +08:00
Jesse_Chen and Claude Opus 5.5
d03a8bc86f
docs(tasks): #91 stage B fix brief adds K3 (product) and K4 (full pytest)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 14:17:21 +08:00
Jesse_Chen and Claude Opus 5.5
17bec18761
docs(tasks): #91 stage B fix brief (agent loop)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 11:39:04 +08:00
Jesse_Chen and Claude Opus 5.5
90993e2d20
merge rectification explicit open into staging (issue #103 , BUG-1421 renumbered to BUG-1423)
...
Independent Staging Quality Gate / validate (push) Successful in 21m55s
Independent Staging Quality Gate / publish (push) Successful in 4m46s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 11:30:11 +08:00
Jesse_Chen and Claude Opus 5.5
31d99e8716
merge chart table span fix into staging (issue #102 , BUG-1421 renumbered to BUG-1422)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 11:29:51 +08:00
Jesse_Chen and Claude Opus 5.5
8d41010449
merge onboarding (一) first-consult-free + relation into staging (issue #95 )
...
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 17m12s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-23 11:15:42 +08:00
jesse-ux and Grok (agent loop)
d74760b10a
记下完整数据版 B 段的生成时长、没做满的项,以及真机验收清单。Yogi 的更新日志编号改为 BUG-1421。
...
Co-Authored-By: Grok (agent loop)
2026-10-23 10:40:06 +08:00
jesse-ux and Grok (agent loop)
61b37bfec7
合并 origin/staging。Yogi 记录改记为 BUG-1421,避开已经占用的 BUG-1420。
...
Co-Authored-By: Grok (agent loop)
2026-10-23 10:18:13 +08:00
jesse-ux and Grok (agent loop)
39468f126c
行星解释里的六维力量合计改读已经算出的 rupa 总分。有总分时不再写成「未列出」。
...
Co-Authored-By: Grok (agent loop)
2026-10-23 10:17:34 +08:00
jesse-ux and Grok (agent loop)
355946cd1a
从报告日期所在月起列出 36 个月的九星表。报告口径和 KP 岁差口径各一张,另有五级大运月采样。黄经仍走本系统恒星计算。
...
Co-Authored-By: Grok (agent loop)
2026-10-23 10:17:29 +08:00
jesse-ux and Grok (agent loop)
4c405d2a51
当年和后两年写出月返照、原生 Patyayini 和 Tithi Pravesha。已有年主、Muntha、Mudda、Sahams、Tajika 不改写。出生地八年总览会算,72 年生命周期年返先不做。
...
Co-Authored-By: Grok (agent loop)
2026-10-23 10:17:13 +08:00
jesse-ux and Grok (agent loop)
4a9ad6a1bd
fix(rectification): open a new case when an accepted one blocks chat
...
An accepted rectification no longer counts as in progress at the chat entry, so an explicit request starts a new case and the offer card can return. An unfinished case still resumes through the case RPC. A failed lookup is logged without personal data and opens a new case.
Self-test: tsc 0, lint 0 errors, 47 targeted tests, test:db failures match the Windows list, next build with / static.
Co-Authored-By: Grok (agent loop)
2026-10-23 01:55:59 +08:00
jesse-ux and Grok (agent loop)
fc2283693d
fix(chart): span natal and moon planet tables across the row
...
VedicLayout now owns the third grid item, so a wrapper around the table cannot drop the natal or Moon table into the left column. Desktop grid-column targets that row. BUG-1421.
Self-test: tsc exit 0, lint 0 errors, 49 targeted tests, next build with / static.
Co-Authored-By: Grok (agent loop)
2026-10-23 01:22:46 +08:00
jesse-ux and Grok (agent loop)
fdd592d3f3
feat: 新账户首问免费,档案可标明关系
...
只做启程(一):同一笔预扣覆盖已公布的标准档,更贵的只扣差价;引导状态与人物关系只加列。tsc 与 lint 通过。test:db 91 项,失败 14,其中 13 条为 Windows 已知失败;校正遥测单独重跑通过。
Co-Authored-By: Grok (agent loop)
2026-10-23 00:34:28 +08:00
Jesse_Chen and Claude Opus 5.5
d72adb5754
docs(tasks): rectification explicit open brief (agent loop, issue #103 )
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-23 00:30:54 +08:00
Jesse_Chen and Claude Opus 5.5
dd5ae8d032
docs(tasks): chart table span brief (agent loop, issue #102 )
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-23 00:26:37 +08:00
Jesse_Chen and Claude Opus 5.5
9049b5e997
docs(tasks): ui kit prototype v5 confirmed by product
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-23 00:23:31 +08:00
Jesse_Chen and Claude Opus 5.5
052a4bf70c
docs(tasks): ui kit — synastry start button shows cost in a confirm dialog
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-23 00:22:22 +08:00
Jesse_Chen and Claude Opus 5.5
23f1b31787
docs(tasks): ui kit — segmented Tabs for chart-type, language and theme switches
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-23 00:17:30 +08:00
Jesse_Chen and Claude Opus 5.5
01ec3d229b
docs: ui kit migration brief (shadcn/lucide/motion/resizable/dnd-kit/zustand); component-library rule in AGENTS
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-23 00:15:44 +08:00
Jesse_Chen and Claude Opus 5.5
3632b0eabd
docs(agents): fix bugs at the cause; cut redundant UI copy but keep accessible names
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-23 00:11:56 +08:00
Jesse_Chen and Claude Opus 5.5
dfa9acaf05
docs: dedupe Bug History duplicated by the 10-14 merge (BUG-1420)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-22 23:32:54 +08:00
Jesse_Chen and Claude Opus 5.5
b6c43f3787
docs(tasks): site motion brief; onboarding brief split for agent loop
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-22 23:17:27 +08:00
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_Chen and Claude Opus 5.5
8743f61512
docs(tasks): onboarding journey brief (who-chart step, first ask free, checklist, hints, motion)
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
2026-10-22 23:05:52 +08:00
6b906f85c4
标准大运表以前只印主运。已有出处的子运写进主包副本并出表,Kalachakra 子运按简化模型挂在现有主运上。
...
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 23:01:40 +08:00
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_Chen and Claude Opus 5.5
c1aa72fcbf
docs: #91 fix2 progress, BUG-1418 (yoga combination 未判定) and BUG-1419 (parity chapters keys / heading level)
...
Independent Staging Quality Gate / validate (push) Successful in 20m33s
Independent Staging Quality Gate / publish (push) Successful in 4m57s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
2026-10-22 22:11:48 +08:00
Jesse_Chen and Claude 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_Chen and Claude 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_Chen and Claude 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