Steps

  1. Create (or confirm) a Linear task: assignee, team label, priority, t-shirt estimate.
  2. Branch as feature/-<issue#>- in the repo’s ~/repos/ clone on the Mini.
  3. Build the change with local git identity (Hermes Agent hermes@ryevalley.co).
  4. Open the PR against dev (never main). Request review: Rafael always, Mehul too on frontend.
  5. Move the Linear task with the PR: In Progress -> In Review -> Done.
  6. Merge to dev ships nothing; dev -> main promotion deploys production via Vercel.

Michael’s standing rules for engineering work across Rye Valley (stated 2026-07-29).

PRs and task tracking

  • Every engineering PR must be tied to a project-specific Linear task, and the Linear status must be updated as the PR progresses (In Progress -> In Review -> Done).
  • Linear tasks created by agents must include: assignee (Rafael for eng work unless frontend-only, then Mehul), a team label (JOLT team has Bug/Feature/Improvement/Blocked), priority (1 Urgent / 2 High / 3 Medium / 4 Low, judged by blast radius), and an estimate (JOLT team uses t-shirt sizing, enabled 2026-07-29: XS=1 S=2 M=3 L=5 XL=8).
  • Initial PRs always target dev, never main. dev -> main promotion deploys production (Vercel deploys main). The jolt repo’s dev branch was created 2026-07-29.
  • Content-only changes (e.g. Lore article MDX PRs) follow their own editorial approval flow (Ben in Slack), not Linear.
  • Branch naming: feature/-<issue#>- (Linear-generated format).
  • Scope, stated 2026-07-30: this applies to EVERYTHING built, not just client/requested work. Any agent-built code, script, automation, or tool — whether Michael asked for it or the agent built it unprompted (e.g. a cron script, a one-off scraper, an internal dashboard) — gets a Linear task and a PR against a real git repo. No more untracked builds living only in a session transcript or a local file. If a new project doesn’t fit an existing repo, create a new repo under the RyeValley GitHub org for it (name it after the project) rather than skip tracking.
  • Pick the Linear team by ownership: use the entity’s existing team if there is one (RYE, LORE, JOLT, HC, MEGA); for internal/ops tooling with no obvious owning entity, use RYE.

Linear (CONNECTED 2026-07-29)

  • Workspace: ryevalley (michael@ryevalley.co key, LINEAR_API_KEY on the Mini).
  • Teams: RYE (Rye Valley), LORE, JOLT, HC (Hard Calls, renamed from Founding Journey/FJ 2026-07-30), MEGA (Megaphone).
  • JOLT team states: Backlog, Todo, In Progress, In Review, Done (+ Duplicate/Canceled).
  • First agent-created task: JOLT-50 (blog scaffold, tied to jolt PR #29).

Vercel (CONNECTED 2026-07-29)

  • VERCEL_TOKEN on the Mini. Team: megaphone-dev. Projects: lore, jolt, founding-journey, hard-calls, rye-valley-dashboard, jobs-lost, rye-valley, megaphone-io, content-to-capital.
  • Merge to main = production deploy; PRs get preview deployments.

People

  • Rafael, GitHub rafaelbrunotech: lead engineer, primary reviewer and QA for all PRs.
  • Mehul, GitHub mehuljariwala: frontend engineer, secondary reviewer on frontend/site PRs.
  • Request review from both on site PRs; Rafael’s approval is the gate.

Daily bug-hunt cron (added 2026-07-30)

Cron “RV: Daily bug hunt” on the Mini, weekdays 10am ET, rotates through 5 repos (jolt, megaphone, lore, hard-calls, hermes-ops), one per day. Finds a real bug and fixes it via the full PR workflow, or falls back to one small Linear backlog ticket if the repo is clean. Full engineering-standards doc: hermes-ops repo.

Michael correction, 2026-07-30: every task from this process MUST carry a t-shirt estimate and a specific named reviewer (never left unassigned), no exceptions except hermes-ops (documented self-review convention, no dedicated engineer yet). Also time-boxed the investigation phase after a run burned its full iteration budget reading code/tickets without ever committing to and executing a fix.

Persistent repo clones on the Mini (added 2026-07-30)

Michael: the Mac Mini is the standing workspace (“where we work from”), so every RyeValley repo should be cloned there persistently, not re-cloned to /tmp per task. All 13 RyeValley repos now live at ~/repos/ on the Mini: jolt, megaphone, lore, hard-calls, hermes-ops, jobs-lost, rye-valley, content-to-capital, megaphone-web-scraper, megaphone-ai, casper-and-friends, clawdy-architecture, plus ryevalley-brain and hermes-ops (symlinked into ~/repos/ from their original locations for consistency). Each has correct LOCAL git identity set (Hermes Agent hermes@ryevalley.co), never relying on global config (see git-identity-incident decision record).

Standing rule for any new RyeValley repo: clone it to ~/repos/ on the Mini immediately, set local git identity there, same day it is created or first touched. The daily bug-hunt cron works from these persistent clones (fetch + reset to base branch each run) rather than fresh-cloning, per hermes-ops PR #5.