Phase 2: Tier-1 Gaps 4+5 — upstream-cut invariants + .pot parity
Part of the wave tracked in #271. Source of truth: #240 §3 Tier 1 (Gaps 4, 5) and the round-2 synthesis.
Objective
Give the re-cut pipeline and the translation template the same seconds-grade pinning the shell boundary already has, with measured wall time.
Scope
- Gap 4: run
upstream-cut.sh to a temp dir and assert the luci-shaped invariants: Makefile include rewritten to ../../luci.mk, no SOURCE_DATE_EPOCH block, no docker-sdk references, README link rewritten to the blob URL, po/templates present, locale dirs dropped, .pot reference paths applications/-prefixed.
- Gap 5: run
i18n-scan.pl on a cut tree and assert msgids match the checked-in .pot exactly (paths normalized).
- Measure wall time on
ubuntu-latest before merge. The OpenWrt-tree scanner availability is unbudgeted — confirm it runs in CI or scope the test to what CI provides.
Non-goals
- No Gap 2/3 work (Phase 1). No cut-script redesign — pin current output shape only.
Acceptance criteria
Depends-on
None. Parallel-safe with Phases 1 and 3.
Effort
M. Gated on openwrt/luci#8992 landing (parked until upstream lands, per plan).
Phase 2: Tier-1 Gaps 4+5 — upstream-cut invariants +
.potparityPart of the wave tracked in #271. Source of truth: #240 §3 Tier 1 (Gaps 4, 5) and the round-2 synthesis.
Objective
Give the re-cut pipeline and the translation template the same seconds-grade pinning the shell boundary already has, with measured wall time.
Scope
upstream-cut.shto a temp dir and assert the luci-shaped invariants: Makefile include rewritten to../../luci.mk, noSOURCE_DATE_EPOCHblock, no docker-sdk references, README link rewritten to the blob URL,po/templatespresent, locale dirs dropped,.potreference pathsapplications/-prefixed.i18n-scan.plon a cut tree and assert msgids match the checked-in.potexactly (paths normalized).ubuntu-latestbefore merge. The OpenWrt-tree scanner availability is unbudgeted — confirm it runs in CI or scope the test to what CI provides.Non-goals
Acceptance criteria
.potmsgid parity passes with paths normalized. A changed UI string without.potupdate fails the test.fwlive-test.shgreen. Shellcheck green.Depends-on
None. Parallel-safe with Phases 1 and 3.
Effort
M. Gated on openwrt/luci#8992 landing (parked until upstream lands, per plan).