Workflows: The syspilot Process¶
Overview¶
syspilot is a process framework for spec-driven development. It defines three workflows that cover the full lifecycle of specifications and code:
Workflow |
Purpose |
Agents |
When to use |
|---|---|---|---|
Change |
Evolve specs and code |
design → implement → uat → verify → docu |
Every feature, fix, or refactor |
Quality |
Check specification health |
mece, trace |
Any time, independently |
Release |
Bundle and publish |
release |
After changes are merged |
Manager Orchestration¶
Three managers orchestrate the engineers:
Manager |
Role |
Responsibility |
|---|---|---|
|
Project Manager |
Plans features, prioritizes backlog, delegates Change Requests to CM |
|
Change Manager |
Orchestrates engineers through the Change Workflow (autonomous or user-guided) |
|
Quality Manager |
Dispatches |
Change Modes: The Change Manager supports two modes:
autonomous — proceeds without user feedback except for UAT
user-guided — requests user approval after each spec level
PM sets the mode via the Operation Mode field in the Change Document header
(see SYSP_SPEC_PM_DUTIES). CM reads that field as authoritative; the value in
the PM→CM dispatch message is a sanity check only (see SYSP_SPEC_CM_WORKFLOW).
Each workflow is a defined sequence of agent invocations. You always know which agent to call next.
The Change Workflow¶
The Change Workflow is the primary development loop. Every change — from a new feature to a bug fix — follows this sequence:
flowchart LR
design --> implement --> uat --> verify --> docu
docu --> next["Next change or<br/>release workflow"]
design -.-> next
@syspilot.design — Analyze¶
Input: A change request (GitHub issue, verbal description, or idea)
What it does:
Receives the Change Document prepared by PM and fills the engineering sections (L0 User Stories, L1 Requirements, L2 Design Specs, MECE, Traceability, Sign-off)
Analyzes impact level by level — at each level, runs impact analysis (via
syspilot.impact-pythonskill) to discover affected elements through sphinx-needs traceability links before identifying changes:Level 0 (User Stories): Which user goals are affected? New scenarios?
Level 1 (Requirements): Which requirements change? New acceptance criteria?
Level 2 (Design Specs): Which technical specs need updating?
Asks for your approval at each level before proceeding
Performs horizontal consistency checks (MECE) at each level
Output: An approved Change Document with all affected IDs listed
Key principle: The Design Agent never modifies code — it only analyzes and documents. This separation ensures thorough analysis before implementation.
@syspilot.implement — Execute¶
Input: An approved Change Document
What it does:
Reads the Change Document and all linked specs
Writes the RST specification changes (US, REQ, SPEC files)
Implements code changes with traceability comments
Verifies every acceptance criterion is covered before proceeding
Runs tests (if applicable)
Updates user-facing documentation
Commits with traceability references
Output: A commit (or series of commits) implementing all specified changes
Key principle: The Implement Agent follows the Change Document exactly. It doesn’t make design decisions — those were made during analysis.
@syspilot.uat — User Acceptance Test¶
Input: The same Change Document, after implementation
What it does:
Generates user acceptance test artifacts from the Change Document
Checks acceptance criteria coverage
Produces test stories and scenarios
Output: UAT artifacts for user review
@syspilot.verify — Validate¶
Input: The same Change Document, after UAT
What it does:
Reads the Change Document and checks every requirement against the implementation
Verifies traceability: US → REQ → SPEC → Code
Validates that acceptance criteria are met
Runs the Sphinx build to check for broken links
Updates spec statuses from
approved→implementedCreates a validation report in
docs/changes/val-<name>.md
Output: A validation report confirming (or flagging issues with) the implementation
@syspilot.docu — Update Documentation¶
Input: Completed and verified changes
What it does:
Reviews what changed in the codebase
Updates
copilot-instructions.md, manager context files, and external docs as neededKeeps documentation concise — removes outdated info, adds new patterns
Output: Updated documentation (or confirmation that no update is needed)
Key principle: Documentation is the last step because it captures the result of the full change cycle, not intermediate states.
The Quality Workflow¶
Quality checks run independently — no Change Document needed. They’re read-only analyses that identify issues in your specifications.
flowchart TD
mece --> f1{"Findings?"}
trace --> f2{"Findings?"}
f1 --> fix["Start a change<br/>workflow to fix"]
f2 --> fix
@syspilot.mece — Horizontal Check¶
What it does: Analyzes one specification level for:
Mutually Exclusive — No overlapping or contradictory specs
Collectively Exhaustive — No gaps in coverage
When to use:
Before a release, to validate spec quality
After a large change, to check consistency
When you suspect redundancies or gaps
Example: @syspilot.mece on Level 1 (Requirements) might find that two
requirements define conflicting behavior for the same feature.
@syspilot.trace — Vertical Check¶
What it does: Traces one specification element through all levels:
Up: Which User Stories does this requirement serve?
Down: Which Design Specs implement this requirement? Which code?
When to use:
To verify a specific item has complete coverage
To understand the full context of a spec element
To find “orphan” specs that aren’t linked to anything
Example: @syspilot.trace SYSP_REQ_INST_LOCAL_SOURCE shows the User
Stories above, the Design Specs below, and the code that implements it.
The Release Workflow¶
The Release Workflow bundles completed changes into a versioned release. It runs after one or more Change Workflows have been merged to main.
flowchart LR
V["Version<br/>bump"] --> Val["Validate<br/>(build)"] --> N["Notes<br/>(generate)"] --> P["Publish<br/>(tag+push)"]
@syspilot.release handles the full process:
Version bump — Update the
version:field insyspilot/agents/syspilot.setup.agent.mdfrontmatter with the new versionValidate — Run Sphinx build, check for broken links and schema violations
Release notes — Generate
docs/releasenotes.mdfrom Change DocumentsArchive — Move Change Documents to
docs/changes/archive/<version>/Publish — Create Git tag and GitHub Release
When to use: After all planned changes for a version are merged and verified.
Branching Strategy¶
syspilot uses a permanent development integration branch with short-lived feature branches:
gitGraph
commit id: "v0.2.3" tag: "v0.2.3"
branch development
checkout development
commit id: "dev-start"
branch feature/CR7
checkout feature/CR7
commit id: "CR7: specs"
commit id: "CR7: implement"
commit id: "CR7: verify"
checkout development
merge feature/CR7 id: "squash CR7"
branch feature/CR8
checkout feature/CR8
commit id: "CR8: specs"
commit id: "CR8: implement"
commit id: "CR8: verify"
checkout development
merge feature/CR8 id: "squash CR8"
checkout main
merge development id: "v0.2.4" tag: "v0.2.4"
Rules:
Rule |
What |
Why |
|---|---|---|
One branch per change |
|
Isolates each change for independent review |
Development as integration |
All feature branches squash-merge into |
Permanent integration branch for all work |
Branches retained after merge |
Feature branches are kept after merge; |
Enables forensic use and bisect after merge |
Squash-merge everywhere |
Feature→development and development→main use squash-merge |
Clean history on both branches |
Main = releases only |
Squash merge to main happens only during |
Main always equals the latest release |
Tag on main |
Release creates |
Tags mark published releases |
Workflow:
@syspilot.pm→ createsfeature/<name>branch fromdevelopment, creates Change Document (header + Summary only)@syspilot.cm→ fills the engineering sections of the Change Document (via design agent)@syspilot.implement→ commits code on the same branch@syspilot.uat→ generates UAT artifacts on the same branch@syspilot.verify→ commits validation report on the same branch@syspilot.docu→ commits documentation updates on the same branch@syspilot.pm→ squash-merges feature branch intodevelopment@syspilot.release→ squash-mergesdevelopmentinto main, bumps version, tags, cleans up feature branches
When to Use Which Agent¶
Situation |
Agent |
Notes |
|---|---|---|
New feature request |
|
Always start here |
Bug fix |
|
Even bugs go through the analysis |
Refactoring |
|
Ensures specs stay aligned |
Change Document is approved |
|
Follows the design agent |
Implementation is done |
|
Follows the implement agent |
“Are my specs consistent?” |
|
Independent, any time |
“Is this requirement fully covered?” |
|
Independent, any time |
All changes merged, ready to ship |
|
After change workflows |
Setting up syspilot in a project |
|
One-time or update |
Workflow Diagram¶
The complete agent interaction model:
flowchart LR
A["Issue / Idea"] --> change
subgraph CW ["Change Workflow (loop)"]
change --> implement --> uat
uat -- "fix & retry" --> change
end
uat --> docu
docu --> decision{"Another change?"}
decision -- yes --> change
decision -- no --> release["Release workflow"]
subgraph QW ["Quality (any time)"]
mece --> findings1{"findings?"}
trace --> findings2{"findings?"}
end
findings1 -- yes --> change
findings2 -- yes --> change
For the Product/Instance architecture, see architecture.md. For file organization details, see methodology.md.