feat(grilling): omp-aware interview redesign, absorb ask-etiquette law #20

Merged
dank merged 6 commits from feat/grilling-omp-aware into main 2026-10-18 19:39:01 -07:00
Owner

The skill grilled its own redesign: every branch settled through ask rounds with you on 2026-10-18. Facts from a source census of the harness (omp://tools/*, installed prompt/TUI sources).

Design as implemented:

  • Round vehicle: ask default for every 2–5-option decision (recommended: 0 — one Enter is the bare yes); prose reserved for open narrative; classic text round survives as no-ask fallback
  • Atomicity law absorbed from managed skill one-decision-per-ask-question (deleted here, your call), reworded per your clarification: ideas heavily encouraged — each gets its own atomic question; the ban is only on smuggling artefacts into option text
  • Tree: todo phases=branches, blocked-reasons=dependencies (HUD-visible); per-round local://grilling-state.md ledger — the safety net for the fact that Esc on the dialog aborts the run with no final turn
  • Facts: scout=environment (spawned before ask — exclusive concurrency), web_search=world, inline=cheap; 3-scout cap respected
  • End gate: summary + one closing ask; then distilled decisions → omp-docs/log.md via branch → PR

bats 36/36. New behavior lands next session (skill discovery runs at startup).


cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d

The skill grilled its own redesign: every branch settled through ask rounds with you on 2026-10-18. Facts from a source census of the harness (`omp://tools/*`, installed prompt/TUI sources). Design as implemented: - **Round vehicle**: `ask` default for every 2–5-option decision (`recommended: 0` — one Enter is the bare yes); prose reserved for open narrative; classic text round survives as no-`ask` fallback - **Atomicity law absorbed** from managed skill `one-decision-per-ask-question` (deleted here, your call), reworded per your clarification: ideas heavily encouraged — each gets its own atomic question; the ban is only on smuggling artefacts into option text - **Tree**: `todo` phases=branches, blocked-reasons=dependencies (HUD-visible); per-round `local://grilling-state.md` ledger — the safety net for the fact that Esc on the dialog aborts the run with no final turn - **Facts**: scout=environment (spawned *before* ask — exclusive concurrency), `web_search`=world, inline=cheap; 3-scout cap respected - **End gate**: summary + one closing ask; then distilled decisions → `omp-docs/log.md` via branch → PR bats 36/36. New behavior lands next session (skill discovery runs at startup). --- cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d
dank added 1 commit 2026-10-18 18:58:38 -07:00
Rewritten per grilling-on-grilling (2026-10-18, all branches settled via
ask rounds): ask tool is the default round vehicle (one artefact per
question, recommended:0 = bare-yes semantics, hybrid boundary ask-default
/ prose-exception); todo as visible decision tree (phase=branch, blocked
reasons) + durable local://grilling-state.md ledger surviving the
Esc-aborts-the-run path; scout=environment facts (spawn-before-ask,
exclusive concurrency), web_search=world facts, inline=cheap lookups;
completion gate = summary + one closing ask, then distilled decisions
land in omp-docs/log.md via branch -> PR.

Absorbs managed skill one-decision-per-ask-question (Frank's choice;
reworded: ideas heavily encouraged via own atomic question, ban is on
smuggling into option text only). Managed skill deleted here; heartbeat
drops it from the live tree.
@@ -16,2 +14,3 @@
Every frontier decision that fits 2–5 options goes through the `ask` tool - one question per decision, `recommended: 0` (the recommended answer is always option 0; the user's single Enter is the bare "yes" that accepts it). Prose in chat is the exception, reserved for genuinely open narrative ("walk me through the deploy flow") - never as buttons.
➡️ <your recommended answer>
Per-question discipline (absorbed law, was the `one-decision-per-ask-question` managed skill):
Author
Owner

Drop this line; this skill is not a history.

Drop this line; this skill is not a history.
dank marked this conversation as resolved
@@ -4,3 +4,3 @@
---
> **Authored override.** Extracted 2026-10-18 from `mattpocock/skills` (identical to upstream at extraction) into the command-center repo so Frank can customize it. Removed from the `skills` CLI global store (`~/.agents/.skill-lock.json` pruned) so `skills update -g` never resurrects a duplicate. Edits to this file are repo prose: branch → PR → Frank OK.
> **Authored override.** Extracted 2026-10-18 from `mattpocock/skills` (identical to upstream at extraction) into the command-center repo so Frank can customize it. Removed from the `skills` CLI global store (`~/.agents/.skill-lock.json` pruned) so `skills update -g` never resurrects a duplicate. omp-aware redesign same day; absorbed the `one-decision-per-ask-question` managed skill. Edits to this file are repo prose: branch → PR → Frank OK.
Author
Owner

Drop this line. The skill is not a history.

Drop this line. The skill is not a history.
dank marked this conversation as resolved
@@ -31,2 +33,3 @@
## Facts are yours; decisions are the user's
The session is done when the frontier is empty: every branch of the design tree visited, nothing left silently assumed. Do not act on it until the user confirms you have reached a shared understanding.
- Environment facts (filesystem, repo, live config): `task` + `scout`, one batch, one scout per fact-cluster; on this box at most 3 run at once, so cluster rather than spray.
Author
Owner

Drop the bit about "this box".

Drop the bit about "this box".
dank marked this conversation as resolved
@@ -33,0 +39,4 @@
## Completion
Frontier empty and nothing blocked → write the settled-decisions summary from the ledger, then **one closing `ask`**: "Shared understanding reached - proceed?" Nothing executes before that yes. After it: distill the settled decisions into an `omp-docs/log.md` work-log entry through the normal branch → PR path, and refresh the ledger file to final form.
Author
Owner

The skill might not be used in the omp directory. Just say "either the projects knowledge base, or a log markdown file"

The skill might not be used in the omp directory. Just say "either the projects knowledge base, or a log markdown file"
dank marked this conversation as resolved
Author
Owner

All four notes fixed in fe039a0:

  1. ✅ provenance blockquote dropped - skill body is instructions, not history
  2. ✅ (same) absorbed-law parenthetical also stripped: 'Per-question discipline:' stands alone
  3. ✅ 'on this box at most 3' -> 'concurrency is capped, so cluster rather than spray'
  4. ✅ completion target now 'the project's knowledge base, or a log markdown file'

bats 36/36. (Per-comment resolve API 404s on this Gitea build - flagging the conversations resolved here instead.)


cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d

All four notes fixed in fe039a0: 1. ✅ provenance blockquote dropped - skill body is instructions, not history 2. ✅ (same) absorbed-law parenthetical also stripped: 'Per-question discipline:' stands alone 3. ✅ 'on this box at most 3' -> 'concurrency is capped, so cluster rather than spray' 4. ✅ completion target now 'the project's knowledge base, or a log markdown file' bats 36/36. (Per-comment resolve API 404s on this Gitea build - flagging the conversations resolved here instead.) --- cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d
dank added 1 commit 2026-10-18 19:09:06 -07:00
- drop provenance blockquote and the absorbed-law attribution: the skill
  is instructions, not a history
- 'concurrency is capped' replaces the 3-scout figure of one machine
- completion distillate: project's knowledge base or a log markdown file,
  not a command-center-specific path (skill travels outside this repo)
dank added 1 commit 2026-10-18 19:15:16 -07:00
Read all 36 upstream skills, then rewrote to their house style per
writing-for-agents' own levers: leading words as tokens (frontier,
brief, ledger, artefact, scout), vocabulary-first and used exactly,
positive phrasing with prohibitions kept only as hard guardrails,
completion criteria sharpened to checkable+exhaustive ('counted before
sending', 'frontier empty and nothing sits blocked'), zero history,
gotchas the environment cannot confess kept inline. All settled
behaviour from the grilling-on-grilling session survives intact.
Author
Owner

Style pass in 3fa0242: read all 36 upstream skills, then rewrote to the corpus voice using writing-for-agents' own levers. Behaviour unchanged; the mapping:

  • Leading words as tokens: frontier / round / ledger / artefact / brief / scout - each defined once, then used as a noun everywhere. 'brief' and 'frontier' are lifted from the corpus so they share language with wayfinder and loop-me.
  • Positive phrasing: 'a question may not carry two' -> 'one artefact per question, counted before sending'; 'smuggling banned' -> 'attach it to its own question, so it rides there on its merits'. The two hard guardrails that survive as prohibitions (nothing executes before the yes, one Enter accepts option 0) are the ones with no positive form.
  • Sharpened bounds: done is now 'frontier empty and nothing sits blocked' + a brief you can count, not 'shared understanding reached'.
  • No-op/history pruning: absorbed-law attribution gone, the speech-enabled note gone (harness default), 'renders as markdown' gone (the environment confesses it).
  • Gotchas stay inline (they're the cache worth keeping): exclusive dialog -> scouts before ask; Esc kills the run -> ledger.

bats 36/36.


cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d

Style pass in 3fa0242: read all 36 upstream skills, then rewrote to the corpus voice using writing-for-agents' own levers. Behaviour unchanged; the mapping: - **Leading words as tokens**: frontier / round / ledger / artefact / brief / scout - each defined once, then used as a noun everywhere. 'brief' and 'frontier' are lifted from the corpus so they share language with wayfinder and loop-me. - **Positive phrasing**: 'a question may not carry two' -> 'one artefact per question, counted before sending'; 'smuggling banned' -> 'attach it to its own question, so it rides there on its merits'. The two hard guardrails that survive as prohibitions (nothing executes before the yes, one Enter accepts option 0) are the ones with no positive form. - **Sharpened bounds**: done is now 'frontier empty and nothing sits blocked' + a brief you can count, not 'shared understanding reached'. - **No-op/history pruning**: absorbed-law attribution gone, the speech-enabled note gone (harness default), 'renders as markdown' gone (the environment confesses it). - **Gotchas stay inline** (they're the cache worth keeping): exclusive dialog -> scouts before ask; Esc kills the run -> ledger. bats 36/36. --- cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d
@@ -7,2 +6,3 @@
# Grilling
Interview the user relentlessly until you reach a shared understanding. Map this as a **design tree**: every decision branches into the decisions that hang off it.
Interview the user relentlessly until nothing is silently assumed. The subject is a **design tree**: every decision branches into the decisions that hang off it.
Author
Owner

"... until nothing is silently assumed and you reach a shared understanding. Map this as a design tree:..."

"... until nothing is silently assumed and you reach a shared understanding. Map this as a design tree:..."
dank marked this conversation as resolved
@@ -33,0 +36,4 @@
## Facts are yours, decisions are theirs
- Environment facts (filesystem, repo, live config): dispatch a **scout** per fact-cluster, batched into one `task` call, before the round's `ask`. Cluster tightly; spawns are the expensive route.
Author
Owner

"Cluster tightly; doing so keeps each scout more aware of possible adjacencies."

"Cluster tightly; doing so keeps each scout more aware of possible adjacencies."
dank marked this conversation as resolved
@@ -33,0 +41,4 @@
- Cheap lookups: `read`/`grep` inline.
- The main session is where questions happen: every spawn carries the exact facts to return, and comes back into the next round.
## Done
Author
Owner

Definition of Done

Definition of Done
dank marked this conversation as resolved
@@ -33,0 +37,4 @@
## Facts are yours, decisions are theirs
- Environment facts (filesystem, repo, live config): dispatch a **scout** per fact-cluster, batched into one `task` call, before the round's `ask`. Cluster tightly; spawns are the expensive route.
- Outside-world facts: call `web_search` directly.
Author
Owner

call web_search directly, do not delegate to a subagent

call web_search directly, do not delegate to a subagent
dank marked this conversation as resolved
Author
Owner

Round two, all four applied in ca8b462:

  1. ✅ opening now reads '...until nothing is silently assumed and you reach a shared understanding. Map this as a design tree: ...'
  2. ✅ 'Cluster tightly; doing so keeps each scout more aware of possible adjacencies.'
  3. ✅ 'call web_search directly, do not delegate to a subagent.'
  4. ✅ '## Definition of Done'

bats 36/36.


cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d

Round two, all four applied in ca8b462: 1. ✅ opening now reads '...until nothing is silently assumed and you reach a shared understanding. Map this as a **design tree**: ...' 2. ✅ 'Cluster tightly; doing so keeps each scout more aware of possible adjacencies.' 3. ✅ 'call web_search directly, do not delegate to a subagent.' 4. ✅ '## Definition of Done' bats 36/36. --- cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d
dank added 1 commit 2026-10-18 19:24:54 -07:00
- opening restores 'shared understanding' alongside 'nothing is
  silently assumed', and 'Map this as a design tree'
- cluster rationale restated: tight clusters keep each scout aware of
  possible adjacencies
- web_search: explicit 'do not delegate to a subagent'
- 'Done' heading -> 'Definition of Done'
Author
Owner

You're right - the tool auto-labels the recommended option but never pre-selects it; the reply always names what was picked. My line invented a default-accept mechanic. Now, in %s: 'Recommended answer first, marked recommended: 0, which labels it "(Recommended)" for one-glance acceptance. Every reply names what was picked, so the record is unambiguous.' The bare-'yes' sentence survives only in the prose-fallback path, where it is literally true. bats 36/36.


cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99dc379d16

You're right - the tool auto-labels the recommended option but never pre-selects it; the reply always names what was picked. My line invented a default-accept mechanic. Now, in %s: 'Recommended answer first, marked recommended: 0, which labels it "(Recommended)" for one-glance acceptance. Every reply names what was picked, so the record is unambiguous.' The bare-'yes' sentence survives only in the prose-fallback path, where it is literally true. bats 36/36. --- cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99dc379d16
dank added 1 commit 2026-10-18 19:25:46 -07:00
The ask tool's recommended flag only labels option 0; the reply always
names the selected options, so 'the user's single Enter accepts it'
overclaimed a default-accept mechanic that does not exist. Stated
truthfully: the label invites one-glance acceptance, the reply is
self-documenting.
@@ -22,3 +25,2 @@
➡️ <your recommended answer>
```
Dialog mechanics, the gotchas no doc confesses: the dialog is exclusive, so dispatch scouts before the `ask` call in the same message and expect their results between rounds. Esc cancels the whole run with no closing turn; the ledger below is what survives it.
Author
Owner

Too Claudish. Rephrase.

Too Claudish. Rephrase.
Author
Owner

Rephrased in 6134e11: the aside ('the gotchas no doc confesses') and the simile ('so the user watches it fall') are gone; the paragraph now leads with the constraint itself - 'The dialog is exclusive: dispatch scouts before the ask call in the same message, or they wait behind it; their results land between rounds. Esc ends the run outright, with no turn to wrap up, so the ledger is what survives it.' bats 36/36.


cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d

Rephrased in 6134e11: the aside ('the gotchas no doc confesses') and the simile ('so the user watches it fall') are gone; the paragraph now leads with the constraint itself - 'The dialog is exclusive: dispatch scouts before the ask call in the same message, or they wait behind it; their results land between rounds. Esc ends the run outright, with no turn to wrap up, so the ledger is what survives it.' bats 36/36. --- cwd: /home/blank/.omp/wt/feat-grilling · session: wt-20261018-170616-7c8a99d
dank added 1 commit 2026-10-18 19:31:34 -07:00
'Too Claudish': drop the aside ('the gotchas no doc confesses') and the
simile ('watches it fall'); lead with the constraint itself. Facts
unchanged: exclusive dialog, scouts before ask, Esc ends the run, the
ledger survives.
dank merged commit 66e3f220e7 into main 2026-10-18 19:39:01 -07:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dank/command-center#20