Repository navigation
Description
Outcome and scope
Build a functional Code Review workspace matching the four user-supplied desktop screenshots: PR inbox → overview/activity → split remote diff/file tree → explicitly requested AI review → human-confirmed GitHub action. Preserve Modex's existing desktop shell and local Changes workflow. This is an implementation backlog, not a claim that the feature has shipped.
Proposed implementation home: TypeSafeAI/modex, apps/desktop. The screenshots display both Modex and River Oaks PRs; the repository being reviewed is not necessarily the application owning the interface. Do not implement this in BunsDev/river-oaks, TypeSafe Computer, or the game iframe without an explicit scope change. #320 must record Val's confirmation of this placement before feature wiring. Read-only inspection and synthetic contract preparation can proceed before that decision.
Research limitation: the completed deep-research report for these four screenshots was not retrievable during this audit. Do not claim it was reviewed. This backlog is a fresh assessment of the supplied images, current source, existing issues and primary documentation. Reconcile a subsequently supplied report with current code; do not accept its proposals as implemented facts.
Verified baseline and reuse
Read-only audit baseline: main at cb33db5df00e235f68d36b5fac556dc30e0851f2. Re-fetch current main, issue discussions, open PRs and relevant scoped instructions before coding; this SHA is evidence, not a command to revert later work.
- AGENTS.md: owned worktrees, pnpm, signed commits, protected-main checks, native Claude/Codex CLIs only for coding turns.
- ChangesPanel.tsx: existing local-working-tree review toolbar, file filter/tree, diff renderer, context expansion and destructive Discard affordances. Reuse presentation selectively; remote PR content must NEVER enter local discard/path handlers.
- git.ts: local status/diff/worktree helpers, not proof of a complete GitHub PR service.
- desktop package.json: Electron/React/TypeScript/Vite; Node tests, Playwright, existing
ui:captureandui:comparescripts. No framework or editor migration is required by these screenshots. - status.md and [Tracker] Native conversation fidelity: execution → transcript → recovery → Notes #273–[P1][CF-8] Prove the complete conversation-to-Notes workflow with E2E, native acceptance, and rollout gates #281: native conversation lifecycle, safe Markdown, approvals/questions, evidence and recovery already have owners and substantial implementation. Consume verified contracts; do not create a second transcript, approval system, Notes store or agent runtime. Open issue status alone does not mean its entire feature is missing.
Reference states
These are original image pixel sizes, NOT established CSS viewport/DPR measurements. Originals remain user-supplied references, not repository assets. Do not commit unredacted screenshots, unrelated PR data, avatars or credentials without approval.
| ID | Original file | Pixels | Required state |
|---|---|---|---|
| R1 | Screenshot 2026-10-18 at 15.38.42.png | 1766×1057 | Overview at top; title/body; stack/checks sidebar; floating PR composer |
| R2 | Screenshot 2026-10-18 at 15.38.52.png | 2048×1217 | Scrolled activity; commits, comment composer, deployment preview; same selected PR |
| R3 | Screenshot 2026-10-18 at 15.38.55.png | 2047×1214 | Review-instructions popover open above the activity view |
| R4 | Screenshot 2026-10-18 at 15.40.30.png | 2048×1215 | Side-by-side PR description and Changes workspace; unified diffs and right file tree |
Preserve composition, density, independent scrolling, hierarchy, selected/hover/focus states and existing Modex theme tokens. Use deterministic synthetic PR content with comparable line lengths. Screenshot-only controls with no verified backing capability must be explicitly unavailable, not fake-working. Native window chrome, voice input, proprietary cloud review APIs, stack mutation/rebasing, admin bypass and game integration are outside this initial scope.
Created issue graph and dependency rules
| Slice | Issue / deliverable | Start prerequisite | Completion / integration prerequisite |
|---|---|---|---|
| CR-1 | #320 — reference/source contract and deterministic fixtures | None; confirm proposed product placement before feature wiring | Reviewed contract, reference access and placement decision |
| CR-2 | #321 — authenticated main-owned PR reads | #320 accepted contract | Read/identity/race tests plus separately recorded live-read gate |
| CR-3 | #322 — inbox, navigation and resizable workspace | #320 accepted contract; can run alongside #321 | #321 live adapter; navigation/layout evidence |
| CR-4 | #323 — overview, activity, checks, stack and previews | #321 and #322 accepted artifacts | Safe rendering, provenance and R1/R2 evidence |
| CR-5 | #324 — remote diffs, folding and file navigation | #321 and #322 accepted artifacts | Revision/anchor correctness, local Changes regression and R4 evidence |
| CR-6 | #325 — native review, PR questions and instructions | #321, #323 and #324; relevant accepted #273 contracts | Runtime authority, lifecycle, coverage and R3/native evidence |
| CR-7 | #326 — explicit GitHub writes and guarded merge | #321, #323 and #324 | Confirmation/receipt/race tests; separately authorized live-write gate |
| CR-8 | #327 — integrated fidelity, accessibility and safety acceptance | #320 for fixture/test design | #321–#326 accepted implementations and their evidence |
Parallel lanes: after #320, #321 and fixture-first #322 can proceed in separate owned worktrees. After their contracts are accepted, #323 and #324 can proceed in parallel. #325 and #326 are independent consumers: AI review does not grant or gate human GitHub write permission. #327 starts test design early but cannot claim integrated completion until its producer artifacts are ready.
Treat dependencies as accepted artifacts/behavior, not merely closed issue numbers. An accepted producer contract can unblock a consumer even while unrelated producer follow-ups remain open. Preparation can use agreed fixtures; live integration waits for the named producer. Parent tracking is not a blocking dependency. Do not add reverse dependencies from producers to #327, duplicate owners, cycles or blanket waits for all of #273 to close.
These relationships are explicit Markdown issue links and artifact gates. They are not claims of native GitHub blocking/sub-issue metadata or an automatically scheduled agent workflow. No agent assignment, merge or deployment was performed by creating this backlog.
Delivery gates
Gate A — read-only workspace: #320–#324, with #327's relevant tests. Users can navigate real PR data and inspect revision-bound diffs; AI/write controls stay capability-gated.
Gate B — native review: #325. Explicit user start, bounded context, runtime-enforced read-only authority, correct native lifecycle and visible coverage. Unsupported safety controls keep the feature unavailable.
Gate C — external writes: #326. Fresh identity/permission checks, explicit intent, expected-head merge protection and conservative unknown-outcome handling. No dependence on an AI verdict.
Gate D — full acceptance: #327. Reproducible visual/behavioral evidence plus named authenticated/native/write/human gates. These are delivery phases, not newly created GitHub milestone objects. Release/activation requires separate authorization.
Agent execution contract
- Read this tracker, the selected child, its dependencies and current
AGENTS.md/scoped instructions. Establish repo, current branch/SHA, existing work, test availability and explicit owner. Usescripts/worktree.sh new <slug>andcheck; claim an existing worktree only through the documented ownership procedure. Never edit primary checkout or another agent's work. - Select one unblocked, review-sized outcome. State the files/contracts to touch and the failing acceptance test. Implement the smallest change, run the targeted test, then relevant integration/regression checks. Do not rewrite already delivered dependencies. Parallel workers need disjoint ownership; shared bridge/types/shell changes require one integrator.
- Persist a short checkpoint at meaningful boundaries and before interruption: issue/PR, owner/worktree, branch and full SHA, accepted decisions, changed files, exact commands/results, evidence paths, unresolved risks, dependencies and one next action. Use the existing issue/PR or task-record mechanism; do not build a new orchestration framework. A summary is a navigation aid, never proof of current state.
- Stop on missing authorization, unknown worktree ownership, conflicting product decisions, absent reference assets needed for fidelity, unresolved security boundaries or repeated failures without a new diagnosis. After two unsuccessful attempts at the same failure, diagnose/escalate rather than repeating blindly. Respect execution/time/cost limits set by the caller; do not launch paid/provider runs without appropriate approval.
- Before completion, map every acceptance item to fresh evidence at the current SHA. Distinguish unit/mock, real Electron, authenticated GitHub, native-provider and human accessibility evidence. Never weaken tests or refresh goldens merely to turn a failure green. Preserve evidence outside directories Playwright wipes. Each child includes separate implementation, resume and independent-review prompts; the final review examines the actual diff/evidence, not the implementer's self-report.
- Run repository-required checks:
pnpm build && pnpm test; UI changes alsopnpm test:e2e. Use the pinned package manager. Document environmental blockers instead of claiming a pass. Updatedocs/status.mdand a focuseddocs/reviews/evidence record. Signed commits and a reviewable PR are the handoff; this backlog does not authorize merging, publishing a release, deploying, bypassing rules or executing foreign PR code.
Security and correctness gates
Main owns credentials, request validation, identity/repository scope, provider context and mutations. PR text, diffs, comments, filenames, branch names, deployment URLs and retrieved instructions are untrusted data. Rendering is inert; no remote HTML execution, credential leakage or remote-to-local path confusion. Read-only review must be enforced by the actual tool/process environment, not a sentence in a prompt. A GitHub check, AI verdict and human approval are separate facts. Unknown/stale/partial states never become success. Mutations require fresh authorization and explicit human intent; uncertain network outcomes require reconciliation, not automatic resend.
Primary sources and how they affect this plan
- GitHub: well-scoped agent tasks: bounded outcomes, acceptance criteria, useful source entry points and review of sensitive changes.
- Anthropic: long-running harnesses: incremental work, durable progress and fresh end-to-end verification across sessions; not evidence that more agents are always better.
- OpenAI: AGENTS.md: follow repository and scoped instructions rather than relying on a chat-only prompt.
- Playwright visual comparisons: stable rendering environment and deliberate review of screenshot differences.
- Electron security: renderer isolation, narrow validated IPC and careful external navigation.
- GitHub REST practices and pull requests: pagination/rate-aware reads, explicit API errors and expected-head merge protection.
Long-running goal prompt
Deliver the Code Review reconstruction tracked by #319 in TypeSafeAI/modex, one unblocked child and one testable slice at a time. First read the latest tracker/child discussions, current main, AGENTS.md, source entry points and existing PRs. Start with #320: verify the proposed application placement and reference contract; do not turn River Oaks PR content into a game-client feature. Work only in an owned worktree. Reuse the shell, Changes presentation and native conversation contracts where they actually fit. Implement the selected child's acceptance criteria with failing-first tests, fresh evidence and small signed commits. Do not replace the stack, invent provider capabilities, run foreign PR code, expose credentials, or merge/deploy. Keep all untrusted review content outside executable authority. At every durable boundary record SHA, changed files, commands/results, remaining gates and one next action. Continue only within the caller's time/cost/authority limits; stop on a real blocker with a precise handoff. Finish with a reviewable PR and criterion-by-criterion evidence, not a claim based on a screenshot or an agent's own completion summary.
Follow-up / resume prompt
Resume #319 by reading its live issue graph, linked PRs and latest checkpoints. Re-establish repository, current main, worktree owner, branch and full SHA. Inspect the actual diff and rerun the relevant smoke test before trusting previous progress. Check whether prerequisite artifacts landed or changed; accept delivered contracts without needlessly waiting for unrelated issue closure. Pick the smallest remaining unblocked acceptance item and continue its child prompt. Preserve unrelated work, keep privacy/security gates intact, and do not replay external writes or provider runs whose outcomes are uncertain. If all automated criteria pass, identify remaining native, authenticated and human validation gates rather than declaring them covered. Update the checkpoint and status with observed evidence only. Do not merge or release.
Independent review prompt
Review the current #319 implementation against the live child issues and accepted R1–R4 contract. Read the actual source diff, dependency artifacts and fresh test evidence independently of the implementer's summary. Verify that existing Modex functionality was reused without remote-to-local authority leakage, and exercise account/head races, incomplete evidence, injected content and uncertain-action recovery. Inspect the UI and distinguish fixture, Electron, authenticated, native-provider, live-write and human accessibility proof. Report each acceptance criterion as verified, failed, deferred by an explicit decision or still unverified. Request focused fixes without expanding scope or authorizing merge/release.
Completion checklist
- [CR-1][P1] Establish the Code Review reference contract and deterministic fixtures #320 — scope/reference contract and fixtures accepted.
- [CR-2][P1] Add a main-owned, revision-aware GitHub PR read service #321 — authenticated read service accepted.
- [CR-3][P1] Build the PR inbox and resizable Code Review workspace #322 — inbox/workspace accepted.
- [CR-4][P1] Reconstruct PR overview, activity, checks, stack and preview cards #323 — overview/activity/sidebar accepted.
- [CR-5][P1] Add revision-bound remote diffs, context folding and file navigation #324 — revision-bound remote diffs accepted.
- [CR-6][P1] Add native AI review, PR questions and scoped review instructions #325 — native review and instructions accepted.
- [CR-7][P1] Add explicit review actions and head-guarded GitHub merge #326 — explicit external actions accepted.
- [CR-8][P1] Verify Code Review fidelity, accessibility, recovery and end-to-end safety #327 — integrated evidence and remaining manual gates reviewed.
- R1–R4 reconstructed through real interactive states, with reviewed deviations recorded.
- Reviewer can reproduce the result; live, native, write and human gates are complete or explicitly remain open. No missing gate is represented as a pass.
Activity
BunsDev commentedon Oct 20, 2026
Gate A checkpoint 1 (2026-10-19): CR-1 ready for review
The Gate A goal started from this tracker's prompt, scoped to #320–#324 plus #327's tests for those slices. The first slice, CR-1 (#320), is up for review as #334.
.worktrees/cr1-contract(created withscripts/worktree.sh new), branchcr1-contract, head6d77cbd, base9c0b063.main: atde856e0, one commit ahead of the branch's base. Main gets merged in when the PR lands.What CR-1 delivers
docs/design/code-review.mdholds:apps/desktop/src/shared/code-review.ts):ready,partial,staleorunavailable.scopeOfandacceptsReply, so a slow reply for the wrong account, repository or head is dropped.validateRequest, main's check on everything the renderer sends.Review
First review (
80ad189) requested changes:These were fixed in
cf57a4b.Re-review: confirmed the fixes and left three small items, fixed in
6d77cbd.Evidence on
6d77cbdpnpm build && pnpm testexited 0:Still open
Landing Define the Code Review read contract and fixtures (CR-1) #334 needs Val's go-ahead.
Seven decisions for Val, listed under Open decisions:
Each control stays unavailable until decided.
The authenticated read smoke test ([CR-2][P1] Add a main-owned, revision-aware GitHub PR read service #321 AC5) comes later.
For #321
From GitHub's current REST docs (to confirm live):
repositoryobject with anid, but that hasn't been confirmed in a real response.Next action
On Val's go-ahead:
Nothing in those slices binds to the contract before it's on
main.Coven-Harness: Claude Code / claude-opus-5-5
Define the Code Review read contract and fixtures (CR-1) (#334)
BunsDev commentedon Oct 20, 2026
Gate A checkpoint 2 (2026-10-20): CR-1 landed; CR-2 and CR-3 started
CR-1 landed
main: Define the Code Review read contract and fixtures (CR-1) #334 landed on Val's go-ahead as43d5b9c. GitHub shows the commit as Verified. It went through the merge guard (--squash) from the primary checkout, with all 11 checks passing andmergeState=CLEAN.main: other PRs landed while it was in review, so I mergedmainin four times (Prepare desktop 0.3.0 and Companion 0.3.0 (8) #337, Preserve typed conversation fidelity and streaming reader state (CF-4, lands #295) #333, Record native answer delivery only after its transport handoff (CF-3, lands #316) #335, Run live smoke acceptance through the app: Claude passes, Codex is out of credits (CF-8) #332, Read the thread again when the Mac refuses an answer from the phone (CF-6) #318, then Leave a request open when saving its answer fails (CF-6, finding 10) #336, End a stopped Codex turn's background commands, or say they may still run (CF-8 live) #341 and Record v0.3.0 publication and advance the website fallback #339). Each merge was signed, andpnpm build && pnpm testexited 0 every time. On the final head,5106c0d, the desktop unit suite passed 1,716 tests, skipped 16 and failed none.cr1-contractworktree is removed throughscripts/worktree.sh remove, which kept a recovery archive.Decisions since checkpoint 1
ghlogin, GET only.CR-2 and CR-3
bridge.invoke("code-review:read", CodeReviewRequest), and main answers aCodeReviewReply, ornullforcancel. That oneBridgeCommandsline is commit372edbf, and both branches carry it.cr2-read-service, at372edbfon43d5b9c. This session owns the main read service, thelocalOnlyhandler, and contract extensions.cr3-inbox, on a separate branch, renderer only. E2E serves the fixtures through main's handler. CR-3 lands after CR-2 and wires the live read path then.Open for Val
Next action
CR-2: tests first for the read service (account switch, delayed replies, pagination and caps, revoked credentials, head changes, malformed paths), then the
code-review:readhandler.Coven-Harness: Claude Code / claude-opus-5-5
BunsDev commentedon Oct 20, 2026
Gate A checkpoint 3 (2026-10-20): CR-2 and CR-3 in review
197276e, base43d5b9c. Main's read service oncode-review:read(localOnly), GET-only through Val'sghlogin.pnpm build && pnpm testexited 0: desktop unit 1,739 passed, 16 skipped, 0 failed.8883428, base43d5b9c. The inbox and workspace host, renderer only, with every read throughcode-review:read.pnpm test:e2eexited 0.PrSummary.stackHint: boolean | null, since search results name no base branch;Unavailablegainshead-changed;parseRevisionis exported.Open for Val
localStorage["modex.codeReview"]is"on".Next action
An independent review of #349, then landing it on Val's go-ahead. After that, merge
mainintocr3-inbox, wire the live read path, and run #322 AC6.Coven-Harness: Claude Code / claude-opus-5-5
Reconcile historical CF8 evidence and keyboard review kit with main (#…
Reconcile CF8 history with current main verification records (#364)
mariscate commentedon Oct 22, 2026
Refreshed goal prompts — 2026-10-22 (
mainat0e674e7)Where Gate A stands: CR-1 contract (#334,
43d5b9c), CR-2 read service (#366, plus cache denial #354/#361) and the CR-3 inbox/workspace host (#367,af49881) are onmain; #320 and #321 are closed.apps/desktop/src/renderer/code-review/PrPane.tsxstill shows placeholders for overview, diff and files, which are CR-4 (#323) and CR-5 (#324). Neither has started. #322 stays open for the R1–R4 comparison and human keyboard/VoiceOver review. Waiting on Val: the seven open decisions and whether the destination stays behindlocalStorage["modex.codeReview"]until Gate A completes. Five worktrees whose PRs already landed are still checked out (cr1-verify,cr2-cache-denial,cr2-ipc-acceptance,cr2-review,cr3-inbox-repair).Long-running goal prompt
Follow-up / resume prompt
BunsDev commentedon Oct 23, 2026
Refreshed goal prompts — 2026-10-23 (
mainat203a350)On
mainalready:43d5b9c); [CR-1][P1] Establish the Code Review reference contract and deterministic fixtures #320 is closed;af49881).No Code Review code has landed since
0e674e7. The ten commits since then are CF work.Still open:
cr4-overview, head52375d4, base68860a0). All checks pass and it merges cleanly. It has no review yet and needs Val's go-ahead.cr5-remote-diffs(head0fd82e1, base68860a0). They are not pushed and have no PR. Its evidence doc says the full E2E run on the final head is still pending.cr8-acceptance, head92ce082). Checks pass, it merges cleanly, and it includes the authenticated re-run onmain(A-main).PrPane.tsx,CodeReviewView.tsxandcode-review.css, so whichever lands second has to mergemain.~/Desktoppaths, as Add the CR-8 acceptance matrix, Electron journeys and cross-slice regressions (#327) #372, feat(code-review): add PR overview, activity and evidence cards #393 and the CR-5 evidence all report. [CR-8][P1] Verify Code Review fidelity, accessibility, recovery and end-to-end safety #327 asked Val where they are, and there is no answer yet.localStorage["modex.codeReview"]visibility flag;docs/status.md, Next Convention: one worktree per session under .worktrees/ #3).cr1-verify,cr2-cache-denial,cr2-ipc-acceptance,cr2-reviewandcr3-inbox-repairare still checked out, although their PRs have landed.cr4-overview,cr5-remote-diffsandcr8-acceptanceare active.Long-running goal prompt
Follow-up / resume prompt
BunsDev commentedon Nov 1, 2026
Code Review: one batched ask for Val (2026-11-01,
mainat0a8c513)Every slice's code is on
main. Lane C prepared everything that can be prepared without you, in #472 (docs and evidence only):0a8c513([CR-3][P1] Build the PR inbox and resizable Code Review workspace #322).Nothing live has run, and the app has made no GitHub write.
Please answer here, or on the issue named:
claudelogin and reads throughghwithout writing.owner/repo#nand "go".TypeSafeAI/modex. Reply withowner/repoand "go".Also yours, whenever you're ready:
modex.codeReviewpackaged-build switch goes (staged plan in the matrix).Agent follow-ups that don't need you:
test(code-review): measure composer clearance beside the inline Ask s…
docs: record the C61 follow-up's full run (#319, #327)