-
Notifications
You must be signed in to change notification settings - Fork 129
Night Watch Roles
Roles are assigned to specific Navis. Each role is non-overlapping — one Navi per role, one role per responsibility area. This prevents duplicate work and conflicting actions.
| Role | Assigned To | Goal |
|---|---|---|
| QA | DJ's Navi (thedjpetersen) |
Keep PRs green and up to date |
| PM | Cindy's Navi (cixzhang) |
Keep tasks/issues tidy, wiki current, milestones tracked |
| Reviewer | Cindy's Navi (cixzhang) |
Lightweight reviews for guidelines compliance |
| Vibe Test Runner | Cindy's Navi (cixzhang) |
Run nightly vibe tests; file ONE per-night run issue |
| Vibe Test Debugger | Cindy's Navi (cixzhang) |
Consume the nightly run: fix PRs, #3164, wiki ledger, close run issue |
| Component Auditor | Cindy's Navi (cixzhang) |
Ensure components follow theming, API, a11y, and export conventions |
| Quartermaster | DJ's Navi (thedjpetersen) |
Maintain OSS→internal consumer supply chain |
| Doc Reviewer | Joey's Navi (josephfarina) |
Keep component docs accurate and parser-compatible |
| Designer | Ernest's Navi (ernestt) |
Score AI-generated UIs against ideal reference images |
| Figma Librarian | Ernest's Navi (ernestt) |
Keep the Astryx OSS Figma Library in sync with code |
| Dependencies | Cindy's Navi (cixzhang) |
Keep dependencies free of known vulnerabilities |
Goal: Keep PRs green and up to date.
Scope:
- Fix CI failures on Navi-authored PRs (build, test, lint)
- Re-run flaky CI checks (screenshots, a11y)
- Flag stale PRs and branches
- Monitor dependency alerts
- Diagnose (but don't fix) CI failures on non-Navi PRs
Does NOT do:
- Issue triage or labeling (that's PM)
- Code review for guidelines (that's Reviewer)
- Feature implementation
Full instructions: Night Watch QA
Goal: Keep tasks and issues tidy, wiki content up to date.
Scope:
- Triage open issues — ensure they have enough detail to implement
- Label issues correctly
- Keep wiki documentation current and organized
- Flag under-specified issues with clarifying questions
- Track issue-to-PR linkage
- Assign resolved issues to the next-release milestone so reporters know which version ships the fix
Does NOT do:
- Fix CI or push code (that's QA)
- Review PR code quality (that's Reviewer)
- Close or resolve issues unilaterally
Full instructions: Night Watch PM
Goal: Lightweight reviews on PRs to ensure they adhere to project guidelines.
Scope:
- Review PRs for design token usage (no hardcoded values)
- Check accessibility: ARIA roles, keyboard nav, aria-label on icon buttons
- Verify primitive reuse (Dialog, Button, Icon, etc.)
- Check composition patterns: files under ~400 lines, displayName set
- Ensure
:hoverstyles use@media (hover: hover)guards - Stick to easy-to-evaluate, objective checks
Does NOT do:
- Approve PRs — never approve without a human
- Subjective design feedback
- Fix CI or push code (that's QA)
- Issue triage (that's PM)
Full instructions: Night Watch Reviewer
Goal: Run nightly vibe tests comparing Astryx vs baseline code generation quality.
Scope:
- Run the full vibe test pipeline once per night (not hourly)
- Sample 10 prompts, spawn sub-agents for all four targets
- Deploy report to gh-pages, push the
vibe-test/nightly-<date>results branch - File ONE per-night run issue (label
vibe-test-nightly) with scores + correctness failures - Trigger the Vibe Test Debugger as the final step
Does NOT do:
- Append the wiki ledger (that's the Debugger)
- Post to the #3164 API Concerns tracker (that's the Debugger)
- Fix CI or push code fixes (that's the Debugger / QA)
- Review PRs (that's Reviewer); triage issues (that's PM)
Full instructions: Night Watch Vibe Test Runner
Goal: Consume each nightly vibe-test run, fix what's fixable, and record the durable history.
Scope:
- Run AFTER the Runner files its per-night issue (Runner-triggered; safety-net cron backs it up)
- Classify correctness failures (CLI-doc / setup / API) and fix CLI-doc + setup issues via PR
- Gate every fix with the Backwards-Validation Protocol (reproduce ≥2/3 before, resolve 0/3 after)
- Comment API concerns on the rolling tracker #3164 (never a new issue)
- Append the night's scores to the wiki ledger (correctly formatted — no table-breaking blank lines)
- Close the per-night run issue once its content is absorbed (idempotency signal)
Does NOT do:
- Run the vibe test itself (that's the Runner)
- Modify component source or TypeScript types (CLI docs / setup / env READMEs only)
- File a new issue for API concerns or scores
Full instructions: Night Watch Vibe Test Debugger
Goal: Ensure all components follow theming, API, accessibility, and export conventions.
Scope:
- Audit CSS variable usage (no hardcoded colors, shadows, spacing, radii, typography)
- Verify themeProps placement, variant classNames, sub-element targeting
- Check component reuse (Button for close buttons, Icon with registry, Divider)
- Enforce prop naming (boolean
is/has, callbackon{Verb},start/end) - Verify type/context naming (unprefixed
<Component>*), component structure (displayName, file header, BaseProps) - Check input component consistency (field props, status shape, size variants)
- Audit accessibility contracts (label, ARIA wiring, focus preservation)
- Verify export hygiene (index.ts, type exports, tsup entry points)
- Fix findings via PRs, flag ambiguous cases for human review
Does NOT do:
- Subjective design decisions
- Review PRs (that's Reviewer)
- Fix CI (that's QA)
- Triage issues (that's PM)
Full instructions: Night Watch Component Auditor
Goal: Maintain the supply chain from OSS Astryx (GitHub) through to internal consumers, continuously improving parity with mockups and features.
Scope:
- Monitor automated code sync from GitHub to internal consumers
- Ensure Astryx packages are consumable after import
- Track internal template integration and parity with designs
- Resolve path resolution and build issues in the import pipeline
Does NOT do:
- Fix CI on PRs (that's QA)
- Triage GitHub issues (that's PM)
- Review PRs for guidelines (that's Reviewer)
- Implement new Astryx components on GitHub (daytime feature work)
This role primarily operates on internal infrastructure. Detailed instructions are on the internal wiki.
Full instructions: Night Watch Quartermaster
Goal: Keep component docs compatible with Storybook autodocs and catch content-level issues the type checker can't see.
Scope:
- Validate JSDoc
@exampleblocks for Storybook compatibility (notsxtag, single example) - Detect prop documentation drift (TypeScript interface vs
.doc.mjsprops) - Check example quality and composition patterns
- Validate legacy README structure for the 6 unmigrated components
Not in scope: .doc.mjs type structure — CI handles this via tsc --checkJs.
- Send PRs to fix issues found
Does NOT do:
- Fix CI or push code (that's QA)
- Review PR code quality (that's Reviewer)
- Triage issues (that's PM)
- Rewrite component implementations
- Make subjective style changes
Full instructions: Night Watch Doc Reviewer
Goal: Score AI-generated UI screenshots against human-provided ideal reference images.
Scope:
- Maintain ideal reference images in
internal/vibe-tests/ideals/(committed from Drive uploads) - Run
design-judge.tsafter each nightly vibe test to produce Design dimension scores - Include Design scores in the Night Watch report
- Coordinate with designers on ideal image coverage and quality
Does NOT do:
- Run the vibe test pipeline itself (that's Vibe Test Runner)
- Fix CI or push code fixes (that's QA)
- Triage issues (that's PM)
- Review PRs for guidelines (that's Reviewer)
Full instructions: Night Watch Designer
Goal: Keep the Astryx OSS Figma Library in sync with the code in packages/core/src/.
Scope:
- Detect code changes to component prop interfaces since last run
- Classify changes (new prop, removed prop, renamed prop, new variant value, new component)
- Read current Figma component state via
use_figmaMCP tool - Modify existing Figma components in-place for prop changes
- Build new Figma components from scratch using the CC Figma Builder 4-phase workflow
- Respect human overrides via three-way diff (CODE / FIGMA / AGENT state)
- Use native Figma Slots (
SLOTproperty +SlotNode) for freeform ReactNode props
Does NOT do:
- Visual design judgment (that's Designer)
- Code review or PR review (that's Reviewer)
- CI fixes (that's QA)
- Issue triage (that's PM)
- Component code auditing (that's Component Auditor)
- Publish the Figma library — humans publish
Schedule: Once per day at 12pm PST, Mon–Fri. Requires Ernest's Mac with Figma open via MCP.
Full instructions: Night Watch Figma Librarian
Goal: Keep dependencies free of known vulnerabilities.
Scope:
- Check Dependabot alerts weekly (Sundays 6am PST)
- Auto-resolve transitive dependency vulnerabilities via pnpm overrides
- Verify fixes with build + test (+ flow tests for tooling deps like vite)
- File GitHub issues for major version bumps requiring human review
- Create verified PRs for all auto-fixes
Does NOT do:
- Apply major version bumps without human review
- Merge PRs
- Fix CI on other PRs (that's QA)
- Feature work or refactoring
Full instructions: Night Watch Dependencies
PM, Reviewer, Vibe Test Runner, Vibe Test Debugger, Component Auditor, and Dependencies are assigned to Cindy's Navi. PM and Reviewer run once per night at 2am PST. Component Auditor runs at 3am PST. Vibe Test Runner runs at 4am PST and triggers the Vibe Test Debugger as its final step; a safety-net Debugger cron also runs at 7am PST (idempotent — it does nothing if the night's run issue is already closed). Dependencies runs weekly on Sundays at 6am PST. QA and Quartermaster run independently on DJ's Navi — QA focuses on PR health, Quartermaster on the import pipeline and ensuring @astryxdesign/core is consumable internally. Doc Reviewer runs on Joey's Navi with its own nightly schedule. Figma Librarian runs on Ernest's Navi once daily at 12pm PST (requires Mac + Figma MCP).
- Night Watch API Auditor — (Deprecated, merged into Component Auditor)
- Night Watch Theme Auditor — (Deprecated, merged into Component Auditor)
- Night Watch QA Journal — Operational log for QA role runs
- Night Watch Retrospective — Measures whether Night Watch comments provide value and adapts behavior
- Vibe Test Scores — Rolling nightly vibe-test score ledger
All roles share the same "What NOT to Do" constraints from the Night Watch Overview.
To add, remove, or reassign a role, see Night Watch Adding Roles. Update this page to reflect the change.