v0.15.0
Added
- The squad had a front door for weak inputs and none for absent ones. The intake gate validates requirement artifacts when they exist; a request with nothing written down went straight into research on framing nobody examined. The new opt-in discovery gate (
squad-src/.github/instructions/squad/squad-discovery-gate.instructions.md) fires on the inverse trigger — no input artifact, a goal rather than a settled task — and produces a brief the intake gate then validates. The two gates chain rather than loop. - It is offered, never automatic, and never unattended. Validation can be automatic because assessing a document is something an agent does alone; ideation cannot, because the value of a brainstorm is the human's ideas. The coordinator asks once per topic and honours a
discovery=quick|standard|deep|skipinput on/squadand/squad-federation. On a Watch Mode or headless run no offer is made, adiscovery=argument is ignored, and the triggering payload becomes the intake gate's input instead. - The offer is scoped to the
productandfullprofiles, the only rosters carrying the roles the gate dispatches —analystwrites the brief at every depth and no other profile seeds it. Elsewhere the gate is silent rather than escalating, which is the deliberate difference fromintake-validator: an input that exists and goes unvalidated is a skipped check worth interrupting for, while an unrequested brainstorm is not. An explicitdiscovery=is still honoured on any roster, with one combined escalation naming the roles it must add. - The dispatched roles interview the user rather than answering for them. Each puts its questions through the question tool one at a time and waits, the same discipline
Squad SQL Migration Advisoralready follows here. A role that cannot reach the user returns its outstanding questions instead of inventing the answers, and the session stops — a brief built from an agent's assumptions is the failure the gate exists to prevent. - Depth tiers scale the session to the decision and introduce no new role:
quickdispatchesanalyst;standardaddsdesigner(resolved toDT Coach) for How-Might-We framing and divergent ideation;deepaddschallengerandexperimenter. Onlyanalystwrites a file — the brief, in the existinganalystDeliverable Root — so one session leaves one artifact. - The discarded options are recorded with their reasons. The Squad Scribe writes a
## Discovery Verdicttodecisions.md(including on a decline, which is what stops the gate re-offering), carrying the framing, every option considered with why it was chosen or discarded, objections, the riskiest assumption, and the open questions research inherits. - Federation asks the question once and applies it per qualifying sub-squad, the same ask-once contract that already governs member naming and the approval channel. Each
productorfullsub-squad still runs its own session and writes its own brief and verdict under its own root; sub-squads on other profiles run unchanged, and the federation plan meta-stage never brainstorms on a sub-squad's behalf.
Changed
-
The published docs did not describe how a fix ships without shipping everything else. Added the hotfix procedure, the
refrelease input, and therelease-merge-backlabel to the contributing and maintaining pages, and documented the rolling pre-release channel on getting started and troubleshooting. -
Every merge cut a release. A fragment landing on
mainassembled the CHANGELOG, bumpedapm.yml, and tagged immediately, and the daily hve-core sync cut a release of its own on top, so a quiet week still produced several versions and nothing was ever installed before it shipped. Releasing is now a deliberate act:.github/workflows/release-prep.ymlruns on manual dispatch only, ships everything pending as one version at the highestbumpany fragment asked for, and nothing goes out on a timer. -
Merged work is now installable before it ships.
.github/workflows/preview.ymlkeeps a single GitHub pre-release in sync withmain, tagged with the version the pending fragments resolve to (v0.15.0-pre) and force-moved on every merge, so a change can be installed and tested the moment it lands. It only reads: no fragment is consumed, no version is bumped, andCHANGELOG.mdis untouched. A quick fix can ship as soon as it is verified there, while a larger change sits in preview until it is ready. -
The hve-core sync queues instead of releasing.
.github/workflows/sync-hve-core.ymlnow records a pin move as a change fragment and pushes it, leaving the release to a maintainer. The cast-delta guard and the Watch Mode handoff are unchanged. -
A fix can ship without shipping what is not ready. A release carries a commit, so a tag cut from the default branch contains everything merged into it.
release-prep.ymlandrelease.ymlaccept arefinput, which lets a hotfix be cut off the last release tag and released on its own, leaving the pending batch and its preview untouched.release.ymlalso declines the Latest badge when the version it is cutting is lower than the current latest, andpr-validation.ymlaccepts arelease-merge-backlabel so the hotfix can be merged back with the release state Release Prep already wrote. -
Invoke-ReleasePrep.ps1gained-SectionOutFileand-InstallRefso the preview can render the pending release notes and point the install snippet at the preview tag without consuming anything. -
Updated hve-core dependency pin to
2a333df(2a333df05cc5aa85d2dc9db834958b717c888bf9). -
Updated hve-core dependency pin to
c91c782(c91c7823188fef4d1ca7558c1c868b05be3aa3c2). -
Updated hve-core dependency pin to
26b9712(26b97122e19d6ff271b0b6f0401c92bb12eda03b).
Consumer install
Pin to this version:
apm install "Peter-N91/hve-squad#v0.15.0"