Skip to content

test(update-notes): stop pinning the pre-transfer repository address - #4809

Merged
huangruiteng merged 1 commit into
loopx-project:mainfrom
hahahahahayesyeseys:codex/update-notes-canonical-address
Sep 20, 2026
Merged

huangruiteng merged 1 commit into
loopx-project:mainfrom
hahahahahayesyeseys:codex/update-notes-canonical-address

Conversation

@hahahahahayesyeseys

Copy link
Copy Markdown
Contributor

Goal And Delivered Outcome

Scope And Continuation

  • Completed scope: the deterministic update-note quality check passes again, and the expectation no longer duplicates the address it is checking. The canonical address is asserted once, directly against PULL_URL; every other expectation composes from that same value, so a future move cannot break this check by leaving a stale copy inside an expected string.
  • Completed scope and remaining work: [Task]: Live surfaces and one relevance oracle still carry the pre-transfer repository address #4753 also lists documentation-body citations of the previous address across prose surfaces. Those are deliberately not touched here: a prose link records the address an event happened under, which is a different rule from a live default, and sweeping them is mechanical work belonging to that issue rather than to this green-up.
  • Slice boundary / successor: complete within this scope for the failing check. Not claimed: the repository hygiene lane that is also red on main for a missing release-timeline version entry; that is release record content and belongs to its owner, so it is disclosed rather than edited here.

Validation

  • Tested revision: db08c4e
  • Run state: finished
  • Input classes: synthetic
Check kind Result Public-safe evidence / limitation
regression_parity passed failing-before reproduced locally by restoring only this file to its base revision: the smoke aborts in validate_compact_ranking with the canonical-address bullet as the actual value, matching the two CI lanes above; the same command reports ok at head
real_entrypoint passed the check itself is the shipped lane entry point, run from a source checkout with the test extra installed
integration passed the sibling archive-generation smoke still passes, so the note renderer's other public expectation set is unaffected
static passed ruff check clean on the changed file; loopx check --scan-path on it reports a clean public/private boundary
unit not_run no Python test module covers this script; it is a standalone smoke invoked by CI, and this change does not alter its interface
  • Coverage and gaps: the changed path is one expectation inside one smoke, and the rows above show it failing before and passing after through the same entry point the lanes use. Not covered: the unrelated repository hygiene failure that remains on main, disclosed above and intentionally out of scope.

Frontend / Visual Evidence

  • UI impact: none
  • Before: N/A
  • After: N/A
  • States and viewports shown: N/A
  • Source data: none
  • Attention review: no user-visible surface changes; the generated note text itself is unchanged apart from the address it already emits.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring (no functional changes)
  • Documentation update
  • Test update

LoopX Area

  • Control plane (goals, todos, quota, scheduler, registry, runtime)
  • Benchmark boundary (adapters, runners, verifiers, scoring, evidence)
  • Capability or extension (providers, adapters, skills)
  • Public docs or presentation surface (README, protocols, dashboard)
  • Build, packaging, installer, or CI
  • Host or runtime integration

Technical Direction

Shared-authority RFC fixture impact

  • Production-scale fixture schema: N/A.
  • Semantic dimensions changed, or reviewed no-impact rationale: N/A - documentation/release tooling only.
  • Provider conformance arms run: none.
  • Read-only legacy/file/PostgreSQL three-arm rehearsal (required for promotion, runtime-routing, or compatibility-projection changes): not applicable.

Boundary Checklist

  • Neither the diff nor this PR body/comments/attachments disclose private state, credentials, raw traces or verifier output, internal links, or local machine paths (including .loopx/, .codex/goals/, and live ACTIVE_GOAL_STATE.md).
  • I did not duplicate maintainer-owned benchmark work unless a maintainer split out a public issue for it.
  • I kept the change scoped to the linked issue/task.
  • I completed the visual evidence section for UI changes, or marked UI impact none.
  • Every commit includes a DCO Signed-off-by trailer (git commit -s).

The generator publishes pull links built from PULL_URL, which now names the
canonical repository. The quality smoke still compared against a hand-copied
pre-transfer address, so the deterministic draft check failed on every branch
that ran it: both full-public-smokes and the biweekly update-note draft job are
red on main with this same assertion.

Assert the canonical address once, against PULL_URL itself, and build the
expected bullet from that same value. The check keeps its teeth against a wrong
address while a future repository move can no longer break it by copying the
old one into an expectation.

Refs loopx-project#4753

Signed-off-by: hahahahahayesyeseys <95999512+hahahahahayesyeseys@users.noreply.github.com>
@hahahahahayesyeseys

Copy link
Copy Markdown
Contributor Author

Full tests/ sweep at this head: 91 failed, 10628 passed, 37 skipped in 41m35s. The 91 are the same pre-existing set reported on the sibling PR (88 tests/architecture/test_semantic_* from an unavailable local TypeScript parser, 2 date-expired Lark fixtures already reported in #4797, 1 maintainability ratchet finding present on main); none involve the update-note path. The green lanes this PR targets are the standalone smoke and the two CI jobs named in the body, both verified failing-before and passing-after.

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

精确 head review:#4809 test(update-notes): stop pinning the pre-transfer repository address

  • 审阅对象:db08c4ee15199cd9e78b890d49688731740ca857(base main 9da19e673,作者 @hahahahahayesyseseys)
  • 变更面:examples/update-notes-generator-quality-smoke.py(+5/-1)
  • 结论:无阻断发现,APPROVE

动机

更新说明生成器用自身的 PULL_URL 拼 pull 链接,指向迁移后的规范仓库 loopx-project/loopx;而质量 smoke 却把手抄的迁移前地址 huangruiteng/loopx 当作期望值。结果是生成器因为「做对了」而挂掉自己的检查。这不是假想问题:我在未改动的 main 9da19e673 上跑了同一脚本,直接在 validate_compact_ranking 断言失败,实际值正是规范地址;作者引用的公共 CI 运行(full-public-smokes (4, 440),run 35494985839)日志里也是同一条断言、同一串实际值。公共 lane 红着,后续每个 PR 都要替它做一次诊断。

改动思路

把「规范地址」收敛成 smoke 里唯一的一处字面量,并让它对着生成器自己的常量断言;其余期望一律从 module.PULL_URL 组合,这样将来再搬家只会挂一条断言,而不是让两份地址各自漂移。同时把首条 bullet 的期望从 startswith(手抄地址) 换成用同一个常量拼出的完整行(顺带把本来没断言的标题也覆盖上)。

具体改动

  • 新增 assert module.PULL_URL == "https://github.com/loopx-project/loopx/pull",并加注释说明这是全文件唯一允许出现地址字面量的地方。
  • 把 assert bullets[0].startswith("- [#38](https://github.com/huangruiteng/loopx/pull/38)") 换成 assert bullets[0] == f"- [#38]({module.PULL_URL}/38) feat: add issue-fix lifecycle"。
  • 改完后 rg huangruiteng 在该 smoke 与生成器里都不再有匹配。

对主干的风险

  1. 只动 smoke 期望:生成器输出、发布格式、发布流程、任何默认行为都没碰;仓库边界干净。
  2. 严格度提高:首条 bullet 由 startswith 变成全等,意味着未来若有意扩展 bullet 格式,需要同步更新该期望。考虑这是「格式 smoke」,这正是它该有的强度,且失败时会打印全部 bullet 便于定位。
  3. 验证:base 上复现红、head 上 update notes generator quality smoke: ok(exit 0),并核对了远端失败 job 的日志确实同源。我没有跑整个 public smoke 舰队,也没跑双周 note 工作流,这是本次评审的诚实边界。

我的整体评价

正向、比例合适、且是修一条正在红的公共 lane:它移除的正是导致漂移的重复字面量,而不是把生成器改回错误地址或删掉断言。一个小提醒(非阻断):这是该期望的首次修复,不是重复犯错的补丁;未来搬仓库时请只改这一处常量。

English verdict: APPROVE - the smoke expectation no longer pins the pre-transfer address; reproduced red on unmodified main 9da19e6 (AssertionError with the canonical bullet as actual), green at the exact head db08c4e, corroborated by the failing CI job log, with the remaining risk being the intentional tightening from startswith to a composed equality.

@huangruiteng
huangruiteng merged commit 6e69f14 into loopx-project:main Sep 20, 2026
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.

2 participants