Handbook
Charge — F2 / Branch Steward contract and decision tree
Pack: branching · Preamble: Cursor preamble for the ForgeSDLC branching charges · Next: Charge 05
Define the workflow persona that turns Charge state into Git actions inside Cursor.
Branch context
- Open or confirm
iter/F2-PS-BRANCH-01 - Parent branch remains
product/PS-BRANCH-01-forge-branching-orchestrationonly if the policy enabled it - This Charge defines the agent behavior before you build the Cursor rule
Active Sparks
| # | Spark ID | Phase | Intent | Git lane | Status |
|---|---|---|---|---|---|
| 1 | M2E2S1T1 | specify: |
Define Branch Steward inputs, outputs, session location, and supported verbs such as open-iteration, start-spark, bank-spark, resume-spark, prepare-review, and backmerge-hotfix. |
iter/F2-PS-BRANCH-01 |
planned |
| 2 | M2E2S1T2 | design: |
Create the decision tree for when a Spark stays on iter/* versus when it opens a dedicated spark/* branch. |
iter/F2-PS-BRANCH-01 |
planned |
| 3 | M2E2S1T3 | design: |
Define how forge/charge.md will reference branch and worktree state without becoming a parallel tracker or a new branch class. |
iter/F2-PS-BRANCH-01 |
planned |
| 4 | M2E2S1T4 | specify: |
Define mandatory Ember Log triggers for branch creation, banking, merge exceptions, hotfixes, and policy overrides. | iter/F2-PS-BRANCH-01 |
planned |
Branch Steward in-time actions
- Create or check out the F2 iteration branch from the policy-approved parent layer.
- Write the decision tree so Cursor can choose the lane without asking the user on every Spark.
- Keep Charge lightweight: it may point to a branch or worktree, but it must not duplicate Git history or issue tracking.
- Prompt for Engineering review if the contract would let the agent rewrite protected history.
Expected outputs
forge/personas/branch-steward.mdor.cursor/rules/branch-steward-contract.md- a decision tree for Spark branch creation
- a minimal charge annotation convention for branch or worktree references
Exit criteria
- the Branch Steward role is concrete enough to implement
- the Spark lane decision tree is deterministic enough for Cursor
- Ember Log triggers are explicit
Blockers
| Spark | Blocker | Action |
|---|---|---|
Banking decisions
| Spark | Reason banked | Restart context |
|---|---|---|
Notes
- Use the Ember Log for non-trivial branch decisions, policy exceptions, and any risk accepted during this Charge.
Related
- Daily README · Charge template
- Forge-to-Git mapping (bank and spike rules)
- Roles (if the repo maps hats to roles)