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 |
change → implement → verify → memory |
Every feature, fix, or refactor |
Quality |
Check specification health |
mece, trace |
Any time, independently |
Release |
Bundle and publish |
release |
After changes are merged |
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
change --> implement --> verify --> memory
memory --> next["Next change or<br/>release workflow"]
change -.-> next
@syspilot.change — Analyze¶
Input: A change request (GitHub issue, verbal description, or idea)
What it does:
Creates a Change Document in
docs/changes/Analyzes impact level by level:
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 Change 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.verify — Validate¶
Input: The same Change Document, after implementation
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.memory — Update Context¶
Input: Completed and verified changes
What it does:
Reviews what changed in the codebase
Determines if
copilot-instructions.mdneeds updatingUpdates project structure, conventions, or workflow descriptions as needed
Keeps the file concise — removes outdated info, adds new patterns
Output: Updated copilot-instructions.md (or confirmation that no update is needed)
Key principle: Memory 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 SYSPILOT_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
syspilot/version.jsonwith 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 chained feature branches with a release-only main:
gitGraph
commit id: "v0.2.3"
branch feature/local-install
commit id: "change + specs"
commit id: "implement"
commit id: "verify"
branch feature/concept-docs
commit id: "change + specs "
commit id: "implement "
commit id: "verify "
checkout main
merge feature/concept-docs id: "squash merge (release)" type: HIGHLIGHT tag: "v0.2.4"
Rules:
Rule |
What |
Why |
|---|---|---|
One branch per change |
|
Isolates each change for independent review |
Chain from previous |
New branch starts from the latest feature branch, not main |
Builds on previous work without merging first |
All work on branch |
Specs, code, tests, docs — everything commits to the feature branch |
Clean history, easy to revert |
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.change→ createsfeature/<name>branch (from latest feature branch or main)@syspilot.implement→ commits code on the same branch@syspilot.verify→ commits validation report on the same branch@syspilot.memory→ commits copilot-instructions updates on the same branchNext change? → branch again from the current feature branch
@syspilot.release→ squash merge to main, bump version, tag
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 change agent |
Implementation is done |
|
Follows the implement agent |
Verification passed |
|
Follows the verify 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 --> verify
verify -- "fix & retry" --> change
end
verify --> memory
memory --> 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.