Skip to content

[finding] os validate drops the whole UI: row at zero apps, so a project with no navigable UI reads identically to one that was never asked #10504

Description

@os-elon

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 deliberatelytemplate-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.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions