Default SDLC Template
sdlc-v2-authored, dual-tracker, per-role capabilities.
The default SDLC template (sdlc-v2-authored, slug sdlc-v2) is the production workflow that ships with every new Rensei project. It drives the full research → backlog-writer → development → QA → acceptance pipeline, supports both Linear and GitHub Issues as issue trackers, and applies a per-role capability matrix so each agent stage gets exactly the intelligence it needs.
Every new project auto-subscribes to sdlc-v2 at published status. You can pause it, fork it, or replace it with a variant without touching the shared canonical template. See Template Subscriptions.
What the template provides
The sdlc-v2 bundle ships one workflow (Rensei SDLC (v2)) with:
- Dual-tracker support - a Linear branch (full AgentSession surface, mention routing, status-driven dispatch) and a GitHub Issues branch (labels-as-state, comments). A single
rensei.value.switchat the workflow level routes bytrigger.data.tracker. - Six shared dispatch leaves - one per SDLC role (
research,backlog-writer,development,qa,acceptance,refinement). Each trigger path fans into the same workflow-scope leaves; no per-branch duplicates. - Shared foundational row - a single set of ~12 foundational nodes (
llm-model,capacity-pool,credential-provider, threecapability.*nodes, sixagent-definitionnodes) at workflow scope, wired by multi-target edges to every dispatch leaf. - Per-role capability matrix - memory + architecture for every role; code-intel added for
developmentandqawhere symbol search and repo-map pay off most. - Shared exit handler group - a workflow group (
sdlc_v2_exit_handler_group) that handles the result-switch,linear.agent_session.close, Linear progression advance, and GitHub label replacement after every agent session completes. - Fresh AgentSession per stage -
linear.agent_session.closefires at the terminal of every SDLC branch so Linear threads close cleanly when a user stops mid-chain. - Default model - Claude Opus 4.8 (
claude-opus-4-8) applied uniformly across all roles. Override per-leaf via the canvas.
State machine
The template's canonical state machine has five provider-agnostic states:
triage → in_progress → review → done
↘ in_progress (back from review)
triage → cancelled
in_progress → cancelled
review → cancelledInitial state: triage. Terminal states: done, cancelled.
Lifecycle mapping (Linear defaults)
The template's spec.lifecycle maps these five SDLC stages to Linear status names out of the box:
| Stage | Trigger when issue transitions to | Exit transition |
|---|---|---|
research | Icebox | → Triage |
backlog-writer | Triage | → Backlog |
development | Backlog | → Finished (fail → Rejected) |
qa | Finished | → Delivered (fail → Rejected) |
acceptance | Delivered | → Accepted (fail → Rejected) |
refinement | Rejected | (no auto-exit) |
Linear state names are case-sensitive. The default map uses Started, not In Progress. Renaming a status in Linear without updating the lifecycle mapping causes that stage to silently drop. See Work Types for the full trigger chain.
GitHub Issues mapping (labels-as-state)
For teams using GitHub Issues the branch uses labels rather than statuses. Default label names:
| Stage | Label applied |
|---|---|
| icebox | sdlc/icebox |
| triage | sdlc/triage |
| backlog | sdlc/backlog |
| started | sdlc/started |
| finished | sdlc/finished |
| delivered | sdlc/delivered |
| accepted | sdlc/accepted |
| rejected | sdlc/rejected |
The branch uses github_issues.label.replace so only one SDLC label is active at a time; others are cleared atomically.
Per-role capability matrix
Each dispatch leaf inherits capabilities from the shared foundational row:
| Role | memory | architecture | code-intel |
|---|---|---|---|
| research | ✓ | ✓ | |
| backlog-writer | ✓ | ✓ | |
| development | ✓ | ✓ | ✓ |
| qa | ✓ | ✓ | ✓ |
| acceptance | ✓ | ✓ | |
| refinement | ✓ | ✓ |
Architecture and code-intel use ={{ trigger.data.repo }} as a runtime-interpolated repo reference; the resolver resolves it from the inbound CloudEvent at dispatch time.
Template identifiers
| Property | Value |
|---|---|
| Slug | sdlc-v2 |
| Template label | sdlc-v2 |
| Version | 2.0.0 |
| Workflow name | Rensei SDLC (v2) |
| Supported trackers | linear, github_issues |
| Default model | claude-opus-4-8 |
Required workflow nodes
The template declares the following node IDs as required (install-validator enforces these at subscription time):
Modernizations vs v1 (sdlc-default-authored)
The v2 template introduces several improvements over the archived v1:
linear.issue.predicate(unified) - replaces 8 separatelinear.issue.*condition nodes (status_equals,is_terminal,project_allowed,assignee_is_human, and four more). One bespoke config panel, one node ID to maintain.- No
capabilityPackresidue - the legacycapabilityPackfield on agent leaves is absent from day one; capabilities are wired via the shared foundationalcapability.*nodes. - No
promptArtifactthreading - agent identity flows through theagent-definitionfoundational node'scardIdfield, not through prompt artifact refs. - Shared foundational row - ~12 foundationals emitted once at workflow scope; before v2, every branch duplicated its own foundational fan-in (~90 nodes total).
- Workflow-level exit trigger - a single
agent.exittrigger at workflow scope with arensei.value.switchdispatching by tracker; the branches no longer carry per-branch exit triggers.
The v1 template (sdlc-default-authored) is archived with 0 active subscriptions and is kept for audit trail only.
Required resources
When installing the template, the platform validates that the project has the following configured:
| Kind | Role | Required | Notes |
|---|---|---|---|
linear-team | primary | No | Required when linear is the project's tracker |
repo | primary | No | Required when github_issues is the project's tracker |
At least one of the two must be resolvable for the template to dispatch successfully.
Topology diagram
Canvas authoring
The template is fully editable from the workflow canvas after installation. Common customizations:
- Override status names - change the
linear.issue.predicateconfig on routing nodes to match your team's Linear workflow states. - Swap the LLM model - select the
llm-modelfoundational node and changemodelfromclaude-opus-4-8to any catalog entry. - Add a capability - drop a
capability.a2aor additionalcapability.memorynode and wire it to the relevant dispatch leaves. - Add an approval gate - insert a
gate.human_querynode between the dispatch leaf and the shared exit handler group to require human sign-off before the agent session closes.
See Workflow Canvas for the full editor reference.
Installing on an existing project
New projects receive the subscription automatically. For existing projects that predate the v2 rollout, open the project's Workflows page - loading the System Templates panel backfills the missing official-template subscription at published automatically. If the panel shows the template as Unpublished (for example, the project opted out earlier), click the toggle, or re-enable via the API:
curl -X PATCH https://rensei.ai/api/projects/{projectId}/workflow-subscriptions \
-H "Authorization: Bearer rsk_live_..." \
-H "Content-Type: application/json" \
-d '{ "subscriptionId": "pts_...", "status": "published" }'See Template Subscriptions → Managing subscriptions for the full reference.
Migrating from v1
See SDLC v1 → v2 Migration for the step-by-step upgrade guide, including the linear.issue.predicate mapping table and the foundational node consolidation checklist.