Skip to content

A workspace scenario cannot be run end to end, and its tasks are always code-shaped #6044

Description

@chernistry

A workspace scenario cannot be run end to end from the CLI, and a task a scenario emits cannot complete on anything but a code diff. Both are needed before the quickstart in #4910 can be written against real command output.

All three findings below were checked against main at 453f8de.

1. No command runs a scenario

bernstein scenario and bernstein scenarios are not registered in src/bernstein/cli/main.py. The only scenario surface is bernstein routine scenarios (deprecated) and bernstein schedule routine scenarios, and both only list the library.

2. Emitted tasks are code-shaped whatever the deliverable is

ScenarioTaskTemplate in src/bernstein/core/planning/scenario_library.py carries exactly title, description, role, priority, scope, complexity. There is no artifact_spec anywhere in that module, and src/bernstein/core/tasks/models.py defaults artifact_spec to code_diff. A scenario describing a research deliverable therefore emits tasks that can only complete by producing a diff.

3. The library has two roots and they do not meet

  • src/bernstein/core/planning/roadmap_runtime.py reads workdir/.bernstein/scenarios — the operator's own scenarios.
  • src/bernstein/cli/commands/routine_cmd.py defaults to the packaged templates/scenarios — the shipped library.

So a scenario the operator writes is invisible to the listing command, and a shipped scenario is invisible to the runtime. Neither directory is wrong; nothing layers them.

The decision, so it is not re-argued: the workspace directory is the operator's surface and wins on name collision; the packaged directory is the read-only default set. Every reader resolves the workspace root first and falls back to the packaged one, and the listing says which root each entry came from.

Not a regression of #5573

#5573 asked for reachability or a visible outcome, and said plainly that silence was the only unacceptable result. The diagnostic that landed for it reports reason="no-roadmap" with scenarios_found and emitted, which is what it asked for. It is correctly closed. This issue is the next step, not a reopen.

What must become true

  • A single documented command takes a scenario from the workspace library and runs it to completion, from a workspace a fresh bernstein init produces.
  • artifact_spec is carried from the scenario definition through emission onto the task, so a non-code deliverable completes on its own artifact rather than a diff. An unspecified one keeps today's default.
  • Both the runtime and the listing resolve the workspace root first and the packaged root second, and the listing names the root per entry.

Checked by

A test that runs a scenario whose task declares a non-code artifact_spec in a workspace built by bernstein init, and asserts the emitted task carries that spec rather than code_diff. Plus one test that a workspace entry shadows a packaged entry of the same name, and one that the listing reports the root.

Blocks

#4910, which cannot be written honestly until a reader following it from a fresh install gets real output.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions