Skip to content

fix: the command name is not part of the goal, and a report must name the ref it used - #36

Merged
linhdmn merged 1 commit into
mainfrom
dsh/goal-prefix
Oct 4, 2026
Merged

linhdmn merged 1 commit into
mainfrom
dsh/goal-prefix

Conversation

@linhdmn

@linhdmn linhdmn commented Oct 4, 2026

Copy link
Copy Markdown
Member

Follows #35, which added /product.

/product had unit tests and had never been driven. This is what running it found.

The command name is not part of the goal

$ /product a slugify(text) function that lowercases text and joins its words with hyphens…
$   →  feat: /product a slugify(text) function that lowercases text and joins its wo…

The composer submits a command's return value as the turn with the command name still attached. Everything downstream names work after the goal — branch, commit subject, PR title — so the slash command went into a commit message.

Both launchers are peeled now, in order: the app name (headless Say OK.) and then the command name. A bare /product with nothing after it has no goal, and falls through to the deployment's goal rather than naming the run after the command.

A report that named the wrong branch

The branch is re-derived at ship time from the session log — that fix is in #33. But the diagnostic printed sandbox.branch, which is the value captured back at containment time:

dsh-feature-loop: ship — branch=fl/create-tmp-fl-headless-proof-txt-contain-run   ← reported
$ git branch --contains HEAD
* fl/a-slugify-text-function-that-lowercases-run                                    ← where it actually landed

One value now feeds both the work and the report. A report naming the wrong ref is worse than no report: it reads as a fact, and this one was confidently wrong for three rounds of diagnosis in the round before it was written.

Proven end to end

phase research  → prd        docs/0-research.md written and checked
phase prd       → implement  docs/PRD.md written and checked
phase implement → test       working tree shows changed files
phase test      → ship       npm test exits 0
ship — branch=fl/a-slugify-text-function-that-lowercases-run
       the branch is pushed; gh pr create ran and was refused — origin is a local bare repo

682 unit tests pass (679 at #35).

… the ref it used

Driving `/product` end to end for the first time — a live run walked
research → prd → implement → test → ship and produced:

  feat: /product a slugify(text) function that lowercases text and joins its wo…

The goal a user typed is not "slash product a slugify". The composer submits a
command's return value as the turn with the command name still attached, and
everything downstream names work after the goal — branch, commit subject, PR
title. Both launchers are now peeled, in order: the app name (`headless …`) and
then the command name.

A bare `/product` with nothing after it has no goal. That falls through to the
deployment's goal rather than naming the run after the command, which is what
would otherwise put `/product` in a commit subject and a branch name.

And the ship line was reporting the wrong branch. The branch is re-derived at
ship time from the session log, but the diagnostic printed `sandbox.branch`,
which is the value captured back at containment time — so it announced
`fl/create-tmp-fl-headless-proof-txt-contain-run` while the work landed on
`fl/a-slugify-text-function-that-lowercases-run`. One value is now used for both
the work and the report. A report that names the wrong ref is worse than no
report: it reads as a fact.

682 unit tests pass.
@linhdmn
linhdmn merged commit 1fccd84 into main Oct 4, 2026
3 checks passed
@linhdmn
linhdmn deleted the dsh/goal-prefix branch October 4, 2026 22:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant