Skip to content

docs(cr-checklist): sediment Lesson #15 — file-move 3-step verify#1922

Merged
earayu merged 1 commit into
mainfrom
chenyexuan/task-33-sediment-file-move-lesson
Apr 29, 2026
Merged

docs(cr-checklist): sediment Lesson #15 — file-move 3-step verify#1922
earayu merged 1 commit into
mainfrom
chenyexuan/task-33-sediment-file-move-lesson

Conversation

@earayu
Copy link
Copy Markdown
Collaborator

@earayu earayu commented Apr 29, 2026

Summary

Add Lesson #15 to `docs/zh-CN/architecture/task-17-cr-review-checklist.md` § 四 — fold task #33 P1 PR #1917 own-up. Pure file-move PRs need three independent verifications, not one.

This is the file-move 3-step verify lesson sediment from PR #1917 own-up trail (冬柏 msg=cd428dc1 + chenyexuan msg=18acb5e7).

What

Mandatory 三步 verify for file-move / git mv PRs:

  1. Step A — `pytest --collect-only` baseline diff = 0 (import-time)
  2. Step B — `pytest / -q` actually run (fixture / `Path(file)` resolution layer)
  3. Step C — `grep -n "Path(file)" ` for hardcoded relative paths

CR application rule: reviewer LGTM on file-move PR must cite Step B + Step C evidence, not just Step A.

Why

PR #1917 (task #33 P1 unit_test subdir-ize) baseline used only Step A. Collect-only matched 1434 → 1434 both pre/post move, three reviewers (chenyexuan / 冬柏 / huangzhangshu) all LGTM'd. CI then surfaced 15 test failures because `Path(file).resolve().parents[2]` in three of the moved files now pointed at `tests/` instead of the repo root.

Fix-forward bumped `parents[2]` → `parents[3]`; CI rerun went 10/10 green.

冬柏 + chenyexuan jointly established collect-only cannot detect this class of break.

Test plan

  • docs-only PR; ruff check on changed file
  • No code change, no behavior change
  • Cross-link to msg=cd428dc1 + msg=18acb5e7 own-ups

CR

🤖 Generated with Claude Code

Fold task #33 P1 PR #1917 own-up into Lesson #15. Pure file-move PRs
need three independent verifications, not one:

1. ``pytest --collect-only`` diff = 0 (import-time)
2. ``pytest <subdir>/`` actually run (fixture / __file__ resolution)
3. ``grep -n "Path(__file__)" <moved>`` for hardcoded relative paths

PR #1917 baseline used only step 1 — collect-only matched 1434 → 1434
both pre- and post-move and three reviewers (chenyexuan, 冬柏,
huangzhangshu) all LGTM'd. CI then surfaced 15 failures because
``Path(__file__).resolve().parents[2]`` in three of the moved files
now pointed at ``tests/`` instead of the repo root. Fix-forward
bumped ``parents[2]`` → ``parents[3]``; CI rerun went 10/10 green.

冬柏 own-up msg=cd428dc1 + chenyexuan own-up msg=18acb5e7 jointly
established that collect-only cannot detect this class of break, so
the lesson becomes a hard rule for future file-move CR.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@earayu
Copy link
Copy Markdown
Collaborator Author

earayu commented Apr 29, 2026

@chenyexuan PR #1922 testing lane verify ✅ 同意通过。

我核了 diff:只改 docs/zh-CN/architecture/task-17-cr-review-checklist.md,Lesson #15 覆盖了 PR #1917 的真实 failure mode:additions:0 deletions:0 + collect-only 1434=1434 只能证明 import/collect 层没坏,不能证明 test body 里的 Path(__file__).resolve().parents[N] 在 move 后仍指向 repo root。

三步 mandatory verify 写得准:

  • Step A:collect-only baseline diff = 0
  • Step B:pytest <subdir>/ -q 真跑 fixture / test body / Path(__file__) 解析
  • Step C:grep moved files 的 Path(__file__),逐条调整 parents[N] 或改 project-root anchor

CR 应用规则也对:file-move PR 的 LGTM 必须 cite Step B + Step C 实证,不能只 cite Step A。0 NIT,CI lint 绿后可 squash merge。

@earayu earayu merged commit 0058507 into main Apr 29, 2026
10 checks passed
@earayu earayu deleted the chenyexuan/task-33-sediment-file-move-lesson branch April 29, 2026 21:43
earayu added a commit that referenced this pull request Apr 29, 2026
….2/v7.3/v8 + #13 v3 (#1924)

* docs(cr-checklist): fold task #30 A2/B1 sediment — Lesson #12 v6.4/v7.2/v7.3/v8 + #13 v3 application

task #30 Phase A 全闭环后 follow-up 子 PR 2 (per PM msg=5debfb74 leverage B2
等 OpenRouter key wait window). fold 4 lesson sediment 进 § 四 (task #30
A2 + B1 + cross-PR cross-reviewer 独立 forensics 实证累计):

- Lesson #12 v6.4 (function-self-verify ≠ aggregation-chain-verify) —
  helper 函数自身正确不等于 caller 在 aggregation/批处理/loop scope
  应用正确. first-application: task #36 PR #1899 fix-forward² L148
  endpoint scope. second-application: task #30 B1 PR #1923 commit
  `163b77c1` source_chunk_ids window-scoped fix.

- Lesson #12 v7 second-application demos 累计 3 类 sub-form:
  - v7.1 composite key invariant (already sedimented PR #1916)
  - v7.2 Pydantic schema layer mandatory exposure — task #30 A2 PR
    #1921 KnowledgeGraphConfig 漏 2 字段 first-application
  - v7.3 cross-PR default value alignment — task #30 B1 PR #1923
    response_format default 漂移 first-application

- Lesson #12 v8 (fake guardrail anti-pattern) — guardrail 函数 signature
  必须接 actual runtime data 不能仅 synthetic placeholder. task #30 A2
  PR #1921 first iteration `_estimate_window_prompt_tokens` 硬编码
  base_chunk_size=400 first-application + fix-forward `6d2db64`.

- Lesson #13 v3 application demo (未实证 invariant 不预先锁) — type
  narrowing / value space cap pre-locking 反过来应用 v3. task #30 A2
  PR #1921 NIT defer Literal vs Optional[str] first-application.

§ 六 sediment 引用追加 PR #1921 / PR #1923 / PR #1922 三 commit cross-link.
§ 八 修订记录追加本次 commit timeline + 4 lesson sediment 类别.

来源: PM msg=5debfb74 (B2 等 key wait window 推进) + ziang msg=f7dc20ef
+ Weston msg=9f356fe9 + ziang msg=c170ad75 + 黄章书 msg=cda4dc75 多
reviewer cross-check 独立 surface forensics trail.

* fix(cr-checklist): NIT '3 周内' → '数小时内' (PR #1916 + A2/B1 同日 timeline)
earayu added a commit that referenced this pull request Apr 30, 2026
…audit (#1928)

* docs(task-61): DB adapter compat spec v1 — vector + graph cross-impl audit

Architect spec v1 起草 per earayu2 directive (msg=8b989470 / msg=2bad8e75
/ msg=f26b703e) + PM 不穷 task #72 dispatch.

Streaming evidence integration from 8 lanes:
- huangheng msg=ed2f2973: 3 vector P0 candidates (cross-tenant /
  filter silent / collection init)
- Bryce msg=8e895471 task #69: 11 vector findings (4 P0 + 3 P1 + 4 P2,
  including upgraded score normalization P0-V3/V4)
- 冬柏 msg=3e93bb64 task #67: 3 missing Protocol method tests
  (bulk_upsert_entity_with_lineage_parts P0 + remove_relation_lineage
  P1 + list_entities P1)
- chenyexuan msg=f298011e + PR #1926: workflow paths filter dead
  reference P0-W1 (in flight)
- cuiwenbo msg=dfebf706 task #70: FE/UX 3 candidates (score, viz error
  vs empty, confidence_score)
- Planetegg msg=db7fb085 + msg=41906f4 + msg=41665d7e task #65: alias
  resolution gather P2-S1 + Singapore QDRANT_MULTITENANT=True (no
  hot-fix needed) + env shape verify
- ziang task #64 graph store audit (in_progress, will fold-in)
- dongdong task #71 deploy/typed schema (in_progress, will fold-in)

Spec structure:
- §1 inventory by lane with file:line evidence
- §2 缺口 by severity (P0 CRITICAL hot-fix candidate / P0 必修 / P1
  允许差异 declare / P2 性能优化 / YAGNI)
- §3 三层 design direction per Weston msg=85e527e3 framework
- §4 sub-task dispatch (Phase A 8 lane parallel + Phase B per-P0
  three-PR-pattern + Phase C P2 + Phase D PR #1926 unblock)
- §5 acceptance: P0/P1 standards + boundary test gate + e2e + sample
  limitation免责
- §6 CR mandatory checklist citing Lesson #11-#16 family from
  PR #1916/#1924/#1922 sediment + new Lesson #16 candidate (workflow
  paths dead reference)

Sample limitation: spec evidence from streaming surface, not
huangzhangshu collected gap list — fix-forward amend after
huangzhangshu lane completes + Bryce/ziang audit slice输出.

Not blocking: PR #1925 task #30 B3 default=2, PR #1926 compat-test
paths filter, Singapore 2pm release (env fix separate lane), task #31
graph node merge / task #33 P3 workflow gate.

* docs(task-61): fix-forward Weston BLOCKER + 5 streaming integration

Weston msg=13dd5e91 BLOCKER (score normalization severity drift):
保持 P0-V3+V4 P0 across §1.1 / §2.2 / §5.3 — score 方向是 caller
语义硬契约,不能在 PGVector/Qdrant 间显示反向。§2.2 加 P0-V3+V4
显式行 + §5.3 加 test_score_normalization_in_vector.py boundary
test (跨 metric × 跨 adapter 全 6 cell parametrize).

Streaming integrations (5 lane):

1. Bryce msg=23a2f514 P0-V1 first-principles 重新定性 — Qdrant
   legacy mode tenant isolation 是 collection name level 不是 query
   filter level (verify qdrant_connector.py:442-446),下沉 P1-V4
   defense-in-depth (legacy mode deprecation follow-up 候选).

2. Bryce msg=8e895471 11 vector findings — 4 P0 (cross-tenant
   下沉 / filter silent / score V3+V4) + 3 P1 (collection init /
   batch atomicity / filter Or 语义) + 4 P2.

3. dongdong msg=4201465a + PR #1929 + cuiwenbo msg=bcec38ad —
   P0-D1 Helm worker Neo4j env missing (Singapore graph viz
   root-cause); P1-D1 e2e shape matrix gap; P1-D2 Nebula no Helm
   first-class; P1-D3 typed schema 缺 vector backend exposure.

4. chenyexuan NIT — Lesson #16 candidate cite added §6.

5. Planetegg msg=eb9de4b0 NIT — P2-S1 量化 max_nodes*2 default
   1000→2000 / hybrid default 1000 max 5000; msg ID corrections
   §7 (msg=41665d7e Singapore multitenant verify, msg=eb9de4b0
   P2-S1 quantification, dropped invalid msg=ec358a3e).

冬柏 PR #1927 commit b2234ae fold-in §5.3 (38 cases incl
zero-side-effect + replay idempotency post-NIT).

P0 list final: P0-V2 (filter silent, Bryce P0-A) + P0-V3+V4
(score normalization, Bryce P0-B) + P0-G1 (bulk_upsert, 冬柏
PR #1927) + P0-W1 (compat-test paths, chenyexuan PR #1926) +
P0-D1 (Helm Neo4j env, dongdong PR #1929).

* docs(task-61): § 3.1.1 historical residue cleanup per Weston msg=fdf04a69 NIT — strike old P0 hot-fix path (P0-V1 已下沉 P1-V4 per Bryce first-principles verify)

* docs(task-61): final consistency cleanup per Weston msg=e414d3cf — line 14 count 4+3+4 to 3 P0 + 4 P1 + 4 P2; § 5.1 P0-V1 line removed; § 5.2 P1-V4 defense-in-depth boundary test added
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant