Skip to content

feat(.squad): PAO external communications - Phase 1 infrastructure#427

Merged
bradygaster merged 9 commits intobradygaster:devfrom
diberry:squad/426-pao-external-comms
Mar 20, 2026
Merged

feat(.squad): PAO external communications - Phase 1 infrastructure#427
bradygaster merged 9 commits intobradygaster:devfrom
diberry:squad/426-pao-external-comms

Conversation

@diberry
Copy link
Copy Markdown
Collaborator

@diberry diberry commented Mar 16, 2026

Summary

Implements the Phase 1 foundation for RFC #426: PAO External Communications with human review gate.

Closes #426

Working as PAO (DevRel) — coordinated with Flight, EECOM, and FIDO.

What's included

New Skills (2)

  • humanizer (.squad/skills/humanizer/SKILL.md) — Tone enforcement patterns for community responses. 10 patterns, 7 response templates, 9 anti-patterns. Ensures warm, helpful, human-sounding tone per Brady's constraints.
  • external-comms (.squad/skills/external-comms/SKILL.md) — Full scan-draft-review-post workflow with confidence flags (green/yellow/red), MCP tool integration, and \gh\ CLI fallback.

Communications Infrastructure (.squad/comms/)

  • README.md — System overview and directory structure
  • audit/.gitkeep — Audit trail directory (append-only)
  • templates/audit-entry.md — Structured audit log format
  • templates/review-state-schema.sql — SQLite-based atomic locking (zero new dependencies)
  • templates/tone-validation.json — Machine-readable anti-patterns for CI lint
  • .gitignore — Excludes runtime SQLite state from commits

Quality Gates (.squad/comms/tests/)

  • tone-validation-spec.md — 7 test categories (T1-T7), 5 gold standard responses, Phase 1 readiness checklist
  • ci-gate.md — Mandatory and warning checks, failure modes

Charter and Routing Updates

  • PAO charter — Added external comms ownership, 3 hard rules (EXTERNAL COMMS, HUMANIZER, AUDIT TRAIL)
  • routing.md — Added community response work type

Brady's 5 Constraints (all addressed)

  1. Humanized tone mandatory — humanizer skill enforces
  2. Never autonomous — all responses draft-only with human review gate
  3. Human review gate — explicit \pao approve\ command required
  4. Never mean — anti-patterns block dismissive or aggressive language
  5. Reputational awareness — audit trail, confidence flags, safe word (\pao halt)

FIDO's 5 Critical Blockers (all mitigated)

  1. Humanizer has zero validation — tone-validation.json + CI gate + gold standard baseline
  2. Review gate unenforceable — SQLite locking + explicit approval + audit log
  3. No rollback plan — delete-and-repost workflow + safe word
  4. Cannot verify full thread read — thread depth indicator + long-thread flag + deleted comment validation
  5. Tone degradation undetected — baseline comparison + weekly analytics spec

Files Changed

  • 13 files changed, 652 insertions(+), 1 deletion(-)
  • 2 new skills, 6 new infrastructure files, 2 new test specs, 1 charter update, 1 routing update

@diberry
Copy link
Copy Markdown
Collaborator Author

diberry commented Mar 16, 2026

@bradygaster — PR #427 (PAO External Communications RFC) has full team approval and is ready for your review.

Reviewers who signed off:

  • McManus (PAO) — approved in round 2
  • Keaton (Flight/Lead) — approved in round 5
  • Hockney (FIDO/Test) — approved in round 5
  • Fenster (EECOM/Infra) — approved in round 5

What this PR adds:

  • Humanizer skill (tone enforcement, patterns-only, no external deps)
  • External-comms skill (scan→draft→review→post workflow)
  • Comms infrastructure (SQLite schema, tone validation, audit templates, CI gate)
  • Safe word set to \�anana\ per your directive
  • Phase 1 constraints: manual-trigger only, issues/discussions only, human review gate mandatory

Key design decisions (from 5 review rounds):

  • Single-row global lease for SQLite lock (atomic UPDATE)
  • Node-safe regex only (no lookbehinds)
  • Conditional audit format (minimal frontmatter)
  • No external dependencies — humanizer is self-contained patterns

Targeting \dev\ branch. Ready for merge when you are.

tamirdresher pushed a commit to tamirdresher/squad that referenced this pull request Mar 16, 2026
* chore(squad): Phase 2 launch — thinking feedback, P0 bugs, dual telemetry

Phase 1 complete: 5 issues closed (bradygaster#325, bradygaster#326, bradygaster#327, bradygaster#328, bradygaster#329), 5 PRs merged.
Phase 2 launched with Cheritto (thinking feedback), Hockney (P0 bugs), Saul (dual telemetry).
Decision inbox merged and archived.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): Phase 2 Wave 1 merged, Wave 2 launched

Session: 2026-02-23T2145-phase2-wave2
Phase 2 Wave 1 complete (PRs bradygaster#351, bradygaster#352, bradygaster#353 merged).
Wave 2 launched: Cheritto on ghost response detection (bradygaster#332), Hockney on error hardening (bradygaster#334).

Changes:
- Session log created: 2026-02-23T2145-phase2-wave2.md
- Merged 3 inbox decisions (Cheritto, Hockney, Saul)
- Deleted inbox files post-merge

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): Epic bradygaster#323 complete — all phases shipped 🎉

All 3 phases delivered:
- Phase 1 (Testing Wave): 6 issues closed
- Phase 2 (Improvement): 6 issues closed
- Phase 3 (Breathtaking): 7 issues closed
- 17 PRs merged, 19 issues closed total

Session log: 2026-02-23T2320-epic-complete.md
Decisions merged from inbox: P2 UX Polish, first-run wow moment

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* hostile QA: end-to-end quality assessment — 10 findings, 4 HIGH severity

Candid assessment requested by Brady. Traced every code path in cli-entry.ts,
shell/index.ts, shell/commands.ts, App.tsx, coordinator.ts, spawn.ts, and the
SDK adapter client.

Key findings:
- Dead sessions never evicted from agentSessions Map after connection drop
- No React ErrorBoundary — any render throw kills the shell
- Nasty-inputs corpus (95 strings) is never imported by any test
- No SIGTERM handler in interactive shell
- MemoryManager exported but never instantiated (dead code)
- Single streaming content slot clobbers multi-agent output
- User input silently dropped during processing (no type-ahead buffer)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): quality review findings — 7 issues filed

Quality audit complete: 5 agents assessed CLI across testing, coverage, stability, accessibility, UX.
Results: 4 P0 blockers (bradygaster#365bradygaster#368), 3 P1 items (bradygaster#369bradygaster#371).
Blocking: Waingro dead sessions, ErrorBoundary, dropped input; Marquez help text consistency.

Changes:
- Logged session summary to .squad/log/2026-02-24T0205-quality-review-complete.md
- Updated .squad/identity/now.md with quality review findings and new issue numbers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): merge decision — Marquez UX audit findings

Quality assessment merged from inbox (Grade B): 11 improvements (3 P0, 4 P1, 4 P2). help text, stub commands, vocabulary, separators, roster.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): test sprint launch

Session: 2026-02-24T0210-test-sprint
Changes:
- Logged test sprint: 5 agents, 7+ issues
- Branches: P0 fixes, stale tests, E2E, hostile/SDK, A11y

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix bradygaster#427: Add immediate shell launch indicator

Adds 'Loading Squad shell...' message at start of runShell() to eliminate
2-4 second launch dead air. Message clears once Ink mounts.

Users now see feedback within 100ms instead of staring at blank terminal.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tamirdresher pushed a commit to tamirdresher/squad that referenced this pull request Mar 16, 2026
…gaster#439)

* chore(squad): quality review findings — 7 issues filed

Quality audit complete: 5 agents assessed CLI across testing, coverage, stability, accessibility, UX.
Results: 4 P0 blockers (bradygaster#365bradygaster#368), 3 P1 items (bradygaster#369bradygaster#371).
Blocking: Waingro dead sessions, ErrorBoundary, dropped input; Marquez help text consistency.

Changes:
- Logged session summary to .squad/log/2026-02-24T0205-quality-review-complete.md
- Updated .squad/identity/now.md with quality review findings and new issue numbers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore(squad): merge decision — Marquez UX audit findings

Quality assessment merged from inbox (Grade B): 11 improvements (3 P0, 4 P1, 4 P2). help text, stub commands, vocabulary, separators, roster.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix bradygaster#423/bradygaster#399: Remove welcome typewriter animation blocking

Users can now type immediately when shell launches. Removed 500ms typewriter
animation and 300ms fade-in from welcome banner — title and content appear
instantly.

Pattern: instant feedback beats cosmetic delay. Matches bradygaster#427 shell loading fix.

Closes bradygaster#423
Closes bradygaster#399

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update Cheritto history: bradygaster#423 welcome animation fix

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI added 7 commits March 16, 2026 10:32
Implements the Phase 1 foundation for RFC bradygaster#426: PAO External Communications
with human review gate.

New skills:
- humanizer: Tone enforcement patterns for community responses
- external-comms: Full scan-draft-review-post workflow with confidence flags

Infrastructure:
- .squad/comms/ directory with audit logging, SQLite locking schema,
  tone validation patterns, and review state templates
- Tone validation test spec (7 test categories, 5 gold standard responses)
- CI gate definition (mandatory and warning checks)

Charter and routing updates:
- PAO (McManus) charter: external comms ownership, 3 hard rules
- Routing: community response work type added

Closes bradygaster#426

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fixes from Flight (architecture), Procedures (skills), FIDO (validation):

SQLite lock: single global lease replacing per-session locks (Flight)
Routing: community response now explicit manual-trigger Phase 1 (Flight)
Audit lifecycle: runtime artifacts gitignored, README clarified (Flight)
External-comms skill: operationalized templates, rollback path, thread-read
  verification, confidence classification, discussion workflow (Procedures)
Humanizer skill: disagreement/info-request/no-link-dumping patterns (Procedures)
Gold standards: added GS-6 redirect + GS-7 closing (FIDO)
Tone validation: Node-safe regex, removed duplicate, added required patterns,
  baseline_blocking flag (FIDO)
Audit template: expanded action enum, conditional fields matrix (FIDO)

Reviewer rejection protocol enforced: original authors locked out per-artifact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1. Remove Ralph-triggered activation (manual-trigger only in Phase 1)
2. Remove 'pr' from item_type (issues/discussions only in Phase 1)
3. Fix audit action taxonomy: 'posted' → 'post' in example
4. Add empathetic-disagreement and information-request to response types
5. Fix outcome field: contextual per-action values with clear table
6. Add Discussion rollback path (GraphQL mutation for discussion comments)
7. Make baseline similarity blocking for high-confidence drafts in ci-gate

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1. Audit entry frontmatter: only universal fields (timestamp, action)
2. Template sections annotated with applicable action types
3. Example audit entry in SKILL.md matches canonical template format
4. SKILL.md audit section references conditional fields table

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1. Post example includes all required fields (item_number, draft_id, reviewer)
2. Post example excludes Reviewer Notes (scoped to approve/edit/skip only)
3. Post Result placeholder text matches post/delete scoping
4. Template clarifies action-specific fields go in frontmatter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Audit directory is runtime-only (gitignored) — no need for placeholder.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@diberry diberry force-pushed the squad/426-pao-external-comms branch from 6fda725 to 9d5102b Compare March 16, 2026 17:33
@diberry
Copy link
Copy Markdown
Collaborator Author

diberry commented Mar 16, 2026

Rebased PR #427 onto upstream/dev (commit f87a7a5) and resolved all conflicts.

Conflict Resolution Summary:

  • .squad/agents/_alumni/mcmanus/charter.md: Merged both rule sets — kept DOCS-TEST SYNC rule from upstream reskill and added EXTERNAL COMMS, HUMANIZER, and AUDIT TRAIL rules from this PR
  • .squad/routing.md: Accepted Apollo 13 team names from upstream (EECOM, PAO, FIDO, etc.) — the PAO external comms infrastructure is team-agnostic
  • .squad/agents/keaton/history.md: Accepted deletion (file moved to alumni in the upstream recast)

Rebased onto upstream commits:

All 7 commits successfully rebased and force-pushed. PR is now ready for review.

@bradygaster — EECOM (Core Dev), on behalf of Dina

Documented git worktree conflict resolution pattern for cross-fork rebase operations.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@diberry
Copy link
Copy Markdown
Collaborator Author

diberry commented Mar 16, 2026

APPROVE — Solid Phase 1 foundation. SQLite-based locking is the right call (atomic, zero new deps), humanizer skill addresses Brady's 5 constraints, and FIDO's blockers are all mitigated. Infrastructure work like this belongs in .squad/ per decisions.md. 652 insertions is appropriate for a new capability with tests + templates. Ship it.

@diberry
Copy link
Copy Markdown
Collaborator Author

diberry commented Mar 17, 2026

@bradygaster This PR is ready for your review.

@diberry
Copy link
Copy Markdown
Collaborator Author

diberry commented Mar 18, 2026

👋 @bradygaster — squad obo dina: Merge conflict has been resolved. Merged upstream/dev into the branch, no file conflicts. Ready for review when you are.

@bradygaster bradygaster merged commit 4476f42 into bradygaster:dev Mar 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants