Skip to content

feat: fleet default signal and notification driven collection (0.0.31) - #30

Merged
okisdev merged 6 commits into
mainfrom
feat/fleet-initiative
Jul 20, 2026
Merged

feat: fleet default signal and notification driven collection (0.0.31)#30
okisdev merged 6 commits into
mainfrom
feat/fleet-initiative

Conversation

@okisdev

@okisdev okisdev commented Jul 20, 2026

Copy link
Copy Markdown
Owner

summary

  • the fleet default now has a per turn signal: a new fleet-posture.mjs UserPromptSubmit hook injects one advisory line naming the three package threshold, /fusion:ultra, and the fleet-decline: <reason> protocol (disable with FUSION_FLEET_MODE=off or a fleet-mode state file), and the compact recovery echo restates the fleet default instead of a fleet less posture model
  • worker records reach terminal from delivered task notifications alone: handleStop scans the parent transcript's notification delta (persisted per session offset, bounded per pass, fail open) before cancellation classification, which removes the deliberately failing TaskOutput probe from the normal collection path and stops TaskStop demands for tasks that already finished
  • the in flight stop advisory dedupes by the sorted task id signature (one armed notice per dispatch wave instead of one per turn end, each of which cost an extra model request), and the inline guard appends a one line advisory after a second consecutive dispatch wave of width two or less
  • the orchestration policy and ultra skill are restructured so one trigger has one action: the fleet default is hoisted into the operating model with a posture versus execution width split, the three manual fan out sites name /fusion:ultra, the skill's when_to_use leads with task shape, facet counts floor at three, and the convening ceremony of checkpoint, worktrees, and sibling declarations runs inside the skill

test plan

already verified

  • node --test "tests/*.test.mjs" -> 878 tests, 877 pass, 0 fail, 1 pre existing skip (the suite grew by 12 new tests across the three touched surfaces)
  • a live stop event against a real stuck pending_async record flipped it to task_notification collection with no TaskOutput probe and it settled through a plain --record
  • piping a UserPromptSubmit event into plugins/fusion/scripts/fleet-posture.mjs emits the single advisory JSON line when enabled and stays silent with FUSION_FLEET_MODE=off

reviewer should verify

  • start a fresh session against this plugin version and confirm each user prompt carries the one line fleet default reminder and that FUSION_FLEET_MODE=off silences it
  • dispatch two consecutive narrow agent waves and confirm the guard's advisory line appears once and that a wave of width three resets the counter

notes

  • installed 0.0.30 cache dirs already carry these files as hot deploys for live sessions; the next plugin refresh to 0.0.31 reconciles the cache with the release
  • hooks.json registration and the skills listing load at session start, so running sessions gain only the script side fixes; the per turn reminder and the skill framing need a new session

okisdev added 6 commits July 20, 2026 20:24
the fleet default lived as one sentence deep inside a document loaded once at session start and almost never fired. a new UserPromptSubmit hook injects one advisory context line each turn naming the three package threshold, /fusion:ultra, and the fleet-decline protocol; FUSION_FLEET_MODE=off or a fleet-mode state file disables it, malformed input exits silently, and the hook never blocks. the compact recovery echo now restates the fleet default at the moment of maximum context loss instead of a fleet-less posture model.
completed dispatch waves are bucketed by FUSION_FLEET_WAVE_GAP_MS over the existing dispatch log, and a second consecutive wave of width two or less appends one advisory line naming /fusion:ultra and the decline marker. advisory only: permission decisions, the write budget, and existing advisory lines are unchanged, and legacy state derives its wave counters from the persisted dispatch log.
…isory

worker records reached terminal only through a collection matcher observing a TaskOutput or Read result, so a wrapper reaped after its terminal notification left a record demanding probes that could only fail, and a budget expired record whose task had already finished still produced a TaskStop demand. handleStop now scans the parent transcript's task notification delta with a persisted per session offset, bounded per pass and fail open, before cancellation classification, flipping owned records to task_notification collection or a terminal failure. the in flight stop advisory is deduplicated by the sorted task id signature persisted in a new generic session state file, so a dispatch wave produces one armed notice instead of one per turn end, each of which cost an extra model request.
… policy

the policy declared two different defaults and prescribed manual fan out at the same threshold that was supposed to convene the fleet. the fleet default is hoisted into the operating model with an explicit split between the posture machine, which governs what the main loop touches, and execution width, which the fleet owns; the three manual fan out sites now name /fusion:ultra, declines require a visible fleet-decline line whose premises reopen the question when they expire, and consolidation no longer lowers the fleet decision's package count.
when_to_use led with explicit asks, so the always in context surface framed the fleet as an escalation. it now leads with task shape, the facet count follows the goal's package count with a floor of three, skipping a fleet shaped goal is a stated decline, and the convening ceremony of checkpoint, worktrees, and sibling declaration lists runs inside the skill instead of being prepaid by the main loop.
@okisdev
okisdev merged commit 8beeacb into main Jul 20, 2026
6 checks passed
@okisdev
okisdev deleted the feat/fleet-initiative branch July 20, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant