Skip to content

Commit 368958b

Browse files
committed
Merge main into dev for release v0.9.0
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2 parents baf8ce9 + 6d88097 commit 368958b

26 files changed

Lines changed: 2697 additions & 6032 deletions

File tree

‎.github/agents/squad.agent.md‎

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,23 @@ For each squad member with assigned issues, note them in the session context. Wh
154154

155155
**The user should never see a blank screen while agents work.** Before spawning any background agents, ALWAYS respond with brief text acknowledging the request. Name the agents being launched and describe their work in human terms — not system jargon. This acknowledgment is REQUIRED, not optional.
156156

157-
- **Single agent:** `"Fenster's on it — looking at the error handling now."`
158-
- **Multi-agent spawn:** Show a quick launch table:
157+
#### Task Context Signal
158+
159+
Before naming agents, classify how this message relates to the conversation so far. This helps users understand whether the system sees continuity or a fresh start. Use exactly one of these signals as the **first line** of your acknowledgment:
160+
161+
- 🔗 **Continuing** `{brief context}` — the message extends the same task thread (e.g., a follow-up question, next step, or refinement of earlier work)
162+
- 🆕 **New task** — the message is unrelated to previous work in this session
163+
- 🔀 **Related pivot** `{brief context}` — the message connects to earlier work but shifts focus to a different concern
164+
165+
Skip the signal only on the very first message of a session (there's no prior context to classify against).
166+
167+
#### Agent Launch
168+
169+
- **Single agent:** `"🔗 Continuing your auth refactor\nFenster's on it — looking at the error handling now."`
170+
- **Multi-agent spawn:** Show the signal, then a quick launch table:
159171
```
172+
🔀 Related pivot from the auth work — now looking at tests
173+
160174
🔧 Fenster — error handling in index.js
161175
🧪 Hockney — writing test cases
162176
📋 Scribe — logging session
@@ -1185,7 +1199,7 @@ This runs as a standalone local process (not inside Copilot) that:
11851199
|-------|------|-----|
11861200
| **In-session** | You're at the keyboard | "Ralph, go" — active loop while work exists |
11871201
| **Local watchdog** | You're away but machine is on | `npx @bradygaster/squad-cli watch --interval 10` |
1188-
| **Cloud heartbeat** | Fully unattended | `squad-heartbeat.yml` GitHub Actions cron |
1202+
| **Cloud heartbeat** | Fully unattended | `squad-heartbeat.yml` — event-based only (cron disabled) |
11891203

11901204
### Ralph State
11911205

‎.squad-templates/squad.agent.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ This runs as a standalone local process (not inside Copilot) that:
11851185
|-------|------|-----|
11861186
| **In-session** | You're at the keyboard | "Ralph, go" — active loop while work exists |
11871187
| **Local watchdog** | You're away but machine is on | `npx @bradygaster/squad-cli watch --interval 10` |
1188-
| **Cloud heartbeat** | Fully unattended | `squad-heartbeat.yml` GitHub Actions cron |
1188+
| **Cloud heartbeat** | Fully unattended | `squad-heartbeat.yml` — event-based only (cron disabled) |
11891189

11901190
### Ralph State
11911191

‎.squad/agents/capcom/history.md‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,37 @@
3030
3. **Copilot API platform** (upstream) — source of transient errors and rate limits
3131

3232
Squad operates at layer #1, so issues at layers #2-3 are outside our control.
33+
## Core Context
34+
35+
- **Project:** Squad — AI agent orchestration framework
36+
- **Role:** SDK Expert
37+
- **Joined:** 2025-01-25
38+
39+
## Learnings
40+
41+
### 2025-01-25: SDK Init Implementation Deep Dive
42+
43+
Completed deep technical analysis of `squad init --sdk` code paths. Key findings:
44+
45+
**CastingEngine is orphaned** — The SDK has a full universe-based casting system (`packages/squad-sdk/src/casting/casting-engine.ts`) with themed characters (The Usual Suspects, Ocean's Eleven), personality traits, backstories, and role-matching algorithms. **But no code calls it.** The CLI bypasses it with a hardcoded `personalityForRole()` function that generates generic personalities based on role patterns.
46+
47+
**Config/team sync is one-way** — The REPL init flow generates team.md, routing.md, and registry.json when casting a team, but never updates squad.config.ts. Meanwhile, `squad init --sdk` generates squad.config.ts with only Scribe, missing Ralph and all other agents. The disconnect: CLI init writes a skeleton + prompt, REPL auto-cast generates the team, but the two paths never merge into a unified config.
48+
49+
**Built-in agents are inconsistent** — Ralph is added by the REPL casting flow (`cli/core/cast.ts:385-386`) but not by SDK init (`cli/core/init.ts:109-115`). @copilot is a pseudo-agent — a Markdown table row inserted via `team-md.ts:insertCopilotSection()`, not a real agent with charter/history files.
50+
51+
**Universe selection is a dead end** — The coordinator init prompt asks the LLM to pick a universe (line 52: "Pick a fictional universe for character names"), and the coordinator responds with `UNIVERSE: Alien`, which gets stored in `casting/history.json`... and then **nothing uses it**. There's no mapping from freeform universe names to CastingEngine templates.
52+
53+
**The fix path is clear** — Three priority levels:
54+
- **P0 (trivial):** Add Ralph to SDK init agents array, guide coordinator to existing CastingEngine universes
55+
- **P1 (small/medium):** Integrate CastingEngine into CLI casting, make REPL init write squad.config.ts
56+
- **P2 (design-heavy):** Decide config sync strategy (config-as-source vs. bidirectional), decide if @copilot should be a real agent
57+
58+
Written full technical analysis to `.squad/identity/sdk-init-technical-analysis.md` with file/line references, complexity estimates, and actionable recommendations for Brady's PRD.
59+
60+
**SDK patterns observed:**
61+
- `defineSquad()` / `defineAgent()` builder pattern is clean and works well
62+
- `configFormat` enum supports 'sdk' | 'typescript' | 'json' | 'markdown' — flexible but undertested
63+
- Init flow is two-phase (CLI writes skeleton, REPL auto-casts) — intentional design but creates sync issues
64+
- Template system in SDK (`templates/` directory) is well-structured, used correctly by `initSquad()`
65+
66+
📌 **Team update (2026-03-11T01:25:00Z):** 5 SDK Init decisions merged to decisions.md: Phase-based quality improvement (3-phase approach), CastingEngine canonical casting, squad.config.ts as source of truth, Ralph always-included, implementation priority order. Full technical analysis informed Flight's unified PRD and EECOM's roadmap.

‎.squad/agents/eecom/history.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,11 @@ CLI completeness audit (2026-03-08) confirmed: 26 primary commands routed in cli
130130
**Force Push:** `git push origin squad/426-pao-external-comms --force-with-lease` succeeded. PR #427 comment posted via gh CLI.
131131

132132
**Pattern:** When working with git worktrees, always create a dedicated worktree for complex operations (rebase, cherry-pick) to avoid main worktree state interference. Use `git worktree list` to diagnose unexpected branch switching.
133+
### SDK Init Flow Deep Dive (2026-03-08)
134+
Traced complete `squad init --sdk` flow end-to-end for unified PRD. Key findings: (1) Init flow has two phases: CLI init creates skeleton files, REPL auto-cast creates team members. (2) Critical gap: squad.config.ts is never updated after auto-cast — members exist in .squad/ but not in config. (3) Ralph is inconsistently created (auto-cast yes, CLI init no). (4) No commands exist for adding/removing members post-init. (5) CastingEngine class exists but is never called during init — LLM-based Init Mode prompt is used instead. Roadmap written to .squad/identity/sdk-init-implementation-roadmap.md with 7 fixes prioritized by dependency graph. Critical path: sync utility → Ralph fixes → CastingEngine integration → hire/remove commands. High-risk items: squad.config.ts AST parsing (considered regex alternative). Open questions: AST vs regex for config sync, CastingEngine augment vs replace LLM, Ralph always-on vs opt-in.
135+
136+
📌 **Team update (2026-03-11T01:25:00Z):** SDK Init decisions finalized: Phase-based quality improvement program, CastingEngine canonical casting, squad.config.ts as source of truth, Ralph always-included, implementation priority order (sync utility first, then Ralph fixes, then CastingEngine integration). All decisions merged to decisions.md. Ready to start Phase 1 implementation.
137+
133138
### Adoption Tracking Tier 1 Implementation (2026-03-10)
134139
Implemented Flight's privacy-first adoption monitoring strategy on PR #326 branch. Moved `.squad/adoption/` → `.github/adoption/` for better GitHub integration. Stripped tracking.md to aggregate-only metrics (removed all individual repo names/URLs). Updated GitHub Action workflow (adoption-report.yml) and monitoring script (scripts/adoption-monitor.mjs) to write reports to `.github/adoption/reports/`. Removed "Built with Squad" showcase link from README.md (deferred to Tier 2 opt-in feature). This honors the principle: collect aggregate metrics via public APIs, but never publish individual repo lists without explicit consent. Test discipline: verified npm run build passes; docs-build.test.ts passed structure tests (Astro build failure unrelated to changes). Committed with clear message explaining privacy rationale.
135140

‎.squad/agents/fido/history.md‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,49 @@ CastingEngine augments LLM casting with curated names for recognized universes.
7474

7575
**Learning:** When test assertions reference file counts, they MUST be kept in sync with disk reality. The principle applies to ALL assertion arrays (EXPECTED_SCENARIOS, EXPECTED_FEATURES, EXPECTED_GUIDES, EXPECTED_REFERENCE, etc.). Consider dynamic discovery pattern (used in EXPECTED_BLOG) for resilience against content additions.
7676

77+
📌 **Team update (2026-03-10T14-44-23Z):** PR #310 scroll flicker fix merged. 4 root causes identified: Ink clearTerminal issue, timer amplification, log-update trailing newline, unstable Static keys. Postinstall patch pattern adopted for Ink internals. Version pin recommended for stability gate. Build: 3,931 tests pass, zero regressions.
78+
### PR #331 Quality Gate Review — NO-GO (Blocking Issues Found) (2026-03-10T14:13:00Z)
79+
80+
**CRITICAL VIOLATIONS DETECTED:**
81+
82+
1. **Stale Test Assertions (Hard Rule Violation)** — EXPECTED_SCENARIOS array in test/docs-build.test.ts contains only 7 values ['issue-driven-dev', 'existing-repo', 'ci-cd-integration', 'solo-dev', 'monorepo', 'team-of-humans', 'cross-org-auth'], but 25 scenario files exist on disk (aspire-dashboard, client-compatibility, disaster-recovery, keep-my-squad, large-codebase, mid-project, multi-codespace, multiple-squads, new-project, open-source, private-repos, release-process, scaling-workstreams, switching-models, team-portability, team-state-storage, troubleshooting, upgrading, + 7 in array). My charter: "When I add test count assertions, I MUST keep them in sync with the actual files on disk. Stale assertions that block CI are MY responsibility to prevent." This is MY responsibility to catch.
83+
84+
2. **Missing EXPECTED_FEATURES Array** — PR adds 'features' to the sections list in test/docs-build.test.ts (line 46), but NO EXPECTED_FEATURES array exists. Test line 171 "all expected doc pages produce HTML in dist/" will skip features entirely. 32 feature files exist (.md files in docs/src/content/docs/features/).
85+
86+
📌 **Team update (2026-03-11T01:27:57Z):** PR #331 quality gate resolved. FIDO fixed test assertion sync in docs-build.test.ts: EXPECTED_SCENARIOS updated to 25 entries, EXPECTED_FEATURES array created with 32 entries, test assertions updated for features validation. Tests: 6/6 passing. Commit: 6599db6. Blocking NO-GO converted to approval gate cleared. Lesson reinforced: test assertions must be synced to filesystem state; CI passing ≠ coverage.
87+
88+
3. **Incomplete Test Coverage Sync** — PAO's history (line 41) states "Updated EXPECTED_SCENARIOS in docs-build.test.ts to match remaining files" after deleting ralph-operations.md and proactive-communication.md. But the diff shows ONLY a single-line change (adding 'features' to sections array). The full test update was not committed.
89+
90+
**POSITIVE FINDINGS:**
91+
- ✅ CI passed (test run completed successfully on GitHub)
92+
- ✅ Markdown structure tests pass (6/6 syntax checks)
93+
- ✅ Docs are well-written: sentence-case headings, active voice, present tense, second person
94+
- ✅ Cross-references valid (labels.md link verified)
95+
- ✅ No duplicate "How It Works" heading in reviewer-protocol.md
96+
- ✅ Content intact (no accidental loss)
97+
- ✅ Microsoft Style Guide compliance confirmed
98+
99+
**ROOT CAUSE:** PAO staged the boundary review changes but the test update commit was incomplete. The assertion arrays must be synchronized before merge.
100+
101+
**REQUIRED FIX:** Update test/docs-build.test.ts:
102+
1. EXPECTED_SCENARIOS = [ all 25 actual scenario files, sorted ]
103+
2. EXPECTED_FEATURES = [ all 32 actual feature files, sorted ]
104+
3. Regenerate to match disk reality (use filesystem discovery if the project wants test-resilience)
105+
106+
**VERDICT:** 🔴 **NO-GO** — Merge blocked until test assertions sync with disk state. This is a quality gate violation.
107+
108+
### Test Assertion Sync Fix (2026-03-10T14:20:00Z)
109+
110+
**Issue resolved:** Fixed stale test assertions in test/docs-build.test.ts identified during PR #331 review.
111+
112+
**Changes made:**
113+
1. Expanded EXPECTED_SCENARIOS from 7 to 25 entries (matched all .md files in docs/src/content/docs/scenarios/)
114+
2. Added EXPECTED_FEATURES array with 32 entries (matched all .md files in docs/src/content/docs/features/)
115+
3. Updated test logic to include features section in HTML build validation
116+
117+
**Validation:** All structure validation tests passing (6/6). Build tests skipped as expected (Astro not installed). Arrays now accurately reflect disk state.
118+
119+
**Commit:** 6599db6 on branch squad/289-squad-dir-explainer
120+
121+
**Learning:** When test assertions reference file counts, they MUST be kept in sync with disk reality. The principle applies to ALL assertion arrays (EXPECTED_SCENARIOS, EXPECTED_FEATURES, EXPECTED_GUIDES, EXPECTED_REFERENCE, etc.). Consider dynamic discovery pattern (used in EXPECTED_BLOG) for resilience against content additions.
122+

‎.squad/agents/flight/history.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,16 @@ Rank by: (1) bugs with active user impact, (2) quality/test gaps blocking GA, (3
2929

3030
**Updated wisdom.md with 4 patterns + 2 anti-patterns from recent work:** Test name-agnosticism for team rebirths, dynamic filesystem discovery for evolving content, cli-entry.ts unwired command bug pattern, bump-build.mjs version mutation timing, invalid semver formats, git reset data loss.
3131

32+
**Issue triage attempted for 30 open issues:** Identified 10 unlabeled issues requiring squad assignment. Enterprise Managed User permissions blocked GitHub API label updates via `gh issue edit`. Triage analysis complete:
33+
- SDK issues (#337, #342) → squad:eecom + squad:capcom (init flow + casting engine)
34+
- Personal squad (#343, #344) → squad:flight (architecture territory)
35+
- A2A protocol (#332-336) → squad:flight + domain experts (network, vox, retro, eecom)
36+
- Tooling layers (#330) → squad:eecom + squad:procedures
37+
Manual label application needed by repo owner.
38+
39+
**SDK Init Shore-Up PRD created:** Consolidated 6 SDK-related issues (#337-342, #340-341) into unified 3-phase initiative at `.squad/identity/prd-sdk-init-shoreup.md`. Root causes: config sync gap, built-in member exclusion (Ralph, @copilot), CastingEngine bypass. Solution: Phase 1 fixes gaps (P1), Phase 2 wires CastingEngine (P1), Phase 3 exercises full test matrix (P2). Estimated 4 sprints to 100% SDK feature parity. Owners: EECOM + CAPCOM (phases 1-2), FIDO + CAPCOM (phase 3).
40+
41+
📌 **Team update (2026-03-11T01:25:00Z):** Flight completed 30-issue triage + unified SDK Init Shore-Up PRD. CAPCOM + EECOM completed deep technical analysis + implementation roadmap. 5 decisions merged to decisions.md: Phase-based quality improvement program, CastingEngine canonical casting, squad.config.ts as source of truth, Ralph always-included, implementation priority order.
3242
📌 **Team update (2026-03-10T12-55-49Z):** Adoption tracking architecture finalized. Three-tier system approved: Tier 1 (aggregate-only, `.github/adoption/`) shipping with PR #326; Tier 2 (opt-in registry) designed for next PR; Tier 3 (public showcase) launches when ≥5 projects opt in. Append-only file governance rule enforced to prevent data loss. Microsoft ampersand style guide adopted for all user-facing documentation.
3343

3444
### PR #331 Review — Boundary Review Pattern Reinforced (2026-03-10)

‎.squad/agents/inco/history.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,14 @@
33
## Core Context
44

55
Terminal flicker fix cherry-picked from main to dev — PR #405 merged (March 2026).
6+
> UX Engineer & Interaction Designer
7+
8+
## Learnings
9+
10+
### Animation Performance Trade-offs (PR #310)
11+
Scroll flicker fix required careful animation frame budget management. Slowdown accepted as trade-off for visual clarity and stable viewport rendering. Version footer suggestion considered for animation frame transparency.
12+
13+
---
14+
15+
📌 **Team update (2026-03-10T14-44-23Z):** PR #310 scroll flicker fix merged. 4 root causes identified by Flight: Ink clearTerminal issue, timer amplification, log-update trailing newline, unstable Static keys. Postinstall patch pattern adopted for Ink internals. Version pin recommended for stability gate.
616

0 commit comments

Comments
 (0)