Skip to content

os generate scaffolds fail the project's own gates: flow targets a nonexistent object, view is refused by os lint, action/app cannot target an existing object #21325

Description

@objectstack-fleet

QA-source: #21318 · path step ① (write metadata)

On a fresh npm create objectstack@17.6.0 tasks-app (namespace tasks_app) with objects tasks_app_project and tasks_app_task generated by os g object project / os g object task:

  1. npx os g flow task_done writes src/flows/task_done.flow.ts whose start node has config.objectName: 'tasks_app_task_done' — derived from the flow name, an object that does not exist — and prints ✓ Reaches the stack. os validate then exits 0 with only a warning: flow "task_done_flow" › start node: targets object 'tasks_app_task_done', which this stack does not define — if the name is wrong, the flow will never fire (and the runtime stays silent about it). The generator itself wrote the silent failure.
  2. npx os g view task writes a views container with top-level name, label, object and a list without label. os validate passes but flags "view tasks_app_task: sets name … no runtime effect (liveness: dead)" and the same for label; os lint exits 1: ✗ View "tasks_app_task" is missing a label required/label at views[0].list.label. The generated file's own comment says the server refuses a container whose name disagrees, while validate calls the key dead — the two cannot both be right.
  3. npx os g action complete_task and npx os g app tasks derive the target object from the NAME (tasks_app_complete_task, tasks_app_tasks) and are refused by the cross-reference check (Action 'complete_task' references object 'tasks_app_complete_task' which is not defined in objects / references flow 'complete_task_flow'), exit 1, nothing written. os g --help offers no flag to name an existing object, so the generator can only scaffold an action or app for an object that shares its name.

Expected

Every os generate output passes os validate AND os lint on the project it was generated into, and targets real metadata (or asks / takes --object). A generator that writes a never-firing flow or a lint-refused view teaches the AI author the wrong shape on its first step.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:clipriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions