Skip to content

Enforce orchestrator-side metadata.variety stamp on Task B dispatches (currently advisory-only) #865

Description

@michael-wojcik

Context

The orchestrator's Teachback-Gated Dispatch (persona §11) requires the lead to stamp metadata.variety — the D11 4-rationale shape (total + novelty_rationale / scope_rationale / uncertainty_rationale / risk_rationale) — on every Task B (work) dispatch. This stamp is currently advisory-only: hooks/task_lifecycle_gate.py emits variety_missing_on_dispatch / variety_band_unresolvable as PostToolUse advisories that fire AFTER the teammate is already dispatched and has begun its teachback. Nothing prevents — or strongly catches at the right boundary — the lead omitting the stamp.

Empirical anchor (session pact-c69b1cf9, 2026-05-28)

During a /PACT:plan-mode consultation, 4 of 4 Task B dispatches went out without a metadata.variety stamp. Consequences observed:

  • 3 of 4 consultants returned variety_acknowledgment.rationale_articulates_this_dispatch = "concern", each noting "no orchestrator per-dimension rationale to judge against."
  • The lifecycle gate emitted variety_missing_on_dispatch — but only after dispatch, as a soft signal.
  • Recovery required an orchestrator-side correction: re-stamp all four Task B tasks, then accept the teachbacks. The omission was caught only reactively, via the teammates' concern flags.

This is a recurring foot-gun: the stamp is a manual step buried in the D11 convention, easy to skip, and the only feedback is late and soft.

Why it matters

The Task B metadata.variety stamp drives three downstream determinations:

  1. Concurrent-auditor trigger (total >= 7 → mandatory auditor on CODE).
  2. reasoning_reconstruction band (_resolve_required_band_via_blocks: total >= 11 → required; 7–10 → recommended; <= 6 → skipped).
  3. Workflow route (route_workflow).

An unstamped Task B makes all three unresolvable_resolve_required_band_via_blocks returns "unresolvable" and fails open. The teammate's reasoning_reconstruction obligation can't be determined at teachback-submit time, so the L1.5 method-level gate degrades silently.

Proposed enforcement (options for the implementer to weigh)

  1. Pre-dispatch boundary enforcement (preferred direction). Add a gate that DENIES (or strongly warns at PreToolUse) when a Task B is wired into a teachback-gated dispatch without a well-formed metadata.variety. Analogous to the teammate-side teachback_gate blocking flip (Phase 2: flip teachback_gate to blocking mode (follow-up to #401) #481).
  2. Strengthen the advisory. Make variety_missing_on_dispatch name the exact missing fields and emit a copy-paste re-stamp recipe, and ensure it surfaces prominently at the dispatch boundary rather than after the teammate has begun.
  3. Persona/skill reinforcement. Add an explicit "stamp metadata.variety on Task B BEFORE spawn" step to the §11 dispatch sequence checklist (currently implied via D11, not a hard ordered step). Composite (doc + write-time advisory) per the LLM-error-mode-defense pin.

Relationship to existing issues

Acceptance criteria (draft)

  • A lead omitting metadata.variety on a teachback-gated Task B is caught at the dispatch boundary (terminal wiring write or spawn), not after the teammate begins.
  • Enforcement does NOT misfire at TaskCreate(B) (FIRST-OBSERVABLE-WRITE invariant preserved).
  • The signal names the missing fields and the fix.
  • Structural test pins the enforcement boundary + the no-misfire-at-TaskCreate invariant.

Surfaced empirically while re-evaluating #864 (cron-machinery removal) under /PACT:plan-mode.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions