Files
Jyotisha/docs/tasks/PROGRESS-upstream-sync-20260903.md
T
Jesse_Chen f224146348
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
feat(upstream): merge a6f47abd engine, MCP, and orchestrator
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>
2026-09-03 20:28:57 +08:00

25 KiB
Raw Blame History

PROGRESS · 上游同步(任务 022026-09-03

工作树:/Users/jesse/Downloads/Copse/astrology/.worktrees/upstream-sync-20260903 分支:codex/upstream-sync-20260903 上游只读克隆:/Users/jesse/Downloads/Copse/astrology/.upstream-readonly/yinduzhanxingHTTPS + gh auth git-credential;未写入、未提交、未推送) 任务书:docs/tasks/TASK-upstream-sync-20260903.md

未碰 main。未改 .gitea/workflows/**。任务 2 已合完,未提交。

基线与 rebase

SHA 说明
开工基线 58cae371 当时的 origin/staging(含并行规则那段任务书)
rebase 后 HEAD 01a45363 rebase 到已含整备 03 的 origin/staging
任务 0/1/4 提交 45d13258 快照 + 真相层 + VedAstro REST;任务 2 尚未提交
整备合入 b6a70aa72415e75101a45363 岁差参考集 / 发布门与产品 URL / 整备进度与状态板
上游 pin a6f47abd2c9b7c6baa911ea00c971e1ec902380c source_committed_at=2026-09-03T05:33:11Z
上游 tree 650551ddcaddce0dacc76360efca425158ebb8d4 source_tree_sha256=790fd5c05ffd6c1a17c6347259143d3c174e0e425246ea2207a8405f7bf6eaed

rebase 无冲突。任务 2 的 ours 以 rebase 后的工作树为准,没有在 58cae371 上预合并。

本 worktree 没有 .venv(导入器 validate_clean_target 会拒 ignored 文件)。Python 用主仓 /Users/jesse/Downloads/Copse/astrology/yinduzhanxing/.venv/bin/python -BPYTHONDONTWRITEBYTECODE=1

任务状态

任务 状态 说明
0 快照 / golden / 冲突表 完成(45d13258 导入记录、上游镜像、golden、新测试;语义合并六路径保持 review_required
1 真相层 完成(45d13258 116 项注册表、覆盖层 25+Ashtottari、根 SKILL 三段、徽章、6.9.15 版本目录
2 引擎三方合并 合完(未提交) 零/低/高冲突文件已按硬红线 5 裁决;API 保持商业文件;golden 已重采;quick 门 Python 段与任务 1 同绿

任务 4 写在 PROGRESS-upstream-capabilities-20260903.md

预检

scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45remote_visibility_status=verified。失败项是 fragment_scan 90s timeout 与 focused tests 45s timeoutERR-078 / ERR-084 同类环境预算),不是远端同步失败。未因此停任务 0 / 4。

任务 0

导入

干净只读克隆:porcelain 空,ignored 0。Importer dry-run 退出码 2semantic review required)。镜像只有 SKILL.md。六个 semantic-merge 路径全部 review_required,未覆盖。

写入:

  • references/cross_project_contract/imports/commit-a6f47abd2c9b7c6baa911ea00c971e1ec902380c.jsonsource_mode=gitsource_commit 40-hexsource_tree_hash 与 manifest 一致,target_base_commit=58cae371…
  • references/upstream/yinduzhanxing/SKILL.mdsha256 2cf15abe82e80fd1eba1fb232bc31b15a6998cafd586bbd281e76a7522b744be= 上游 HEAD SKILL.md
  • references/upstream/yinduzhanxing/source-manifest.jsongit 模式,无 archive 字段;imported_at=2026-09-03T08:19:47Zsource_committed_at
  • references/upstream/yinduzhanxing/import-plan.json:身份字段改到 a6f47abdentries / rejected_regressions 保留

镜像 SKILL.md 原文里仍有上游对 yn-1993 的研究备注。那是快照,不是产品默认出生参数。产品脚本与 golden 未带 1993-04-17 / 14:49

咨询契约 golden

虚构 smoke1990-01-01 12:00 Beijing39.9, 116.4, tz 8),defer_optional_external_evidence=true。career / marriage / wealth / timing / health × skip_full_reading_for_thematic true/false,外加 /api/chart/api/varga_full/api/daily_guidance/api/synastry

无界 flatten 曾到 8.1 MB。按任务书「只记键路径和类型」收成 最多 2 段 点路径(workflow ~290chart 161golden 157 KB / 3213 行)。整备改的是岁差取值与标签,不改键路径,故 不因 rebase 重采。任务 2 合完后按任务书重采一次。

新文件:tests/golden/consultation_contract_keypaths_v1.jsontests/test_consultation_contract_golden.pytests/test_upstream_git_import_a6f47abd.py

测试(任务 0

主仓 venvPYTHONDONTWRITEBYTECODE=1

tests/test_consultation_contract_golden.py
tests/test_upstream_git_import_a6f47abd.py
tests/test_import_yinduzhanxing.py

35 passed, 1 skippedskip = live HTTP 重采,需 JYOTISH_LIVE_CONTRACT_GOLDEN=1)。

tests/test_upstream_import_plan.py 预期红直到任务 1:它仍钉 archive 5db72537 / source_mode=archive / 旧 SKILL sha256。本轮按并行规则未改该文件。新 git 记录由 tests/test_upstream_git_import_a6f47abd.py 锁住。

冲突表(任务 2 工作清单)

方法:git merge-file -pours = rebase 后 本 worktreebase = 上游 5db72537741fcedaa7b5498502d4a31b0f9fc147theirs = a6f47abd。改动行 = diff -u+/- 行数(不含 hunk 头)。

任务书「现状实证 4」的冲突块数在 58cae371 上复核时与表一致。rebase 之后 冲突块数有两处因整备变了

文件 ours 改动行 theirs 改动行 冲突块 相对任务书
scripts/jyotish_api_server.py 8367 3381 38 任务书 36;整备 0 改四处岁差字面量,+2 块
scripts/jyotish_engine.py 3649 10934 25
scripts/unified_consultation_orchestrator.py 557 757 18
mcp_server.py 655 625 11
scripts/active_rectification_questions.py 197 160 7 同;硬红线 3,任务 2 跳过
scripts/ashtottari_dasha.py 264 134 5
scripts/active_rectification_events.py 210 101 5 同;硬红线 3,任务 2 跳过
scripts/domain_calculation_service.py 412 20 5
references/technique_registry.json 5612 966 5 同块数;ours 行数含本仓格式 diff,任务 1 收内容不收回格式
scripts/narayana_dasha.py 488 269 4
scripts/run_quality_gate.py 140 54 4 任务书 ours 132;整备 1 改发布门,块数仍 4
scripts/kp_system.py 205 145 3
scripts/varga.py 35 43 1
scripts/tajika.py 324 88 1
scripts/report_orchestrator.py 108 28 1
scripts/jaimini.py 1 137 0
scripts/muhurta.py 2 1618 0
scripts/western_timing_engine.py 0 230 0
scripts/solar_return.py 54 84 0

jyotish_engine.py 的 25 处仍落在任务书点名的同一批函数。逐块取舍(ours / theirs / 手工合成)等任务 2 逐文件合并时填,本表只作清单。

硬红线 3 已核过、PROGRESS 记一句:references/rectification_evidence_contract_v1.jsoncompare_candidate_minutes 不取;本仓 rectification_technique_contract.py 已是代码化合同且不含 D60/D40/D45。

任务 1

  • references/strict-workflow-router.md / quick-reference-guide.mdfinance-timing-strict 为主名,wealth-timing-strict 为旧别名。health 三窗与 D6/D8/D30 本仓已有,未逐字覆盖。
  • 注册表 91→116。上游 25 项 ID 全部接收。本仓没有的 CLI/脚本(classical / ziwei / unified-western-reading)改为 guarded、空 command / output_path,避免 audit_fragments --strict 因缺文件红。western_solar_arc_directions 指向已有 scripts/western_timing_engine.pyregistry covered
  • 覆盖层:25 项 research_only_blockedfull_technique_invocation_matrix/api/consultation_workflow 均无这些 ID)。ashtottari_dashapartial,规则族 rahu_from_lagna_lord_kendra_trikona_plus_paksha_daynightselected_rule_family_parameter_sensitive 不得进确定性结论。
  • SKILL.md 只加三段(Ashtottari、professional_report_reference、VedAstro REST)。版本 6.9.14→6.9.15。
  • 徽章:Capabilities 91→116Covered 78→79(只多 solar arc 这一条本地有脚本的 covered)。
  • 新增 skills/jyotish-vedic-astrology/versions/6.9.15/(从 6.9.14 复制后叠上述真相层文件)。未改 6.9.14
  • audit_capabilities.py --mode validatevalid=true, problem_count=0warning 含 Rangacharya 旧缺文 + 新项指向未 vendor 的研究路径。
  • 未提交时 git ls-files --others 会列出整个 6.9.15 树(约 1100 文件),fragment audit 不把 untracked 当 hard fail。

25 项覆盖层

technique_id 上游 registry status 本仓 registry 覆盖层
classical_astrology_core guarded guarded research_only_blocked
classical_event_chart guarded guarded research_only_blocked
classical_real_case_calibration guarded guarded research_only_blocked
classical_usable_loop_audit guarded guarded research_only_blocked
western_draconic_chart covered guarded research_only_blocked
western_profection covered guarded research_only_blocked
western_relocation_chart covered guarded research_only_blocked
western_solar_arc_directions covered covered(本地脚本) research_only_blocked
western_zodiacal_release guarded guarded research_only_blocked
ziwei_app_js covered guarded research_only_blocked
ziwei_bio_core_js covered guarded research_only_blocked
ziwei_bridge_script_pack comparison-only comparison-only research_only_blocked
ziwei_character_bio_enhanced_js covered guarded research_only_blocked
ziwei_character_bio_generator_js covered guarded research_only_blocked
ziwei_complete_js covered guarded research_only_blocked
ziwei_doushu_bridge comparison-only comparison-only research_only_blocked
ziwei_face_writing_bundle covered guarded research_only_blocked
ziwei_i18n_bridge_bundle covered guarded research_only_blocked
ziwei_i18n_complete_js covered guarded research_only_blocked
ziwei_mainline_packet covered guarded research_only_blocked
ziwei_patterns_js covered guarded research_only_blocked
ziwei_personal_report_export covered guarded research_only_blocked
ziwei_psychology_js covered guarded research_only_blocked
ziwei_runtime_bridge_scripts comparison-only comparison-only research_only_blocked
ziwei_star_details_js covered guarded research_only_blocked
ashtottari_dasha(已有项) covered covered partial

被触碰的既有断言

文件 原值 现在 原因
README 徽章 91 / 78 / 8 / 0 116 / 79 / 8 / 0 注册表 25 项
test_capability_evidence_pool total_entries 91 116 同上
同上 comparison_only_entries 仅 rangacharya +3 个 ziwei comparison-only 上游新项
test_cli_smoke capability_pool.total_entries 91 116 同上
test_api_server_security not_user_ready 0 == registry_only 网页未执行项保持 registry_only
test_upstream_import_plan 身份 archive 5db72537 git a6f47abd 任务 0 快照推进,任务 1 把钉死测试跟上
jyotish_vedic.__version__ / pyproject / plugin 6.9.14 6.9.15 新 skill 版本目录

任务 1 清单 pytestreadme badges / skill hard constraints / capability evidence pool / import / commercial truth / 上面两条 quality-gate 红测)已绿。run_quality_gate.py --profile quickPython 段 503 passed, 1 skipped;随后 frontend npm test 因 worktree 无 node_modulestsx: command not foundexit 127)。把主仓 frontend/node_modules symlink 进来后 ./node_modules/.bin/tsc --noEmit 0skill-binding + skill-registry 22/22。symlink 不提交。

偏离

  1. 导入器 --output artifacts/… 会被策略拒绝(必须落在 references/cross_project_contract/imports/ 或仓外)。记录直接写在 imports 目录。
  2. 未在 worktree 内建 .venv / 未 symlink .venv
  3. golden 深度上限 2 段,不是全树。前端已读的顶层与下一层键仍在。
  4. 上游 25 项的 command/output_path 按本仓实文件改过,没有把 classical_astrology.py / ziwei 研究脚本带进来。
  5. 为避免 capability audit 把 report/timing 域误判成 thematic-report API,从网页未执行项的 domains 里拿掉了这些触发词;ID 与覆盖层不变。

任务 2

三方基线:ours = 45d13258 工作树,base = 5db72537theirs = a6f47abd。硬红线 3 校正文件跳过。technique_registry.json 已在任务 1 处理。

零冲突文件(全取 merge-file0 hunk

文件 取舍 测试
scripts/jaimini.py theirs 新函数 test_jaimini.py + test_jaimini_rangacharya_api.py 绿
scripts/muhurta.py theirs +1600 test_muhurta.py 绿。test_muhurta_factor_probefull_scoring_status 基线已是 factor_only_scoring_observation,与本合并无关
scripts/western_timing_engine.py theirs +230 test_western_timing_engine.py / test_western_chart_engine.py 绿
scripts/solar_return.py theirs +84 无专属测试;py_compile

低冲突计算模块

文件 hunks 取舍 理由
scripts/tajika_kernel.py 0 merge-file 无冲突
scripts/varga.py 1 theirs + mapping_status / normalize_varga_ascendant 计算正确性;test_varga_bphs 绿。test_varga_vedastro_mode 在 HEAD 已红(D2 Ascendant Leo vs Sagittarius),不是本轮新增
scripts/tajika.py 1 theirs 新年主/PyJHora sidecar 辅助函数 纯新增;import 在本仓可解析。工作机路径只作可选探测
scripts/gulika.py 1 theirs 新 Upagraha 函数 + DAY_RULERS 常量 新函数。calculate_gulika 默认 RamanPyJHora smoke 测例显式 ayanamsa="lahiri"
scripts/kp_system.py 3 theirs kp_maturity_profile / build_kp_report_pack 无守护读取 oracle,已带入 4 个 JSON(打开过,无出生资料)。另两个已在本仓的 hash/workflow 文件一并读取
scripts/ashtottari_dasha.py 5 手工:保留 paksha 白名单(改从 ashtottari_rule_profiles 导入)+ theirs 候选规则族 任务 1 已解冻的 rahu_from_lagna_lord_kendra_trikona_plus_paksha_daynight。纯计算模块 ashtottari_rule_profiles.py 一并带入
scripts/narayana_dasha.py 4 theirs 新 profile/序列函数;去掉 Gemini/Sagittarius 1993 平局硬编码 默认 legacy_* 保持本仓 AD 行为。test_narayana_dasha.py 绿
scripts/ayanamsa_utils.py 5 全部 ours 商业岁差 APIDEFAULT_AYANAMSA_NAME / UnsupportedAyanamsaError)。auto-merge 曾把 apply_ayanamsa 的未知岁差改成吞掉 ValueError,已撤回
scripts/domain_calculation_service.py 5 hunks ours;补 is_supported_ayanamsa_name import position_mode 不取(引擎尚未接)。transit 校验是 theirs 非冲突插入
scripts/run_quality_gate.py 4 全部 oursCORE 列表 / glob 展开 / 门禁范围) 不让上游换掉商业 quick 列表。profile 里多了未使用的 test_timeout_seconds--test-timeout 参数,未接入 pytest 调用
scripts/report_orchestrator.py 1 ours 商业 CANONICAL_DOMAINS import build_report_language_contract_audit 本仓无模块,本地 fallback blocked
scripts/report_pack_contract.py 1(新文件) theirs 合同壳 + 缺失研究模块 fallback 不拖 canonical_jyotish_profile / dashboard 研究脚本

KP 带入(无隐私):

  • references/oracle/kp_exact_cusp_closure_dashboard_2026_08_22.json
  • references/oracle/kp_exact_cusp_mainline_status_2026_08_22.json
  • references/oracle/kp_12_cusp_numeric_oracle_readiness_2026_07_23.json
  • references/oracle/kp_real_event_replay_gate_2026_07_30.json

产品面数据(ours==base0 hunk,快进 theirs

  • references/interpretation_template_registry.json +145
  • references/ai-reading-workflow-prompt.md +9
  • references/mandatory-verification-gate-protocol.md +39

1993-04-17 / 14:49 / nadi 清单。

高冲突入口

scripts/unified_consultation_orchestrator.py18 hunks

18 hunks 全 ours(商业路由/reader 合同/分盘命名)。再手工:health focus_techniques 对齐上游并保留 non-medical boundaryroute_surface_contract 用本仓 normalize_domainwealth 为运行时名,finance 为别名,引入会把 wealth 改成 finance 的 route_aliases.py);evidence_packet_required_sections health 加 D6/D8/D30/Narayana/功能吉凶/transit/non_medical;专家判断影子层因缺 expert_judgment 返回 blocked;不取 build_full_spectrum_invocation_plantest_unified_consultation_orchestrator.py 全绿。

scripts/jyotish_engine.py25 hunks

hunk 函数 取舍 理由
1 顶层 import 手工 Path / SimpleNamespace / Any + re / contextlib / io
2 import 手工 只留 build_guided_topics;本地 stub build_report_theme_catalog / attach_calculation_profile;不导入缺失的 startrack / calculation_profile_contract
3 _calc_sidereal_planets_for_jd theirs 速度旗标 + 补 calc_flags 计算正确性;ours 同函数无商业改动
4 新 PL9/报告辅助函数(~9107 行) theirs + 消毒 纯新增且 import 可解析或已守护。去掉 1993 候选表加载、Domi 控制样本、14:49、本机路径
5 envelope / startrack 手工 stub _build_response_envelope 原样返回 payload,避免 CLI/API 合同变形
6 _add_chart_args ours DEFAULT_AYANAMSA_NAME;不接 position-mode / chesta-profile CLIshadbala 无该参数)
7 _build_ai_prompt_pack 岁差默认 手工 name=DEFAULT_AYANAMSA_NAMEdisplay=Raman(产品默认,不再写 Lahiri
8 compute_chart_data theirs 速度旗标 + 补 calc_flags 计算正确性;签名保持无 position_mode
9 cmd_chart ours 不包 envelope
10 cmd_dasha 日期轴 ours 商业 MD 用完整年数从出生前回推,与 balance 展示数学等价
11 cmd_dasha AD 字段 theirs 超集:start_datetime + pratyantar_dasha_timeline
12 cmd_dasha result ours 不接缺失的 canonical_jyotish_profile
13 cmd_shadbala ours chesta_profile;不覆盖本地 ranking
14 _resolve_tajika_year_lord theirs 新年主辅助;缺 calc_panchadhikari_year_lord 时 try/except 回退
15 cmd_tajika return ours 不包 envelope
16 natal foundation helpers theirs 内部已 try/exceptfull-reading 暂未接线
17 cmd_full_reading friendship theirs planetary_friendship 模块
18 build_pl9_style_export_packet 后半 + cmd_pl9_export 手工 收到 cmd_pl9_export 为止;不取 visual-ocr / classical / nadi
1920 main 岁差/position-mode ours 商业岁差 API
21 pl9-export argparse 手工 只注册 pl9-export,不注册 visual-ocr
2223 main 岁差应用 ours fail-closed UnsupportedAyanamsaError
24 命令表 手工 pl9-export;不加 classical/nadi/visual
25 pl9-export 输出 手工 json / markdown / pdf / authority(MCP 工具需要);缺模块降级 blocked

cmd_classical_* / cmd_nadi_* 未取。auto-merge 进来的 argparse 与 dispatch 已删。缺失研究模块一律 stub / _try_attr_import,不拖脚本。

消毒:_load_1993_candidate_segment_table 恒返回 None_is_domi_pl9_control_caseFalseDomi 视觉页 PDF/fixture 合同(原按空日期 + 控制样本时刻触发)整段不导入。scripts/tajika.py 的 PyJHora sidecar 只认 JYOTISH_PYJHORA_PYTHON / python3.14 / python3,不带本机用户路径。scripts/narayana_dasha.pyobserved_pl9_1993_case_only 改成 observed_pl9_control_case_only(答案泄漏字面量守卫)。

虚构 Beijing 1990-01-01 12:00full-readingquick 门 test_cli_smoke 全绿)、pl9-export --format json schema=pl9_style_professional_export_v1、树内 status=failed 为 0;岁差日志 [Ayanamsa] raman。缺研究文件的段是 blocked(可接受)。

scripts/jyotish_api_server.py38 hunks

全部 ours。 商业路由、_request_ayanamsa、咨询工作流、校正入口都不让上游改。auto-merge 曾把 nadi leaf assistant 整段插进来(+1500 行,会打穿 growth cap 11363),已整文件回到合并前的商业版本(11120 行)。nadi 路由不取。test_api_server_growth_contract.pytest_commercial_domain_calculation_contract.py 绿。

任务 5 的 /api/professional_report_reference 仍按任务书另开,不在本文件加功能体。

mcp_server.py11 hunks

hunk 取舍 理由
1 ours(空) varga_evidence_matrix / full_spectrum_invocation_plan / domain_profile_builder 本仓没有
2 theirs _single_varga_engine_call / _dasha_at_date 纯辅助
3 手工 只加 engine_observations;不调缺失的 build_domain_profile
4 手工 保留 D10,并入 D4/D11/D16/D24
56 ours(空) calculation archive / varga matrix 模块缺失
7 ours 商业 calculate_transit
8 theirs 给 transit 补 ayanamsa/date
9 theirs _build_execution_receipt
10 theirs route_surface_contract(编排器已有)
11 ours(空) _attach_requested_official_formal_varga_audit 未带入

三个新工具(get_pl9_expert_reader_report / get_pl9_full_report_authority / route_jyotish_question)是非冲突插入,已保留。route_jyotish_question 对缺失 knowledge_registry 返回 blocked。

H03 曾让 _attach_top_reader_contract 直接调用 _build_engine_observations()。该函数依赖本仓没有的 load_external_profilesNameError 会打断整个 strict-evidence-collector,咨询/报告里的 career_strict_evidence / confidence_boundary 随之消失。现已在调用处 try/except,缺模块时写入 status=blockedtests/test_cli_smoke.py 相关 4 条与 thematic 报告 5 条已绿。

校正:active_rectification_* 按硬红线 3 跳过。

被触碰的既有断言(任务 2

文件 原值 现在 原因
tests/test_gulika.py PyJHora smoke 隐式 Lahiri(函数写死 SIDM_LAHIRI 显式 ayanamsa="lahiri" 函数现接收岁差,产品默认 Raman;该 oracle 是 Lahiri
tests/test_report_orchestrator_reader_contract.py source_mode archive git 任务 1 快照已改成 git,这条测试当时没跟上

因缺文件而 blocked(有守护,未拖研究脚本)

  • _event_replay_contract / 1993 候选分段表:不导入
  • _load_rectification_evidence_contract:缺 JSON 时 blocked
  • _profile_aware_benchmark_appendix / ch10 ashtama / chara-narayana 书测 JSON:缺则空或 blocked
  • MCP engine_observationsevidence_maturity 不在本仓 → blocked
  • MCP route_jyotish_questionknowledge_registry 不在本仓 → blocked
  • 专家判断影子层:expert_judgment 不在本仓 → blocked
  • full_report_quality_gate / kp_monthly_report_packet / startrack / calculation archiveblocked
  • report_quality_gate.reason=full_report_quality_gate_absent

基线已红、本轮未新增

  • tests/test_varga_vedastro_mode.pyHEAD 的 calc_varga(..., mode="vedastro") 已与 golden 不一致
  • tests/test_muhurta_factor_probe.py::test_muhurta_factor_probe_keeps_full_scoring_blockedHEAD 已是 factor_only_scoring_observation
  • frontend/tests/class-name-definition-contract.test.tsayanamsa-preference 无 CSS 规则。origin/staging 同文件同红(整备岁差选择器只复用了 sheet-section)。任务 2 未改 frontend/**fail 数不高于基线。

门禁与契约

  • run_quality_gate.py --profile quick Python 段:503 passed, 1 skipped(与任务 1 相同)。随后 npm test2607 pass / 1 fail,即上面的 CSS 基线项;lint 未跑到,单独 npm run lint0 error73 warning,不修)。
  • ./node_modules/.bin/tsc --noEmit0symlink 的主仓 node_modules,不提交)。
  • golden 已重采:14 个 case 全是超集(咨询链每题多 routing.audit_route / document_route / registry_route / route_aliases / runtime_route,以及 runtime_evidence_log.{finance_astrology_support_review,kp_western_support,specialized_indian_closure_review}wealth skip_false 与 timing skip_true 另多 VedAstro gateway 键)。无丢键、无类型变化。career / wealth / health 的 /api/consultation_workflow 全部 HTTP 200。
  • tests/test_api_server_growth_contract.pytests/test_commercial_domain_calculation_contract.py 绿。隐私扫描 public_release_privacy_scan / commercial_privacy_artifact_scanpass, 0 findings
  • next build 本轮未跑(前端字节未改)。staging 部署验收留到推送之后。

未 push。未提升 main。任务 3 / 5 / 6 / 7 按任务书另开 codex/upstream-capabilities-20260903