Skip to content

Governance layer has no awareness of personal squad paths #344

Closed

Description

@jsturtevant

Problem

The personal squad path resolution (resolveGlobalSquadPath() → platform-specific dirs like ~/.config/squad/) lives entirely in SDK code. The governance layer — squad.agent.md, charter templates, and skills — has zero awareness of personal squads.

What's missing

1. squad.agent.md (coordinator instructions)

  • Init Mode references --global but doesn't explain where it resolves to
  • No guidance for agents operating in consult mode against a personal squad
  • The TEAM_ROOT concept works, but nothing tells the coordinator that a personal squad has different semantics (shared across projects, skills are portable, etc.)

2. Charter templates (.squad/templates/charter.md)

  • No personal-squad-aware patterns
  • When casting a personal squad, charters should reflect that skills/knowledge are project-agnostic
  • No guidance on "this agent lives in a personal squad and will be used across multiple repos"

3. Skills and templates

  • All .squad/skills/ and .squad/templates/ reference .squad/ as project-relative only
  • No skill for "how to behave when spawned from a personal squad" or "how consult mode changes agent behavior"

Impact

  • Agents spawned via consult mode don't know they're backed by a personal squad
  • The coordinator can't give agents context about personal vs project squads
  • Personal squad casting has no template support (related: CLI casting bypasses CastingEngine template system #342)
  • Skills earned in one project via a personal squad have no guidance on portability

Expected Behavior

The governance layer should:

  1. Define personal squad semantics in squad.agent.md (how consult mode works, what TEAM_ROOT means when pointing to a personal squad)
  2. Provide charter template variants for personal squad agents (project-agnostic framing)
  3. Include a skill or template for consult-mode behavior (what's different when the squad is personal)

Related

Activity

  1. jsturtevant commented on Mar 11, 2026

    @jsturtevant
    ContributorAuthor

    Additional gap: config.json → teamRoot resolution missing from coordinator

    The coordinator's team root resolution in squad.agent.md (Worktree Awareness section) only describes worktree-based discovery:

    1. git rev-parse --show-toplevel → check for .squad/
    2. Fall back to main working tree

    But there's a third path that's completely missing: config-directed resolution. When config.json has a teamRoot field (e.g., "teamRoot": "C:\\src\\squad-pr"), the SDK's resolveSquadPaths() follows it to load team identity from an external location. The coordinator has no instructions to read config.json for this field, so:

    • The coordinator won't discover the remote team root
    • Agents get a TEAM_ROOT that doesn't match the SDK's actual resolution
    • Remote/consult mode is effectively broken at the governance layer

    Fix needed in squad.agent.md: Add a step to the team root resolution:

    3. Check .squad/config.json for a \teamRoot\ field.
       - If present → team identity (charters, skills, casting) lives at that path.
       - Pass both TEAM_ROOT (identity) and PROJECT_ROOT (local .squad/) to agents.
    

    This is the same dual-root problem described in the personal squad proposal's open design question — the governance layer needs to mirror what the SDK already does in resolveSquadPaths().

  2. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    🏗️ Squad Triage — Flight (Lead)

    Issue: #344 — Governance layer has no awareness of personal squad paths
    Assigned to: DSKY (TUI Engineer)
    Reason: Issue relates to frontend/UI work

    @copilot evaluation: 🔴 Not suitable — issue involves work outside the coding agent's capability profile.

    Team roster:

    • Flight (Lead) → label: squad:flight
    • Procedures (Prompt Engineer) → label: squad:procedures
    • EECOM (Core Dev) → label: squad:eecom
    • FIDO (Quality Owner) → label: squad:fido
    • PAO (DevRel) → label: squad:pao
    • CAPCOM (SDK Expert) → label: squad:capcom
    • CONTROL (TypeScript Engineer) → label: squad:control
    • Surgeon (Release Manager) → label: squad:surgeon
    • Booster (CI/CD Engineer) → label: squad:booster
    • GNC (Node.js Runtime) → label: squad:gnc
    • Network (Distribution) → label: squad:network
    • RETRO (Security) → label: squad:retro
    • INCO (CLI UX & Visual Design) → label: squad:inco
    • GUIDO (VS Code Extension) → label: squad:guido
    • Telemetry (Aspire & Observability) → label: squad:telemetry
    • VOX (REPL & Interactive Shell) → label: squad:vox
    • DSKY (TUI Engineer) → label: squad:dsky
    • Sims (E2E Test Engineer) → label: squad:sims
    • Handbook (SDK Usability) → label: squad:handbook
    • Ralph (Work Monitor) → label: squad:ralph
    • @copilot (Coding Agent) → label: squad:copilot

    To reassign, remove the current squad:* label and add the correct one.

  3. 1 remaining item

  4. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    📋 Assigned to Procedures (Prompt Engineer)

    Issue: #344 — Governance layer has no awareness of personal squad paths

    Procedures will pick this up in the next Copilot session.

    For Copilot coding agent: If enabled, this issue will be worked automatically.
    Otherwise, start a Copilot session and say:
    Procedures, work on issue #344

  5. deleted a comment from github-actions on Mar 18, 2026
  6. deleted a comment from github-actions on Mar 18, 2026
  7. bradygaster commented on Mar 22, 2026

    @bradygaster
    Collaborator

    🏗️ Flight — Governance Layer Design for Personal Squads

    This is addressed in the Ambient Personal Squad design proposal: .squad/decisions/inbox/flight-ambient-personal-squad.md\ (also linked from #329).

    What the design adds for #344 specifically:

    1. \squad.agent.md\ updates — Extended Worktree Awareness section that reads \config.json\ for \ eamRoot\ AND discovers the personal squad from the global config directory. The coordinator now passes both \TEAM_ROOT\ and \PROJECT_ROOT\ to personal agents.

    2. Charter template variant — New personal squad charter template with cross-project framing, Ghost Protocol section, and deference-to-project-agents boundary.

    3. Routing priority — Personal routing rules are resolved after project routing rules. Project agents always take precedence for matching tasks.

    4. Agent origin tagging — Every agent in the session cast is tagged \origin: 'project' | 'personal'. The coordinator uses this to select the right spawn template and enforce Ghost Protocol.

    5. Session audit trail — Orchestration log entries record which personal agents participated, giving visibility into 'who helped' without polluting the project's squad state.

    The key gap this closes: The coordinator currently discovers team root only via filesystem traversal. The design adds personal squad discovery as a parallel resolution path — always checked, gracefully skipped if no personal squad exists.

    Next steps: Phase 2 of the implementation (Ghost Protocol + governance changes) is where the \squad.agent.md\ and charter template changes ship. Phase 1 (ambient discovery) lays the SDK foundation first.

    cc @jsturtevant

  8. bradygaster commented on Mar 23, 2026

    @bradygaster
    Collaborator

    Superseded by #508 — governance layer now has personal squad awareness.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    go:needs-researchNeeds investigationnext-upPriority queue — next issues to workpriority:p2Next sprintsquadSquad triage inbox — Lead will assign to a membertype:featureNew capability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions