Skip to content

Night Watch Roles

rubyycheung edited this page Jul 1, 2026 · 5 revisions

Night Watch — Role Assignments

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.

Active Roles

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

Role Details

QA — DJ's Navi

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


PM — Cindy's Navi

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


Reviewer — Cindy's Navi

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 :hover styles 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


Vibe Test Runner — Cindy's Navi

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

Vibe Test Debugger — Cindy's Navi

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


Component Auditor — Cindy's Navi

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, callback on{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


Quartermaster — DJ's Navi

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


Doc Reviewer — Joey's Navi

Goal: Keep component docs compatible with Storybook autodocs and catch content-level issues the type checker can't see.

Scope:

  • Validate JSDoc @example blocks for Storybook compatibility (no tsx tag, single example)
  • Detect prop documentation drift (TypeScript interface vs .doc.mjs props)
  • 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



Designer — Ernest's Navi

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.ts after 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


Figma Librarian — Ernest's Navi

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_figma MCP 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 (SLOT property + 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


Dependencies — Cindy's Navi

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


Coordination

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).

Related Pages

All roles share the same "What NOT to Do" constraints from the Night Watch Overview.

Changing Roles

To add, remove, or reassign a role, see Night Watch Adding Roles. Update this page to reflect the change.

Clone this wiki locally