Authored design — 2026-09-15. Section 3. This cascade elaborates the existing checklist item. It is not a dispatch, implementation receipt or completion verdict. Work outside WM-01–14 still requires Joe’s explicit greenlight; having a cascade is necessary but not permission.
Section 3/4 index · Exact TODO · Cascade JSON
An authorized click can start correctly yet lack the predecessor, observation and lifecycle joins required for the entrypoint node. Existing dispatch evidence should be reused within its scope.
R10 entrypoint. PARTIAL: bounded R2/predecessor joins and full required lifecycle evidence. Current commissioned HTTP→run-scheduled-dispatch evidence, reservation recorded and duplicate refusal are credited as reported in the newer DAG status; dispatch itself is not listed as missing. A functioning click is not full R10 assurance. No cron restoration is required by Item 2 amended. Built evidence: On-demand gated entrypoint; later commissioned dispatch evidence reported
This is the checklist’s dated evidence account, not a new deployment census. Existing source/test evidence keeps its bounded credit. The acceptance obligation above governs this design.
Pattern: agent/intent-handshake-is-binding
Retain the actual commission, target, constraints, caller and occurrence identity. Produce an entry context that rejects changed intent and duplicate creation. An on-demand run is permitted by the ruling; cron restoration is not a prerequisite.
Pattern: wm-qualifying-run/one-episode-all-required-connections
Resolve the required predecessor and R2 inputs at their correct cutoff. Produce a source-bound entry envelope or typed missing-input refusal. Do not treat unreadable history as an authorized cold start.
Pattern: wm-qualifying-run/one-episode-all-required-connections
Follow this occurrence through commissioned, dispatched, parked, returned, checked, recorded and surfaced evidence where the governing lifecycle requires them. Identify node-specific transitions; generic Agency activity cannot fill an absent node-linked cell.
Pattern: agent/intent-handshake-is-binding
Join the authorized selection, construction and actuation result to the entry record. Preserve failures and reservations without treating entrypoint success as whole-run assurance. Duplicate retries must identify the original occurrence.
Each node’s stated artifact is the input or constraint for the related node below. These are design dependencies, not a claim that a runtime scheduler automatically fires patterns. Existing WM producers are reused through the linked contracts; no second implementation is implied.
| From | To | Relation | Reason |
|---|---|---|---|
| R10-1 | R10-2 | requires-result | The commission fixes which predecessor and observation belong to entry. |
| R10-2 | R10-3 | requires-result | Those inputs determine the lifecycle occurrence that must be retained. |
| R10-3 | R10-4 | requires-result | Lifecycle evidence must connect to the actual continuation, not a different successful click. |
| R10-4 | R10-1 | revision-feedback | A failed distinguishing control or consumer mismatch reopens the original scope/meaning; retain the failed claim rather than weakening it. Relevant controls: Reject changed commission, wrong predecessor, reused occurrence and a lifecycle assembled across attempts. Reuse authentic dispatch receipts; do not rerun a click merely to replace a source lookup. |
Retain the actual subject, source/model revision, task/occurrence, cutoff, producer and consumer for each interface. A missing field is a named gap; a default that changes the meaning is not an adapter. Reuse existing records where they satisfy these obligations. If a new component is indispensable, identify its exact TODO/cascade clause before seeking a separately bounded implementation instruction.
A commissioned dispatch records a reservation and refuses a duplicate. That proves those boundaries. If the observation came from another attempt, the entrypoint still lacks the required input join even when the HTTP response was successful.
This is a distinguishing design example, not a claimed production experiment.
Distinguishing controls: Reject changed commission, wrong predecessor, reused occurrence and a lifecycle assembled across attempts. Reuse authentic dispatch receipts; do not rerun a click merely to replace a source lookup.
Closure rule: every part of the quoted obligation must be supported by the indicated artifacts and actual connections. A useful rejection proves the rejecting boundary only. One accepted subclause does not tick the whole item. A bellback must supply the exact reviewed subject, executed checks, independent verdict and remaining clauses.
The recorded join-6 verification does not establish a green RUN4 fixture or ordinary-click completion. Current activation and any new click remain separately authorized.
Dependency links describe required interfaces; they do not authorize work on those items. No implementation outside the existing TODO list is approved. Publication does not select a numerical law, settle an unresolved operator ruling or authorize a run.
All seeded patterns are applied above. The JSON pins their source bytes and the governing checklist/rulings. Historical formulas, thresholds and examples in a pattern remain scoped examples unless the governing contract adopts them. This draft adds no pattern-library entries and claims no independent semantic ratification.
Reference text; historical examples and prescriptions retain the scope stated above.
@flexiarg agent/intent-handshake-is-binding
@title Intent Handshake Is Binding
@sigils [👥/令]
@audience agent architects, workflow designers, futon developers
@tone foundational
@style pattern
@why no problem-corpus source matched (@holds-at absent; holds-token and id-text searches over every node in [problems] found no match). Negative claim per the committed check futon2 holes labs library-loop runs l6_no_source_check.py, receipt runs/L10-no-source-check.edn. Rationale not invented (L10 rationale-backfill, zai-1, 2026-09-05)
@how own mechanism: A run should not start until the agent has restated and bound the intent and scope. (source: this pattern's ! conclusion line; L10 rationale-backfill, zai-1, 2026-09-05)
! conclusion: A run should not start until the agent has restated and bound the intent and scope.
+ context: An agent is about to begin a session or new turn.
+ IF:
The system needs a reliable record of what the agent believes it is doing.
+ HOWEVER:
If intent only lives in the prompt or UI, it drifts: agents reinterpret mid-run without explicit renegotiation.
+ THEN:
Require a handshake that echoes intent, scope, constraints, and success criteria, and record an acknowledgment. Changes to intent or scope require an explicit renegotiation event before further actions.
+ BECAUSE:
Binding intent makes the run auditable and prevents silent goal drift.
+ evidence: Fulab HUD prompts require an intent restatement (`src/futon3/fulab/hud.clj`), and `fuclaude --intent` passes intent into the HUD.
+ NEXT-STEPS:
- Add an intent-handshake event to the session start protocol.
- Block tool actions until the handshake is logged.
- Record intent changes as first-class events with rationale.
- Emit an explicit intent-handshake event in lab sessions and enforce it before tool calls.