feat: fleet default signal and notification driven collection (0.0.31) - #30
Merged
Conversation
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.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
summary
fleet-posture.mjsUserPromptSubmit hook injects one advisory line naming the three package threshold, /fusion:ultra, and thefleet-decline: <reason>protocol (disable withFUSION_FLEET_MODE=offor afleet-modestate file), and the compact recovery echo restates the fleet default instead of a fleet less posture modelhandleStopscans 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 finishedwhen_to_useleads with task shape, facet counts floor at three, and the convening ceremony of checkpoint, worktrees, and sibling declarations runs inside the skilltest 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)pending_asyncrecord flipped it totask_notificationcollection with no TaskOutput probe and it settled through a plain--recordplugins/fusion/scripts/fleet-posture.mjsemits the single advisory JSON line when enabled and stays silent withFUSION_FLEET_MODE=offreviewer should verify
FUSION_FLEET_MODE=offsilences itnotes