git:20260731.bc6c651 to git:20260731.64c39ea

54 added, 27 removed. Audit A to A.

---
name: wakeflow-target
description: Use when a tmux-resident target Claude Code window session receives a Wakeflow Delivery Loop direct-thread delivery in its tmux pane, executes only its assigned dispatch packet, reports a TargetResultEnvelope, sends the controller-return with the wakeflow-claude-host helper, or enforces target-window boundaries without claim / finish / chain-next state.
---
# Wakeflow Target
Use this skill only inside a target-window automation wakeup. Workspace and
target-repository `CLAUDE.md` files remain hard boundaries. The dispatch prompt
states the current objective and reading order; the referenced JSON task
package owns complete task context; anchored requirement documents own original
goal/background; this skill and any listed craft/Test skills own execution
procedure.
## Prompt Shape
Target wakeups should be task-first and compact:
```text
Continue current window task: <currentWindow> / <taskId>.
Current objective (the task package is authoritative):
- <one-line objective>
- Completion focus (full criteria are in the task package):
+ Completion focus (up to two; full criteria are in the task package):
- <bounded observable result>
+ - <optional second bounded observable result>
- Priority context: <the highest-priority confirmed fact>
- Critical boundary [forbidden|outOfScope|inScope]: <the highest-priority boundary>
+ Key acceptance anchors (full probes and expectations are in the task package):
+ - <anchor id>: <claim>
+
Read before execution, in order:
- Task package (complete task context): <absolute package path>
- Requirement background entry (full anchors are in the task package) [goal]: <document#section>
- - Workspace instructions: <workspace>/CLAUDE.md
+ - Workspace instructions (only when distinct from repository instructions): <workspace>/CLAUDE.md
- Repository instructions: <repository>/CLAUDE.md
- Current state root: <absolute state-root path>
Required execution Skills (execution-process authority):
- skills/wakeflow-target/SKILL.md
- <other package-selected skill, when required>
Identity (full boundaries are in the task package):
- Current responsibility window: <window>
- Only working repository: <absolute repository path>
+ Before coding: map every acceptanceAnchor in the task package to a RED test or
+ probe; return needs-review instead of inventing a requirement when an anchor
+ cannot be tested.
+
Return requirement:
- - Return a TargetResultEnvelope with verifiable evidence.
+ - Execute only this task package. Return a TargetResultEnvelope with verifiable
+ evidence through this Skill. A target result is not controller acceptance.
+ - Test execution contract: <package path>#testExecution
Dispatch record (routing and trace only):
- taskId: <taskId>
- taskPackageId: <package>
- stateRoot: <path>
- stateRevision: <revision>
- dispatchGroup: <group>
```
Do not expect the prompt to repeat command manuals or the whole requirement.
- It repeats at most the highest-priority `contextSummary` entry and one critical
- boundary for immediate orientation; it does not repeat the remaining context,
- complete boundary lists, commit policy, or every completion/requirement entry.
+ It repeats at most two completion expectations, the highest-priority
+ `contextSummary` entry, one critical boundary, and four acceptance-anchor
+ ids/claims for immediate orientation. Workspace instructions, anchors, the RED
+ instruction, and the Test contract are conditional.
+ It does not repeat remaining context, complete boundary lists, commit policy,
+ full probes/expectations, or every completion/requirement entry.
Read the package first, then its ordered requirement anchors, then execute
through the listed Skills. Fields such as `controllerWindow`, `returnPolicy`,
`taskPackageId`, and `stateRevision` remain authoritative in machine state.
The prompt's task/package/revision fields are navigation and freshness anchors,
not a second copy of task content. `stateRevision` identifies the dispatch
snapshot in the packet/envelope; the later delivery-sent event may legitimately
advance the live state root.
## Target Flow
1. Consume the delivery envelope.
- Direct-thread delivery proves only that a prompt was delivered. It arrives
as a user message pasted into this window's tmux pane by the Wakeflow host
- helper (`wakeflow-claude-host.mjs send`); arrival is transport evidence,
+ helper (`wakeflow-claude-host.mjs deliver --delivery-file`); arrival is transport evidence,
not authority.
- Confirm the responsibility window, `taskId`, `stateRoot`, and optional
`dispatchGroup`.
- Read the workspace and target repository `CLAUDE.md` files listed in the
prompt and declare the current window and repository responsibility.
2. Read the assigned task.
- Read the task package at the exact prompt path, then its ordered
- `requirementRefs`, then every `requiredSkills` entry. Do not substitute a
- progress summary for the package or treat background documents as an
- execution procedure.
+ `requirementRefs`, then every Skill listed by the delivery prompt /
+ `taskBriefing`. Those Skills are derived from work type, evidence/anchor
+ needs, and the Test contract; they are not ordinary task-package prose.
+ Do not substitute a progress summary for the package or treat background
+ documents as an execution procedure.
- Execute only the task assigned to this target window.
- Do not claim another target, Test role, or controller role.
- If the prompt lists the craft skill, or the task package carries an
`evidenceContract` or `acceptanceAnchors`, ALSO load
`skills/wakeflow-target-craft/SKILL.md` before writing code. When anchors
exist, map every anchor id to a RED test/probe before implementation; an
untestable anchor is `needs-review`, never permission to invent a
replacement requirement.
- When the task package carries `testExecution`, apply the Test alignment
gate below before writing a plan or running a command.
3. Work inside repository boundaries.
- Change only files permitted by the task and repository rules.
- Keep commits, tests, and evidence scoped to the owning repository.
- If another repository must change first, stop and backfill a blocker.
- Claude Code subagents (the Task/Agent tool) may gather evidence or advice,
but boundary decisions and the recorded result stay with this target
window.
4. Produce evidence.
- Include changed files, commands, test output, commit hash when available,
logs, runtime JSON, report paths, screenshots, or other reviewable
evidence.
- Prose alone is not enough for completion.
5. Record a `TargetResultEnvelope`.
- Use the Wakeflow MCP `wakeflow_record_target_result` tool for the result
envelope. This is one narrow file/state action: it records target evidence
only, and it does not review, accept, dispatch, send, or return. Pass the
`dispatchGroup` from your delivery prompt: a late result from a superseded
round then leaves the in-flight round's window lock alone.
- Read the tool response's `deliveryContext` / `controllerReturn` fields.
`returnRoute` and `returnPolicy` live in the local delivery envelope, not
the controller state root. Do not decide "no callback" by searching only
`wakeflow-state.json`.
- Report `completed`, `blocked`, or `needs-review` honestly.
- Include a non-empty summary, changed repositories, commits, and
`commitDisposition` (`committed`, `left-uncommitted`, or `no-changes`) so
the controller can compare the result with the package's
`commitExpectation`.
- For a completed implementation package, add exactly one
`craftEvidence` entry per authored anchor:
`{kind:"acceptance-anchor", anchorId, red, green, ref}`.
- Include evidence references and residual risks.
6. Return to the controller only when allowed.
- Target-to-target next-hop delivery is forbidden by default.
- If `wakeflow_record_target_result` reports `controllerReturn.required=true`
or the local delivery envelope has `returnRoute=controller`, use
`wakeflow_review_pack` scoped to YOUR OWN dispatch group as a sanctioned
read-only self-check (reviewing other groups or deciding accept/rework stays
with the controller). Always pass `stateRoot`; do not reuse a group-only
pack or cache an older `controllerReturnDelivery.status` / `returnFile`.
Follow the pack's current-version `callbackPlan`, not the dispatch group's
historical send status:
- If a unit has `buildAllowed=true` or `controllerReturnNextStep` is
`build-controller-return`, use `wakeflow_prepare_delivery` with
`direction=controller-return` to build one envelope for the stored
`controllerWindow`.
- If a unit has `hostSendRequired=true` or `controllerReturnNextStep` is
`send-controller-return-and-record-delivery`, send the already-built
envelope and record it; do not prepare a duplicate.
- Stop only when the current unit has `controllerAlreadyReached=true` or
`controllerReturnNextStep` is `controller-return-already-sent`.
A delivery for an older `resultVersionKey` never satisfies the current
result revision. These transport signals are INDEPENDENT of evidence. Do
NOT withhold the callback because `missingEvidenceRefs` is non-empty or
`nextAction` says `fix-missing-evidence-refs`: evidence sufficiency is the
controller's POST-wake verdict, and the controller cannot act on it until
you wake it.
- If the target task references a delivery id but the local delivery envelope
cannot be found, stop and report that missing local envelope; do not assume
no callback is needed.
- - Complete the real host send/readback with the same tmux helper used for
- controller-to-target delivery: write the controller-return envelope prompt
- to a temp file, then run
- `node <plugin>/scripts/lib/wakeflow-claude-host.mjs send --root <workspace>
- --window <controllerWindow> --prompt-file <file>`. The controller is also
- a tmux-resident window; the helper enforces the controller window's shared
- delivery lock and returns pane readback evidence (`readback.paneTail`).
- Then use `wakeflow_record_delivery` to record the delivery run.
+ - Complete the real host send/readback with the envelope-aware helper:
+ `node <plugin>/scripts/lib/wakeflow-claude-host.mjs deliver --root
+ <workspace> --delivery-file <controller-return-envelope>`. It resolves the
+ stamped `controllerWindow`, pastes the exact prompt, and returns pane
+ readback evidence. Controller returns do not acquire a target work lease.
+ Then use `wakeflow_record_delivery` to record the delivery run. The helper
+ returns independent `transportStatus` and `readback.status` facts. An
+ accepted send with pending/unavailable visibility is still sent: record it,
+ and leave any further read-only inspection to Agent judgment. Controller-
+ return has no target work lease. Never resend while observing an accepted
+ send.
- Do not stop after writing the target result when controller return is
allowed. The closeout steps stay separate: record target result, review
readiness, prepare controller-return envelope, send with the host helper,
then record delivery evidence. Do not replace them with one combined
target-window tool or duplicate the target result into another local result
store.
## Test Alignment Gate
**TEST MUST NOT INVENT A TEST GOAL, TEST GATE, OR TEST METHOD OUTSIDE THE CONFIRMED REQUIREMENT GOAL AND APPROVED TEST PLAN.** Violating the letter of this rule is violating its spirit.
For a package with `testExecution`:
1. Do not reopen, replace, or assume ownership of total control's prior
validation. Explore only the assigned environment boundary for hidden
defects.
2. Treat `requirementGoal` and `approvedPlan` as authority, not suggestions.
3. Before execution, map every operational plan step to one `approvedPlan`
item and state how it serves `requirementGoal`.
4. Use only skills listed in `allowedSkills`. In particular,
`progressive-chain-validation` is forbidden unless that exact id is listed;
a long workflow does not authorize PCV by itself.
5. Follow `mode` and `setupPolicy`. Do not rebuild, restart, or replace the
environment unless the package says `mode=restart` and records a
controller-approved `restartReason`.
6. If a useful step, skill, goal, gate, or restart is unmapped or unauthorized,
stop before executing it and return `blocked`/`needs-review` as a change
request to the controller. Do not run it first and justify it afterward.
The completed result must map every approved item exactly once with
`{kind:"test-step", planIndex, step, ref}` in `craftEvidence`; `step` must be
the approvedPlan text at that index. A missing, duplicate, or unknown index is
not a completed Test result. The controller, not Test, decides whether a
proposed change becomes a revised Test card/package.
- Recovery is not a delivery mode: if this window's tmux pane dies mid-task, the
- same session is finished or recovered by interactive relaunch (`launch-window --resume`; headless `claude -p` bills the separate Agent SDK credit from 2026-06-15) with `claude --resume
- <registered session id>` (the session id is stable and stays registered), and
- the resident window is relaunched with `launch-window --replace
- --session-id <same id>`.
+ Creation and recovery are separate operations. A dead baseline window resumes the same
+ registered session with `launch-window --root <workspace> --window <window>
+ --cwd <recorded actual cwd> --resume --session-id <registered id> --replace
+ [--server <configured server>]`. A Pod uses the read-only
+ `wakeflow_pod_open mode=resume` plan. The helper may verify or resume only the
+ exact registered session at its immutable bound cwd; it never repeats the
+ creation HEAD gate, passes `--worktree`, creates/discovers a replacement,
+ rebinds core state, or falls back to mainline. Missing or ambiguous identity is
+ a blocker.
## Stop Conditions
Stop and return a blocker when:
- The window identity or target repository cannot be confirmed.
- The state root, task id, or dispatch group is missing or inconsistent.
- Required evidence documents are missing.
- The task asks this target to change another repository without authorization.
- The task is only a prompt, not a state-root or task-package assignment.
- Validation fails and the next repair would change scope or repository
responsibility.
- A Test delivery appears in a non-Test window without explicit authorization.
- This window is an isolation worktree window (`<repo>__<id>`) and the task
would touch anything outside its own worktree/branch — the repository's main
- checkout, another demand's worktree, or a merge back to the main line
- (merging is a controller step, never this window's).
+ checkout, another demand's worktree, or a merge back to the main line.
+ Merge-back is a separate human-reviewed repository integration step; neither
+ the target nor the controller performs it automatically.
- ## Result Envelope Minimum
+ ## Result Envelope Contract
- Every target result should include:
+ For the MCP call, pass the task as `taskId`; the persisted artifact records it
+ as `targetTaskId`. Every `completed` result must include the following complete
+ contract. `blocked` or `needs-review` may carry partial execution evidence, but
+ must still identify the task/group/state and provide a concrete blocker
+ summary:
- `targetWindow`
- `targetTaskId`
- `dispatchGroup`
- `stateRoot`
- status and summary
- changed repositories, commits, and explicit commit disposition
- evidence references
- verification commands and outcomes
- residual risks
- whether controller action is required
- for completed implementation work, exactly one
`{kind:"acceptance-anchor", anchorId, red, green, ref}` per authored anchor
- for completed Test work, exactly one
`{kind:"test-step", planIndex, step, ref}` per approved plan item
Complete mapping means only that the result can enter controller review. It is
never automatic acceptance.
Do not write real thread ids (the registered Claude Code session ids) into
tracked documents, prompts, or backfill text.