Commit Graph
1381 Commits
Author SHA1 Message Date
jesse-uxandGrok (agent loop) 09906cdccc fix(release): keep owners and grants in production recovery points
Co-Authored-By: Grok (agent loop)
2026-10-14 21:01:52 +08:00
jesse-uxandGrok (agent loop) 32aa46b573 fix(release): close the first review of the production release path
Host rehearsal no longer needs Node on the production machine, and a failed cleanup now stops with the rehearsal database name. Docs-only staging heads no longer block rollback. Tests no longer hardcode Windows paths, and a trailing slash on the production site still refuses the test code.

pytest 12 passed; tsc exit 0; lint 0 errors; identity tests 9 passed, 0 cancelled. test:db was not run.

Co-Authored-By: Grok (agent loop)
2026-10-14 16:37:58 +08:00
jesse-uxandGrok (agent loop) 0dc1d8fa52 merge origin/staging into the release-path fix branch
Co-Authored-By: Grok (agent loop)
2026-10-14 15:54:45 +08:00
jesse-uxandGrok (agent loop) 29949e0a29 接受删除旧报告页,并跟上最新 staging
Independent Staging Quality Gate / validate (push) Failing after 8m31s
Independent Staging Quality Gate / publish (push) Skipped
旧的结构化报告页已由另一单删除,标识留在现在用的阅读页。测试不再读取那个文件。更新日志和 Bug 历史两边都保留。

自测:tsc 退出码 0;lint 0 error、123 warning;修复单点名的 3 个测试 7 通过、0 失败、0 取消。

Co-Authored-By: Grok (agent loop)
2026-10-14 12:27:33 +08:00
Claude 400af57e86 merge origin/staging into frontend dead code (issue #63)
Independent Staging Quality Gate / validate (push) Failing after 7m39s
Independent Staging Quality Gate / publish (push) Skipped
Docs-only catch-up; agent-loop rule A.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-14 11:20:59 +08:00
jesse-uxandGrok (agent loop) 392c1f7218 合并 staging,并去掉已删组件留下的样式名单条目
knownUnstyled 不再保留 personal-report-additional-charts。它只被删掉的报告组件用过。其它白名单没有同类残留。业务代码没改。

自测:类名合同和两条否定合同 6 通过,失败 0,取消 0。tsc 0 错,lint 0 error。

Co-Authored-By: Grok (agent loop)
2026-10-14 11:10:17 +08:00
jesse-uxandGrok (agent loop) 9e29310941 合并 staging,并让发问准备的检查跟上新位置
两条按源码原文查找的检查改认搬走后的写法,意思没有放宽。对照脚本挪到测试目录,镜像构建不再去找测试文件。业务代码和三个开关的默认值没改。

自测:相关前端测试 40 通过,失败 0,取消 0。假时钟仍是并行 160、串行 210。tsc 0 错,lint 0 error。

Co-Authored-By: Grok (agent loop)
2026-10-14 10:56:17 +08:00
jesse-uxandGrok (agent loop) 00e6efdbfa 发布可以跟上只多了文档的测试环境头
四个生产工作流改用同一条发布修订:最近一次代码门禁成功的提交可以发布,后面只多文档不再挡住。生产环境拒绝测试验证码。63 个还没上生产的迁移写了分级、演练脚本和首发步骤。没有点任何生产按钮。

自测:发布修订 7 通过,演练安全 3 通过,tsc 0 错,lint 0 error。本机空库演练在服务角色读人物表处按设计停止(退出码 4,其他人物已确认行数为 0)。

Co-Authored-By: Grok (agent loop)
2026-10-14 10:24:40 +08:00
jesse-uxandGrok (agent loop) fca62fda43 给别人出报告能读到档案,对话和报告标明 AI 生成
BUG-1063:后台按列只读档案,授权前数据库拒绝读表,授权后通过。对话输入框下和报告标题下加上 AI 生成说明。状态板按已部署提交改措辞,不标 resolved。下载文件元数据没有做。

自测:tsc 退出码 0;lint 0 error;定向测试 51 通过;test:db 82 项里 13 项为 Windows 已知失败,无新增;隐私标记退出码 0。

Co-Authored-By: Grok (agent loop)
2026-10-14 09:30:51 +08:00
jesse-uxandGrok (agent loop) 1f9947a0d7 删除三个无调用方接口和约 3000 行前端死代码
关掉未登录就会触发约 20 秒计算的入口,并记下 BUG-1342。普通导出的逐字节锁保留。自测 tsc 0 错,lint 0 error / 123 warning,改到的前端测试 fail=0,两份 Python 测试通过,test:db 失败 13 条与 Windows 已知清单一致。

Co-Authored-By: Grok (agent loop)
2026-10-14 08:39:32 +08:00
Claude f4c53e7f9f merge origin/staging into home sidebar rerender (issue #59)
Independent Staging Quality Gate / validate (push) Successful in 14m30s
Independent Staging Quality Gate / publish (push) Successful in 3m43s
Docs-only conflicts resolved by keeping both; agent-loop rule A.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-14 08:09:22 +08:00
jesse-uxandGrok (agent loop) 6a94edf200 让充值入口的旧检查认侧栏的新写法
账户菜单里点充值,仍然打开充值面板,来源仍是账户菜单。只改了这一条按源码对照的检查,业务代码没动。tsc 通过,lint 0 个错误(125 条原有警告),这条检查 13 通过、0 失败。

Co-Authored-By: Grok (agent loop)
2026-10-14 07:53:38 +08:00
jesse-uxandGrok (agent loop) ad1dc89664 合并最新 staging 到侧栏重画这支
校正提速已经在测试线上。更新日志、缺陷记录和任务索引两边都留下。这单自己的修复还没开始。

Co-Authored-By: Grok (agent loop)
2026-10-14 07:50:24 +08:00
jesse-uxandGrok (agent loop) 3893783e4c 把数据库往返对照脚本挪出镜像会打包的目录
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 4m24s
脚本从 frontend/scripts 挪到 frontend/tests,不再从会被打包的目录引用测试夹具。业务代码没动,对照数字没重跑。tsc 通过,lint 0 个错误(125 条原有警告),镜像导入守卫 2 通过、0 失败。

Co-Authored-By: Grok (agent loop)
2026-10-14 07:41:19 +08:00
jesse-uxandGrok (agent loop) f197774812 合并最新 staging 到服务器内存这支
校正提速已经在测试线上。更新日志、缺陷记录和任务索引两边都留下。这单自己的修复还没开始。

Co-Authored-By: Grok (agent loop)
2026-10-14 07:37:49 +08:00
jesse-uxandGrok (agent loop) a0e223e20c 发问准备可以并行,三个开关先保持关闭(BUG-1337~1339)
开流前的注销检查可以和读会话、解析模型同时进行;审核改到扣点前等待,不再挡住第一行;模型版本可以短缓存;两个领域可以一起算。本机没有数据库中位数,也没有带星盘网络库的镜像,所以默认仍是关闭、缓存 0、领域逐个算。

自测:tsc 0 错;lint 0 error;相关测试失败 0、取消 0。test:db 未跑。

Co-Authored-By: Grok (agent loop)
2026-10-14 07:23:58 +08:00
jesse-uxandGrok (agent loop) 6350943152 回答生成时侧栏不再跟着每一帧重画
外壳只在会话、当前项或账户这些数据变了才更新。60 帧计数从注册 60 次、提交 60 次降到 0 次,点下去仍是最新一次操作。BUG-1329。

Co-Authored-By: Grok (agent loop)
2026-10-14 04:12:02 +08:00
jesse-uxandGrok (agent loop) 4c3485bc23 服务器长跑不再堆积取消监听,数据库少走几趟。
报告工人的等待到点就摘掉取消监听。本地数据库缓存表结构,并把设置身份合成一条语句,对照通过后默认打开,写成 off 仍走原来的语句。交付、重算和限流的内存表会过期。登录读缓存默认关闭,要开再设 IDENTITY_SESSION_COOKIE_CACHE=on。

自测:tsc 通过,lint 0 error,点名测试 134 通过,test:db 开关关和开都只有已知的 13 条失败,往返 49 降到 32。

Co-Authored-By: Grok (agent loop)
2026-10-14 03:32:39 +08:00
jesse-uxandGrok (agent loop) 8e0503f9c0 Speed up rectification scoring without changing results.
Cache work that depends only on the candidate minute, drop unread response fields, and reject windows above 241 candidates before any chart is built. Eleven canonical scenario hashes match 77057a819. Sealed and reported-offset replays match the 2026-10-08 records (changed_trial_count 8 and 581) and are stored as scoring_perf_2026_10_13.

Co-Authored-By: Grok (agent loop)
2026-10-14 02:06:14 +08:00
Claude 77057a819b merge origin/staging into the rectification step-0 entry (issue #54)
Independent Staging Quality Gate / validate (push) Successful in 14m24s
Independent Staging Quality Gate / publish (push) Successful in 4m21s
Docs-only conflicts (CHANGELOG, BUG_HISTORY 1316/1317) resolved by keeping
both; agent-loop rule A (2026-10-13).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-13 22:29:01 +08:00
jesse-uxandGrok (agent loop) bccceff91f 明说要校正时,第一步就能打开(BUG-1317)
本命和申报时段的第 0 步,校正工具挂上时可以排盘,也可以直接打开校正。还没看盘就顺口提议不算已经提议过。规则第一句写明 explicitRequest=true。定向测试 149 通过,类型检查和 lint 通过,隐私标记通过。名人生平回测未跑。

Co-Authored-By: Grok (agent loop)
2026-10-13 22:02:41 +08:00
jesse-uxandGrok (agent loop) 8883f8475f 报告开头改成重点摘要卡
新报告用围栏画出大运和事业、财富、婚恋,标题下写名字与日期。旧报告不变。

自测:pytest test_report_full_data_fix.py 10 通过;相关四份报告测试退出码 0;前端相关测试 147 通过、0 失败、0 取消;tsc 退出码 0;lint 0 error。

Co-Authored-By: Grok (agent loop)
2026-10-13 21:45:43 +08:00
Claude 3cc7fe23d1 merge origin/staging into the report translation fix (issue #53)
Independent Staging Quality Gate / validate (push) Successful in 15m24s
Independent Staging Quality Gate / publish (push) Successful in 3m48s
Docs-only conflict in BUG_HISTORY: BUG-1311 (#52) and BUG-1312..1315 (#53)
both appended after BUG-1310; kept both in number order. Product owner
chose option A on #53: Claude merges a stale branch when only docs conflict.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-13 18:44:38 +08:00
jesse-uxandGrok (agent loop) 6e6fae8d84 fix(ui): stop the composer radius from clipping the first glyph
The inner textarea kept a 12px radius after its side padding was cleared, so the first character was cut into an arc. Only .composer textarea is now border-radius 0. The outer frame is unchanged.

Verified: chat-reading-load-mobile.test.ts was 7 pass / 1 fail before the CSS change, then 8 pass / 0 fail / 0 cancelled. tsc --noEmit exit 0. npm run lint 0 errors.

Co-Authored-By: Grok (agent loop)
2026-10-13 14:32:25 +08:00
jesse-uxandGrok (agent loop) a295afa40f fix(report): draw charts in the full-data body and clean Chinese residue
New reports draw one north-Indian chart for each ready divisional in the body, so the trailing duplicate section drops. Chinese full-data prose no longer glues English onto Han or leaves listed, background, or native. The birth table starts with the ascendant. The D9 same-sign column says yes or no.

Self-test: tsc exit 0; npm run lint exit 0 (0 errors, 125 existing warnings); three frontend test files 39 pass, 0 fail, 0 cancelled; pytest test_report_chart_blank_columns.py 16 passed; seven related report files 88 passed, exit 0; privacy markers 63 passed.

Co-Authored-By: Grok (agent loop)
2026-10-13 14:02:26 +08:00
Jesse_ChenandClaude Opus 5.5 586561eb68 fix(settings): the ayanamsa hint says new rectifications follow the setting (BUG-1310)
Independent Staging Quality Gate / validate (push) Successful in 13m43s
Independent Staging Quality Gate / publish (push) Successful in 16m40s
Also records the 10-12 rectification batch as merged in the bug history,
changelog and task index.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
2026-10-12 15:43:27 +08:00
jesse-uxandJesse_Chen 0f05c9e26a fix(rectification): scan chart boundaries in the user's ayanamsa (BUG-1307, BUG-1309) 2026-10-12 15:36:50 +08:00
jesse-uxandJesse_Chen 74949d0475 feat(rectification): open on the nearest chart boundary (BUG-1307) 2026-10-12 15:36:43 +08:00
jesse-uxandJesse_Chen 805932addd fix(consult): mark rectification opened only after the case opens (BUG-1306) 2026-10-12 15:36:36 +08:00
jesse-uxandJesse_Chen b8bdc003c3 fix(consult): open rectification when the user asks directly (BUG-1306)
Independent Staging Quality Gate / validate (push) Successful in 19m41s
Independent Staging Quality Gate / publish (push) Successful in 3m52s
2026-10-12 14:17:05 +08:00
jesse-ux d6eb0cfec1 fix(consult): keep career row hints off the planet nature
Career significator and house-lord rows now carry one presentation sentence. Values stay the same. A second three-repeat biography run still has one field conflict, so this is not accepted.

Not pushed.
2026-10-09 16:25:59 +08:00
jesse-ux 85c3030e96 fix(consult): limit career direction and single-flight chart warm
The career checklist now says the direction section only covers strength, resistance, timing, and three events. Warm builds one packet per cache key and skips when its own cap is full.

A three-repeat biography run still has one career answer that names a direction from a planet nature, so this is not accepted. Not pushed.
2026-10-09 15:53:51 +08:00
Jesse_ChenandClaude Opus 5.5 b4eedb7725 fix(consult): a warm that cannot be scheduled no longer fails the save (BUG-1305)
Independent Staging Quality Gate / validate (push) Successful in 13m12s
Independent Staging Quality Gate / publish (push) Successful in 4m16s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-09 15:17:00 +08:00
jesse-ux fc3a2e680d fix(consult): keep career type off significators and warm off the compute cap
The career checklist now says significators are only for strength and affliction. Chart-save warm no longer takes a heavy-compute slot.

Biography severe conflicts fell from 3 to 1. One career answer still names a direction from a planet nature, so this is not accepted for merge. Not pushed.
2026-10-09 10:28:44 +08:00
jesse-ux 16f9f86843 fix(consult): date the full-data cache and slim the model card
The cache key now includes the request date, and files older than two days are removed. The model card keeps values only. Parashari aspects are copied from the engine. Saving a chart warms the packet without blocking the response.

Biography severe conflicts rose from 1 to 3, so this is not accepted for merge. Not pushed.
2026-10-09 10:00:45 +08:00
jesse-ux 3874a328a5 feat(consult): copy the full-data packet into a per-domain judgment table
Dialogue cards now take numbers from the same packet as the full-data report. Each of the twelve domains gets one table the card builder assembles. Lookups allow three calls a turn. further_reading is a per-domain technique index. BUG-1293, BUG-1294, BUG-1295.
2026-10-09 10:00:45 +08:00
jesse-uxandJesse_Chen 98c98aa535 feat(report): replace the reader edition with the full-data report
Generate the full-data edition (pl9_personal_long_report.v4) and remove the reader edition. English still contains Han, so the API withholds it (BUG-1272, investigating). This commit is not pushed to staging.
2026-10-08 22:29:31 +08:00
jesse-ux e5f2a75183 fix(ephemeris): include nutation in the sidereal frame
恒星黄道改为与 Swiss Ephemeris FLG_SIDEREAL 同一套含章动岁差。
产品默认路径不再用平岁差去减含章动的视位置。上升和宫头用同一个岁差。
校正身份升到 rectification-v5-matrix-scoring-12。
BUG-1275。未推送,未部署。v5 先验头名三格下降 1.3 个百分点,不调参。
2026-10-08 18:42:45 +08:00
Jesse_ChenandClaude Opus 5.5 2df6ee7270 test(sync6): regenerate the dated-transition scan golden and move the Saturn/Venus antardasha start (BUG-1260, BUG-1268)
Independent Staging Quality Gate / validate (push) Successful in 14m20s
Independent Staging Quality Gate / publish (push) Successful in 3m51s
fb8277bf left the quick gate red: the native scan golden still carried the
pre-PVR D5/D11 signs, and the user-invocation contract still expected the
antardasha start laid from the day-truncated mahadasha date. Both values now
come from the real engine; Python full suite is back to the 62-failure
baseline, quick gate passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 23:04:37 +08:00
jesse-ux 3b84a3b028 fix(rectification): re-freeze sealed identity after D5/D11 (ERR-110, BUG-1260) 2026-10-07 18:08:25 +08:00
jesse-ux 7b837d3b24 test(consult): refresh D5/D6/D8/D11 signs on the evidence card (BUG-1260) 2026-10-07 18:08:18 +08:00
jesse-ux d46f9675aa fix(rectification): bump scoring identity to scoring-11 after D5/D11 (BUG-1260) 2026-10-07 17:47:00 +08:00
Jesse_ChenandClaude Opus 5.5 0ed45a4b3a fix(chat): a model switch on an unsaved new chat stays local (BUG-1259)
Independent Staging Quality Gate / validate (push) Successful in 14m48s
Independent Staging Quality Gate / publish (push) Successful in 3m46s
Since BUG-989 a new chat is saved on its first send, and that create already
carries the session's model. selectSessionModel still PATCHed the session
right away; with no row yet the route answered 404 and the composer showed
「云端同步失败」 although the local choice had taken effect. The selection now
returns before any PATCH for an unsaved empty consultation (same predicate as
the send path). Saved chats sync as before.

Full suite 4988 / fail 24, identical to 11333460; build keeps / Static.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 15:04:37 +08:00
Jesse_ChenandClaude Opus 5.5 11333460fa docs(tasks): Claude acceptance of rectification-in-chat step 1; note one missing three-column comment
Independent Staging Quality Gate / validate (push) Successful in 12m39s
Independent Staging Quality Gate / publish (push) Successful in 3m33s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 13:05:04 +08:00
Jesse_ChenandClaude Opus 5.5 6ad0bea320 feat(rectification): start from an offer card in the consultation, come back to it (BUG-1247~1251)
TASK-rectification-in-chat-step1-20261006, direct execution.

- The homepage 生时校正 pill and the text trigger (isRectificationHandoffQuestion)
  are gone. The consult agent decides (RECTIFICATION_OFFER_RULE, one
  definition) and calls offer-birth-time-rectification; the server decides
  whether a card may show (self, product on, no case in progress,
  feature_pricing price). The offer is stored with the answer and travels on
  run.completed; the card hangs under that answer.
- Opening from the card binds the offer to the case in the consultation's own
  messages (no table change); GET/POST /api/rectification/cases/[caseId]/source
  find the source and go back: one divider (time changed or not), earlier
  answers captioned 按校正前的时间, and a 按新时间重新看 button that sends only
  when clicked. Auto-return after the post-adopt check or a terminal case, only
  for work done in this view.
- Model history skips the divider and notes answers written with the old time.

Full suite 4987 / fail 24, identical to 6ec8efd5 (4973 / 24), no test name
lost; tsc 0; lint 0 errors; build keeps / Static, first-load gzip +0.20%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 12:58:58 +08:00
Jesse_ChenandClaude Opus 5.5 6ec8efd5d2 feat(rectification): server-written lines in the same warm voice (BUG-1258)
Independent Staging Quality Gate / validate (push) Successful in 13m22s
Independent Staging Quality Gate / publish (push) Successful in 3m42s
About 30 fixed rectification lines lose the receipt tone: no 「已记录。」
openings (收到 when the range holds, 好 when it moves), 麻烦 instead of 请,
时间 instead of 候选 in what the user reads, and no 「新建对话」 after
adoption. Numbers, clocks, ranges and the honesty boundaries are unchanged.
CHOICE_ACK_RE also recognises the new acknowledgements, so a model sentence
that repeats one is still dropped; the delivery guard matches the delivery
sentence by containment and does not depend on the opening.

Full suite 4973 / fail 24, identical to 61d6f248; build keeps / Static.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 11:39:34 +08:00
Jesse_ChenandClaude Opus 5.5 61d6f248e4 feat(rectification): warm older-sister voice; opening and read-only turns get only the Skill sections they use (BUG-1257)
Independent Staging Quality Gate / validate (push) Successful in 13m45s
Independent Staging Quality Gate / publish (push) Successful in 3m34s
Both rectification prompts now share RECTIFICATION_VOICE_HEAD, the same warm
voice as the consultation answer (no mind-reading here: these turns collect
facts). Opening and read-only turns used to send the whole bound Skill (11,812
characters for 10.0.33); they now send the sections they act on, plus the
product-identity section when the bound Skill has it. 9.0.0 still goes out
whole (BUG-621). Rule bodies, scoring, cards and adoption are unchanged.

Opening input 7,433 -> 3,892 tokens in a DeepSeek replay. Full suite 4970 /
fail 24, identical to c76fdda7; build keeps / Static.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 11:08:25 +08:00
Jesse_ChenandClaude Opus 5.5 c76fdda7ab refactor(consult): chat binds the method's truth boundaries, not the engine manual (BUG-1256 step 2)
Independent Staging Quality Gate / validate (push) Successful in 14m35s
Independent Staging Quality Gate / publish (push) Successful in 3m37s
The method block bound into every chat turn quoted most of SKILL.md (benchmark
scores, CLI flags, oracle queues, file paths) plus the shared method, whose
output contract asks for JSON verdicts, A/B/C/D confidence, audit tables, raw
data and web verification - the opposite of the chat shape. Chat now quotes
only the truth-boundary sections and adds CHAT_METHOD_BOUNDARIES for the
limits from the dropped sections it still has to keep. SKILL.md and the shared
method file are unchanged for reports and skill_read.

Natal system prompt 55,242 -> 26,591 characters. DeepSeek A/B on public
golden charts (flash 10 questions): input 24,560 -> 14,025 tokens, 37.8 ->
30.3 s, no regression in automatic checks or reading; a high-rigor request
still says plainly that no external check was done. Full suite 4970 / fail
24, identical to b8385adb; build keeps / Static.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 08:48:04 +08:00
Jesse_ChenandClaude Opus 5.5 6a372bc3a8 refactor(consult): state the answer shape once in the natal prompt (BUG-1256 step 1)
The English shape summary sat in the system prompt four times (contract,
index, natal heading rule, skill skeleton) and the contract restated the
Chinese ANSWER SHAPE point by point. Keep the summary in the contract only and
drop the restatements; the Chinese ANSWER SHAPE stays the one full statement.
General answer-policy bullets no longer sit under the reference_transparency
header.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 08:36:05 +08:00
Jesse_ChenandClaude Opus 5.5 b8385adbfe feat(consult): warm older-sister voice; read feelings within three rules (BUG-1255)
Independent Staging Quality Gate / validate (push) Successful in 14m48s
Independent Staging Quality Gate / publish (push) Successful in 3m29s
Product 2026-10-07: the answer voice becomes a knowing, gentle older sister,
matching the homepage greeting, and may read feelings: after the answer, one
sentence, with 可能 / 多半, never a guess stated as fact or a question
rewritten into a need; another person's feelings need chart evidence and only
on an unafflicted line (afflicted lines keep the range rule, BUG-1182).
Overturns the feelings part of BUG-1070.

Also removes rules that contradicted the answer shape: 'restate the same
constraint', the rectification 'say progress' line, 'answer concisely', and
'every time say what to do' (now only when things are hard).

Full suite 4969 / fail 24, identical to 52d14e8f; tsc 0; lint 0 errors;
build keeps / Static, first-load gzip unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-07 07:53:39 +08:00