You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make captain-facing Lavish decision boards correct by construction in the shared lavish-decision-boards skill and bundled generic template, while teaching how to build and read a board rather than mandating when Lavish must be used. Preserve all three safety items: choices stay local and the queue stays empty until one explicit Send answers click; that click validates every decision form, fails loudly on missing or duplicate keys, creates one complete explicit-submit batch envelope with the full expected-key manifest and nonempty answers, locks against duplicate clicks, queues exactly once, and immediately sends; Firstmate acts only after the tool-authoritative connection signal confirms genuine connection and only on an unambiguous explicit batch whose manifest and nonempty structured answers match exactly, rejecting every partial, empty, duplicate, extra, unmarked, ambiguous, lifecycle, disconnect, flicker, re-poll, or audit return; and expected multi-minute connection lag must be waited through without acting, re-serving, reopening, abandoning, or thrashing. Also require every decision board to present the actionable plan rather than bare status: include every in-flight item, each real remaining path to done with gate owner or condition and concrete downstream consequence, capacity-aware lane/harness/model distribution based on current capacity and quota without hardcoded values, explicit pacing and concurrency limits that protect fleet health, and a clear split between work proceeding autonomously under standing rules and items genuinely requiring captain action. Keep SKILL.md under 100 lines, retain the validated layout-safe asset and Chrome/exact-board audit workflow, preserve simple yes/no chat routing and bearings, and keep the PR scoped to the skill, its bundled asset, and the existing AGENTS.md section 13 trigger.
What Changed
Add an internal skill for building actionable, layout-audited Lavish decision boards and safely accepting captain responses only after a genuine connection and complete explicit batch.
Bundle a layout-safe HTML template that keeps choices local, validates every decision key and answer, submits one manifested batch, and prevents duplicate sends.
Register the skill’s trigger in AGENTS.md for captain-facing decision and structured-feedback boards.
Risk Assessment
✅ Low: Captain, the one-line fix clears the stale alert immediately before the validated, locked batch queue write while preserving the existing submission, manifest, connection, layout, and scope invariants.
Testing
The supplied full baseline had already passed; focused browser validation rendered the shipped template through the real Lavish Editor, cleared its layout gate, exercised required-answer and configuration failures, proved choices remain local until explicit send, and verified one complete manifest-matched batch queues and sends exactly once under rapid duplicate clicks. No issues were found.
⚠️.agents/skills/lavish-decision-boards/assets/lavish-board-template.html:158 - Incomplete answers only call reportValidity() and then return. For an allowed <select> without required, or a control whose name differs from data-lavish-question, native validity can pass while FormData.get(key) is empty, so Send silently does nothing. Show an explicit error and validate control-name/key correspondence before returning.
🔧 Fix: Captain: validate Lavish decision controls before submission
1 warning still open:
⚠️.agents/skills/lavish-decision-boards/assets/lavish-board-template.html:188 - After an incomplete attempt sets the global Answer required alert, a later valid submission queues and sends successfully but never clears that alert. The board can therefore show a red failure beside Sent explicitly, potentially prompting an unnecessary reload or resubmission. Clear the stale alert when the form becomes valid or immediately before the successful queue write.
🔧 Fix: Captain: clear stale Lavish submission alerts
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
command -v tmux >/dev/null || { echo "tmux is required for e2e tests" >&2; exit 1; }; tmux -V; rc=0; for t in tests/*.test.sh; do echo "== $t =="; bash "$t" || rc=1; done; uv run --directory tools/agent-fleet --locked pytest || rc=1; uv run --directory tools/agent-fleet --locked python -m compileall -q src || rc=1; exit "$rc"
Provided baseline had already passed: command -v tmux >/dev/null || { echo "tmux is required for e2e tests" >&2; exit 1; }; tmux -V; rc=0; for t in tests/*.test.sh; do echo "== $t =="; bash "$t" || rc=1; done; uv run --directory tools/agent-fleet --locked pytest || rc=1; uv run --directory tools/agent-fleet --locked python -m compileall -q src || rc=1; exit "$rc".
Verified scope and skill size with git diff --name-only bf7c5ad167514cba879cb095c091fe1627549ccc..5a0fc280fca34cbee7c1a1f019faf849e16b1997 and wc -l .agents/skills/lavish-decision-boards/SKILL.md.
Served the shipped asset with LAVISH_AXI_NO_OPEN=1 ~/.local/bin/lavish-axi .agents/skills/lavish-decision-boards/assets/lavish-board-template.html --no-open and opened its exact session URL in a dedicated Chrome window.
Ran ~/.local/bin/lavish-axi poll .../lavish-board-template.html and bounded CHROME_DEVTOOLS_AXI_SESSION=lavish-board-w7 ~/.local/bin/chrome-devtools-axi snapshot checks until the layout curtain cleared without a layout-issue indicator.
Used Chrome clicks for empty submission, local option selection, and explicit submission; the empty form failed visibly, selection made no queue/send calls, and the real poll returned one complete explicit-send-batch.
Instrumented the direct artifact with chrome-devtools-axi eval to prove a rapid b.click(); b.click() produces exactly one queue/send pair, disables the button, and sets the in-flight lock.
Instrumented a two-form board to verify the full two-key manifest and exactly two matching nonempty answers were included in the single batch.
Instrumented missing-key and duplicate-key variants to verify loud configuration errors, a disabled send button, and zero queue/send calls.
Captured the rendered window with screencapture -x -l 115537 .../lavish-board-window.png, ended the Lavish session, stopped the Chrome DevTools session, removed duplicate captures, and confirmed git status --short was clean.
I reviewed the skill and template against all three board-safety hard rejects and the actionability hard reject. The template keeps selection changes local, validates the complete form/key set, creates one manifest-matched explicit-send-batch, acquires its one-shot lock before the sole queue write, and immediately sends from that explicit handler (assets/lavish-board-template.html:121-197). The skill requires a genuine tool-authoritative connection, waits through expected multi-minute lag without session thrash, and treats poll returns as non-actionable unless exactly one complete explicit batch passes manifest/answer validation (SKILL.md:46-68). It also requires every in-flight item, full paths/gates/consequences, capacity-aware lane/harness/model distribution, pacing limits, and a clear autonomous-versus-decision split (SKILL.md:32-38). The trigger governs how to build a Lavish decision surface without mandating that every decision use one, and the asset contains no fleet, project, or machine specifics.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Make captain-facing Lavish decision boards correct by construction in the shared lavish-decision-boards skill and bundled generic template, while teaching how to build and read a board rather than mandating when Lavish must be used. Preserve all three safety items: choices stay local and the queue stays empty until one explicit Send answers click; that click validates every decision form, fails loudly on missing or duplicate keys, creates one complete explicit-submit batch envelope with the full expected-key manifest and nonempty answers, locks against duplicate clicks, queues exactly once, and immediately sends; Firstmate acts only after the tool-authoritative connection signal confirms genuine connection and only on an unambiguous explicit batch whose manifest and nonempty structured answers match exactly, rejecting every partial, empty, duplicate, extra, unmarked, ambiguous, lifecycle, disconnect, flicker, re-poll, or audit return; and expected multi-minute connection lag must be waited through without acting, re-serving, reopening, abandoning, or thrashing. Also require every decision board to present the actionable plan rather than bare status: include every in-flight item, each real remaining path to done with gate owner or condition and concrete downstream consequence, capacity-aware lane/harness/model distribution based on current capacity and quota without hardcoded values, explicit pacing and concurrency limits that protect fleet health, and a clear split between work proceeding autonomously under standing rules and items genuinely requiring captain action. Keep SKILL.md under 100 lines, retain the validated layout-safe asset and Chrome/exact-board audit workflow, preserve simple yes/no chat routing and bearings, and keep the PR scoped to the skill, its bundled asset, and the existing AGENTS.md section 13 trigger.
What Changed
AGENTS.mdfor captain-facing decision and structured-feedback boards.Risk Assessment
✅ Low: Captain, the one-line fix clears the stale alert immediately before the validated, locked batch queue write while preserving the existing submission, manifest, connection, layout, and scope invariants.
Testing
The supplied full baseline had already passed; focused browser validation rendered the shipped template through the real Lavish Editor, cleared its layout gate, exercised required-answer and configuration failures, proved choices remain local until explicit send, and verified one complete manifest-matched batch queues and sends exactly once under rapid duplicate clicks. No issues were found.
/var/folders/y_/bfdbj_vx20l9b9tw7crgkzwm0000gn/T/no-mistakes-evidence/01KY4AEYJJZ23XR99JGCMHJNRN/lavish-board-window.png)Evidence: Tool-authoritative explicit submission
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed (2) ✅
.agents/skills/lavish-decision-boards/assets/lavish-board-template.html:158- Incomplete answers only callreportValidity()and then return. For an allowed<select>withoutrequired, or a control whosenamediffers fromdata-lavish-question, native validity can pass whileFormData.get(key)is empty, so Send silently does nothing. Show an explicit error and validate control-name/key correspondence before returning.🔧 Fix: Captain: validate Lavish decision controls before submission
1 warning still open:
.agents/skills/lavish-decision-boards/assets/lavish-board-template.html:188- After an incomplete attempt sets the globalAnswer requiredalert, a later valid submission queues and sends successfully but never clears that alert. The board can therefore show a red failure besideSent explicitly, potentially prompting an unnecessary reload or resubmission. Clear the stale alert when the form becomes valid or immediately before the successful queue write.🔧 Fix: Captain: clear stale Lavish submission alerts
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
command -v tmux >/dev/null || { echo "tmux is required for e2e tests" >&2; exit 1; }; tmux -V; rc=0; for t in tests/*.test.sh; do echo "== $t =="; bash "$t" || rc=1; done; uv run --directory tools/agent-fleet --locked pytest || rc=1; uv run --directory tools/agent-fleet --locked python -m compileall -q src || rc=1; exit "$rc"Provided baseline had already passed:command -v tmux >/dev/null || { echo "tmux is required for e2e tests" >&2; exit 1; }; tmux -V; rc=0; for t in tests/*.test.sh; do echo "== $t =="; bash "$t" || rc=1; done; uv run --directory tools/agent-fleet --locked pytest || rc=1; uv run --directory tools/agent-fleet --locked python -m compileall -q src || rc=1; exit "$rc".Verified scope and skill size withgit diff --name-only bf7c5ad167514cba879cb095c091fe1627549ccc..5a0fc280fca34cbee7c1a1f019faf849e16b1997andwc -l .agents/skills/lavish-decision-boards/SKILL.md.Served the shipped asset withLAVISH_AXI_NO_OPEN=1 ~/.local/bin/lavish-axi .agents/skills/lavish-decision-boards/assets/lavish-board-template.html --no-openand opened its exact session URL in a dedicated Chrome window.Ran~/.local/bin/lavish-axi poll .../lavish-board-template.htmland boundedCHROME_DEVTOOLS_AXI_SESSION=lavish-board-w7 ~/.local/bin/chrome-devtools-axi snapshotchecks until the layout curtain cleared without a layout-issue indicator.Used Chrome clicks for empty submission, local option selection, and explicit submission; the empty form failed visibly, selection made no queue/send calls, and the real poll returned one completeexplicit-send-batch.Instrumented the direct artifact withchrome-devtools-axi evalto prove a rapidb.click(); b.click()produces exactly one queue/send pair, disables the button, and sets the in-flight lock.Instrumented a two-form board to verify the full two-key manifest and exactly two matching nonempty answers were included in the single batch.Instrumented missing-key and duplicate-key variants to verify loud configuration errors, a disabled send button, and zero queue/send calls.Captured the rendered window withscreencapture -x -l 115537 .../lavish-board-window.png, ended the Lavish session, stopped the Chrome DevTools session, removed duplicate captures, and confirmedgit status --shortwas clean.✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.