Using GAAI across a team of engineers.
GAAI's memory and backlog are files in your repo. This is intentional — it makes them versionable, reviewable, and auditable. It also means teams need conventions around who edits what and when.
Always commit:
.gaai/project/— all project-specific data:contexts/rules/— project rule overridescontexts/memory/project/context.md— project fundamentalscontexts/memory/patterns/conventions.md— conventionscontexts/backlog/active.backlog.yaml— current backlogcontexts/backlog/done/— completed work archivecontexts/artefacts/— all artefact files
.gaai/core/— framework files (managed via git subtree sync)
Consider carefully:
.gaai/project/contexts/memory/decisions/_log.md— accumulates quickly; commit on milestones, not every session
Do not commit:
- Session notes or draft artefacts that haven't passed validation
- Memory snapshots (archives generated by
memory-snapshot.sh)
Everything on main. Team members coordinate by:
- Locking backlog items with
status: in-progress(only one person per item) - Using
scripts/backlog-scheduler.shto pick next item (avoids collisions)
main
├── feat/BL-042-rate-limiting ← one Story per branch
├── feat/BL-043-export-csv
└── feat/discovery-auth-flows ← Discovery output (artefacts only, no code)
Branch naming: {type}/{backlog-id}-{short-title}
Merge rule: a Story branch may only be merged when status: done and QA has passed.
The backlog is a shared file. Concurrent edits are merge conflicts.
Conventions:
- Only the item owner (the engineer doing the work) marks their item
in-progress - Discovery output (new refined Stories) merges through a short-lived
discovery/*branch - Done items are archived on merge to main
Discovery is human-facing. In teams, Discovery sessions produce artefacts that the whole team can review before Delivery starts.
- Engineer or PM activates Discovery for a new feature
- Discovery produces Epics, Stories, acceptance criteria
- Artefacts are committed to a
discovery/*branch - Team reviews artefacts via PR (not code review — artefact review)
- On approval: Stories are added to
active.backlog.yamlwithstatus: refined - Branch merges to main
- Any engineer can now pick up a Story for Delivery
This makes Discovery output a first-class engineering artifact — reviewable, commentable, traceable.
Multiple engineers can run Delivery loops in parallel, each on a separate Story.
Requirements:
- Each Story has a unique
idin the backlog - Each engineer works on a separate branch
- Backlog item is marked
in-progressbefore work starts (prevents collision)
The scripts/backlog-scheduler.sh helps coordinate without stepping on each other:
# Start of session: see what's available
.gaai/core/scripts/backlog-scheduler.sh --list active.backlog.yaml
# Pick what to work on next (highest priority, unblocked, not in-progress)
.gaai/core/scripts/backlog-scheduler.sh --next active.backlog.yaml
# See full dependency tree — who is waiting on whom
.gaai/core/scripts/backlog-scheduler.sh --graph active.backlog.yaml
# Sprint planning: find priority misalignments before they cause delays
.gaai/core/scripts/backlog-scheduler.sh --conflicts active.backlog.yamlThe --graph view is especially useful for parallel delivery: it shows at a glance which Stories are unblocked (✅), which are in flight (🔄), and which are waiting on a dependency (🔒). Teams can use this to assign work without accidentally pulling a Story whose dependency is still blocked.
Rules are team decisions. Treat them like architecture decisions.
Who can change rules: any engineer, but changes need review (same as architecture changes).
How to propose a rule change:
- Edit the relevant rule file
- Open a PR titled:
rules: [short description] - Engineers review and comment
- On merge, the rule takes effect for all subsequent agent sessions
This prevents rule drift and ensures the team's conventions stay explicit and aligned.
Memory files in git are shared knowledge. Some guidelines:
memory/project/context.md — owned by the team lead or principal engineer. Changes require review.
memory/patterns/conventions.md — living document. Any engineer can propose changes via PR. Represents the team's current conventions.
memory/decisions/_log.md — append-only. Engineers add to it after significant decisions. Archive old entries quarterly.
When a new engineer joins:
- Clone the repo (they get
.gaai/automatically) - Run:
bash .gaai/core/scripts/health-check.sh— verifies framework integrity - Read:
.gaai/README.md— 2 minutes, then.gaai/GAAI.md— 5 minutes - Read:
.gaai/project/contexts/memory/project/context.md— project context - Read:
.gaai/project/contexts/memory/patterns/conventions.md— team conventions - First task: pick a
refinedStory from the backlog, run Delivery
The memory files are the onboarding documentation. Keep them accurate.
See Senior Engineer Guide for full CI setup.
Minimum recommended CI gate:
- name: GAAI structure validation
run: bash .gaai/core/scripts/health-check.shAdd artefact sync validation for regulated projects:
- name: GAAI artefact sync
run: bash .gaai/core/scripts/artefact-sync.sh