Repository navigation
Description
Symptom
create-objectstack@16.1.0 (current npm latest) scaffolds a project from any non-blank published remote template, and its very first npm run build exits 2 with a namespace-prefix validation error. Reproduced on 4 independent templates in the QA run — todo / compliance / content / contracts (2 / 4 / 5 / 3 issues respectively); procurement was blocked(environment) (codeload 503/403 in the sandbox). The blank template is clean end to end. This triggers for any project name whose sanitized namespace differs from the template's own — i.e. every real user, and CI's own canary-app.
Root cause
Located, and already fixed at repo HEAD — the residual action is a release, not a repair.
- Published
16.1.0rewritesnamespace:inobjectstack.config.tsto the sanitized project name but not the object-name literals, because it reads the template's original namespace fromobjectstack.manifest.jsononly. A remote template's manifest is the template-registry document, which has nonamespacekey, so the guard falls through and the literal rewrite is silently skipped (config says namespacetpl_todowhile the object literal still saysname: 'todo_task'). - The fix is present on
origin/main(confirmed at filing time):packages/create-objectstack/src/rewrite-identity.tsmakesobjectstack.config.tsthe authority and self-verifies viafindStaleNamespacePrefixes, wired in atpackages/create-objectstack/src/index.ts:311. The file's own comment names the prior incident fix(devx): init-service 门禁认全部服务访问器,不只getService(#4835) #4902 ("all five published remote templates failed this way, and the nightly registry canary had been red on every one of them for weeks with nobody watching"). Pinpackages/create-objectstack/src/rewrite-identity.test.tsis present (10/10 pass per the run). - Related prior code-bug issue: P0:5 个已发布模板对真实新用户是坏的 —— 脚手架的对象名前缀改写对所有远程模板静默跳过,夜间金丝雀连红 20 次无人察觉 #4926 (closed).
Reproduction
npx -y create-objectstack@latest canary-app -t todo --skip-skills --skip-install
cd canary-app && npm install && npm run build
Expected exit 0. Actual (with published 16.1.0) exit 2:
defineStack namespace-prefix validation failed (2 issues):
Object todo_label is missing the package namespace prefix.
Rename it to canary_app_todo_label (namespace = canary_app)
Residual asks (release-verification, not code repair)
- Confirm the
rewrite-identity.tsfix ships in thecreate-objectstack@17.0.0release — npmlatestis still16.1.0, so every new user picking a non-blank template today gets a project that fails first build. - Confirm the nightly registry canary goes green once 17.0.0 is published.
Source
Extracted from the QA run #7628 (framework 92f26f7, console 6314e87).
Activity
os-zhuang commentedon Aug 11, 2026
Triage — dual-state resolution:
finding+domain:cli+target:v17kept;pm:queueremoved (queue+finding is an illegal pair; one had to go).origin/main@5823d59:packages/create-objectstack/src/rewrite-identity.tsexists with the fix(devx): init-service 门禁认全部服务访问器,不只getService(#4835) #4902 account in its header, wired atindex.ts:311(findStaleNamespacePrefixes). The residual asks (confirm the fix ships increate-objectstack@17.0.0, confirm the nightly canary goes green) are release-time verification steps — nothing is dispatchable to a dev today. Restart condition: the 17.0.0 cut; this card is the checklist entry for it.target:v17ratified by this seat (the label arrived at filing from the QA seat;target:*production for this backlog is the triage seat's — ratifying rather than stripping because the judgment is correct on the merits): publishedlatestfailing first build on every non-blank template is blocking class ④ (first-hour, follow-the-docs failure). The release-verification framing is exactly what the board's cut-time sweep consumes.packages/create-objectstack⇒domain:cliper the domain table.getService(#4835) #4902 are the closed code-bug predecessors; no open card tracks the release-verification residual besides this one.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 11, 2026
Findings triage round, 2026-08-11 (PM session, maintainer-directed: 「跑一轮集中定级」).
Graded: promote. First-
npm run buildfailure on every non-blank template for every real project name is release-blocker class ④ (first-hour experience), and the card already carriestarget:v17. Scope note: the fix is at HEAD, so the queued work is the canary verification once 17.0.0 ships — the release act itself is the maintainer's, per the human-release guardrail; this card must not be read as authorizing any publish.finding→pm:queue(domain:cli, stays on the v17 board).Generated by Claude Code
os-zhuang commentedon Aug 13, 2026
Hold — 2026-08-13 (
domain:cliexecution seat, round 1).pm:queue→pm:on-hold. Stays on the v17 board (target:v17unchanged).Reason: there is nothing dispatchable here today, and the blocking step is not an agent's to take. The grading round that promoted this to
pm:queuesaid so itself — "the queued work is the canary verification once 17.0.0 ships" — but the release has not happened, so the card has been sitting in the dispatchable pool advertising work no dev can do. Measured just now:latestis still the broken16.1.0; 17.0.0 exists only asrc.6. Cutting the release is the maintainer's act under the human-release guardrail — no AI seat may runchangeset publish, push a version tag, trigger a release workflow, or merge the Version Packages PR. So the honest state is "decision made, answer is not now", which ispm:on-hold, notpm:queue.Restart condition (mechanically checkable):
create-objectstackdist-taglatestreaches17.0.0or higher.On restart the queued work is exactly the two residual asks in the body, both verification and neither repair:
rewrite-identity.tsfix ships in the published17.0.0— scaffold a non-blank remote template and check the firstnpm run buildexits 0.Nothing about this hold questions the grading: first-
npm run buildfailure on every non-blank template for every real project name is release-blocker class ④, thetarget:v17label is correct, and this card remains the board's checklist entry for the cut. It is held because it is waiting on a human, not because it is unimportant — and it should be picked up at the cut without needing to be re-found.Generated by Claude Code
claude commentedon Aug 14, 2026
Restart condition met —
pm:on-hold→pm:queue.v17.0.0 is GA. Measured on the npm registry at 2026-08-14 08:3xZ:
This card's hold recorded a mechanically checkable restart condition: "
create-objectstackdist-taglatestreaches 17.0.0 or higher". It has:The queued work is exactly the two verification asks the hold named, neither of them repair:
rewrite-identity.tsfix ships in the published 17.0.0 — scaffold a non-blank remote template, check the firstnpm run buildexits 0.target:v17left unchanged — the board entry is the grading seat's to retire once the canary reads green.Authorization: maintainer directive (this session) —「先做 23 张 blocked 解锁 10 张 on-hold 按各自自述处理」· PM session
01JaVVMrSxt7Tgi1uwEuDtH7Generated by Claude Code
test(publish-smoke): build the scaffolded project, and assert its ide…