Demo fixture for Team Brain local shape (norms + optional markdown export + commit-safe pin).
For live multi-engineer memory, use Supabase + team-brain-api.sh (or MCP) — see team-brain-onboarding.md.
TEAM.md
team.yaml ← local fixture (do not put live anon here in a real crew repo)
project.json ← commit-safe pin (#39): default Jira key + team name (NO secrets)
initiatives/DEMO-EE-1.md ← optional export per initiative
Live crews also get (gitignored / generated):
credentials.json ← NEVER commit
cache/<JIRA-KEY>.json
metrics.json
sync/
notify/
project.json under .team-brain/ in the product repo):mkdir -p /path/to/workspace/.team-brain
cp examples/team-spike-crew/project.json /path/to/workspace/.team-brain/project.json
Admin shares invite + URL + anon out of band (not in git).
Joiner:
export TEAM_BRAIN_SUPABASE_URL=https://….supabase.co
export TEAM_BRAIN_SUPABASE_ANON_KEY=eyJ…
# optional viewer:
bash core/scripts/team-brain-api.sh onboard <INVITE> "Bob" --role member
# Jira key comes from project.json pin when omitted
bash core/scripts/team-brain-api.sh start
Read-only observer:
bash core/scripts/team-brain-api.sh onboard <INVITE> "Carol" --role viewer
cp -r examples/team-spike-crew /path/to/workspace/.team-brain
/team-brain attach DEMO-EE-1
/team-brain breakdown DEMO-EE-1
Admin (preferred):
bash core/scripts/team-brain-api.sh bootstrap \
--team "Spike Crew" --admin "Alice" \
--url "https://….supabase.co" --anon "eyJ…" \
--db-url "postgresql://postgres:…@db….supabase.co:5432/postgres" \
--jira DEMO-EE-1 --write-env
# Commit-safe pin for the product repo:
bash core/scripts/team-brain-api.sh pin set --jira DEMO-EE-1 --team-name "Spike Crew"
# Commit .team-brain/project.json — never credentials.json
Or manual: apply migrations → register "Spike Crew" "Alice" (migrations/README.md).
Then:
onboard <INVITE> "Bob" --role member (uses pin for Jira when present)onboard <INVITE> "Carol" --role viewerlist-members · rotate-invite · set-role "Carol" --role memberremember → teammate recall / agent loop / MCPdelete <KEY> --source-ref <REF> (member/admin)remember → redundant_candidate; member remember … --queue → admin pending list → pending approve <pending-id>|reject <pending-id>| Role | recall / list / breakdown | remember / correct / attach | delete | rotate invite |
|---|---|---|---|---|
admin |
✅ | ✅ | ✅ | ✅ |
member |
✅ | ✅ | ✅ | ❌ |
viewer |
✅ | ❌ | ❌ | ❌ |
When research was wrong, update the same source_ref (do not fork a second topic):
bash core/scripts/team-brain-api.sh correct DEMO-EE-1 \
--source-ref "DEMO-EE-1#ee-schema" \
--was "Schema lives under tox-ansible" \
--learning "Was wrong: schema under tox-ansible. Prefer: packages/ansible-language-server." \
"Prefer packages/ansible-language-server for EE schema paths; avoid assuming tox-ansible owns it."
Expect corrected.updated: true and a learning memory at DEMO-EE-1#ee-schema/learning.
Bodies use prefer/avoid prose — not TODO/NO-TODO dumps.
# Member: blocked duplicate
bash core/scripts/team-brain-api.sh remember DEMO-EE-1 research \
"Same body as an existing crew memory."
# Member: queue override for admin
bash core/scripts/team-brain-api.sh remember DEMO-EE-1 research \
--source-ref "DEMO-EE-1#ee-schema" --queue \
"Prefer packages/ansible-language-server for EE schema paths."
# Admin
bash core/scripts/team-brain-api.sh pending list DEMO-EE-1
bash core/scripts/team-brain-api.sh pending approve <pending-id> --note "Supersedes prior note"
After a correction, the prior body is archived (apply …_memory_history.sql):
bash core/scripts/team-brain-api.sh history DEMO-EE-1 --source-ref "DEMO-EE-1#ee-schema"
bash core/scripts/team-brain-api.sh restore DEMO-EE-1 --source-ref "DEMO-EE-1#ee-schema" --revision 1