← Story Solution E2e Multi overview
Agent Snapshot: story_solution_e2e_multi
- Context ID:
story_solution_e2e_multi
Base cliPrompts
[1] ./agents/instructions/story_solution/affected_repos_multi_task_split.md
Affected Repositories — Multi-Task Splitting (opt-in)
This instruction extends the base affected_repos_flow.md output format. It is
only included in SA agents that want to split the work inside a single
repository into several independently trackable Sub-tasks (instead of exactly
one Sub-task per repository). If this file is not in your cliPrompts, ignore
it — keep emitting the plain per-repository schema.
When to split a repository into multiple tasks
Add a tasks array to a repository entry only when the work inside that one
repository is naturally separable into pieces that can be developed,
reviewed, and tested independently — for example:
- A schema/migration change vs. the business logic that consumes it.
- A backend API/entity change vs. a client-only follow-up in the same repo.
- Two unrelated modules/packages within a monorepo-style repository that don’t share files and could be picked up by different developers in parallel.
Do not split when:
- The pieces are small and tightly coupled (same class/file, same PR anyway).
- Splitting would only produce artificial “step 1 / step 2” tickets that must
always be worked by the same person in the same sitting — that’s still one
task, just phrase the
reasonas a short ordered list instead. - There is genuinely only one repository‑scoped unit of work — most tickets should still end up with a plain single-task-per-repo entry.
When in doubt, prefer not splitting. Over-splitting creates Jira overhead (more tickets to triage, review, and close) without a real parallelization or tracking benefit.
Mandatory self-check before writing the final reason
A single “big” reason string is a smell, not automatically a valid single
task. Before finalizing a repository entry, count the distinct new/changed
classes, modules, endpoints, or components you are about to list for that
repository (ignore config/wiring one-liners).
- 0–2 distinct items, or all items are in the same file/class: keep it as
one task — write the plain
reason. - 3 or more distinct items in one repository: do not silently fold them
into one
reasonsentence just because they ship for the same feature. Re-apply the split criteria above to each item individually. If at least two of them could realistically be reviewed/merged as separate PRs (even if all are needed before the feature works end-to-end), emit atasksarray — one task per independently reviewable item, withdepends_oncapturing the build order. Only keep it as a single task if you can state a concrete reason two of the items cannot be separated (e.g. they are the same class, or one is a one-line call inside the other). - A shared theme (“all needed for the same new feature”) is not by itself a reason to keep items merged — features regularly span multiple independently reviewable pieces within one repository.
Schema
A repository entry MAY add a tasks array. When present, it takes precedence
over the top-level reason for Sub-task creation (the top-level reason is
still shown in the Affected Repositories table as a one-line rollup summary).
{
"name": "repo-a",
"reason": "One-line rollup summary shown in the table.",
"depends_on": ["repo-z"],
"tasks": [
{
"id": "schema",
"title": "Add new table migration",
"reason": "Migration + entity for the new table.",
"depends_on": []
},
{
"id": "processor",
"title": "Implement OrderStatusProcessor",
"reason": "Business logic consuming the new schema; depends on the migration landing first.",
"depends_on": ["schema"]
}
]
}
| Field | Required | Description |
|---|---|---|
id | (when tasks is used) | Short, unique-within-this-repo slug (kebab-case). Referenced by other tasks’ depends_on. |
title | Short Sub-task summary suffix — final Jira summary is [repo-a] <title>. | |
reason | One sentence: what this specific task changes and why. | |
depends_on | ☐ | Array of prerequisite references (see below). Omit if none. |
depends_on reference forms (task-level, only inside a tasks array)
"schema"— another task’sidwithin the same repo."repo-z:some-id"— a specific task in another repo (repo:id)."repo-z"— a bare repo name — depends on all of that repo’s tasks (or its single implicit task if that repo has notasksarray). Same meaning as the repo-leveldepends_onin the base schema.
Rules
- Every
idmust be unique within its repo’stasksarray (not globally —repo-a:schemaandrepo-b:schemacan coexist). - Do not repeat information between a task’s
reasonand its parent repo’s rollupreason— the rollup should read as a one-sentence summary of all the repo’s tasks combined, not a duplicate of the first task. - If a repository entry has no
tasksarray, it is still processed as exactly one Sub-task, identical to the base (non-multi) flow — this keeps the schema backward compatible withaffected_repos_flow.md.