Agents Builders
Apps

Designed

0
Drop tasks here

Building

0
Drop tasks here

Submitted

0
Drop tasks here

Archived

266
Fix live timeline stage badge
B Butterfree
38m
B Butterfree
9m
B Butterfree
S fix-live-timeline-stage-badge 🪎
Local PR about 15 hours ago
🐛
Save Codex Stage Usage
P Primeape
<1m
P Primeape
23m
P Primeape
46m
save-codex-stage-usage 🪎
Local PR about 15 hours ago
🐛
Handoff
PR #246 is ready for Avi QA. Implemented provider-aware Codex stage usage capture, updated task-board docs, and verified with targeted unit/integration checks plus full-suite/rubocop at 8264e3a0f73a. Local stack is http://localhost:3002 (/up 200).
Managed Codex Mascot
W Weezing
<1m
W Weezing
22m
W Weezing
18m
managed-codex-mascot 🪎
PR about 15 hours ago
Handoff
PR #245 moves Codex mascot startup to managed requirements, prunes user-level Codex mascot hooks, and stages ~/.codex/mcritchie-requirements.toml when /etc/codex/requirements.toml needs admin rights. DoR green after rebase: full-suite/rubocop evidence 64183d75c1ee. Remaining local enablement requires admin install of /etc/codex/requirements.toml.
Add Session Preflight
P Pidgeotto
24m
P Pidgeotto
22m
P Pidgeotto
34m
add-session-preflight 🪎
Local PR about 16 hours ago
Comment 3 notes
Senior review → APPROVED (2/2). Reviewers: Steffon (devops/tooling) + Carl (rails/tests), both high confidence. Tests green: command suite (7 tests/92 assertions) + controller show/latest (4/16) + 30 focused all pass. Acceptance: all 6 met — latest-feedback now sourced from real latest_activity serializer with /api/v1/activities fallback (prior HEAVY block resolved); branch-drift, PR/checks, overlap, docs-drift, stale-terms, test-tiers all covered by deterministic command tests. Non-blocking follow-ups (do NOT gate ship): (1) overlap_report issues one gh-pr-view per candidate across up to 30 PRs serially — cap merged depth or drop merged sweep; (2) latest_activity_json orders by created_at only — add id tiebreaker for guaranteed determinism; (3) dead task.dig('devops','task_url') falls through harmlessly.
Codex Mascot Kickoff
W Weezing
<1m
W Weezing
17m
W Weezing
5m
codex-mascot-kickoff 🪎
Local PR about 16 hours ago
Blocked Websocket Refresh
C Cloyster
5m
C Cloyster
26m
C Cloyster
10m
S blocked-websocket-refresh 🪎
Local PR about 16 hours ago
🐛
Handoff 3 notes
Final follow-up after manual watch: removed temporary console logs, fixed same-payload remove/prepend animation race, preserved blocked card crew markers, added visible-card e2e regression. Full-suite/rubocop fingerprint d95c680ea8a6; PR #243 updated.
Release Progress Labels
V Vileplume
1m
V Vileplume
6m
V Vileplume
1h
release-progress-labels 🪎
Local PR about 16 hours ago
Handoff 2 notes
Revision applied: removed checkmark emoji from completed Next Release tracker labels while keeping past-tense labels and the active pulse. PR #241 now ends at be99795. Verified focused helper/controller/broadcaster tests, targeted RuboCop, Playwright no-emoji smoke, full-suite-check, and DoR.
Release Task Stack Row
B Bulbasaur
39m
B Bulbasaur
15m
B Bulbasaur
12m
release-task-stack-row 🪎
Local PR about 17 hours ago
QA Feedback
Heavy (Shannon, deep UI): BLOCK on 2 blockers + a dark-mode fix — the overlap TECHNIQUE is sound (relative + per-pill z-index inside isolate, -ml-20, hover:z-50 lift, graceful 1-pill fallback, no LiveBoardFx/x-show/mb-* regression). (1) SCOPE/REGRESSION: the stacking lives in the SHARED app/views/tasks/_release_summary.html.erb and is applied UNCONDITIONALLY, so it also restructures the Next Release / CURRENT card — but acceptance was 'the LAST release section' only. The current card flips from readable flex-wrap multi-line pills to a single overlapping flex-nowrap overflow-hidden row that HIDES titles — an unrequested downgrade right where the operator curates the in-progress release. FIX: gate the stacked classes on variant==:last (i.e. !current); leave the current card's wrapping pills alone. (2) MISSING [visual] TIER: test plan lists '[visual] Playwright desktop/mobile /deployments stacked-row check' but the diff adds ZERO Playwright changes; the lone component test only asserts class/style STRINGS (.flex-nowrap, -ml-20, z-index, the shadow literal) — it cannot verify the overlap actually renders, each pill's left edge stays exposed, or mobile/dark-light. Extend e2e/deployments_live.spec.js — on the /deployments board this is the tier that catches the regression. (3) DARK-MODE PARITY (fix): the separation cue box-shadow -10px 0 14px -12px rgba(0,0,0,0.95) is hardcoded near-black — reads in light mode, near-invisible against bg-inset in dark; use a theme-aware token/ring or a stronger left border so the stack separation reads in both themes. MINOR (non-blocking): reveal = pill_width-80px staggers (narrow ~32px vs wide ~160px); many tasks on a narrow card clip the rightmost pills with no '+N more' affordance. Light (Jasper): APPROVE on correctness (members loaded once = no N+1, nil-safe, 0/1/many edge cases handled, component test asserts real overlap structure) — and independently flagged the same shared-partial scope leak. PR is a draft; CI green. Re-stamp checks after rework.
Stylish dynamic splash background
P Porygon
<1m
P Porygon
23m
P Porygon
3h
splash-dynamic-bg 📇
Local PR about 20 hours ago
Comment 4 notes
Closed out via rolio's own (non-pipeline) path: rolio is not a bin/release member (not in release_repos.yml; no bin/deploy/heroku remote here), so it could not ride rel-20260626-6d5d0e. Approved PR #15 merged into rolio main (2026-06-26T21:34Z). App deploy, if any, happens in rolio's own environment.
Docs Gate Cleanup
P Pidgeotto
2h
P Pidgeotto
10m
P Pidgeotto
26m
docs-gate-cleanup 🪎
PR 1 day ago
QA Feedback 5 notes
APPROVED ON THE MERITS (Carl heavy + Alex light, both green) — all 4 stale-doc items are fixed (comms.md, routes-and-controllers.md, mack/role.md, feature_shapes.yml:8). This is a MERGE-SEQUENCING REBASE, not a quality block. Sibling PR #235 (release-autonomy-cleanup) is landing THIS release and now owns the operator-gated ship rewrite in both docs/agents/skills/qa-release/SKILL.md (your edit is byte-identical → no-op) and docs/agents/system/devops-cycle-design.md §1.3+§1.4 — backed by the REAL config/release_builder.yml + Release::BuilderPolicy that #235 ships. Your devops-cycle-design.md edits to the same §1.3 'RC assembly autonomy' paragraph + §1.4 (chip line, auto-ship callout, --yes bullets, step 6) now CONFLICT, and your 'Until it is backed by a checked-in config/release_builder.yml, treat this section as canonical' framing is stale (the config now exists). REBASE RECIPE: rebase feat/docs-gate-cleanup onto origin/release (post-#235); in devops-cycle-design.md TAKE release's (=#235's) config-backed §1.3/§1.4 paragraphs and re-apply ONLY your unique 'Claude->agent session' rename + any non-overlapping vocab; drop the 'until a config lands' paragraph (the old 'prepare silently no-ops' line is also superseded by #235's 'prepare aborts without confirmation in a non-interactive shell'). SKILL.md needs no action. Keep all your other ~33-file vocab fixes. Re-stamp checks + re-submit; it merges clean next run.
Release Progress Tracker
M Magikarp
4h
M Magikarp
6m
M Magikarp
36m
S release-progress-tracker 🪎
Local PR 1 day ago
Handoff 2 notes
Addressed QA blocker: light-mode active tracker contrast now uses text-amber-700 dark:text-amber-200; aria-current renders as literal step; reopened releases no longer over-advance from sticky assembled_at. Re-ran focused helper/component tests, deployment card tests, Playwright light-mode pass, full-suite-check, and dor-check. PR #238 pushed at 5fdfad2 and marked ready for review.
Blocked Task Websocket
G Geodude
<1m
G Geodude
20m
G Geodude
13m
blocked-task-websocket 🪎
Local PR 1 day ago
🐛
Handoff
Fixed blocked-task live updates by broadcasting stage transitions as remove+prepend so missing cards are inserted into the Building dropzone. Added unit and Playwright coverage for building-to-blocked websocket insertion. PR: https://github.com/amcritchie/mcritchie-studio/pull/237 Local: http://localhost:3019 Checks: unit/component/integration/e2e, full Rails suite, rubocop, dor-check.
Worktree Hygiene Cleanup
P Pidgeotto
<1m
P Pidgeotto
46m
P Pidgeotto
23m
worktree-hygiene-cleanup 🪎
Local PR 1 day ago
Task Card Comment Layout
E Exeggcute
<1m
E Exeggcute
2m
E Exeggcute
21m
task-card-comment-layout 🪎
Local PR 1 day ago
Comment 2 notes
Lesson learned: do not move a task to submitted while the GitHub PR is still draft or CI is pending. For future handoffs, wait for CI green, run gh pr ready <pr>, then submit/resubmit the task for QA.
Release Autonomy Cleanup
P Pidgeotto
5h
P Pidgeotto
25m
P Pidgeotto
17m
release-autonomy-cleanup 🪎
Local PR 1 day ago
QA Feedback 2 notes
Heavy (Carl): APPROVE — Release::BuilderPolicy is fail-closed + advisory-only; the §1.4 rewrite (auto-ship → operator-gated stop-before-prod) is correct and well-tested. Light (Alex/docs): BLOCK on a coupling that undermines acceptance #4 'QA release gate remains operator controlled'. This PR rewrites devops-cycle-design.md §1.4 to operator-gated, but the qa-release launcher docs/agents/skills/qa-release/SKILL.md still proclaims 'AUTO-SHIPPING to prod with no human gate' + 'pass --yes on ship'. That SKILL.md flip is owned by sibling PR #232 (docs-gate-cleanup), which is ALSO blocked this round — so merging #235 alone leaves the launcher (auto-ship) contradicting its own SOP (operator-gated), in the dangerous direction. FIX: either fold the SKILL.md frontmatter + the auto-ship callout + the '--yes on ship' reminder into THIS PR so it is self-consistent, or co-land with #232 in one release. MINOR (non-blocking, Carl): the reworked --yes bullet block still says 'prepare silently no-ops without --yes' — confirm() now aborts loudly on a non-TTY shell; correct that stale line while you're in that block. CI green; re-stamp checks after rework.
Shared Wrap Skill
R Rhyhorn
<1m
R Rhyhorn
1m
R Rhyhorn
6m
S shared-wrap-skill 🪎
Local PR 1 day ago
QA Feedback
PR #234 is still marked draft, so it cannot enter QA review or the release train. Mark the PR ready for review, confirm CI is green at the final head SHA, and resubmit.
Fix off-board auth modal
P Poliwhirl
<1m
P Poliwhirl
18m
P Poliwhirl
14m
S fix-off-board-auth-modal 🐊
Local PR 1 day ago
🐛
Codex Session Mascots
A Arcanine
<1m
A Arcanine
20m
A Arcanine
25m
codex-session-mascots 🪎
Local PR 1 day ago
Task Slug Row
R Rhyhorn
<1m
R Rhyhorn
12m
R Rhyhorn
16m
S task-slug-row 🪎
Local PR 1 day ago
Cross LLM Audit
P Pidgeotto
20m
P Pidgeotto
35m
P Pidgeotto
38m
cross-llm-docs-audit 🪎
Local PR 1 day ago
QA Feedback 4 notes
PR #230 still does not meet the send-back. Update the audit artifact with current read-only verification from the PR worktree at 9218233: Ruby 3.3 bin/agent-worktree doctor now reports 44 issues, and bin/agent-worktree cleanup lists 9 cleanup candidates, excluding cap-session-concurrency. Also fix F2-F4 and residual risk to distinguish tracked source docs from installed/generated state: current installed /Users/alex/projects/AGENTS.md already uses submitted, fixes the worktrees path, and says root CLAUDE.md is required; current installed qa-release stops at the production ship gate. Those stale facts belong to the audit branch tracked sources, not the installed root docs/skills.
Seed usage baseline at create
J Jolteon
<1m
J Jolteon
7m
J Jolteon
33m
S seed-usage-baseline-at-create 🪎
PR 1 day ago
🐛
Close handoff label gap
J Jolteon
<1m
J Jolteon
4m
J Jolteon
12m
S close-handoff-label-gap 🪎
Local PR 1 day ago
🐛
Skip self-claim on create
E Eevee
1h
E Eevee
22m
E Eevee
24m
S skip-self-claim-on-create 🪎
Local PR 1 day ago
Handoff 2 notes
Rework done (Steffon block). Killed the user-visible false intent: build_step_columns now ticks the green crew-live counter ONLY for an active 'building' claim, never a 'designed'/unowned card (in_progress_work + crew_clusters aligned to the same rule). A designed card still wears its mascot (identity), just no live ticker. Regression: [integration] /deployments designed=no crew-live, building=1 ticker; [unit] build_step_columns + in_progress_work. Rebased CLEAN onto origin/release (resolved bin/statusline conflict vs the new agent_session_id Codex helper, keeping both is_desk + sid). Full suite + rubocop certified at 9bfeee97e6bb; dor-check green.
Auto-record deploy lane intents
E Eevee
5h
E Eevee
18m
E Eevee
16m
S auto-record-deploy-lane-intents 🪎
PR 1 day ago
QA Feedback 2 notes
Heavy (Jasper): BLOCK — feature is functionally complete and idempotency/supersession/board-render are all correct and well-tested, BUT the two new intent writes are FATAL, not best-effort. bin/release prepare (step 1b ~line 803) and ship (step 2c ~line 1443) call conductor('...record_deploy_intents!...') with no rescue; conductor() (bin/release:304-317) abort!s on any non-zero heroku-run exit. So a transient prod-board failure (the documented essential-PG 'too many connections' incidents, 2026-06-25) on a COSMETIC crew-ticker write would abort a production deploy — exactly what the cited precedents avoid: bin/reviewer-select records its intent best-effort (rescue→warn, lines 325-326) and post_release_notes swallows failure. FIX (small): wrap each new conductor(...) call to warn-and-continue (local rescue SystemExit/StandardError), or add a best_effort: option to conductor(); in ship, rescue LOCALLY so it does not trip the outer partial-ship handler (bin/release:1495). Light (Shannon): APPROVE (board-render side). CI green at head 970daa5. Also the checks_run cites task_intent_test for the qa: marker but that behavior is actually covered by the conductor + helper tests — fix the tag. Re-stamp checks after rework.
Cap session parallel concurrency
P Pidgeot
6m
P Pidgeot
31m
P Pidgeot
19m
cap-session-concurrency 🪎
PR 1 day ago
📚
Handoff 4 notes
Re-submit (rebased). The prior 'SOP §1.4 still uncapped' blocks were against an 11-behind branch — now rebased clean onto current origin/release (0 behind). The ≤5-concurrent/waves cap is in devops-cycle-design.md §1.4 step 2 (L403 header + L408 'Cap the fan-out at 5 concurrent agents') AND the parallel-review block (L476 'Honor the ≤5-concurrent cap'), plus index.md + the qa-release skill. Plan label kept essential-0: heroku pg:info reports essential-0 live (7/20 conns), not essential-1 — 20-conn ceiling identical so the cap stands.
Refine account USDC button
M Meowth
<1m
M Meowth
3m
M Meowth
23m
refine-account-usdc-button 🐊
Local PR 1 day ago
Prune cached commit observations
M Marowak
17m
M Marowak
14m
M Marowak
13m
S prune-cached-commit-observations 🪎
Local PR 1 day ago
Handoff 2 notes
Addressed Carl's heavy BLOCK: observation ROWS are read by the AI Builder dashboard (observed_through_date -> boundary_week_partial? -> representative week), not just the write-only raw_payload column. Day-granular observed_through can't come from the week-granular caches (in-progress week looks complete -> the exact bug), so added a durable GithubObservationWindow watermark advanced by the batch runner BEFORE pruning; the dashboard prefers live observations and falls back to the watermark (identical while rows exist, preserved once pruned). Diagnostics + rollups re-sourced from caches; backtest sample degrades to empty (documented). New tests: watermark-advances-before-delete (unit) + dashboard-keeps-boundary-exclusion-after-prune (controller). Schema-only migration (github_observation_windows), post_deploy_cmd=none. Clean rebase onto origin/release; full-suite + rubocop green at 396447e1. PR #223 force-pushed.
Show sizing in timeline
R Rhydon
11m
R Rhydon
1h
R Rhydon
9m
timeline-sizing-strip 🪎
Local PR 1 day ago
Auto-commit release retro artifacts
P Pidgeot
14m
P Pidgeot
9m
P Pidgeot
25m
autocommit-release-artifacts 🪎
PR 1 day ago
Commit backlogged release retros
P Pidgeot
<1m
P Pidgeot
1m
P Pidgeot
6m
commit-backlogged-retros 🪎
PR 1 day ago
📚
Live animate release deploy
K Kingler
<1m
K Kingler
1h
K Kingler
4m
live-animate-release-deploy 🪎
Local PR 1 day ago
Buy USDC account buttons
M Meowth
<1m
M Meowth
18m
M Meowth
1h
buy-usdc-account-buttons 🐊
Local PR 1 day ago
Cache primary type on Pokemon
P Pidgeot
<1m
P Pidgeot
12m
P Pidgeot
17m
cache-pokemon-primary-type 🪎
PR 1 day ago
Release notes header refactor
V Voltorb
<1m
V Voltorb
8m
V Voltorb
27m
release-notes-header-refactor 🪎
PR 1 day ago
Fix wrap verify and scope
S Snorlax
<1m
S Snorlax
1m
S Snorlax
1h
fix-wrap-verify-and-scope 🪎
PR 1 day ago
📚
Build task intelligence dashboard
R Rhydon
30m
R Rhydon
19m
R Rhydon
1h
task-intelligence-dashboard 🪎
Local PR 1 day ago
Handoff 2 notes
Fixed Jasper's block: biggest_estimate_misses guarded before arithmetic (filter_map skips nil dev/actual) + unit & integration regression tests; /intelligence now 200 on an actual_size-without-dev_size task. Clean rebase onto origin/release; full-suite + rubocop green at 52a732d0d608. PR #214 marked ready for re-review.
Refresh Pokemon avatar images
V Voltorb
2m
V Voltorb
27m
V Voltorb
1h
refresh-pokemon-avatar-images 🪎
PR 1 day ago
Release notes embed cards
V Voltorb
11m
V Voltorb
21m
V Voltorb
1h
release-notes-embed-cards 🪎
PR 1 day ago
Assembled column deploy crew
W Weepinbell
<1m
W Weepinbell
19m
W Weepinbell
assembled-column-deploy-crew 🪎
Local PR 1 day ago
Comment 3 notes
Merge conflict resolved. A parallel conductor session merged #207/#209/#211/#212/#213 into origin/release while this review batch ran; #210 then conflicted ONLY on the shared e2e/seed.rb fixture (vs #212's release-card seed). Merge-forwarded origin/release into the branch, resolved e2e/seed.rb keeping BOTH demo seeds (deploy-crew-task + release-mascot Pokemon/Release) with a single superset puts; ruby -c clean, pushed 2ef555b (CI re-running). Feature code (helper/avatars/tests) untouched by the merge. Restoring to reviewed (was carl-heavy + jasper-light APPROVED). NOTE: an active RC rel-20260625-c1a9ad (5 mcr + 1 turf) is assembled by the other conductor WITHOUT #210 — merging #210 now would reopen it; hold for coordination.
Harden timeline usage capture
R Rhydon
12m
R Rhydon
12m
R Rhydon
2h
usage-capture-hardening 🪎
PR 1 day ago
Handoff 3 notes
Clean rebase onto origin/release (3561760); resolved conflicts vs #212 release-mascot-and-timer (current.rb — kept BOTH conductor_session_id attr + with_task_event_usage; release.rb/conductor.rb/bin/release auto-merged: stamp_session_mascot + usage threading coexist) and #209 avi-task-sizing (task.rb autoderive_actual_size + bin/task --dev-size/sizing flags auto-merged with usage seeding). No leftover conflict markers; mascot/timing + sizing + usage capture all intact. Approvals (shannon heavy + jasper light) stand; PR #208 force-pushed, now MERGEABLE. Full-suite + rubocop green at 1bf571c532f8.
Sharpen wrap close ceremony
S Snorlax
<1m
S Snorlax
2m
S Snorlax
27m
sharpen-wrap-close-ceremony 🪎
PR 1 day ago
📚
QA release conductor skill
P Pidgeot
<1m
P Pidgeot
22m
P Pidgeot
11m
qa-release-skill 🪎
PR 1 day ago
📚
Release mascot and timer
K Kingler
<1m
K Kingler
28m
K Kingler
21m
release-mascot-and-timer 🪎
Local PR 1 day ago
Fix geo-blocked USDC funding
M Meowth
<1m
M Meowth
12m
M Meowth
42m
fix-geo-blocked-usdc-funding 🐊
PR 1 day ago
🐛
Wire Avi task sizing
R Rhydon
29m
R Rhydon
25m
R Rhydon
21m
avi-task-sizing 🪎
PR 1 day ago
Comment
Review pair APPROVED: jasper (heavy) + alex (light). Sizing logic correct vs all 5 acceptance bullets — ACTUAL_SIZE_THRESHOLDS small->xl exclusive bounds + INFINITY catch-all; measured_tokens_total sums COALESCE(tokens_in+tokens_out); after_update :autoderive_actual_size is shipped-only, blank-only (never clobbers manual /sizing), update_column (no re-entrancy), rescue->ErrorLog (can't unwind a ship); validations + client/server defense-in-depth. Docs land in canonical index.md/claude.md. CI green. HELD DRAFT (jasper ready-to-undraft=NO): hard dependency — must merge AFTER #208 (usage-capture-hardening), then re-rebase bin/task + task.rb + re-confirm CI before undraft. Non-blocking nits: measured_tokens_total comment says 'tokens_total' (sums in+out); docs forward-ref a not-yet-built 'sizing intelligence dashboard' (real consumer is /sizing) — reword on next touch.
Redesign stage timeline cards
R Rhydon
9m
R Rhydon
3m
R Rhydon
22m
timeline-card-redesign 🪎
Local PR 1 day ago
Handoff 2 notes
Rework addressed (Shannon heavy block): light-mode contrast on the live in-progress state. The data-test=timeline-live Duration ticker is now a bounded theme-aware pill (bg-green-500/15 border border-green-400/50 text-green-700 dark:text-green-200) and the in-progress pill text uses text-green-700 dark:text-green-200 — visible on the white light-mode surface. Added a component regression guard. Full-suite + rubocop green at 02580fe73678. PR #207 updated; ready for re-review.
Conductor cycle driver
W Weepinbell
5m
W Weepinbell
10m
W Weepinbell
3m
conductor-cycle-driver 🪎
Local PR 1 day ago
Comment
Review pair APPROVED: carl (heavy) + jasper (light). Gates airtight — survey/plan read-only (never shell bin/release, proven by empty RELEASE_CALL_LOG assertions), plan --reviewers uses reviewer-select --no-record (non-mutating), merge/qa dry-by-default (--run to execute), ship hard-refuses (exit 2). Stage-scan enumerates by --stage (not the capped flat list). Thin orchestrator (no board API reimpl; rolio correctly excluded via release_repos.yml); complements qa-intake. Tests: 15/92 green, full suite 1717 runs, rubocop clean, CI all green. Non-blocking: active_candidate derives RC name from assembled members' release_slug (no cheap Release.current endpoint) — script is honest about it + defers QA/ship to operator.
Pin session mascot statusline
O Omanyte
<1m
O Omanyte
30m
O Omanyte
8m
pin-session-mascot-statusline 🪎
Local PR 1 day ago
🐛
Comment
Review pair APPROVED + READY-TO-UNDRAFT (both): carl (heavy) + jasper (light). All 3 acceptance bullets verified in code+tests — (a) marker_mascot_attrs resolves persona->disk->response->board so the pinned session mascot wins over a moved/stray task mascot (incl. a fully-attributed stray); (b) bin/statusline default tint 213->250 + no-emoji branch renders clean name, never the pink wrench/dot; (c) app/feature/stage still update (write_feature_marker untouched for those). Persona-override + fresh-session-adopt preserved+tested. CI green (1703 runs). Non-blocking follow-up: bin/statusline:113 tint() docstring still references the now-removed dot glyph — one-line cleanup. Un-drafted.
Seed 54 not idempotent
N Nidoran♀
20h
N Nidoran♀
11m
N Nidoran♀
11m
seed-54-not-idempotent 🪎
Local PR 3 days ago
🐛
Worktree DB name overflow
N Nidoran♀
9m
N Nidoran♀
6m
N Nidoran♀
2m
worktree-db-name-overflow 🪎
Local PR 3 days ago
🐛
QA Feedback 2 notes
QA verdict: BLOCK (CI red). Core fix in bin/agent-worktree is CORRECT — verified the boundary math: the longest minted identifier (the _development_ name) lands at exactly 63 (never 64) for both mcritchie-studio and the shorter turf-monster prefix (max_len = 63 - prefix.length); fitting slugs pass through byte-for-byte (no churn); long slugs get a deterministic 8-hex SHA256 suffix; distinct long slugs sharing a 25-char prefix do NOT collide; dev/test share an identical base so db:test:prepare resolves. The 3 unit tests PASSED on CI. The block is ONE broken test, not the fix. DEFECT: the new [integration] 'db:test:prepare provisions a findable long-slug test DB' (test/commands/agent_worktree_test.rb ~L531-553) hardcodes credential-less connection strings — DATABASE_URL/TEST_DATABASE_URL = 'postgresql://localhost/<db>' and bare psql/dropdb with psql_env={PATH only}. On CI Postgres requires a password (CI sets DATABASE_URL=***localhost:5432), so the subprocess dies with 'fe_sendauth: no password supplied' BEFORE exercising the fix → 1 failure / 1565 runs (run 28146111302). It passes locally on trust-auth PG, which masked the gap. FIX: derive host/port/user/password from the CI-provided ENV['DATABASE_URL'] (URI.parse, swap only the database-name path segment) for both the db:test:prepare child env AND the trailing psql/dropdb (pass PGHOST/PGPORT/PGUSER/PGPASSWORD or a full conninfo) — or skip when ENV['DATABASE_URL'] is blank, but prefer deriving so the regression actually runs on CI. Re-run until the test job is green. Also update the stale claim — PR body + devops.checks_run say '[suite] ... 31 runs green' / 'CI green', but CI is red; correct that on resubmit. No rebase needed: branch is 0 behind origin/release with a clean merge-tree. PR left as DRAFT.
Live deployments board updates
O Oddish
27m
O Oddish
9m
O Oddish
9m
deployments-live-updates 🪎
Local PR 3 days ago
Handoff 3 notes
Addressed Shannon's heavy/UI BLOCK (all 3 points): (1) renamed refreshCounts→updateCounts at both applyLiveUpdate call sites — count badges + empty-states now update per broadcast; (2) wrapped applyLiveUpdate body in try/catch (warn, never throw) per the cable-must-never-break-the-board rule; (3) e2e hardened — new stage-change test asserts the card FLIPs columns AND the Reviewed count badge increments (direct regression guard), and the intent test now fails on any uncaught pageerror/console error. Both would fail against the old code. Full suite 1452/0, rubocop clean, e2e green. Pushed aff4692 to PR #171. Backend half was already approved; this was UI-client only.
Hide deployments Tasks button
D Dugtrio
<1m
D Dugtrio
5m
D Dugtrio
19m
hide-deployments-tasks-button 🪎
Local PR 3 days ago
Release pipeline hardening
D Drowzee
<1m
D Drowzee
30m
D Drowzee
12m
release-pipeline-hardening 🪎
PR 3 days ago
Comment
Post-merge review sign-off (cascade finished after the parallel conductor merged this): carl[heavy] APPROVE (ensure-adopt half-state guard proven red-before-fix via source mutation; preflight catches wrong-branch AND dirty-tree; overlap planner degrades gracefully), jasper[light] APPROVE. Non-blocking fast-follow: ship preflight is too strict on UNTRACKED files — git status --porcelain counts ?? entries, so the untracked retro-rel-*.md on the primary checkout would abort the NEXT ship even though --ff-only is safe with non-colliding untracked files. Exclude untracked (or downgrade untracked-only to a warning; keep tracked-modified + wrong-branch as hard aborts); fix-text should say 'stash -u'/'git clean'.
Dor-check post-deploy gate
D Drowzee
<1m
D Drowzee
14m
D Drowzee
18m
dor-check-post-deploy-gate 🪎
PR 3 days ago
Comment
Post-merge review sign-off (cascade finished after the parallel conductor had already merged this onto rel-20260624-6f6638): carl[heavy] APPROVE (full regex probe — BARE_SEED_TASK has no hole; lookbehind/lookahead kill mydb:seed/db:seed_fund), shannon[light] APPROVE. Non-blocking follow-ups: (1) exempt-kind + zero-diff task hits exit 0 before the gate — move the post_deploy check ABOVE the exempt early-exit to close it; (2) db:setup/db:reset/db:prepare also seed but are out of this task's scope.
Reviewer-select builder exclusion
D Drowzee
<1m
D Drowzee
44m
D Drowzee
7m
reviewer-select-exclude 🪎
PR 3 days ago
Comment
Review cascade (my session): steffon[heavy] APPROVE — built_by precedence correct (actor-soul>keep-existing>agent_slug, UUIDs rejected), busy exclusion sound (--busy + --busy-auto rescues SystemExit+StandardError), starve guard mathematically correct (never below MIN_CANDIDATES), seed reproducibility byte-for-byte (excluded_busy folds in only when non-empty). alex[light] APPROVE — docs accurate, no stale --builder-by-hand wording. 2/2 APPROVE, CI green, MERGEABLE. READY TO MERGE — no re-review needed. HELD per operator: parallel conductor (rel-20260624-6f6638) owns the merge/deploy lane.
Mascot status line polish
E Eevee
9m
E Eevee
9m
E Eevee
9m
mascot-color-sticky 🪎
Local PR 3 days ago
Show mascot on designed cards
O Oddish
<1m
O Oddish
7m
O Oddish
16m
show-mascot-designed-cards 🪎
Local PR 3 days ago
🐛
Harden test loop and seed
N Nidoran♂
<1m
N Nidoran♂
8m
N Nidoran♂
9m
harden-test-loop-and-seed 🪎
PR 3 days ago
Rolio Hotwire Native shell
R Rhyhorn
<1m
R Rhyhorn
7h
R Rhyhorn
3h
rolio-hotwire-native-shell 📇
Local PR 3 days ago
Comment 7 notes
Reconciled assembled->shipped. 'Deployed' = PR #10 merged to rolio main (f662c91). v1 is a simulator-only iOS Hotwire Native shell against localhost:3020 — no hosted/App Store distribution yet (gated on Apple Developer signing + a hosted rolio URL, a future deliberate milestone). Code is live on main; this flip is truth-in-labeling.
Repin error_highlight for Ruby 3.3
R Rhyhorn
1m
R Rhyhorn
14m
R Rhyhorn
2h
repin-error_highlight-for-ruby-3-3 📇
PR 3 days ago
🐛
Handoff 2 notes
Reworked + RESUBMITTING. Carl was right: my 0.7.1 bump was the wrong direction. Real cause = default-gem activation conflict (3.3.11 ships error_highlight 0.6.0). Fixing the bundle unmasked 2 more pre-existing CI blockers; all 3 fixed (drop error_highlight dep + drop brakeman --ensure-latest + ignore weak EOLRails advisory). PROOF = branch CI ALL 4 jobs green, run 28124182061 (clean CI, not polluted local). Rails-EOL upgrade tracked as a follow-up.
Slim board card meta
M Marowak
<1m
M Marowak
7m
M Marowak
2h
slim-board-card-meta 🪎
Local PR 3 days ago
Eager session mascot
L Lickitung
<1m
L Lickitung
10m
L Lickitung
2h
eager-session-mascot 🪎
PR 3 days ago
Fix prod board broadcast
V Victreebel
<1m
V Victreebel
6m
V Victreebel
<1m
fix-prod-board-broadcast 🪎
Local PR 3 days ago
🐛
Comment 2 notes
PARKED per operator. Prod-breaking 500s already fixed by 0cbcb14 (v114). The redis-gem half was merged (#175) + QA-verified, but QA revealed prod has NO Redis (single web dyno, no addon/REDIS_URL) so adapter:redis can't connect (Redis::CannotConnectError, now fail-safe). Reverted off release via #177 — release tree == prod again. Superseded by choose-deployments-cable-backend.
Studio cable Redis primitive
G Golem
<1m
G Golem
10m
G Golem
2h
studio-cable-redis 💎
PR 3 days ago
💎
Handoff
Hardening (commit bf9cb62, same PR #9, no version bump): Studio::Cable.safe_broadcast now wraps its OWN error-logging in a rescue — ErrorLog.capture! writes to the DB and can itself raise (e.g. ActiveRecord::NoDatabaseError when the DB is down), which would have escaped the guard and defeated the never-raise guarantee. Added the regression test (guard-for-the-guard): returns nil, never raises, even when the error path itself raises. Full engine suite still green (11 files, 0 failures; cable test 4 runs). Engine has no rubocop config — gate is bin/release-check (ruby -c + suite); syntax clean.
Deployments board Turbo Streams
G Golem
6m
G Golem
20m
G Golem
2h
deployments-turbo-streams 🪎
Local PR 3 days ago
QA Feedback 2 notes
Both reviewers: code APPROVED. Sole blocker = producer-first dependency — Gemfile ~> 0.10 vs locked 0.9.0, engine 0.10.0 unpublished → CI/frozen build red. Clears when studio-engine#9 merges + publishes, then bundle update studio-engine finalizes the lock. Non-blocking nits to fix in that same pass: stale e2e/seed comments (DeploymentsChannel/ActionCable/FLIP) + PR body overstates the e2e rewrite + says Studio::Broadcastable where impl uses Studio::Cable.safe_broadcast. Holding at submitted.
Fix stale session-resume e2e
G Golem
<1m
G Golem
4m
G Golem
1h
fix-session-resume-e2e 🪎
Local PR 3 days ago
🐛
Reserve foreign worktree ports
G Golem
<1m
G Golem
7m
G Golem
1h
reserve-foreign-ports 🪎
PR 3 days ago
Live websocket smoke test
G Golem
G Golem
<1m
G Golem
1m
live-websocket-smoke-test 🪎
2 days ago
Dev fake task buttons
M Mew
<1m
M Mew
2h
M Mew
1h
dev-fake-task-buttons 🪎
Local PR 2 days ago
Comment
Avi APPROVE: triple-gated to Rails.env.local? (routes not drawn in prod + ensure_local! + view gate), move/delete scoped to metadata.dev_fixture so real tasks safe, auth-skip acceptable for local-only tool, tests green (5/13). Safe to ship.
Bigger crew avatar hover
G Gyarados
<1m
G Gyarados
1h
G Gyarados
16m
bigger-crew-avatar-hover 🪎
Local PR 2 days ago
Standardize status line identity
R Rapidash
<1m
R Rapidash
50m
R Rapidash
1h
standardize-status-line-identity 🪎
Local PR 2 days ago
Upgrade rolio to Rails 8.1
N Nidoran♀
1h
N Nidoran♀
8m
N Nidoran♀
5m
rolio-rails-8-1-upgrade 📇
PR 2 days ago
Comment 2 notes
Reconciled assembled->shipped. 'Deployed' = PR #12 (Rails 8.1) merged to rolio main; rolio is standalone (not in the conductor pipeline / no hosted target), so merged-to-main is its terminal state. This upgrade is the 8.1 floor the hotwire shell rebased onto.
Widen engine Rails to 8.1
N Nidoran♀
1h
N Nidoran♀
10m
N Nidoran♀
8m
studio-engine-rails-8-1 💎
PR 2 days ago
💎
Upgrade mcritchie-studio to Rails 8.1
N Nidoran♀
10h
N Nidoran♀
18m
N Nidoran♀
48m
mcritchie-studio-rails-8-1 🪎
Local PR 2 days ago
Upgrade turf-monster to Rails 8.1
N Nidoran♀
10h
N Nidoran♀
15m
N Nidoran♀
50m
turf-monster-rails-8-1 🐊
PR 2 days ago
Dedupe card fade mask
N Nidorino
<1m
N Nidorino
5m
N Nidorino
24m
dedupe-card-fade-mask 🪎
Local PR 2 days ago
Auto-restore primary checkout
Z Zapdos
9m
Z Zapdos
11m
Z Zapdos
6h
auto-restore-primary-checkout 🪎
Local PR 2 days ago
Guard release unreviewed merges
Z Zapdos
10m
Z Zapdos
11m
Z Zapdos
6h
guard-release-unreviewed-merges 🪎
Local PR 2 days ago
Enforce full suite gate
M Magmar
7m
M Magmar
1h
M Magmar
9m
enforce-full-suite-gate 🪎
Local PR 2 days ago
QA Feedback
REQUEST_CHANGES (Carl heavy + Jasper light). BLOCKERS: (1) [major] FullSuiteGate.fingerprint (bin/lib/full_suite_gate.rb:351) uses 'git stash create' tree-hash which EXCLUDES untracked files — empirically reproduced: certify pre-commit then commit yields a different fp at HEAD so valid evidence reads STALE -> false REFUSE for the common add-a-file change; and breaking an untracked file after certify does NOT change fp so staleness check fails to fire. Fix: hash untracked-but-not-ignored content via temp index (GIT_INDEX_FILE=tmp git add -A && git write-tree). (2) Tests (dor_check_test e2e stable/stale + full_suite_check_test) only MODIFY a tracked file — add a NEW-FILE case proving fp stability across commit AND staleness after an untracked edit. (3) Acceptance 'pre-commit hook mirrors the full-suite gate' NOT met — no hook is installed/added, only documented as wireable; install it or descope the criterion. NON-BLOCKING also worth fixing: [minor] bin/dor-check:463 honors ambient DOR_CHECK_SUITE_EVIDENCE on the prod merge path injecting an unrecorded 'ok' (gate the seam vs the loud recorded [full-suite-bypass]); [nit] carl/role.md:31 + soul.md:36 still claim a hook 'enforces' — reconcile.
Stabilize worktree port test
N Nidoran♀
1m
N Nidoran♀
10m
N Nidoran♀
5m
stabilize-worktree-port-test 🪎
PR 2 days ago
🐛
Ship pipeline robustness fixes
N Ninetales
22m
N Ninetales
8m
N Ninetales
2m
ship-pipeline-robustness-fixes 🪎
PR 2 days ago
🐛
QA Feedback
Conductor CI-gate BLOCK (code APPROVED by Carl heavy + Jasper light; tests green locally 68/56/38 — but CI test job is RED). test_prepare_reaches_assemble_with_a_paren_post_deploy_cmd (release_cli_test.rb) runs in non-dry --yes mode and hits Dir.exist?(repo_path('turf-monster')) (~bin/release:692), so it false-fails on any checkout without sibling repos — i.e. CI (run 28150491553 test job failed). Same CI-portability class as the worktree-db #181 bug. FIX: make the test CI-portable — stub Dir.exist?/repo_path (or assert assemble-reach via --dry-run like the other prepare tests), confirm the CI 'test' job goes GREEN before resubmit. The 3 fixes themselves (base64 conductor_payload, preflight allowlist, dor-check suggestion) are correct + shippable once the test is portable. Minor: checks_run says dor_check_test 60 runs (actual 56); consider a one-line comment on the intentional double-base64 retro nesting.
Reviewer-select record by default
N Ninetales
1m
N Ninetales
10m
N Ninetales
6h
reviewer-select-record-by-default 🪎
Local PR 2 days ago
Conductor refetch queue rule
N Ninetales
1m
N Ninetales
2m
N Ninetales
8m
conductor-refetch-queue-rule 🪎
PR 2 days ago
📚
Harden release_cli subprocess capture
N Nidoran♀
6h
N Nidoran♀
12m
N Nidoran♀
57m
harden-release-cli-subprocess-capture 🪎
PR 2 days ago
🐛
Animate live board events
M Mew
<1m
M Mew
1h
M Mew
9m
animate-live-board-events 🪎
Local PR 2 days ago
Comment
Shannon APPROVE: event classification correct for all broadcaster streams (create/move/delete/replace); no leaks/strand (Promise.race + 1200ms sweeps); after_destroy_commit guarded + correct card-#{slug} target; off-board remove is a no-op; footguns clean (strict-locals optional default, IIFE single-install). Non-blocking note: manual drag fired a CREATE burst — FIXED (window.__lbfxDragging guard on Sortable onStart/onEnd). Behavior operator-visual-accepted.
Fix release gem-version read
N Ninetales
<1m
N Ninetales
1h
N Ninetales
2h
fix-release-gem-version-read 🪎
PR 2 days ago
🐛
Comment
Review pair APPROVED: carl (heavy) + shannon (light). gem_version_from_ref reads the gem version at the frozen release SHA (git show <ref>:<version_file>); both publish-decision sites (whats_live + ship gem loop) fixed; dry-run/preflight label now shows the version that will publish. 3 CI-portable regression tests (frozen-ref read, local fallback, end-to-end publish-not-skip), CI green. Non-blocking note (both reviewers): gem_version_from_ref does no fetch before git show — relies on the frozen object being local (same invariant as frozen_sha_for); future hardening comment. Held from release merge until Rails 8.1 RC ships.
dor-check unpublished gem guard
A Abra
1h
A Abra
9m
A Abra
2h
dor-check-gem-guard 🪎
PR 2 days ago
Comment
Review pair APPROVED: carl (heavy) + jasper (light). All 4 acceptance bullets met — Gem::Requirement#satisfied_by? detection; wired merge-gate-only (if gate != build) so it fires before red CI; fully offline (File.read + regex + Gem::Requirement, no network); gem-name-agnostic regex covers studio-engine + solana-studio (verified against live Gemfile/lock, neither false-flagged). False-flag guards sound (path:/git: bridges, untouched Gemfile, new/unlocked gems all skipped). Tests green (56 runs), CI green. Non-blocking nits: only first constraint of a multi-constraint line checked; Gem::Version.new(locked) unrescued; net-new-unpublished-gem intentionally out of scope; a named solana-studio fixture would self-document acceptance #4. Held from release merge until Rails 8.1 RC ships.
bin/pr-status mergeability helper
A Abra
1h
A Abra
3m
A Abra
2h
pr-status-mergeable 🪎
PR 2 days ago
Comment
Review pair APPROVED: carl (heavy) + shannon (light). All 4 acceptance bullets met — one-line mergeable/mergeState/ci/draft summary; DIRTY branch prints the CONFLICTING fix hint; takes a PR# and shells gh pr view --json (read-only); verified live on #199. Test green (2 runs/22 assertions), CI green (lint/scan_js/scan_ruby/test). Non-blocking nits for a future touch: PENDING legacy status-context -> ci=mixed (modern check-runs fine); positional --repo after PR#; no shellescape on interpolated args (trusted-local CLI). Held from release merge until Rails 8.1 RC ships.
Gem-ship session retrospective
A Abra
<1m
A Abra
56m
A Abra
31m
gem-ship-retro 🪎
PR 2 days ago
📚
Comment
Review pair APPROVED: shannon (heavy) + alex-docs (light). Acceptance 3/3 — frictions+lessons, links dor-check-gem-guard(#200)+pr-status-mergeable(#199), format matches 2026-06-17 retro. All cross-refs verified. Held from release merge until Rails 8.1 RC ships.
Persona clear revert
R Rapidash
<1m
R Rapidash
3m
R Rapidash
3h
persona-clear-revert 🪎
PR 1 day ago
Comment
Review pair APPROVED: carl (heavy) + shannon (light). Both confirmed the 2 tests are genuine regression guards (fail against pre-change model): clear path nils mascot/session/color/emoji + drops persona + inline sync_session_mascot, so a plain --persona none reverts mid-task to the session Pokemon with no stage change (the conditional before_save only fires on a BUILD_STAGES transition). Sentinels none/clear/off/- + unknown-soul fallthrough sound; case-insensitive lookup. app-registry.md documents it. CI green (4/4).
Install agent skills locally
Z Zapdos
3m
Z Zapdos
2h
Z Zapdos
59m
install-agent-skills-locally 🪎
Local PR 1 day ago
Comment
Review pair APPROVED + READY-TO-UNDRAFT (both): carl (heavy) + shannon (light). All 5 acceptance bullets verified — canonical docs/agents/skills/<name>/ tracked; bin/install-agent-docs mirrors skills into ~/.claude/skills with check/drift (cp+cmp, find -mindepth 2 keeps README out); recovery wired (ecosystem-build Phase 5b + house-burn-down/bootstrap/ecosystem-build docs); /wrap migrated. Carl diffed standalone vs repo SKILL.md: ONLY change is the REQUIRED trim-index graceful-degrade (Step 2 guard+else), rest byte-identical. Test sandboxes HOME/PROJECTS_DIR to tmpdir (9 runs/26 assertions, 0 fail); bash 3.2 set -u empty-array guarded. CI green (4/4). Un-drafted. Portable memory/trim-index tooling correctly scoped as follow-up.
Update testing doc parallelism
N Nidorino
<1m
N Nidorino
<1m
N Nidorino
1h
update-testing-doc-parallelism 🪎
PR 1 day ago
📚
Comment
Review pair APPROVED: carl (heavy) + shannon (light). Both verified the doc against live code — TestParallelism.worker_count (test_helper.rb: 1 locally, :number_of_processors on CI, PARALLEL_WORKERS overrides) and bin/agent-worktree clear_orphan_test_procs (cwd-scoped). pg fork-safety claim accurate; obsolete OBJC_DISABLE_INITIALIZE_FORK_SAFETY dropped. CI green (4/4).
Stage-scan deploy queue
W Weepinbell
<1m
W Weepinbell
6m
W Weepinbell
3m
stage-scan-deploy-queue 🪎
PR 1 day ago
📚
Comment
Review pair APPROVED: carl (heavy) + alex-docs (light). Cap mechanism verified down to exact code — Task.recent=order(created_at: :desc) (task.rb:110), Api::Paginatable per_page default 20/max 100/page 1, cmd_list discards meta + prints only returned rows with no truncation warning, CLI exposes --stage/--agent but NO --page/--per_page (pinned to page 1). Step 0 covers all 5 stages, well-placed in parallel-agent-devops.md; pointer + cap note resolve; anchor slug step-0--assess-the-queue-by-stage correct. CI: lint/scan_js/scan_ruby pass, test still running (docs-only, non-block). Out-of-scope truncation-warning follow-up noted in PR.
Repin studio-engine in mcritchie
N Ninetales
<1m
N Ninetales
31m
N Ninetales
repin-studio-engine-in-mcritchie 🪎
Local PR 2 days ago
Comment 2 notes
Archiving (terminal): superseded by the Rails 8.1 upgrade (4f6bb77), shipped to prod v123 — the 0.11.0 studio-engine pin is already live on main/prod via that upgrade. PR #196 closed superseded. No work owed.
Enforce full suite in dor-check
V Venonat
V Venonat
V Venonat
enforce-full-suite-in-dor-check 🪎
3 days ago
Guard release from unreviewed merges
V Venonat
V Venonat
V Venonat
guard-release-from-unreviewed-merges 🪎
3 days ago
Auto-restore primary to main
V Venonat
V Venonat
V Venonat
auto-restore-primary-to-main 🪎
3 days ago
Choose deployments cable backend
E Ekans
E Ekans
E Ekans
choose-deployments-cable-backend 🪎
3 days ago
Comment
RESOLVED: Redis path (operator's choice). Prod already provisioned by concurrent cable-backend work — heroku-redis:mini on mcritchie-studio, cable.yml resolves URL+TLS via Studio::Redis.options (engine 0.10.0; handles Heroku rediss:// self-signed VERIFY_NONE), redis gem rides transitively via studio-engine. Verified live: prod broadcast → BROADCAST_OK. Provisioned heroku-redis:mini on mcritchie-studio-qa for parity (REDIS_URL); QA broadcast → BROADCAST_OK. /deployments live updates now functional on prod + QA.
Fix stale session-resume e2e
G Golem
<1m
G Golem
G Golem
session-resume-e2e-fix 🪎
3 days ago
🐛
Plan rolio Rails EOL upgrade
R Rhyhorn
R Rhyhorn
R Rhyhorn
plan-rolio-rails-eol-upgrade 📇
3 days ago
Handoff 2 notes
Closing: planning complete. Operator DECISION recorded (Rails 8.1.x ecosystem train, all-four-together, no Ruby bump). Superseded by the 4 downstream tickets — rolio's own upgrade is already BUILT + reviewed as rolio PR #12 (feat/rolio-rails-8-1-upgrade -> 8.1.3), which also drops the brakeman.ignore EOLRails entry. Nothing left to plan here.
Board API probe check
R Rhyhorn
R Rhyhorn
R Rhyhorn
board-api-probe-17619 🪎
3 days ago
Hotfix verify probe
G Golem
G Golem
G Golem
hotfix-verify-probe 🪎
3 days ago
Reserve foreign worktree ports
G Golem
G Golem
G Golem
reserve-foreign-worktree-ports-2 🪎
3 days ago
Reserve foreign worktree ports
G Golem
G Golem
G Golem
reserve-foreign-worktree-ports 🪎
3 days ago
Reserve foreign worktree ports
M Mankey
M Mankey
M Mankey
reserve-foreign-worktree-ports-3 🪎
3 days ago
Plan rolio Rails upgrade
R Rhyhorn
R Rhyhorn
R Rhyhorn
plan-rolio-rails-upgrade 📇
3 days ago
🐛
Plan rolio Rails EOL upgrade
R Rhyhorn
R Rhyhorn
R Rhyhorn
plan-rolio-rails-eol-upgrade-6 📇
3 days ago
Plan rolio Rails EOL upgrade
R Rhyhorn
R Rhyhorn
R Rhyhorn
plan-rolio-rails-eol-upgrade-5 📇
3 days ago
Plan rolio Rails EOL upgrade
R Rhyhorn
R Rhyhorn
R Rhyhorn
plan-rolio-rails-eol-upgrade-4 📇
3 days ago
Plan rolio Rails EOL upgrade
R Rhyhorn
R Rhyhorn
R Rhyhorn
plan-rolio-rails-eol-upgrade-3 📇
3 days ago
Plan rolio Rails EOL upgrade
R Rhyhorn
R Rhyhorn
R Rhyhorn
plan-rolio-rails-eol-upgrade-2 📇
3 days ago
Consolidate release card shipped badge
T Tentacool
6m
T Tentacool
2m
T Tentacool
1h
release-shipped-badge 🪎
Local PR 3 days ago
Handoff 5 notes
Ready for Avi QA. PR #144 (base release, 5 commits): consolidates the /deployments release-card status into ONE top-right state-colored badge ('Shipped/Assembled X ago'), drops the redundant left state pill + muted ago-line + the always-'release' branch label, and rides each card's copy/paste kickoff chip inline-right with its task pills (Next='Build and Deploy QA Release', Last='Archive completed tasks'). Shape ui-only; DoR component tier green (74 controller+helper runs, 0 failures). Operator visually approved every iteration. NOTE for QA: release_flow_test.rb has 1 PRE-EXISTING error (Release::Repos.stub, gem-release planning) on the base branch — not from this UI branch.
Release confirm EOF abort
F Flareon
<1m
F Flareon
5m
F Flareon
35m
release-confirm-eof-abort 🪎
PR 3 days ago
🐛
Comment
2-senior review (reviewer-select: carl heavy + jasper light). BOTH APPROVE. Carl(heavy) ran the non-TTY path LIVE (EXIT=1 loud abort), verified the --yes/--dry-run bypass sits ABOVE the tty/EOF checks (test stubs stdin to RAISE if consulted, proving hands-off never reads stdin), all 3 callers (prepare/ship/archive) consistent, interactive 'n' still declines gracefully; 51 tests 0 failures, rubocop clean. Jasper(light) confirmed bypass intact + caller audit clean. = 2 approvals.
Dor-check post-deploy nudge
F Flareon
<1m
F Flareon
7m
F Flareon
dor-check-post-deploy-nudge 🪎
PR 3 days ago
Comment 3 notes
Rework VERIFIED (head f436b55): Release::PostDeploy#plan now skips 'none' like empty (post_deploy.rb:58, 'next if cmd.empty? || cmd.casecmp?("none")', strip+case robust) so the documented escape hatch no longer detonates the release; consumer-skip test added (post_deploy_test.rb:70, proven fail-without/pass-with). 56+143 tests 0 failures, rubocop clean, CI green 4/4. Carl(heavy) BLOCK resolved; Jasper(light) already approved. = 2 approvals.
Task CLI show and stale
F Flareon
<1m
F Flareon
17m
F Flareon
27m
task-cli-visibility-stale 🪎
PR 3 days ago
Comment
2-senior review (carl heavy adversarial + alex-docs light). BOTH APPROVE. Carl probed degenerate inputs (empty devops/nil fields/non-git dir → graceful, exit 0), confirmed no injection (array-form git, dash/metachar branch → invalid ref → :no_branch), clean pure-lib/bin split mirroring claim_lease.rb, never false-flags stale on a git error; 36 tests 0 failures. alex-docs: --verbose well-organized, stale message actionable, bin/task help updated. NON-BLOCKING follow-up nits: (1) zero-unique-commit feat branch off main reads :on_main (advisory only; add a >=1-commit-beyond-fork guard); (2) tighten the stale_check comment (it catches branch-merged-but-task-not-advanced, not designed-with-no-branch); (3) show --json with no slug treats --json as slug -> 404.
Task API 404 and filter
F Flareon
<1m
F Flareon
23m
F Flareon
22m
task-api-not-found-filter 🪎
PR 3 days ago
🐛
Comment
2-senior review (carl heavy adversarial + jasper light). BOTH APPROVE. Carl verified the rescue_from reorder against the ActiveSupport gem (reverse_each -> last-registered wins; new order = RecordNotFound->404, RecordInvalid->422, else->500), blast radius clean across all 6 Api::V1 controllers (2 deltas, both improvements incl. a latent 422 fix), genuine 500s still 500, auth still 401, 400-whitelist breaks no caller (bin/task + bin/devops-cycle checked); 27 tests 0 failures, zeitwerk clean. Jasper(light) confirmed reorder safe + whitelist safe + stage in list. = 2 approvals.
Persist mascot in worktree context
D Dragonair
<1m
D Dragonair
13m
D Dragonair
10m
persist-mascot-in-worktree-context 🪎
Local PR 3 days ago
🐛
Rolio app emoji badge
C Clefairy
<1m
C Clefairy
8m
C Clefairy
19m
rolio-app-emoji-badge 🪎
Local PR 3 days ago
🐛
QA Feedback 2 notes
QA-deployed on release rel-20260624-a59e5f @ qa.mcritchie.studio (Heroku v78, /up 200). Glyph verified by component+unit tests (board slug-row renders 📇 for repositories:['rolio']); no live rolio-repo card on board to render it. Awaiting operator prod-ship gate.
Agent intent timeline events
P Ponyta
<1m
P Ponyta
1h
P Ponyta
57m
agent-intent-timeline 🪎
Local PR 3 days ago
Comment 2 notes
Review cascade: shannon[heavy] APPROVE (migration safe/reversible/indexed, duration-spine protected, no N+1, ui+db coverage complete) + carl[light] APPROVE. Non-blocking nits deferred (kind filters in reviewer_selector/retro). CI green.
Hide Building column narrow
A Articuno
<1m
A Articuno
5m
A Articuno
19m
hide-building-column-narrow 🪎
Local PR 3 days ago
QA Feedback 3 notes
QA-deployed on release rel-20260624-a59e5f @ qa.mcritchie.studio (Heroku v78, /up 200). Building-collapse class live on /deployments; Building-specific placement locked by flipped integration test. Awaiting operator prod-ship gate.
Fix ipinfo geocoder HTTPS
K Kangaskhan
<1m
K Kangaskhan
10m
K Kangaskhan
fix-ipinfo-geocoder-https 🐊
Local PR 3 days ago
🐛
Comment 5 notes
QA PASS on qa.turfmonster.media (Steffon): use_https=true on the deployed dyno, Geocoder.search resolves country=US region=California (was nil), /geo/check returns a real state code, all 3 RC members boot. Held at operator ship gate — release rel-20260624-a59e5f stays assembled on QA; prod not shipped per operator.
Enumeral model type colors
D Drowzee
2m
D Drowzee
5m
D Drowzee
1m
enumeral-colors 💎 🪎
Local PR 3 days ago
💎
Comment 7 notes
Block resolved (9d262fb): color: mascot.signature_color added to all 4 MascotAgent.new sites (271 stage_timeline + 162 + the 2 already-correct), so the consolidated timeline mascot matches the build board. Regression test RED->GREEN (name-palette #3B82F6 -> signature #6F35FC); target suites 133 runs 0F. dor-check ✓. carl[deep] APPROVE stands. Merge-gated on CI test green.
Deployments rank and filter
D Dragonite
<1m
D Dragonite
17m
D Dragonite
1h
deployments-rank-and-filter 🪎
Local PR 3 days ago
Comment
Review cascade: shannon[heavy] APPROVE (ranking deterministic, filter correct, no N+1, no traps, ui+db coverage complete) + carl[light] APPROVE. Non-blocking nits deferred (id-tiebreak, board_apps scoping). CI green.
Merge docs reviewer into Alex
D Drowzee
4m
D Drowzee
<1m
D Drowzee
merge-docs-reviewer-into-alex 🪎
PR 3 days ago
Comment 4 notes
DEPLOY FIX (conductor): narrowed post_deploy_cmd from 'bin/rails db:seed' -> 'bin/rails runner load(db/seeds/02_agents.rb)'. The full db:seed (a) failed at db/seeds/54_ai_builder_multiple_candidates.rb:232 (non-idempotent: 'Github login has already been taken') and (b) would seed DEMO News/Content/Tasks into PROD at ship. 02_agents is self-documented idempotent + prod-safe and is the only seed this task needs (retire alex-docs / give alex the docs reviewer seat). Verified the agents change already applied on QA.
Mascot marker no-downgrade fallback
D Drowzee
<1m
D Drowzee
8m
D Drowzee
1m
mascot-marker-no-downgrade-fallback 🪎
PR 3 days ago
🐛
Comment 3 notes
Rework verified (7c270b03): board_mascot rewritten to read via subprocess (`task field <slug> mascot 2>/dev/null`, shellescaped) mirroring resolve_mascot — SystemExit from a non-2xx board read is now contained in the child, can never abort bin/task. + board-fallback regression test (fail_get knob → non-2xx → asserts exit 0 + marker written + no mascot). RED->GREEN (1 fail → 32/115 + 6/9). dor-check ✓. carl[heavy] block resolved; shannon[light] had approved. Merge-gated on CI test green.
Geo blocklist fail closed
P Poliwrath
7m
P Poliwrath
20m
P Poliwrath
6m
geo-blocklist-fail-closed 🐊
Local PR 3 days ago
🐛
Comment 3 notes
SHIPPED to prod (turf-monster-mainnet v108, rel-20260624-a59e5f). Per operator decision, ENABLED the prod geo_settings row post-ship: enabled=true, enforcing=true, banned=[AZ,CO,HI,ID,IA,LA,MO,NE,NV,WA]. Legal blocklist + fail-closed now LIVE on mainnet for money/entry actions.
Adopt assembled stage stuck
P Poliwrath
6m
P Poliwrath
13m
P Poliwrath
9m
adopt-assembled-stage-stuck 🪎
Local PR 3 days ago
🐛
QA Feedback 3 notes
QA-deployed on rel-20260624-a59e5f @ qa.mcritchie.studio (mcr@15e2d3f, /up 200). Fix verified by suite (273 runs 0F) + dogfooded: merging this + geo onto the assembled RC flipped both cleanly to assembled (no manual fixup needed). Note: the fix only governs the PROD board once mcritchie-studio ships to prod. Awaiting operator prod-ship gate.
Polish task card UI
K Kadabra
<1m
K Kadabra
58m
K Kadabra
15m
polish-task-card-ui 🪎
Local PR 3 days ago
Comment
Review cascade: shannon[heavy] APPROVE (all 4 criteria met in markup, no logic regression, no ERB/Alpine traps, theme+mobile parity) + alex-docs[light] APPROVE. Non-blocking nits deferred (dead :stack branch, STRIP_CAP comment). CI green.
Restore card crew layout
I Ivysaur
<1m
I Ivysaur
32m
I Ivysaur
6m
restore-card-crew 🪎
Local PR 3 days ago
Comment
Review cascade: shannon[heavy] APPROVE (all 4 criteria met, clean revert of #163's crew-demotion bits while keeping operator-wanted gem/label/chip changes, no dead :strip/2xs/STRIP_CAP, theme+mobile parity improved via alpha mask-image) + carl[light] APPROVE (scope contained, dead-code cleanup complete, CI green). Non-blocking: stale :stack flex-wrap docstring (now grid). CI green.
Pokemon mascot session identity
H Haunter
H Haunter
H Haunter
pokemon-mascot-session-identity 🪎
3 days ago
📚
Mascot stability check
S Scyther
<1m
S Scyther
<1m
S Scyther
mascot-stability-check 🪎
3 days ago
Persist mascot session field
R Rhyhorn
R Rhyhorn
R Rhyhorn
persist-mascot-session-field 🪎
3 days ago
🐛
Clean session start culture
D Dugtrio
D Dugtrio
D Dugtrio
clean-session-start-culture 🪎
3 days ago
📚
Marker carries the mascot
C Caterpie
C Caterpie
C Caterpie
marker-carries-the-mascot 🪎
3 days ago
🐛
Document environment agent seed
C Caterpie
C Caterpie
C Caterpie
document-environment-agent-seed 🪎
3 days ago
📚
Board card polish iteration
C Clefairy
16m
C Clefairy
8m
C Clefairy
21m
board-card-polish-iteration 🪎
Local PR 3 days ago
Comment
2-senior review (reviewer-select: shannon heavy + carl light). BOTH APPROVE. Shannon(heavy) verified all 7 UI criteria (pulsing-green live badge JIT-compiled, resume moved to read view off both board surfaces, empty crew slots centered+dashed, footer links inline, kind badge hidden + bug/docs emoji, mascot via crew, status-line Pokemon name); no ERB/Alpine traps. Carl(light) verified the per-session mascot rework: peer-share same-session / unique-draw otherwise / DETERMINISTIC handoff swap (own mascot stays in DB so redraw differs) / session-less stable; batch paths rescue->ErrorLog + update_columns (no recursion) + network-free; tests cover #6+#2. DEPLOY ACTION (not a blocker): run pokemon:resync_mascots post-deploy to stamp mascot_session on existing tasks.
Next Release card polish
A Arbok
<1m
A Arbok
6m
A Arbok
1h
next-release-card-polish 🪎
Local PR 3 days ago
Comment
2-senior review (reviewer-select: shannon heavy + carl light). BOTH APPROVE. Shannon(heavy) verified all 4 criteria in the markup (Kick-off label removed via optional label local, chip floated right with justify-between+flex-wrap no overflow, One-trigger label gone, Current->Next Release muted-uppercase), no double-label regression, Last Release card unaffected, theme-token-only. Carl(light) confirmed the id='current-release' anchor + qa_release_kickoff trigger string PRESERVED (conductor SOP links intact), kickoff_chip handles absent label safely. Both: non-blocking nits (dead label_text 'Current Release' branch + stale leading comments).
Fix blocked card drag
P Parasect
1m
P Parasect
15m
P Parasect
4m
fix-blocked-card-drag 🪎
Local PR 3 days ago
🐛
QA Feedback
2-senior PASS: carl (HEAVY, found the original bug) approve — fix sources stage from dropzones (evt.from/evt.to), PATCH gated on fromZone!==toZone, so a same-zone reorder of a blocked card no longer silently un-blocks; revert reinserts into live fromZone; archiveTask stranding fixed via zoneForStage(blocked->building); Building lane exempt from <1250px collapse (blocked stays visible); component-tier coverage locks the invariants; all 4 CI checks green (test 1m48s); FULL suite 1315/0 + rubocop 0. jasper (LIGHT) approve. Nits (non-blocking): tests assert literal JS substrings; pre-existing revert-order cosmetic.
Board-aware crew columns
S Snorlax
9m
S Snorlax
6m
S Snorlax
42m
board-aware-crew-columns 🪎
Local PR 4 days ago
QA Feedback
2-senior PASS: shannon (HEAVY) approve — clean follow-on to #128, all acceptance criteria met; overflow NOT reintroduced (improved: grid minmax(0,1fr) bounds width + pill moved to -left-1 kills #128's right-edge spill); dark-mode parity holds; shape=ui-only holds (task.rb touch is just board-column constant); Alpine/CSS gotchas clear; CI runs FULL suite (db:test:prepare test test:system, 1m56s). alex-docs (LIGHT) approve — 8 ACs map+test-covered, board-vs-workflow decoupling preserved (DEPLOY_STAGES stays 4). DEFERRED non-blocking docs nits: _stage_agent_avatars.html.erb grid comment says 'centered' but code is justify-start; the stale 'flex-wraps' comment (now grid-cols) — recurring since #128; PR-body z-index numbers drifted.
Provision worktree test DB
C Charmeleon
35m
C Charmeleon
16m
C Charmeleon
7m
provision-worktree-test-db 🪎
PR 4 days ago
QA Feedback
2-senior PASS: carl (HEAVY) approve — verified the database.yml test.url change against Rails 7.2.3 source (keys on 'if url' truthiness; unset var renders YAML nil, not a crashing empty string); all 3 resolution scenarios verified (CI/local/worktree), CI test job green, only test: block touched (no prod-boot risk); bin/agent-worktree idempotent + allow_fail. jasper (LIGHT) approve — .env.test.local gitignored, friction solved. DEFERRED non-blocking: add an [integration] probe for the unset-TEST_DATABASE_URL path (CI already exercises it); two cosmetic redundancies (prepare_test_db runs twice on new --start; test_database_url computed 3x).
Fix retro heroku-run escaping
G Gyarados
57m
G Gyarados
8m
G Gyarados
8m
fix-retro-heroku-run-escaping 🪎
PR 4 days ago
🐛
QA Feedback
2-senior PASS: jasper (HEAVY) approve — Base64 round-trip exact for quotes/parens/&&/pipes/backticks/unicode/newlines/60KB, urlsafe never line-wraps, survives bash -c reparse; other conductor callers untouched (slug-shaped .inspect only); fail-first genuine (4 RED pre-fix), tests assert command construction. alex-docs (LIGHT) approve — stale 'safe inspected literal' comment replaced. DEFERRED non-blocking nits: one vacuous refute_includes("worked":) assertion (real guards are the &&/pipe/Base64 ones); add require 'base64' to the remote snippet defensively; Base64 ~33% size inflation (fine for real retro text).
Release retro learn step
G Growlithe
2m
G Growlithe
13m
G Growlithe
19m
release-retro-step 🪎
PR 4 days ago
QA Feedback
2-senior PASS: carl (HEAVY) approve — non-blocking contract verified (archive has zero retro refs; tests prove both directions), TTY-free mode gated, data-gather correct, 47 runs green. alex-docs (LIGHT) approve — docs accurate, non-blocking emphasized. Deferred: --file-tasks title <3 words can silently fail + untested; retro is regenerate-not-append (note in doc); cosmetic header/heading nits.
Doctor reconcile git worktrees
N Nidoran♀
3m
N Nidoran♀
9m
N Nidoran♀
6m
doctor-reconcile-worktrees 🪎
Local PR 4 days ago
🐛
QA Feedback 2 notes
Rework RE-REVIEW PASS: carl (HEAVY) approve — prunable-orphan ENOENT crash RESOLVED (two-layer: orphan_worktree_issues guards !Dir.exist? + emits 'prunable' issue; capture_status rescues SystemCallError); both doctor and snapshot --write exit 0, verified failing-first vs pre-fix commit; label-collision nit fixed (path-hash). jasper (LIGHT) approve. No blockers. Non-blocking: orphan issues counted in snapshot.summary but not per-worktree (enhancement).
Post-deploy command hook
D Dratini
5m
D Dratini
14m
D Dratini
5m
post-deploy-cmd-hook 🪎
PR 4 days ago
QA Feedback 2 notes
Rework RE-REVIEW PASS: carl (HEAVY) approve — all 5 resolved: BLOCKER --exit-code now in executed argv (test pins it to the real sh argv, not just dry-run print); MAJOR abort test independently proves --exit-code + right app + ABORTED; MINOR Shellwords.split + -- terminator, single heroku_argv drives both dry-run and exec; NIT unroutable-app abort documented intentional; ship re-run tolerates already-published gems (verified in code). No new issues from the #130 rebase; 104 runs green. shannon (LIGHT) approve. Non-blocking: printed join renders spaced args unquoted (cosmetic).
Fix qa-intake merge signal
Z Zapdos
1m
Z Zapdos
14m
Z Zapdos
19m
fix-qa-intake-merge-signal 🪎
PR 4 days ago
🐛
QA Feedback
2-senior PASS: carl (HEAVY) approve — verified failing-first by reverting (4 bug tests RED, 4 preservation GREEN); fix keys on mergeStateStatus CLEAN/HAS_HOOKS, GitHub genuine BEHIND still flagged, all other needs-agent triggers preserved. shannon (LIGHT) approve. Deferred follow-ups: separate 'Worktree Attention' view still nags rebase for clean+behind worktrees; add HAS_HOOKS + conflicting-not-behind test cases.
Mascot as build agent
B Bellsprout
<1m
B Bellsprout
6m
B Bellsprout
5m
mascot-as-build-agent 🪎
Local PR 4 days ago
QA Feedback 3 notes
Rework round-3 RE-CONFIRM PASS: carl (HEAVY) approve — independently ran FULL suite 1278/0; verified four-compartment deploy rendering (assembled 30m + shipped 10m as separate pills) matches main's per-stage design (combined-40m would have been the regression); controller test now anchors to data-test crew-duration markers; line-434 de-coupled from task title (asserts real 'Stage crew' header). jasper (LIGHT) approve. flex-wrap overflow major resolved earlier. DEFERRED non-blocking doc nit: partial header comment (_stage_agent_avatars.html.erb:14-17,67) still describes the abandoned 3-lane flex-wrap design vs the actual grid-cols-4 — reconcile in a future touch.
Pokemon page grid toggle
P Persian
<1m
P Persian
4m
P Persian
1h
pokemon-page-grid-toggle 🪎
Local PR 4 days ago
QA Feedback
2-senior PASS: shannon (HEAVY) approve — clean ui-only; view state in localStorage + $watch (survives reloads, defaults list); all McRitchie Alpine/CSS gotchas clear; dark-mode inherited; mobile-first responsive grid. alex-docs (LIGHT) approve — copy/aria/ERB-comments accurate, no stale docs. Non-blocking polish deferred: aria-pressed on toggle, clamp stored value defensively, cloak toggle buttons; footnote vs 'Avatar (S3)' header wording.
Exclude builder from reviewers
R Rattata
11m
R Rattata
9m
R Rattata
9m
exclude-builder-from-reviewers 🪎
PR 4 days ago
QA Feedback
Rework RE-REVIEW PASS: carl (HEAVY) approve — all resolved: builder_candidate? membership gate (no phantom exclusion); SOUL_SLUG gate so a UUID actor degrades to domain-only (a real session id passing the regex is ~4e-14 and benign); CI lint green; docs/test/log-token done; FULL suite 1304/0 + rubocop 0 offenses on head bf08184. jasper (LIGHT) approve. DEFERRED non-blocking (jasper): bin/reviewer-select excluded_line prints 'KEPT: too few' for a known non-pool builder where it should say 'not a candidate' (Rails log already correct) — small CLI follow-up. MERGE COORDINATION: #135 must rebase onto this and fold the excluded builder into seed_for's key. HELD at reviewed (not merged) so it does not contaminate the pending 4-fix prod ship; merges into the follow-up train after the current release ships.
Backfill pokemon mascots
backfill-pokemon-mascots 🪎
PR 4 days ago
QA Feedback 3 notes
Rework RE-REVIEW PASS: carl (HEAVY) approve — all 3 blockers verified resolved: (1) rescue now ErrorLog.capture! with target: task (durable trace); (2) active_mascots hoisted to a single live-scan, in-memory taken set preserves uniqueness; (3) backend tests added — uniqueness across >=2 live tasks, count + idempotent-rerun-0, per-row rescue asserting ErrorLog row, rake wrapper. find_each now scoped to live; flaky-fallback nit fixed. shannon (LIGHT) approve. Non-blocking: rake still prints 'backfilled 0' without distinguishing unseeded deck.
Reviewer-select weight followups
G Geodude
39m
G Geodude
4m
G Geodude
4m
reviewer-select-weight-followups 🪎
PR 4 days ago
🐛
QA Feedback 2 notes
Rework RE-REVIEW PASS: carl (HEAVY) approve — agents_seed_test asserts 2.0 (full suite green); seed-key coordination verified (seed_for folds excluded_builder so .decision/.select agree post-exclusion; tie-with-builder-excluded test proves CLI preview==recorded); rebase kept BOTH #136 exclusion + #135 seed/weight intact; CI 1308/0 + rubocop 0. alex-docs (LIGHT) approve — 'random tiebreak' wording swept across devops-cycle-design/avi-role/mission/bin, preview guarantee scoped to default qa_owner, #136 §247 preserved. DEFERRED nits: mission.md guarantee lacks the default-qa_owner caveat (overview altitude, ok); one code comment says 'random' loosely.
Wire two senior review flow
wire-2-senior-review 🪎
PR 4 days ago
Comment
2-senior review (reviewer-select pick): Carl=HEAVY, alex-docs=LIGHT. Carl APPROVE — verified suite 18 runs 0 failures + rubocop clean, confirmed alex->alex-docs POOL fix closes a real wrong-soul TaskEvent bug, REPO_DOMAINS additive. alex-docs BLOCK — mission.md:72 still said 'Alex = Documentation' (contradicting the §1.2 rewrite it shipped); fixed to 'alex-docs = Documentation' (commit 46abda6), the last remaining instance. Both conditions now met = 2 approvals.
Stage avatars on board cards
board-card-stage-avatars 🪎
Local PR 4 days ago
Auto capture move usage
auto-capture-move-usage 🪎
PR 4 days ago
Comment 3 notes
Rework VERIFIED (head 96de174): all 3 fixes present — is_a?(Hash) guard + broadened StandardError rescue in agent_session_usage.rb sum_usage, and method-level 'rescue StandardError; nil' on autofill_move_usage in bin/task. Both regression tests present (non-object-JSON-not-fatal + move-still-PATCHes-spine), proven fail-without/pass-with by the rework agent. CI green 4/4, mergeable. Carl(heavy) BLOCK conditions fully met; Jasper(light) already approved the rest = 2 approvals.
Surface the task mascot
surface-the-task-mascot 🪎
4 days ago
Comment
Folded into pokemon-model-and-mascots (PR #120): the board-card chip needs the Pokemon model in the SAME deployable, and #120 isn't merged yet, so a separate release-targeted PR would break. Built the surfacing on the #120 branch instead.
Document stage event trail
document-stage-event-trail 🪎
PR 4 days ago
📚
Comment 3 notes
2-senior review (reviewer-select: alex-docs heavy + jasper light). BOTH APPROVE. alex-docs verified all spine fields/flags/backfill/stale-flag against live code (task.rb, task_event.rb, current.rb, tasks_controller.rb, routes.rb, schema.rb); confirmed the rebased Build-SOP blockquote doesn't contradict the shipped §1.2/§1.4. jasper independently diffed every claim + confirmed anchors/cross-links resolve. 4/4 criteria met.
Pokemon model and mascots
pokemon-model-and-mascots 🪎
Local PR 4 days ago
Comment 4 notes
2-senior review (reviewer-select: carl heavy + shannon light). BOTH APPROVE. Carl(heavy) verified all 8 criteria + merge-forward integrity (both sides on task.rb/_board/task_test, zero conflict markers), idempotent network-free seed, unique-at-create draw that persists (never re-rolled); full suite green except 6 known LOCAL_EMAIL_CAPTURE env artifacts (zero mailer files in diff). Shannon(light) APPROVE — chip+stage-avatars coexist cleanly, /pokemon read-only theme-safe, status-line sound. Minor non-blocking nits only.
Fix TaskEvent review blockers
fix-task-event-blockers 🪎
PR 4 days ago
🐛
Task UI stage agents
task-ui-stage-agents 🪎
4 days ago
Board polish QA refinements
board-polish-qa-refinements 🪎
Local PR 4 days ago
Comment
Deployed to PROD: app.mcritchie.studio v104 (SHA 7d02578), shipped 2026-06-23 ~18:15 by a concurrent release that also carried #139 etc. Verified live: hide-active-button (#113) + always-show muted badges (#108); #109/#110 ride the same linear history. All four board-polish refinements now in main.
Seed souls prod and QA
S Steffon
seed-souls-prod-qa 🪎
PR 4 days ago
Stages page step outlines
stages-page-step-outlines 🪎
4 days ago
Deploy flow heartbeat tooling
deploy-flow-heartbeat-tooling 🪎
4 days ago
Deploy flow redesign spec
deploy-flow-redesign-spec 🪎
PR 4 days ago
Release-aware dor-check base
release-aware-dor-check-base 🪎
PR 4 days ago
🐛
Task stage change log
task-stage-change-log 🪎
Local PR 4 days ago
QA Feedback
2-senior review (new flow): Shannon (light)=APPROVE (clean timeline, avatar-ready). Carl (heavy)=BLOCK on 2 small fixes: (1) host current.rb shadows engine Current's attribute :user (test-invisible regression); (2) CLI/conductor actor mis-attributes to the build claimant (breaks per-stage avatars). Fixing forward on-branch + adding logged-in + backfill tests.
Rolio deploy runbook
rolio-deploy-runbook 📇
Local PR 4 days ago
Memory cleanout SOP
memory-cleanout-sop 🪎
PR 4 days ago
📚
New app onboarding SOP
new-app-onboarding-sop 🪎
PR 4 days ago
Handoff
Docs-only chore. 6 files: NEW new-app-onboarding-sop.md (tier table + phased checklist + evergreen/standalone build-conventions split); EDITs to devops-cycle-design.md (Standalone/Client App SOP; shapes deployment-agnostic), worktrees.md (Multi-Agent Safety & Merge Patterns), app-registry.md (candidate→satellite lifecycle + Rolio 📇), index.md Start Here + ECOSYSTEM.md (discoverability + Rolio 📇). PR #107 base=release. bin/dor-check → n/a (docs chore). All relative links verified resolving. Review focus: tier names used verbatim; rescue_and_log principle framed as non-optional-for-standalone.
Fix dor-check release-cut base
fix-dor-check-release-cut-base 🪎
4 days ago
🐛
Comment
Already delivered out-of-band: fix shipped inline during dogfooding as commit 66db6f2 (2026-06-22), an ancestor of origin/main (LIVE on prod). All 4 acceptance criteria covered by test/lib/dor_check_test.rb (32 runs, 224 assertions, 0 failures): release-aware default_diff_base (origin/release, fallback origin/main), release-cut docs branch not false-flagged, fallback test, and the with_release_ahead_repo regression + e2e gate. No dedicated PR — fix predates this task record. Moved to shipped to reflect reality.
Document agent-shell test gotchas
document-agent-shell-test-gotchas 🪎
PR 4 days ago
📚
Comment 4 notes
2-senior review (reviewer-select: alex-docs heavy + shannon light). alex-docs APPROVE — verified every fact against the live repo (.ruby-version 3.3.11, keg /opt/homebrew/opt/ruby@3.3/bin resolves to 3.3.11, pg arm64-darwin in Gemfile.lock); no fabrication, no doc traps. shannon APPROVE — accurate, paste-ready, well-placed. Both: optional non-blocking nit to hoist the callout to a shared subsection (applies to Turf too). Both criteria met = 2 approvals.
Harden QA release SOP
harden-qa-release-sop 🪎
PR 4 days ago
📚
QA Feedback
Strong PR — cold-start framing, pre-merge checklist (gh pr ready / gh pr edit --base release), and /up 000 note are all accurate, and the ship gate is handled correctly (no --yes on ship; meta-trigger stops at the operator human gate). One accuracy defect in the --yes callout (lines 289-297): it claims prepare/ship/merge/archive 'all prompt for confirmation' and 'silently no-op' without --yes. Verified against bin/release: confirm() is called ONLY by prepare (line 378, 'return unless confirm' = true silent no-op, the dangerous case you nailed), ship (line 881) and archive (line 994). Both ship and archive use 'abort! ... unless confirm' = LOUD abort, not a silent no-op. merge (def at line 320) has NO confirm call at all — it never prompts, so --yes is harmless/ignored there, not required. Net: the commands shown are all safe, but the rationale over-reaches. Fix: tighten the callout so prepare is the silent-no-op case, ship/archive abort loudly without --yes, and merge takes --yes only defensively/for future-proofing (no prompt today). Docs-only and dor-check (docs-exempt) both confirmed.
Tinder outreach queue
rolio-outreach-queue 📇
Local PR 4 days ago
Notes log and tone
rolio-notes-and-tone 📇
Local PR 4 days ago
Social enrichment on create
rolio-social-enrich 📇
Local PR 5 days ago
Polish tasks deployments board
polish-tasks-deployments-board 🪎
Local PR 5 days ago
Comment 6 notes
Hide redundant active toggle button (PR #113, af7564e) — current board's button hidden (title names it); only the other board's link shows; /stages shows both. Deployed QA, verified. origin/release now main + #108/#109/#110/#113; prod still v92 pending operator ship.
Splash and mock auth
rolio-splash-auth 📇
Local PR 5 days ago
Verify codex resume command
verify-codex-resume-command 🪎
Local PR 5 days ago
QA Feedback 2 notes
2-senior review PASS: carl (HEAVY) approve — independently verified CODEX_THREAD_ID exists in Codex CLI v0.141.0 and equals the resume session UUID; Claude paper-trail untouched (early-return on CLAUDE_CODE_SESSION_ID); no create/move-building regression. jasper (LIGHT) approve — rename complete, tests mirror the Claude cases. No blockers/majors; minors deferred (live codex resume proof; provider-precedence test).
Session claim lease gate
A Alex
1h
session-claim-lease-gate 🪎
PR 5 days ago
Comment
2-senior review (reviewer-select: carl heavy + shannon light). BOTH APPROVE. Carl(heavy, adversarial) EMPIRICALLY ran the prod-only nonce resolver live inside a Claude Code bash tool: 'claude' ancestor stable, nonce identical across invocations (0d190f608cf8), TTY degrade also stable per-terminal -> AC#4 holds via 2 mechanisms; lease fails-open on every garbled/nil path (never bricks a task); heartbeat never steals a live claim; claim persists through the real API update! path (3 keys in DEVOPS_SCALAR_KEYS). 111 tests 0 failures, rubocop clean. Non-blocking: sub-second TOCTOU on same-unclaimed-task = last-writer-wins (out of scope for a soft signal); cosmetic <=120s live-dot. Shannon(light) APPROVE — board hint well-formed + degrades, CLI warn/steal message clear (stderr+exit1), --steal documented; noted 'refuses vs warns' = intended gate semantics per spec. = 2 approvals.
Feed warm leads
rolio-feed-leads 📇
Local PR 5 days ago
AI paste import parse
rolio-ai-import-parse 📇
Local PR 5 days ago
AI contact enrich
rolio-ai-enrich 📇
Local PR 5 days ago
Admin hub and schema
rolio-admin-hub 📇
Local PR 5 days ago
Mock import contacts onboarding
rolio-import-onboarding 📇
Local PR 5 days ago
Rolio app foundation
rolio-foundation 📇
Local PR 5 days ago
Comment
Supersedes earlier accept bullet: matching studio (Ruby 3.3.11 / Rails 7.2.3), SQLite retained, Postgres split into rolio-postgres-upgrade.
Session resume on tasks
session-resume-on-tasks 🪎
Local PR 5 days ago
Fix devops-cycle doc inconsistencies
fix-devops-cycle-doc-inconsistencies 🪎
PR 5 days ago
📚
Force remove merged worktrees
force-remove-merged-worktrees 🪎
PR 5 days ago
Archive completed tasks
archive-completed-tasks 🪎
Local PR 5 days ago
QA Feedback
Logic APPROVED + independently verified: archivable == shipped MINUS Release.last_shipped members exactly (cross-checked vs raw SQL), zero non-shipped tasks reachable (can't touch active/blocked), idempotent, no-last-release archives all shipped, dry-run mutates nothing, Last-Release archived-member link test is real. Suite green (81 model/cli/helper + 42 controller, 0 failures). BLOCK is narrow: this PR makes shipped->archived a real transition but leaves 3 docs contradicting it. (1) app/views/tasks/stages.html.erb:63 footer still reads 'Archived is terminal trash - abandoned, never shipping' - now self-contradicts the same page's shipped row you changed (shipped tasks move to archived). User-facing. (2) app/models/task.rb:10 same stale 'abandoned, never shipping' comment. (3) docs/agents/system/devops-cycle-design.md:357 still documents the OLD 'Cleanup worktrees' kickoff + 'The deployment is done.' - update to 'Archive completed tasks' + the bin/release archive shipped->archived loop conclusion (it's the canonical Full spec). Fix all three in this PR (leave docs cleaner than you found it), then re-submit - logic needs no changes.
Gate code-producing chores
gate-code-producing-chores 🪎
PR 5 days ago
Conductor CLI refactor guard
conductor-cli-refactor-guard 🪎
PR 5 days ago
Dedupe release board partials
dedupe-release-board-partials 🪎
Local PR 5 days ago
Side by side releases
side-by-side-releases 🪎
Local PR 5 days ago
Current and last releases
current-and-last-releases 🪎
Local PR 5 days ago
Conductor prepare hardening
conductor-prepare-hardening 🪎
PR 5 days ago
Worktree base release default
worktree-base-release 🪎
PR 5 days ago
Comment
QA (Avi): APPROVE-WITH-NITS ('ship it') — base-ref resolution + origin/main fallback SOLID; cleanup can't over-reclaim; qa-intake reads base_ref correctly. Cosmetic nits (qa-intake local_without_pr release-symmetry; internal :equivalent_to_main symbol) left as-is. PR #92 (base release).
Persistent release-branch cutover — conductor + prepare + init (multi-repo PR1)
release-branch-cutover 🪎
PR 5 days ago
Comment
QA (Avi): APPROVE-WITH-NITS — code/docs/migration-safety all PASS. Nits ADDRESSED in this PR: (1) cycle.html.erb shipped row 'tag'->'tag gems' (ship tags gems only); (2) added multi-repo ship to devops-cycle-design 'Still to land' (ship currently single-repo mcritchie-studio); (4) bin/release merge base-check now FAILS CLOSED if gh can't read the base; (5) Release#add checks reviewed BEFORE reopening. Left as-is (harmless): eligible_task_slugs orphaned-but-tested (operator helper). Tests 108/0, zeitwerk clean. MERGE GATED on migration: drain #76/#83/#86 -> bin/release init -> then merge.
dor-check: gate code-diff chores
task-e14bc7627b69 🪎
PR 5 days ago
Comment
Avi APPROVED (PR #88). Verified independently: 17/64 file, 919/0/0 full, rubocop clean, dogfood confirmed (bin/dor-check on its own chore task → 'DoR-to-Merge met (shape: backend), tiers green: unit,integration' incl --json ready:true). Fall-through complete in both text+JSON paths; probed unknown-shape + build-gate code-diff paths (correctly gated); test seam sound (plain Minitest::Test, serial; ENV wrapper process-local + ensure-restored; non-exempt tests never shell git). Folded in his 2 non-blocking nits: (1) warn! on git-failure so skipped enforcement isn't silent; (2) comment documenting the deliberate Gemfile/root-file + test/-only gap. Left tier-honesty note as-is (extracting a module for a 40-line CLI is over-engineering; gate contract satisfied). Closes the loophole groomed off PR #86 — and closes it on itself.
Multi-repo conductor (d): --prod default + eligibility warnings + board deploy-target
task-7ab627d488df 🪎
PR 5 days ago
Comment
QA (Avi): APPROVE-WITH-NITS — --prod-default SAFE (only changes the record-op target heroku-run vs local; fails closed; all deploy gates [DRY/confirm/assembled] intact; no new prod path). Eligibility warn+skip + deploy-target chip + emojis-test-fix all confirmed. Non-blocking follow-up: a prepare confirm for the new prod-default. PR #91 (base release).
Multi-repo conductor (c): multi-repo ship + gem auto-repin + partial-ship policy
task-a386407ba0a4 🪎
PR 5 days ago
Comment 5 notes
QA (Avi): APPROVE-WITH-NITS — irreversible-ordering crux SOUND (gems->consumers, hub->satellites, frozen qa_sha not release HEAD, record flips LAST, every failure fails closed). Nits ADDRESSED: (1) yank-detection was dead vs the real RubyGems versions API (excludes yanked) — removed yanked?/synthetic tests; yank safety now honestly delegated to gem push failing closed (rejects re-push of a yanked number, before any app deploy); (3) re-pin drift guard now fetches origin + asserts LOCAL release HEAD == frozen qa_sha; (4) push_origin_main aborts on failure. Deferred follow-up: gem frozen-SHA (prepare records qa_shas for apps only; gems fall back to origin/release HEAD) — symmetric fix in a later prepare change. 106/0; zeitwerk clean. Stacked on PR1 #87; retarget #89 to main after #87 merges.
Multi-repo conductor (b): per-repo release branches + multi-repo QA in prepare
task-817da10d5d34 🪎
PR 5 days ago
Comment
QA (Avi): APPROVE-WITH-NITS, merged (#85). Test-gate: removal correct (old gate ran the HUB suite even for a turf-only release — tested nothing relevant); do NOT restore it; instead phase (c) adds an optional registry per-repo test_cmd on the MERGED branch before prod deploy (BLOCKING on c). Nits carried to phase (c): drop dead QA_URL const; abort on git -C checkout failure (dirty sibling -> wrong-branch footgun); mirror PROJECTS_DIR env; tighten dry-run --task abort copy.
Multi-repo conductor (a): deploy-adapter registry + repo_plan + eligibility + GemfileRepin
task-7a999d1ad41b 🪎
PR 5 days ago
Comment
QA (Avi): APPROVE (clean). Merged to main (squash, PR #84). Non-blocking carry-forwards for phase (c) where GemfileRepin is USED: rewrite_line normalizes single-quoted gem lines to double quotes (no impact — real consumer Gemfiles use double quotes); qa_app returns slug even for gem/unknown (loose contract, only called for apps). PR-desc integration-ref corrected in the merge commit body.
Build and Deploy QA Release — one-trigger QA-department workflow + kickoff chip
task-79fdd136a1ee 🪎
Local PR 5 days ago
Comment 2 notes
QA (Avi): APPROVE-WITH-NITS — chip + SOP + Avi throughput trait verified accurate vs the live conductor; 2 §1.4 doc nits FIXED (Release.current not featured; dropped nonexistent 'bin/release state'). PR #90 (base release).
Multi-repo release conductor — McRitchie Studio as the ecosystem DevOps hub
task-f25fabc1b67c 🪎
5 days ago
Comment 5 notes
CUTOVER COMPLETE 2026-06-22 — multi-repo conductor + persistent-release model LIVE on mcritchie-studio prod v85 (app.mcritchie.studio /up 200). Sequence: drained #76/#83/#86 -> merged PR1 #87 (conductor+prepare+init+docs, f138364) -> merged PR2 #89 (multi-repo ship, e96cb12) -> regenerated root AGENTS.md/CLAUDE.md (team now PRs into release) -> bin/release init created origin/release on 5 repos (studio-engine, solana-studio, mcritchie-studio, turf-monster, chain-ops; tax-studio deferred, not cloned) -> deployed prod v85. Full suite 961/0 gated the deploy. REMAINING (separate tasks): PR3 bin/agent-worktree --base release default + qa-intake; PR4 --prod default + board deploy-target (task-7ab627d488df); tax-studio release branch when cloned; gem frozen-SHA in prepare; first real multi-repo production ship.
Task naming discipline
task-31e87e26cf2b 🪎
PR 5 days ago
Comment 7 notes
Avi APPROVED (PR #83, 4th pass). Verified: branch is a clean fast-forward onto origin/main@004a8a6 (linear rebase, guaranteed conflict-free merge; main has not moved since); reviewed_task helper satisfies both eligibility + 3-5 word rule (4w all callers); the two 'mystery' eligibility tests genuinely exercise the unknown-repo path (create outside assert_raises, err pinned to mystery-repo); gem_task/app_task titles all <=5 words (ceiling 'studio change'->5). Independent full suite 919/0/0 (matches). Prior passes already approved the naming core, member_plan gem-branch null, seed fix, acceptance_changed? normalization. Avi's note: MERGE PROMPTLY — 3rd time main moved mid-review; the linear FF holds only until the next merge lands.
Run Deployment: gem releases as first-class members, published gems-first
task-1c92c482df6e 🪎
PR 5 days ago
Comment 2 notes
MERGED to main (squash) 2026-06-22 as the FOUNDATION for Task A (task-f25fabc1b67c, multi-repo conductor) — merged directly per operator instruction ('land #82 first'), not via a release. Rebased clean onto main first (carl: keep-both on task.rb/test_task.rb slug-vs-classification + deployment.md; full suite 880/0, CI green). Already in main, so it will reach prod + flip to shipped on the next mcr release (its branch merge is a harmless no-op). Left at 'reviewed' (self-healing). NOTE: this 'merged-to-main-but-not-deployed' awkwardness is itself a board-model gap Task A/B should address (a landed/merged state or auto-advance-on-merge).
Adopt Studio::Link in turf-monster: /l magic-link + referral cutover + managed email image
task-a54f8e18a68f 🐊
Local PR 6 days ago
Comment 7 notes
SHIPPED to mainnet: turf-monster-mainnet v104 (app.turfmonster.media), 2026-06-22. PR #160 merged to turf main, deployed via turf-monster/bin/deploy. Preflight green (IDL hash already pinned — no on-chain change), migrations CreateStudioLinks + AllowNullImageCacheOwner ran in release phase, smoke /up 200. Studio::Link /l magic-link + referral + managed email image now LIVE on mainnet; studio-engine 0.8.0 in prod.
release_notes API: route DiscordClient delivery failures into ErrorLog
task-fbca827303be 🪎
PR 6 days ago
Comment
Avi APPROVED (PR #86). Verified: create_error_log reachable from action, no double-log (typed rescues don't propagate to rescue_from; no @_error_logged interaction), no swallow (non-typed failures still fall through to handle_unexpected_error → logged). MissingWebhook+DeliveryError are the only typed DiscordClient failures; MISSING_TASKS/UNKNOWN_TASKS correctly NOT logged (user input). Ran tests himself 7/30 green. Added his happy-path no-difference nit (now 7/32). Agreed the kind:chore dor-check gap is worth a ticket (groomed).
Move Turf Monster app to root domain
task-6f319c093cc2 🐊 🪎
Local PR 6 days ago
Comment 3 notes
Gate cleared for review: PRs #79 + #160... (turf #159) marked ready, CI green on both, current with main, code reviewed-clean (host-alias backward-compatible). Advancing to reviewed. STILL OWED before the PRODUCTION DNS cutover (separately gated, NOT a QA-release blocker): runbook deployment.md MAILER_HOST ordering fix + add both hosts to Coinbase CDP allowlist.
Task cards: one-line title + app-emoji indicators (cards & release pills)
task-ae8e06c02977 🪎
Local PR 6 days ago
Comment 2 notes
Gate cleared: rebased onto origin/main (0 behind), PR #78 marked ready-for-review, CI green (lint/scan/test). Advancing to reviewed for the QA release. Non-blocking nit open: APP_EMOJIS comment says 'mirrors' but is a superset (adds chain-ops).
probe
task-4fd92eaef558
6 days ago
Adopt Studio::Link in mcritchie-studio: short /l magic-link + branded email + admin email-image
task-0a09e3a0b60e 🪎
Local PR 6 days ago
Comment 5 notes
Repin landed: Gemfile -> studio-engine ~> 0.8, Gemfile.lock resolves 0.8.0 (GIT section gone), rebased clean onto origin/main (the anticipated schema.rb index churn auto-merged), full CI GREEN against the PUBLISHED 0.8.0 gem (lint/scan_js/scan_ruby/test). Avi pre-approved the logic (APPROVE-PENDING-ENGINE-PUBLISH); engine 0.8.0 now shipped -> reviewed. Ready to ride a mcritchie-studio release.
Clean up Studio admin navigation
task-af0b5d3511ee 🪎
Local PR 6 days ago
Comment 3 notes
APPROVED (PR #76, QA re-review). All 3 acceptance criteria met: (1) /devops fully removed from routes/links/views/API — no dangling refs anywhere in app/lib/config/test/e2e/bin; (2) admin block leads the sidebar — Mr. McRitchie confirmed criterion 2 satisfied as-is (Site→Ops→On-chain→Data within the admin block); (3) dashboard links /builders/history. Risk areas clear: docs coherent (install-agent-docs check OK, zero /devops/cycle refs in docs + both generated root files), WorktreeRegistry removal safe (snapshot --write + qa-intake use the .agents JSON independently). Route removal asserted at 3 tiers + e2e 404. Full suite 906/0/0/4 skips. Prior rework reasons (rebase/doc-coherence/draft) all addressed; branch clean + mergeable. Ready for the conductor to assemble.
Standard Studio::Link model: /l/<token>, branded mailer, managed email image (engine foundation)
task-f2ca3e97a730 💎 🪎 🐊
PR 6 days ago
💎
Comment 3 notes
GEM PUBLISHED: studio-engine 0.8.0 live on RubyGems (gem registered), PR #7 squash-merged to studio-engine main, tagged v0.8.0. Version bumped 0.7.0→0.8.0 + CHANGELOG promoted at publish. Consumers can now pin 'studio-engine','~> 0.8'. Unblocks the adoption tasks (task-0a09e3a0b60e mcr, task-a54f8e18a68f turf).
bin/release ship — auto-post release notes (POST /api/v1/release_notes)
task-8d27ce40caa2 🪎
PR 6 days ago
QA Feedback
Avi: post_release_notes 'non-fatal' guarantee incomplete — only rescues MissingWebhook/DeliveryError, but DiscordClient only converts non-2xx HTTP to DeliveryError; transport errors (Net::OpenTimeout/SocketError/ECONNREFUSED/SSL) from Net::HTTP.start escape and would abort the ship report after an irreversible deploy. Fix: convert transport→DeliveryError in DiscordClient#deliver (hardens the API path too) + add a transport-failure test. Doc nit: bin/release:26 'safe for dev runs' is now half-true (prepare fires a real QA deploy).
Split the board into Tasks / Deployments / Stages pages
task-682cf9a50403 🪎
Local PR 6 days ago
QA Feedback
Avi QA: code/tests solid, but the new 'submitted' seam contradicts surfaces that still say 'reviewed' seam — task.rb:7/:22 comments, the /devops/cycle SOP viewer, and (self-contradictorily) the devops_stage_guide docstring (application_helper.rb:64-66) which claims to mirror the SOP. Also original ACs #1/#2 describe the pre-redesign columns. Ratify the canonical seam, then make board + /stages + SOP + model comments + task ACs all agree. Nits: dead @board_stages ivar (tasks_controller.rb:131-134) + dead Task::BOARD_STAGES constant.
Current-release header on the tasks board
task-a429a106150b 🪎
Local PR 6 days ago
Comment
Review ✅ (Avi, independent) → reviewed. Acceptance met; Release.featured sound (no injection, ≤2 queries), partial XSS-safe + noopener, component test meaningful. CI green (parallel). Folded nits: memoized members query + tightened/extended test (QA URL + SHA branches). Avi flag for operator: /tasks is public, so QA/prod URLs + SHA on the header are publicly visible (none secret) — confirm intended.
Hermetic test env for bin/agent-worktree test (fix worktree mailer failures)
task-383fbd0a1f65 🪎
PR 6 days ago
Comment 2 notes
Review ✅ (Avi, independent) → reviewed. Verified the diagnosis (env leak, not ordering — fails in isolation), the minimal env (test DATABASE_URL correct, dotenv non-overwriting), and that scope is complete (.env.agent-stack was only reaching tests via the subcommand's hand-injected env). Folded nit: Redis-isolation note. Title corrected (was 'De-flake order-dependent tests').
Worktree test DB setup deadlocks the parallel suite
task-b2a0bd0917b5 🪎
PR 7 days ago
Comment 2 notes
Review ✅ (Avi, independent) → reviewed. Diff matches acceptance, CI green; verified test_database_url derivation + the test subcommand wiring; single-process is the sound pragmatic fix (CI keeps parallel). Folded both nits: precise _development_ rewrite + flake breadcrumb comment.
Release model + task links (Deploy workflow foundation)
task-6790800606f9 🪎
PR 7 days ago
Comment 3 notes
Assembled into RC release/2026-06-20-deploy-foundation (4 reviewed tasks merged clean, no conflicts). Full suite on the assembled branch: 799 runs / 0 failures / 0 errors. Awaiting operator 'Make the release' → ff to main + deploy v78.
Swimlane infographic for the DevOps cycle viewer
task-df8a656148bd 🪎
Local PR 7 days ago
Comment 2 notes
Review ✅ (Avi, independent) → reviewed. Diff matches acceptance; swimlane markup/CSS sound (4 tracks = 4 cells); component test meaningful (anchors on .swim/.swimhead counts + all stages + both workflows); CI green. Nit folded in: 'Makes the release' → 'Make the release' (51c7ea0). Non-blocking a11y note (CSS-grid div table, no SR column headers on desktop) — acceptable for admin SOP viewer.
Two-workflow task status model (Build → Deploy)
task-5380e0add7b5 🪎
Local PR 7 days ago
Handoff 2 notes
Deployed to prod (Heroku v77) under maintenance mode; release-phase migration remapped all task rows (pr_review→submitted etc.) cleanly. Root AGENTS.md/CLAUDE.md regenerated to the new stages. New model is LIVE for the test run.
test: per-session marker
task-0984eb68ed4e 🪎
7 days ago
Add Tasks link to admin dashboard
task-73e3e2eeaece 🪎
Local PR 7 days ago
Comment 2 notes
Review ✅ approved → reviewed. Clean 2-line quick-link to tasks_path; acceptance met; dor-check (component) green. Assembly note: rebase onto current main + re-run CI (CI predates the v77 status-model deploy), and merge BEFORE #67 — both edit the same lines of admin/dashboard/show.html.erb.
Add NFL hub link to admin dashboard
task-fb455eb7207c 🪎
Local PR 7 days ago
Handoff 4 notes
Cleared the PR #67 blocker: rebased feat/admin-dashboard-nfl-hub-link onto current main (6cfdfcf), preserved the shipped Tasks quick link from #66, resolved the dashboard/test conflicts, force-pushed with lease, and marked the PR ready for review. Verification: [component] bin/rails test test/controllers/admin/dashboard_controller_test.rb passed; [gate] bin/dor-check task-fb455eb7207c passed; [ci] gh pr checks 67 passed lint, scan_js, scan_ruby, and test. Local review URL is healthy again at http://localhost:3001/admin/dashboard after applying the worktree dev DB migrations.
test: statusline genesis marker
task-72a4d30a6588 🪎
7 days ago
DevOps tooling follow-ups: bin/task note, dor-check chore exemption, engine pin, ecosystem-build docs
task-bf75f02aa426 🪎
PR 7 days ago
Handoff 2 notes
PR #60 open for Avi review. 4 items: bin/task note, dor-check chore/cleanup/docs exemption (+4 tests, 10 green), studio-engine ~> 0.7 pin, ecosystem-build.md. No app code touched; bin/rails test not required. Do not merge/deploy.
DevOps SOP viewer in-app page
task-10756c7be9ff 🪎
Local PR 7 days ago
Admin models table shell -> Studio Engine
task-9fe8d486e60e 💎 🪎 🐊
PR 7 days ago
💎
Add Coach model to admin models
task-ab7a35134ed0 🪎
Local PR 7 days ago
DevOps cycle v1: DoR gate + feature-shape matrix
task-e5f6a7111a4d 🪎
PR 8 days ago
DevOps scout run control and dashboard
task-5bd1bf06264d 🪎
Local PR 8 days ago
Handoff 5 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/devops. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
DevOps scout launcher
task-941ee7d53d1f 🪎
Local PR 8 days ago
Handoff 5 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/devops. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
Add release notes API
task-c8b95e62b0fa 🪎
Local PR 8 days ago
Handoff 2 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/api/v1/release_notes. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
DevOps scout decision summary
task-c8f52ccbe60c 🪎
Local PR 8 days ago
Handoff 4 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/devops. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
DevOps scout report intake
task-9424f840e120 🪎
Local PR 9 days ago
Handoff 5 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/devops. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
DevOps scout review packets
task-141fba5922dd 🪎
Local PR 9 days ago
Handoff 5 notes
Avi post-deploy note: Discord release note for production release v71 at ef693ab was sent to the release-notes webhook after the deploy.
DevOps batch review planner
task-faa77d6fe2af 🪎
Local PR 9 days ago
Handoff 6 notes
Avi post-deploy note: Discord release note for production release v71 at ef693ab was sent to the release-notes webhook after the deploy.
DevOps queue snapshot command
task-f8e6218e9739 🪎
Local PR 9 days ago
Handoff 5 notes
Avi post-deploy note: Discord release note for production release v71 at ef693ab was sent to the release-notes webhook after the deploy.
DevOps test lanes and fresh-session workflow v1
task-29e2cfa667e1 🪎
Local PR 9 days ago
Handoff 7 notes
Avi post-deploy note: Discord release note for production release v71 at ef693ab was sent to the release-notes webhook after the deploy.
task-board-api doc follow-up: bin/task path + comma contract
task-6ff413a375a1 🪎
PR 9 days ago
Handoff 4 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/tasks/task-6ff413a375a1. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
Investigate QA navbar regressions across Studio and Turf
task-854da51e5b9a 🪎 🐊 💎
REL
9 days ago
🐛
Handoff 2 notes
Mr. McRitchie confirmed this navbar regression task is finished. Closing it from the active DevOps board; no PR or production action required from this task.
Add terminal session context markers
task-58903a988139 🪎
Local PR 9 days ago
Handoff 7 notes
Avi post-deploy note: Discord release note for production release v71 at ef693ab was sent to the release-notes webhook after the deploy.
Fix devops list normalizer: stop splitting array items on commas
task-7e688f153a95 🪎
REL
PR 9 days ago
Handoff 8 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/tasks/task-7e688f153a95. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
Agent CLI trinity: bin/task, bin/preflight, bin/secret
task-df5a10314122 🪎
REL
PR 9 days ago
Handoff 8 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/tasks/task-df5a10314122. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
Bring sticky table headers to Turf Monster
task-d0f00c5b1358 💎 🐊
REL
Local PR 9 days ago
Handoff 6 notes
Production proof added 2026-06-22: Turf Monster production app turf-monster-mainnet is on release v105 commit 96ce1c0, which contains sticky-header merge 6bf6707 from PR #155. Production /up returned 200 at https://turfmonster.media/up. A production rails runner returned {"sticky_table_headers":true,"studio_version":"0.8.0"}. Studio Engine PR #5 is merged and the shared sticky-header capability is available through the published studio-engine gem lineage. No further sticky-header release action is pending for task-d0f00c5b1358.
Auto-reclaim merged worktrees on close (scale-down normal flow)
task-2adbc61766f3 🪎
PR 9 days ago
Handoff 8 notes
Avi post-deploy note: Discord release note for production release v71 at ef693ab was sent to the release-notes webhook after the deploy.
/devops Worktrees & Slots dashboard
task-e916e32ba54c 🪎
PR 9 days ago
Handoff 3 notes
Marked done after production deployment McRitchie Studio v70 at 82b1791. PR #36 Worktrees & Slots /devops panel is merged, CI was green, production /devops responds with an authenticated redirect, and the release includes this task.
Document the agent task-board API onboarding (auth + contract + footguns)
task-bfcf6e8c1ab2 🪎
QA
PR 9 days ago
📚
Handoff 2 notes
Production deployed in McRitchie Studio v70 (82b1791): Task-board API onboarding docs. Verify at https://mcritchie.studio.
Propagate sticky table headers across McRitchie Studio
sticky-table-propagation 🪎
QA
Local PR 9 days ago
Handoff 7 notes
Production deployed in McRitchie Studio v70 (82b1791): Dynamic sticky table propagation. Verify at https://mcritchie.studio.
Elastic worktree Redis capacity (steady-state 20, scale in/out by 10)
task-ec282d05a59c 🪎
PR 9 days ago
Handoff
Marked done after production deployment McRitchie Studio v70 at 82b1791. PR #31 elastic worktree Redis capacity is merged, CI was green, commit 03aff75 is included in production SHA 82b1791, and production /devops responds with an authenticated redirect.
Fix bin/ecosystem-build Ruby version (3.1 -> 3.3) so fresh-Mac recovery works
task-f69c93046ffe 🪎
PR 9 days ago
🐛
Handoff
Shipped ecosystem-build Ruby 3.3 fix to production in McRitchie Studio v69. CI passed; bash syntax and stale Ruby 3.1 reference checks passed.
Add sticky header to admin users table
admin-users-sticky-header 🪎
QA
Local PR 9 days ago
Handoff 5 notes
Production deployed in McRitchie Studio v70 (82b1791): Admin users sticky table header. Verify at https://mcritchie.studio.
Add task conversation feedback
task-conversation-feedback 🪎
Local PR 9 days ago
Handoff 3 notes
Shipped task conversation feedback to production in McRitchie Studio v68. QA and production health checks passed.
Add GitHub query console helper
github-query-console-helper 🪎
Local PR 9 days ago
Handoff
Shipped GitHub query console helper to production in McRitchie Studio v69. CI passed; focused GitHub service tests passed locally on merged main.
Clarify task-board DevOps handoff contract
task-552b68ce294d 🪎
Local PR 10 days ago
Handoff 8 notes
Production shipped: McRitchie Studio v72 / 4af95f8. Production URL: https://mcritchie.studio/tasks/task-552b68ce294d. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
Ship Turf Monster sidebar back-navigation fix
task-c2d06883e677 🐊
Local PR 10 days ago
🐛
Handoff 7 notes
Production shipped: Turf Monster v102 / ca0b4be. Production URL: https://app.turfmonster.media. Verification included production health checks, relevant route smokes, dyno status, and release notes posted to Discord. Task marked done.
Ship McRitchie Studio sidebar back-navigation fix
task-ea8541e4b5b6 🪎
Local PR 10 days ago
🐛
Handoff 7 notes
Post-deploy production smoke passed on https://www.mcritchie.studio. Signed in through the normal magic-link flow as the McRitchie admin user and verified sidebar Back behavior across /dashboard, /tasks, /tasks/task-ea8541e4b5b6, and /agents for gear, username, and avatar triggers. All 12 route/trigger cases reopened the sidebar after Back and closed with Escape. No remaining closeout blocker from the feature agent side.
Require task-board items for feature handoff
require-task-board-items 🪎
PR 10 days ago