How to manage releases
When you'd do this: when you want to bundle a set of stories into a deliverable unit of work, get it ready for build, hand it to a builder, and accept the result.
A release is the deliverable unit in REQQA: a named bundle of stories with a status,
a lifecycle, an optional build plan, quality checks, and point-in-time snapshots. In the
underlying data model the object is a scope — code paths, URLs (scopesList, scopeView)
and table names all use scope* — but everywhere you see it in the interface it is called a
Release. The "scope" of a release is one of its properties: what's in it, what's
deliberately left out, and the constraints it operates under.
This page walks you through the whole release cycle as an analyst working in the UI. Builders (such as an AI build agent) do not drive releases through these screens — they act through the REQQA API with a restricted set of transitions. See Releases and scopes for the conceptual model and Scope vs Release for the naming.
Browse your releases
Open Releases from the navigation. The list (scopesList) shows every release for your
currently selected application, most-recently-updated first, with a story count against
each. If no application is selected you'll be sent to pick one first.
Three view tabs filter the list:
- Active (the default) — releases in
draftorhandover_ready. - Closed — releases that are
acceptedorabandoned. - All — everything.
Each tab carries a count, and you can narrow further with an explicit status filter; Clear Status removes that filter. Each row offers View (the detail page) and, while the release is still a draft, Edit.
Create a release
- On the releases list, click New Release.
- Fill in the form (
scopeAdd):- Name — required, and must be unique within the application.
- Description — what this release delivers.
- Out of Scope — what it deliberately does not cover.
- Constraints — limits the delivery must respect.
- Click save.
The release is created in Draft status, an initial entry is written to its status history, and you land on its detail page.
Name releases the way your team actually talks about them — "v2.1", "Onboarding MVP", "Billing". The name is what everyone searches and refers to.
Edit a release
Click Edit on a draft row, or Edit from the detail page, to reopen the same form
(scopeEdit) populated with current values. The unique-name rule still applies.
Only draft releases can be edited. Once a release moves to Handover Ready its name, description, scope notes and constraints are locked, and the same applies to its story contents — this is what makes the as-scoped snapshot meaningful. If you need to change a handed-over release, transition it back to Draft first.
The release detail page
The detail page (scopeView) shows the release name, its current status, and a row of tabs.
Across the top sit the page actions: a Transition Status dropdown (only shown when there
are valid moves available), All Releases, Index Glossary Terms (populates the glossary
appendix used by the PDF report), and a report download button.
Overview
A summary: status, story and requirement counts, and key dates such as when the current plan was marked done.
Stories
The stories included in this release, grouped by their parent requirement. While the release is in Draft, an Add Stories control lets you pick stories to include; each story is pinned to its current revision at the moment you add it, and you can remove stories too. Once the release leaves draft, the contents are fixed. Each story shows its DeFOSPAM analysis progress and any open HIGH / MEDIUM issue counts. Generate stories first via generating stories if a requirement has none.
Quality Gate
An advisory readiness check (results do not block transitions). It runs four checks across the in-scope artefacts:
- Requirement analysis coverage — each in-scope requirement reaches at least the R-D, R-F, R-A, R-M DeFOSPAM steps (container requirements that carry no features are not expected to have R-F).
- Story analysis coverage — each story reaches at least D-D, D-S, D-A.
- No open HIGH-severity issues on in-scope requirements or stories.
- No stale stories — none where the parent requirement was updated more recently than the story (a sign the story needs regenerating).
See analyser codes for what the step codes mean.
Static Analysis
The static-analysis policy profile resolved for this release — the catalogue of checks, their dispositions and severity floors. Configure it via configuring static analysis.
Feedback
Feedback items raised against this release. These are normally created by a builder during a build (through the API and the handover skill), but the tab also offers a manual entry form so you can record observations yourself during testing. Each item has a severity, a target artefact, and an optional suggested edit.
Plan
The build plan(s) for this release — see below.
History and Snapshots
History is the full status-transition audit trail (who changed what, when, with comments). Snapshots holds the immutable JSON captures: As-Scoped, taken automatically the first time the release reaches Handover Ready, and As-Built, taken when the builder marks the plan as Done.
Drive the release lifecycle
A release has four statuses, and you move between them with the Transition Status dropdown, which only ever offers the moves that are valid from where you are:
| Status | Meaning | Valid moves |
|---|---|---|
| Draft | Being assembled; editable | → Handover Ready, → Abandoned |
| Handover Ready | Locked and offered for build | → Draft (revise), → Release Accepted, → Abandoned |
| Release Accepted | Delivered work confirmed after testing | (terminal) |
| Abandoned | Not being pursued | → Draft (un-abandon) |
When you choose a transition, a confirmation modal opens where you can add a comment. Moving to Handover Ready runs the quality gate first so you can see any advisory failures before you commit, then captures the As-Scoped snapshot. The comment and the change are written to the release history.
Release Accepted (the analyst confirming the delivered work is good) is distinct from a plan being Accepted (Customer). The release status is your view of the release; plan status tracks the build cycle separately.
Build plans
A release is handed to a builder as a plan — a structured Markdown document. From the Plan tab (or the full-page scopePlanView) you can submit plan content, which creates a new draft version (versions auto-increment; submitting a new draft supersedes the previous one). Plans can only be submitted when the release is Handover Ready and no other plan is already in flight.
As the analyst you then approve a draft plan. Approval is blocked if the plan still contains
non-empty Blockers, Queries, or Unmitigated Risks sections — the builder must
resubmit a v2 with those resolved (or reclassified as settled annotations such as Assumptions
or Caveats). A plan has its own seven-state lifecycle — Draft, Approved, In Progress, Paused,
Done (Builder), Accepted (Customer), Superseded — and scopePlanView lets you browse every
version, see each one's status history, and apply the plan transitions that are yours to make.
Where builders fit in
The build half of this lifecycle is designed to be driven by a builder through the REQQA API, not these screens. Analyst-owned moves — taking a release to Handover Ready, approving a plan, accepting the final delivery — stay in the UI you've just used. Builder-owned moves — starting the build, pausing and resuming, and signalling the build is done — are made by the build agent against the plan. This keeps the security boundary clean: the UI is the analyst's full lifecycle; the API exposes only the builder's restricted transitions. See The Dark Factory for how the two halves meet.
Result
A release that moves cleanly from an editable draft, through a locked Handover Ready state with an approved build plan and an As-Scoped snapshot, to an accepted delivery — every step recorded in its history, every advisory check visible, and a downloadable report you can hand to a stakeholder.
Related
- Releases and scopes — the model behind this workflow.
- Generating stories — fill requirements with stories before you bundle them.
- Scope vs Release — why the UI says one thing and the code says another.
- The Dark Factory — how analyst-led releases hand off to autonomous builders.