Split out of #10317 while implementing the documentation half of that card. Filed unassigned — not routed, not graded.
Measured
Real scaffold (create-objectstack my-app -t blank), published 17.1.0 packages, running the project's own objectstack validate. The only difference between the two runs is one *.app.ts plus its two config lines:
Zero apps — the state the blank template actually ships:
✓ Validation passed (84ms)
My App v0.1.0
Data: 1 Objects 2 Fields
One app:
✓ Validation passed (155ms)
My App v0.1.0
Data: 1 Objects 2 Fields
UI: 1 Apps
Both exit 0.
The UI: row is not printed as 0 — it is absent. So the summary cannot distinguish "this project has no navigable UI" from "this summary does not report on UI at all", and the one reading it is a newcomer whose Console just came up empty.
Why the obvious fix is probably the wrong one
#10317's "adjacent gap" note frames this as a missing warning — that os validate should say zero apps means zero navigable UI. The measurement in #10317 argues against that shape:
- The
blank template ships no app deliberately — template-registry.ts promises "one object, REST API, ready to extend", all three os init templates write src/objects/ only (including the one described as "Full application with objects"), and no *.app.ts has ever existed under packages/create-objectstack/src/templates/**. - So zero apps is the intended state of every freshly scaffolded project. A warning there would fire on every clean scaffold on its first run — training the reader to ignore validator output at exactly the moment the product most wants it trusted.
The cheaper reading of the same evidence: the defect is not a missing warning but a missing zero. Printing UI: 0 Apps makes the count visible and self-explanatory without asserting anything is wrong, and it makes the transition to 1 Apps legible after the user adds one.
That is a suggestion for triage, not a routing decision — the "should it warn / should it print zero / should it stay silent" call is a product judgment.
Landing hint
packages/cli — the validate command's summary printer. Deliberately not ridden into the #10317 PR, which is fenced to the blank template's tree and the README describing it, and is documentation-only.
Interaction worth noting
#10353 sweeps first-touch newcomer text across the root README and packages/create-objectstack/**. This one is CLI output in a different package, so it is not a member of that sweep, but it belongs to the same newcomer-first-run story from #10264.
Split out of #10317 while implementing the documentation half of that card. Filed unassigned — not routed, not graded.
Measured
Real scaffold (
create-objectstack my-app -t blank), published 17.1.0 packages, running the project's ownobjectstack validate. The only difference between the two runs is one*.app.tsplus its two config lines:Zero apps — the state the
blanktemplate actually ships:One app:
Both exit
0.The
UI:row is not printed as0— it is absent. So the summary cannot distinguish "this project has no navigable UI" from "this summary does not report on UI at all", and the one reading it is a newcomer whose Console just came up empty.Why the obvious fix is probably the wrong one
#10317's "adjacent gap" note frames this as a missing warning — that
os validateshould say zero apps means zero navigable UI. The measurement in #10317 argues against that shape:blanktemplate ships no app deliberately —template-registry.tspromises "one object, REST API, ready to extend", all threeos inittemplates writesrc/objects/only (including the one described as "Full application with objects"), and no*.app.tshas ever existed underpackages/create-objectstack/src/templates/**.The cheaper reading of the same evidence: the defect is not a missing warning but a missing zero. Printing
UI: 0 Appsmakes the count visible and self-explanatory without asserting anything is wrong, and it makes the transition to1 Appslegible after the user adds one.That is a suggestion for triage, not a routing decision — the "should it warn / should it print zero / should it stay silent" call is a product judgment.
Landing hint
packages/cli— thevalidatecommand's summary printer. Deliberately not ridden into the #10317 PR, which is fenced to the blank template's tree and the README describing it, and is documentation-only.Interaction worth noting
#10353 sweeps first-touch newcomer text across the root README and
packages/create-objectstack/**. This one is CLI output in a different package, so it is not a member of that sweep, but it belongs to the same newcomer-first-run story from #10264.