Skip to content

Night Watch Roles

Cindy Zhang edited this page Aug 11, 2026 · 14 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 and CLI 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
Dead Code Cindy's Navi (cixzhang) Detect and remove unused files, exports, types, and devDependencies

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: each night, take one component from the scores ledger queue, run a full audit of it (screenshots included), fix what has a clear right answer, re-audit to prove the fixes worked, and record the post-fix score. Findings it does not fix stay in the ledger row — it files no issues. The ledger is its only record of progress.

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
  • Keep the CLI's colocated docs (FunctionDoc/CommandDoc/SchemaDoc/EnumDoc) present and in sync with the live CLI via the drift harness and check:cli-structure (check 19)

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


Dead Code — Cindy's Navi

Goal: Keep the codebase free of dead code.

Scope:

  • Run knip (out-of-repo) to detect unused files, exports, types, and devDependencies
  • Auto-remove high-confidence internal dead code via one PR per night
  • Flag anything needing human judgment (duplicate exports, apps/* findings) instead of deleting

Does NOT do:

  • Touch runtime dependencies (that's Dependencies + Quartermaster)
  • Delete apps/* code (flag only; app graphs under-resolve)
  • Component convention fixes (that's Component Auditor)
  • Add anything to the repo's own toolchain (detector stays out-of-repo)
  • Merge PRs

Full instructions: Night Watch Dead Code


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. Dead Code runs once per night (hourly cron gated to one run per day). 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