Beads ← Dashboard

design 011's battle-test prototype — reads this box's local bd workspace, not GitHub. One workspace per box today; cross-machine sync is a later task (design 011 T5).

design 005b: Affected-probe selection: the plan that remains of 005 nf-lbh

open 4
  • nf-lbh.7 005b T7: `spawn_dev.py` merge-predicate reason
  • nf-lbh.6 005b T6: Narrow `wait_ms` conversions
  • nf-lbh.4 005b T4: Amend 005: three retractions + the #847 deviation
  • nf-lbh.1 005b T1: `affected_probes`: map a diff to a probe set
in_progress 0
blocked 3
  • nf-lbh.5 005b T5: Smoke probes per scene + presubmit/postsubmit marking
  • nf-lbh.3 005b T3: `run_probes.py` — affected set by default, `--all` for the sweep; renames `probe_all.py`
  • nf-lbh.2 005b T2: Merge gate runs the affected set; #847's default reverts
deferred 0
closed 0

design 012: Jujutsu, GitHub, and the merge pipeline: make verdicts certify content, let the server restack, defer the VCS nf-758

open 0
in_progress 9
  • nf-758.9 012 T9: `dev.py rebase`, in the shape T8's verdict names
  • nf-758.8 012 T8: Native stacked-PRs trial: one real stack, written adopt/revert verdict
  • nf-758.7 012 T7: `gh` floor → 2.90: machines.md + `--doctor`
  • nf-758.6 012 T6: Notes cross-link + README boundary update
  • nf-758.5 012 T5: Post-approval reconcile accepts content identity (#840, settled); refusals name cheap paths
  • nf-758.4 012 T4: Trigger policy: restamp over spawn on coder-activity + id match + green
  • nf-758.3 012 T3: The carry step: displays eager at every head-moving verb, records at review/merge
  • nf-758.2 012 T2: Verdict schema: emit/parse `did=`; dispatcher stamps it at post time
  • nf-758.1 012 T1: `nflib/diffident.py`: `contribution_id()` + `delta_identical` move + #665 regression fixture
blocked 0
deferred 0
closed 0

design 011: Task tracking moves to Beads; GitHub becomes a simple code repo nf-tvc

open 0
in_progress 0
blocked 0
deferred 1
  • nf-tvc.9 011 T9: R2 offsite backup + restore drill; Dolt-on-R2 research; native-Windows checklist
closed 10
  • nf-tvc.11 011: import closed GitHub issues into bd for historical navigation
  • nf-tvc.10 011 T8a: idempotent bd↔GitHub reconcile script
  • nf-tvc.8 011 T8: Import open GH issues (`external_ref`), flip authoritative source, turndown
  • nf-tvc.7 011 T7: `/triage` + `/spec` + claims + tracker verbs (`sessions.py`, `reap.py`, 006a-T3 remnant) onto bd
  • nf-tvc.6 011 T6: `poll.py` issue-half onto the seam
  • nf-tvc.5 011 T5: Cross-machine sync: Dolt refs on the GitHub remote, office-box (WSL) bootstrap, drill
  • nf-tvc.4 011 T4: `web_frontend`: single-issue view + per-epic kanban + browser filing, on the seam
  • nf-tvc.3 011 T3: `operationalize_design.py` mints bd epics; retire `github_live` Projects path
  • nf-tvc.2 011 T2: `nflib/bd.py` seam + fake + tests + local JSONL export chokepoint
  • nf-tvc.1 011 T1: Prototype: bd tracks this doc's own tasks, in parallel with GitHub

Unattached issues no epic parent

open 273
  • nf-ofmi web_frontend: render the homepage task panel from open bd epics; link each epic to its design doc via a description pointer
  • nf-mzx4 merge_pr.py: --why gives a false negative for a GitHub-native stack member
  • nf-kvzb github_live/tasks.py: list_task_issues appears dead — no production caller
  • nf-18yg sessions.py: drop the now-redundant GitHub-label half of check_issues/stale_labels
  • nf-basf 007 T2: charter — the verdict is written for its readers
  • nf-cp0s ninefold-reviewer posts REVIEWER-VERDICT lines with risk= instead of charter's tier=
  • nf-ex2x games/tonapse/CONTROLS.md still documents FollowFocus scrolling that #308 removed
  • nf-2r5b PR #1158 follow-ups: stale CONTROLS.md FollowFocus doc
  • nf-rc6n Implement design_docs/013-golden-first-testing.md
  • nf-itdf reviewer: stamp_fresh() silently no-ops on a fresh spawn's own verdict (likely read-after-write race)
  • nf-sge6 PR #1178 follow-ups: retire github_live Projects-v2 code, drop a redundant bd.show() call
  • nf-i6wc brainstorm a better naming scheme & management for sounds and patterns
  • nf-w4pw more intuitive keybindings information
  • nf-dxsg pattern and song lengthening controls
  • nf-w12k re-think page flow and scrolling
  • nf-75j4 "The output doesn't sound produced"
  • nf-8ide "There are no guardrails that guarantee sounding good."
  • nf-jvhp fun: parameterized audio visualizer (parked)
  • nf-vpnl PR #364 follow-ups: HintsShown vs rendered rows, hidden-carrier fallback
  • nf-ax8p PR #334 follow-ups: CONTROLS.md gestures, probe assertions, wheel/focus decoupling
  • nf-21s8 PR #335 follow-ups: 🎛-row up-target, window re-grab on rebuild, zero-sound probe
  • nf-pui2 f5.sh: isolate user:// for the play instance too
  • nf-6zrh PR #362 follow-ups: premature user:// guard exemption, zone on nested focus emissions
  • nf-i710 reviewer follow-up issues accrue one per PR and outpace merging
  • nf-0flt focus: traversal is symmetric, but 27 deferred re-grabs can override it — audit + arbitrate
  • nf-s3ky PR #386 follow-ups: probe-assertable roll window, L3 glide sizing
  • nf-wqxl controls panel: show the R2 + d-pad navigation chord while editing notes
  • nf-enxz song grid rebuilds its whole subtree on every focus move — design proposal wanted before any code
  • nf-mnv0 song grid: auto-scroll the window to follow the playhead during playback
  • nf-h648 song grid: reorder rows (move a sound up/down the song)
  • nf-vol6 codebase hardcodes a person's name in 30 places — cite product direction instead
  • nf-r9fp screenshot upload needs the PR number before the PR exists
  • nf-lzac Probe gate: auto-file a regression issue, or print the command?
  • nf-phit PR #404 follow-ups: expect_row_label arg grammar, malformed-shape guard, seed docs
  • nf-uhlm PR #402 follow-ups: duplicate-close timing, board write races, stale PR body
  • nf-ne39 notes editor: pushing right escapes the card and lands on the header menu button
  • nf-mb8c UI gate as a presubmit: test the MERGE RESULT, not the PR branch
  • nf-uz62 where would CI run? hosted Windows runner vs a self-hosted runner on the sandbox box
  • nf-5v2j defer: switch the poll loop from cron to a Monitor
  • nf-vwrg CLAUDE.md tightening pass now the session-workflow design has settled
  • nf-pv2p PR #422 follow-ups: muted-PR digest wording, forced-review label lifetime
  • nf-9tap PR #426 follow-ups: design-doc status lifecycle, blocking alignment step, NNN races
  • nf-nc7y PR #430 follow-ups: nested-source export gap, binary-unsafe copy snippet, shell-tier conflict
  • nf-wr4q PR #443 follow-ups: leftover "sound" nouns in the docs and probe prose
  • nf-pjw5 PR #436 follow-ups: test docstring, CLAUDE.md gate-skip note, dirty-tree guard on the same-sha path
  • nf-79tz row-label two-line wrap lost its probe when the naming ring landed
  • nf-8qer What instrument should a brand-new channel start on?
  • nf-552k nothing verifies the verifier: the incoming Python suite has no guard against tests that assert nothing
  • nf-pxm1 PR #447 follow-ups: uncovered mint paths, keyboard-create contract, pool-order-pinned probes
  • nf-umo1 a live text-scale change doesn't reach controls built once
  • nf-i83x ninefold reviewer can assume that if a PR is working on a design doc, then it's a valid source of work (equiv to aedan ask).
  • nf-62rz PR #453 follow-ups: ApplyLayout/TriangleJump state seam, uncovered flip-with-fill-panel path
  • nf-g7uz reviewer: a 45-minute lock silently suppresses review of a PR whose spawn crashed
  • nf-3dgs PR #462 follow-ups: undated writer-warning in the poll.py port, two overstated liveness lines
  • nf-1863 PR #455 follow-ups: ring-scale probe can't fail on its layout half, stale body record, ring viewport reads
  • nf-ruh1 PR #463 follow-ups: degraded-tick fingerprint divergence, two stale poll.sh comments in dispatch.sh
  • nf-buu9 A probe assertion isn't evidence until it has been seen to fail
  • nf-j7dl TonapseHome: ApplyLayout and TriangleJump keep reaching into state the other owns
  • nf-jonf PR #470 follow-ups: stale refusal text, PR-body scope drift, proc.py tidy-ups
  • nf-gymf probe_gate: report the SPAN it swept, instead of claiming one merge caused it
  • nf-5uy6 PR #472 follow-ups: a comment that outlived its code, unused import, same-sha assumptions
  • nf-bko9 PR #466 follow-ups: a stale test count, a meta-guard blind spot, and a duplicated NF_GH_BIN rule
  • nf-jdlg coder replies claim fixes that are true of a different tree; nothing checks them
  • nf-g7us the mutation harness is rebuilt from scratch every time, and two rebuilds were themselves broken
  • nf-jmzb reviewer logs grow unbounded: 81 MB in logs/, ~16 MB/day, no rotation
  • nf-nd6v post-migration: has the tooling tier painted itself into a complicated corner?
  • nf-h66o generate CHARTER.md's verdict schema from nflib/verdict.py
  • nf-s0o9 notes editor shows one sound's roll while the loaded pattern is another's
  • nf-95sk playhead stutters instead of gliding when playing a pattern
  • nf-0t2j pattern page: put ▶ play pattern on the top row beside change-instrument
  • nf-n4wi rename dispatch.log -> reviewer-dispatch.log (and why NOT dispatch.py -> review.py)
  • nf-s6ul nflib: Gh.pr_list's default=[] makes a failed call indistinguishable from an empty result
  • nf-gl1l CONTROLS panel: bigger glyphs, and the glyph-header card that pays for them
  • nf-ay4x PR #495 follow-ups: #490's systemic half dies with the issue on merge
  • nf-sxsp PR #492 follow-ups: an unused import, a scenario count that disagrees with itself, a shim set-line drift
  • nf-5wkn presubmit's shellcheck lane silently skips on the sandbox box — the exe is installed but not on PATH
  • nf-xppv PR #500 follow-ups: playtest shims' python3 dependency, and a REPO env knob
  • nf-6baw poll.py: a sid in the wrong FORM matches no CLAIM and degrades the live-work predicate in silence
  • nf-dcfy Two playhead renderers duplicate the same three-part glow recipe
  • nf-dm4w Implement `design_docs/002-throughput-and-the-self-written-backlog.md`
  • nf-lqg7 Split screen: play-pattern button doesn't toggle, notes header flickers on vertical scroll, and the playhead doesn't animate
  • nf-2v69 PR #508 follow-ups: DrawTicks has no assertion, and three probe-doc drifts
  • nf-kfy3 PR #519 follow-ups: WRAP_UP still says "no open tracked PRs" with a paused PR tracked
  • nf-39so PR #523 follow-ups: /release transfer baseline, sync delete semantics, presubmit gate, README pointer
  • nf-alvs PR #520 follow-ups: probe_gate's not-finished path has no main()-level test
  • nf-a7ek PR #529 follow-ups: guard OnStateChanged, and pin the Changed half of the layout-flip fix
  • nf-m1k2 PR #522 follow-ups: dead test assertions, dry-run tail fidelity
  • nf-9cqx PR #530 follow-ups: worktree guard residuals and a fourth vacuous assertion
  • nf-x2wh merge_pr should refuse when a commit message carries a closing keyword the PR body does not
  • nf-ca1d nflib: Git.is_clean() reports 'could not tell' as 'dirty', with a message that names the wrong cause
  • nf-376p CLAUDE.md tells every session to diff before pushing; nothing does, and it has failed four times
  • nf-ot67 poll.py's backoff ladder counts --check invocations, not elapsed time
  • nf-hv3x Characterization harnesses are deleted by design, so five pieces rediscovered the same five environment traps
  • nf-agt5 Nothing gates a factual claim in prose: 6 of 8 findings on a docs PR were unmeasured assertions
  • nf-b1k5 Implement `design_docs/003-the-probe-host-and-the-move-to-wsl.md`
  • nf-t1w6 PR #549 follow-ups: CLAUDE.md coherence after the office + third-environment change
  • nf-kuje A worktree needs a Claude permission mode, and nothing carries one — add `.claude/settings.local.json.example`
  • nf-2vxg should we be using godot --write-movie for probes?
  • nf-qmbi PR #553 follow-ups: presubmit.py's preflight comment describes a removed check
  • nf-zofm tools/office: a spawn-dev script, so the CTO stops hand-assembling tmux lines
  • nf-jy5l nflib.git should own the `git worktree list --porcelain` parse
  • nf-ve0n poll.py reports STALE-DISPATCH forever on any box that is not the dispatcher's
  • nf-0178 The tooling suite asserts machine properties with no platform-conditional convention, so it is red on one box and wrong-way-green on the other
  • nf-ectu run_godot_tests.sh: Windows-only Godot glob, and it is a shell script with logic
  • nf-4cc7 Releases cannot be cut from a Linux box
  • nf-x3bj Three env vars name the one Godot path: GODOT_EXE, GODOT_BIN, GODOT_CONSOLE
  • nf-p8c9 PR #567 follow-ups: the platform skip is loud everywhere except the gate, and the new record guard is untested
  • nf-ks2i merge_pr.py cannot merge a stacked PR: gh pr edit --base is broken by GitHub's Projects-classic sunset
  • nf-4uns Godot crashes at teardown on Linux, turning a passed probe into a reported failure
  • nf-9zv1 PR #578 follow-ups: review_now.py failure reporting and the armed STALE-DISPATCH boxes
  • nf-m7wk PR #573 follow-ups: IS_WINDOWS as a seam, and three filing nits
  • nf-2ccf review_now.py parses dispatch.py's prose, and nothing binds the two
  • nf-ogds rev:pass certifies a head the reviewer has not seen, for up to one dispatcher interval
  • nf-d1xa poll.py --check is useless for a session with no session: label — 130 issues in the fingerprint vs 3
  • nf-ij5w CTO: work DEVEL.md when setting up a new dev machine, and feed back what it is missing
  • nf-mhw8 PR #589 follow-ups: a clone-sync claim that isn't true on the box it's written for
  • nf-ai2 PR #593 follow-ups: entry-point gate hardening
  • nf-745 PR #596 follow-ups: making the B2 body-currency check actually fire
  • nf-t2k explore-walk fails in the Linux probe sweep but passes 3/3 standalone — an undocumented sixth failure
  • nf-7vb test_nflib_proc's fd1-flush test flakes under CPU contention on the 2-core Linux box
  • nf-5na Kickoff box name: measured hostname, or a friendly studio name?
  • nf-ea1 A killed review_now.py orphans its lock, and every later call then says a review is running when none is
  • nf-u3s Docs point at a deleted Windows schtasks job; nothing records which host runs the dispatcher
  • nf-vae Nothing catches a line-number citation into a doc, and it has rotted four times in one PR
  • nf-34x PR #615 follow-ups: budget_ms window, focus-ring interior pin, S8's --fixed-fps
  • nf-r45 Probe throughput on the Linux gating VM is ~7-70x Windows, and concurrent dev sessions make the UI gate unreliable
  • nf-uiy Stdout buffering defeats poll.py's "alive, mid-sweep" corroboration, so a healthy long sweep reads as an outage
  • nf-5t3 Probe launch hygiene (design 003 S8): --audio-driver Dummy, and what --fixed-fps will and will not fix
  • nf-je9 An unlabelled chunk issue is invisible to poll.py's stop condition, so a session can be told to wrap up with its issue still open
  • nf-zjd PR #626 follow-ups: adoption refusal ordering, and the dry run's gh line
  • nf-6rj poll.py/nflib.gh: a rate-limited gh read is indistinguishable from an issue with no comments, so a blind tick reports as a quiet one
  • nf-cje office runbook: the handover section still prescribes --standing-slot plus a hand-written kickoff
  • nf-8dh poll.py: a rate-limited tick reports NO-CHANGE and backs off, indistinguishably from a genuinely quiet one
  • nf-443 poll.py: surface T1-mergeable PRs in the digest
  • nf-mie PR #613 follow-ups: the sweep's hardcoded tree basename, and one stale self-sync comment
  • nf-ylk notes/office.md is linked from nowhere — tools/office/README.md names its counterpart and not it
  • nf-zyf merge_pr.py silently repoints your current branch at main on a worktree checkout
  • nf-fnp reap.py --quiet-for: 30 minutes before a live session counts archived?
  • nf-33g PR #647 follow-ups: --quiet-for NaN, board note on refused reaps, unlistable-tmux apply path
  • nf-tun Two readers of `claude agents --json`: delete audit_sessions.py's copy in favour of nflib.sessions
  • nf-0dj PR #633 follow-ups: --why misses the new unresolved-thread gate, and three doc/contract residues
  • nf-9rb PR #665 follow-ups: --force wording, retry evidence, FLAKY/FIXED overlap
  • nf-j6a Frame-counted waits dominate the corpus (495 vs 32), and `budget_ms` is used twice in one probe
  • nf-8ip The Python tier has no static lane: 10 dead imports, and shell gets ShellCheck while tools/ gets nothing
  • nf-9af dispatch.py: one FAILED line for two unlike failures, and a 45m backoff for a run that cost $0.00
  • nf-ifj A reviewer spawn killed by the account's session limit reports FAILED with the reason buried in a 31 KB JSONL log
  • nf-993 PR #645 follow-ups: two checks that PASS having measured nothing, and a test entry nothing pins
  • nf-7ov perimeter: MENTIONS exempts a whole file forever, with no staleness gate
  • nf-69w PR #662 follow-ups: the wipeout's closing line contradicts its banner, and the third engine trigger
  • nf-hih notes/merging.md: the PR-stack rules do not say what to rebase a child onto when the parent moves
  • nf-ow1 What Tier-0 review costs: $69.66 for one chunk, 54 full reviews and 0 restamps in a day
  • nf-30d poll.py keys the reviewer wake on result=GAPS, so a CONVERGED verdict carrying B2 or advisory items is invisible on both channels
  • nf-0e9 reap.py: no agent + no transcript is two unknowns agreeing, and a live tmux session does not block it
  • nf-45c poll.py tells a session with four OPEN tracked PRs to wrap up, every tick, forever
  • nf-v5a Implement design_docs/005-probe-selection-and-build-config.md
  • nf-wvo PR #687 follow-ups: WRAP_UP evidence counts the ledger, not the predicate, and the claims half asserts more than it checked
  • nf-brt Three copies of pid-liveness, two of them differing on whether Windows may be asked
  • nf-2hz f5 push refusal: any input moving, or only origin/main?
  • nf-7j1 PR #692 follow-ups: the ordering guard, refusal scope, and two doc pointers
  • nf-5pp PR #653 follow-ups: the predicate prose moved outside test_doc_pointers.py, and the comment saying it was filed was not
  • nf-0ac /triage must render and honour priority:next — Aedan's prioritised queue
  • nf-hb7 butterbar-gate fails in two consecutive post-merge sweeps, and #615's own budget diagnostic says it is the host
  • nf-dem PR #699 follow-ups: manifest.py's hand-assembled JSON, after the encoding fix
  • nf-cb5 Unexplained: a session worktree gained staged deletions of files it never touched
  • nf-7z4 merge_pr.py reports a SUCCEEDED merge as a failure when the branch is already auto-deleted — and skips the merged:* stamp
  • nf-0od merge-authority cannot be a required check yet: the tool cannot post one, and nothing runs it
  • nf-rk7 PR #701 follow-ups: f5_health's unreachable no-ref guard, a dead OSError clause, two soft assertions
  • nf-2fi PR #713 follow-ups: on-demand spawns log as a grace expiry, and the digest nudge has no batch clause
  • nf-td2 PR #720 follow-ups: a test name that asserts its own opposite, and the tool-path check that was stubbed out
  • nf-7pi dispatch.log records only scheduled ticks, so ~half of all reviews are invisible to every cost measurement
  • nf-8d5 FakeGh.api routes inline comments on an exact suffix, so every real call falls through to the default
  • nf-k8j The full poll digest prints all 188 open issues in full — 240 KB of a 256 KB run, for 6 that are the session's
  • nf-171 Waiting-on labels have no closer: needs:direction and active survive being satisfied
  • nf-58y PR #716 follow-ups: the legacy-path comment names a file #716 never writes
  • nf-qe1 branch_merged passes head= to a Gh.pr_list that has no such parameter, so no wrap-up has ever deleted its branch — and the fakes' **kwargs hides it
  • nf-gp6 PR #734 follow-ups: --reconcile-only outcome reporting, and the docstring synopsis
  • nf-dxt Upgrade `gh` to >= 2.73.0 on every box — below it you cannot read a PR in the terminal
  • nf-vog review_now shouldn't be a queue
  • nf-0i0 unix principles and style guide
  • nf-xk5 PR #739 follow-ups: four sub-floor residuals in the import-cache preflight
  • nf-r1b design 005 piece 2 (S2): parallelise the sweep — 2.19x measured, but two clone-scoped paths collide first
  • nf-0gr A stalled probe hangs forever — no step deadline anywhere in the harness, so the merge gate never returns
  • nf-582 PR #749 follow-ups: one-kind-per-step lint, and two annotations in CHEAP_STIMULI
  • nf-pgi presubmit is green before `git add` and red after: every `git ls-files` scan cannot see the file you are about to commit
  • nf-gyu design 005 wants an amendment: three premises did not survive implementation (S1's 1.8x, the phase ordering, S10's trigger)
  • nf-2c2 design 005 appendix: raw measurements, datasets and how to re-run them
  • nf-45n Merging a stack: an approval does not refresh the authority check, and a squash breaks the child's rebase
  • nf-m30 improve isolation between devs
  • nf-0yn The notes tier is opt-in, so a session pays for not reading it before it knows it needed to
  • nf-v1o Print links to notes from error messages in dev tooling?
  • nf-6lm Implement design_docs/006-the-coders-front-door.md
  • nf-kox wrap_up.py reports 'wrapped, ready for reset' and leaves a live ~500MB process with a deleted cwd; worktree remove leaves the directory when gitignored output is present
  • nf-m5t CLAUDE.md's loop step 8 ('back to main, delete the branch') is impossible as written in a devs/ worktree, and fails silently with stderr suppressed
  • nf-5t1 Standing: read the dev-workflow feedback log and look for systemic issues
  • nf-d13 SessionStart guard: which sources should it fire on — `clear` only, or `startup` and `compact` too?
  • nf-2py PR #773 follow-ups: poll-loop vocabulary left in adjacent tooling
  • nf-6mo PR #780 follow-ups: the state-dir short-circuit, and two comments that overstate their tests
  • nf-p8p Guard tests that pass for the wrong reason: five PRs, no mechanical gate
  • nf-tty The PR body hand-restates what `merge_pr.py --why` already computes, and drifts exactly when it matters most
  • nf-7qz Retire the dispatch.sh / app_token.sh shims — #784 removed their only caller
  • nf-s4g PR #788 follow-ups: stale cron vocabulary in perimeter_check.py and a missing newline
  • nf-82k PR #786 follow-ups: unconverged()'s refusal claims a freshness fact it never checks
  • nf-cw7 row-label-wrap intermittently crashes the engine (signal 4, cowdata.h:197) at teardown
  • nf-xj1 PR #793 follow-ups: design 006 A1 does not use Step 7's amendment-entry template
  • nf-kga PR #800 follow-ups: a third pasteable command still sets a chunk branch upstream to origin/main
  • nf-hx6 Six pre-#794 branches still track origin/main — unset them now?
  • nf-y1w Push feature branches with -u, or have wrap_up.py/dev.py warn on a branch with no upstream
  • nf-38p PR #810 follow-ups: UI-gate ledger, lock and worktree residuals
  • nf-10a Check whether .worktreeinclude covers spawn_dev.py's worktrees too, before duplicating it as a bespoke mechanism
  • nf-tfd notes/merging.md: never git checkout in the shared base clone (#818 piece A)
  • nf-ya4 PR #828 follow-ups: empty-review annotation scope, pointer indentation, wrap_up.py and the ledger
  • nf-5da Fleet project: replace the session board with a live-derived view (tracking)
  • nf-5kg Nothing signals a blocked session outward: a perimeter-parked PR is visible only in a transcript nobody is reading
  • nf-9x0 `dev.py fleet` MVP: derive the session table live, CLI only
  • nf-zms PR #830 follow-ups: dev.py pr residuals
  • nf-5t9 --why's closing line can say "would merge" while the published check refuses
  • nf-rh1 A push after a human approval costs a full xhigh review, because the required check honours no local override
  • nf-51l probe baseline on nf-dev-sg records split-notes-editor as failing since 8602a71, but it passes on demand
  • nf-yd2 PR #847 follow-ups: spawn_dev Godot merge predicate, and design 005 S12 amendment
  • nf-4rv PR #853 follow-ups: verdict_report's early returns, and notes/merging.md
  • nf-8gq PR #848 follow-ups: two "step 5" comments name a --why instruction step 5 no longer carries
  • nf-k5n Graphite token on the sandbox box: mint as jcantsp-bot, or stay token-free?
  • nf-5gm Implement design_docs/007-reviewer-verdicts-for-readers.md
  • nf-yo4 PR #874 follow-ups: gt-route downstack depth, merged-parent diagnosis, set_body/pr_patch
  • nf-lmj PR #883 follow-ups: gate sha fallback, stale empty-gate lock, selection test seams
  • nf-bzf PR #892 follow-ups: worktree-selection plumbing, untracked_paths coverage
  • nf-kog PR #891 follow-ups: dev.py --help still claims a drop-down, and status trusts an empty gh.me()
  • nf-t56 Sonnet reviewer trial: re-baseline cost/latency figures and amend design 007 D1
  • nf-2hl PR #896 follow-ups: design 007 and reviewer DESIGN.md are behind the shipped charter
  • nf-2jj Prototype Explore
  • nf-6fs Monorepo tool-location naming guidelines: not everything can live in tools/
  • nf-m6n reviewer-proposed diffs as acceptable-verbatim suggestions, exempt from the freshness gate
  • nf-7j7 PR #909 follow-ups: probe + screenshot coverage for takeoff/orbit
  • nf-4rb PR #926 follow-ups: sync design_docs governance docs with the *.md narrowing
  • nf-rj4 PR #937 follow-ups: apply()'s row.issue fallback assumes OPEN state
  • nf-xjl 005b T7: `spawn_dev.py` merge-predicate reason
  • nf-3au 006a T2: Stack merges under `gt`: mid-stack extraction, safe restack
  • nf-tsy 006a T5: "Nothing claimed until it's true" — audit, then finish
  • nf-545 006a T6: "State the bounds of your knowledge" — the residue
  • nf-7t5 006a T7: The generating rule gets a findable home
  • nf-46b 006a T8: Manual split, coder slice
  • nf-cmn 006a T9: Amend 006: `gt`, the board, the timeout premise
  • nf-ydf 007 T4: Dispatch selects a docs charter for design-doc-only diffs
  • nf-i6y 007 T5: Measure the result
  • nf-06k Implement design_docs/009-the-games-audit-lane.md
  • nf-q1m PR #962 follow-ups: gh.issue_list's limit=500 can silently truncate old issue-state lookups
  • nf-hhx PR #968 follow-ups: silent skip on malformed design-doc task tables
  • nf-c44 rebuild_f5.py hard-aborts on content conflicts between open branches
  • nf-2iv PR #987 follow-ups: parallelize per-doc gh calls in fetch_design_task_panels
  • nf-70b review_now.py: a review lock survives its owning process dying, with no staleness signal to the caller
  • nf-2s7 Implement design_docs/011-task-tracking-on-beads.md
  • nf-trh PR #1018 follow-ups: nflib.channels / GOVERNED_TESTS residuals
  • nf-f58 PR #1014 follow-ups: lock in the star-import-shim false-positive coverage
  • nf-sib rebuild_f5.py: rerere never records a 'file location' (rename/add) conflict, so it re-triggers on every run
  • nf-8dj PR #1032 follow-ups: post_verdict.py body via file, not heredoc
  • nf-8c6 review_now/dispatch report "✓ verdict posted" when the reviewer finished WITHOUT posting one
  • nf-2og operationalize_design.py is a py_binary the merge gate imports as a library — extract the shared logic
  • nf-od2 PR #1046 follow-ups: stamp-failure UX, dead REVIEWER constant
  • nf-cfp PR #1015 follow-ups: stale tools/probes/ error strings
  • nf-ah4 PR #1017 follow-ups: test_nflib_channels.py landed old-shape, not swept into the co-located rename
  • nf-wpu dev.py digest: fold tools/pr/digest.py's required sid/tracked-prs/label args into the front door
  • nf-2a1 rebuild_f5.py: a 'file location' (rename) conflict recurs on every run — rerere can't cache it
  • nf-wkk Implement design_docs/012-jj-and-the-merge-pipeline.md
  • nf-o9z PR #1099 follow-ups: bd's "deferred" status leaks into digest's OPEN ISSUES
  • nf-41m PR #1083 follow-ups: stale cross-references in design doc 012 + PR body
  • nf-knn bd dolt pull/push have no timeout — a hung network stalls merge/wrap-up
  • nf-9xf check_issues blocks wrap-up on a since-RELEASEd issue another session re-CLAIMed
  • nf-apw web_probe_test: BeadsPageNoWorkspaceProbeTests assumes no shared bd workspace exists — false since Amendment A1 (#1126)
  • nf-1wa Gate Godot-runtime tests at merge via affected-selection (probe-gate second corpus); retire run_godot_tests.sh
  • nf-uen zz-scratch-test
  • nf-5u7 test issue ABCASDASD
  • nf-t93v needs:direction — chatter linkification has no automated mechanism; displayText is inert
  • nf-vz0j tools/pr/digest.py: emit_issues_bd treats deferred bd issues as open backlog
in_progress 2
  • nf-abda bd links, automatically: **Beads:** line in every PR body + a MessageDisplay linkify hook
  • nf-nqek turndown comments: repoint dead 159.89.200.95:8765 links at nfold.dev
blocked 0
deferred 0
closed 358
  • nf-thgr disable the 'file issue' and 'comment' buttons on beads UI after click while the RPC is happening
  • nf-amkl Make nfold.dev homepage load sections async
  • nf-18dh spawn_dev.py: add an --effort flag, same shape as --model
  • nf-bhvf tools/beads/import_github.py: per-epic reconcile overwrites deferred → closed on a GH-closed twin
  • nf-kccf design_docs/tools/operationalize_design.py --close: defers non-closed children then fails to close the epic anyway
  • nf-s8op web_frontend: homepage design-task panel — read from bd epics, not GitHub Contents API
  • nf-tue1 web_frontend: GET /new — a standalone issue-filing page, linked from the homepage
  • nf-gj0y make right click remove notes from a grid / patterns from song grid
  • nf-worh add a way to mute a whole row of sounds in the song grid, and mute individual patterns in the song grid.
  • nf-6f23 dont allow putting patterns in rows in the song that don't match the sound label
  • nf-ss7c create really good default synths for drumkit
  • nf-iyq4 autosave song changes
  • nf-bre3 tonapse: show controls guide
  • nf-4i4w tonapse: improve the visual styling
  • nf-ol8e where possible edits/interactions should play a demo sound
  • nf-vy2q release is not shown in the waveform visualizer.
  • nf-kjuk There is no way to edit individual sounds in the drum pack / editor
  • nf-um32 controller focus issues
  • nf-lb18 cant focus down to reset to demo song
  • nf-efs8 make Wave selector in sound editor use a radial selector on right-stick-push
  • nf-9ij7 right stick on dial should point to absolute value
  • nf-vuac no way to set individual notes in a pattern with controller
  • nf-p1ar notes editor - long-X should allow longer notes etc same as long-click
  • nf-1f0e adding a note in notes editor doesn't play sample sound
  • nf-w6zx with controller, its not visually clear enough when a dial is in focus, maybe put a circular glow around it
  • nf-ljdi with controller, focus on wave - d-pad changes the wave so d-pad gets stuck there
  • nf-guzk we need better controller controls for editing the song timeline
  • nf-syio Reply pattern is empty in the demo song - add something to it
  • nf-gy3r focus movement w/ controller is inconsistent -
  • nf-0vh5 re-think soundwave and amp view
  • nf-wpfi show remembered test pitch
  • nf-d9t2 meta: ways of working
  • nf-hlu2 duty dial is accessible even for non-square waveforms.
  • nf-ks4v when playing the whole song, the notes player animates even when not playing the pattern that is selected
  • nf-q0kr longer notes don't play for longer times
  • nf-rt9p easy switching between song and pattern editor
  • nf-a06j pattern & song can play at the same time
  • nf-3l3e long-X in notes editor should reset length back to 1, so u don't have to manually shrink the note
  • nf-kadm SongGrid.cs is stored as binary in git (i/-text) → whole-file merge conflicts on every rebase
  • nf-0pmz Design a way for Claude to visually inspect Tonapse / the game
  • nf-4v56 VisualProbe runs against the real save file — probe input mutates the saved song
  • nf-fcbv allow dragging across keys in the test note
  • nf-pivn add sampling instruments
  • nf-cr5p holding down a note in test keys should sustain the note
  • nf-hdpf move some buttons
  • nf-2pg8 add a controller option to mute
  • nf-h6al improve notes editor
  • nf-5ncw sound editor header considerations
  • nf-neny when placing a note, play test sound = length of note
  • nf-skrq show a waveform preview for samples
  • nf-z2jb provide amp controls for all instruments
  • nf-agiw make the amp graph prettier
  • nf-8gtw while pattern is playing/looping, if the selected pattern changes then update to be playing that pattern instead
  • nf-tqr6 note editor tweaks
  • nf-1q7k improve sample waveform rendering
  • nf-n7uu better installer / updater for ninefold
  • nf-p46b make the notes keys in the pattern editor pressable to play test sounds, to help with pattern composing
  • nf-cerr when u are in notes edit mode and press up, if you are at the top it moves the notes editor up one note, and also jumps focus out.
  • nf-15zt in notes editor, R2++ jump doesn't work consistently
  • nf-w973 tonapse: instrument browser popup — the chip row won't scale past ~8 instruments
  • nf-wm12 probe: regression runner — run all tools/probes/*.json in one command, fail loud
  • nf-xc7s rewrite the demo song to make use of best instruments -
  • nf-dpe0 show playhead in song-play mode rather than highlighting cells
  • nf-mjep menu options & save songs
  • nf-6m8b It's not clear that there is a 'default' saved song
  • nf-bqgw clearer patterns in the song builder ++
  • nf-k9r6 ability to delete & rename patterns and sounds
  • nf-3rx1 pattern editor should default to scrolling & zooming to show most/all of the notes in the pattern
  • nf-jfhr visual hint that the pattern editor can scroll up/down
  • nf-nm12 animations when moving around in the UX
  • nf-grh4 drumkit needs more release by default
  • nf-yaxt make a 'simple' drum kit
  • nf-xbac remove the inbuilt synth drum kit (superseded by sampled drum_kit)
  • nf-w8qk somehow I got multiple things playing
  • nf-9j5v song playhead stutter jumps when moving from one pattern to the next.
  • nf-s2qs automate / scriptify workflow if u agree
  • nf-brjf left stick pattern issues
  • nf-2qss revamp the UX for the radial meun
  • nf-wohy add colour blindness colour modes
  • nf-k858 nice switching between kits and chromatic instruments
  • nf-6tmq f5 script bug
  • nf-db61 improve name pools
  • nf-2smz when making a new demo song, focus gets stuck somehow on "keys" label in the song editor
  • nf-d53t make all edits to songs autosave
  • nf-6ms9 Formalize save-format versioning + a migration registry
  • nf-vkje focus jumps around all weird while navigating
  • nf-22w4 save and edit flows are destructive
  • nf-qgve clicking the menu button doesn't open tonapse menu
  • nf-hrbb delete / mute buttons are anachronistic on controller & radial improvements
  • nf-lae4 somehow lost focus from tonapse menu action
  • nf-esai "The world doesn't react to the music."
  • nf-wm4a add an option to delete a song in the menu, and also save a copy
  • nf-8kp5 can't always delete a sound
  • nf-ldba Distribution: itch installer, inbuilt updater, R2 static content (plan from #223)
  • nf-o9ea f5 untracked issue
  • nf-032v Add an option in the menu to "Make a copy of the current song"
  • nf-mtxi focus square fades when moving to a dial in sound editor
  • nf-rftm add more demo songs
  • nf-3do9 when u rename a sound or pattern, give an option in the radial menu to use the virtual keyboard and type a name
  • nf-f5yy release script should show some progress / % while uploading
  • nf-wm9p incremental updates are slow
  • nf-o116 make new song heirarchical & menu reorder
  • nf-mh3g delete "reset to demo song" btn and clarify cold start
  • nf-jt5j virtual keyboard cursor doesn't blink
  • nf-g6ww in virtual keyboard make O cancel, and Square backspace
  • nf-wn36 in modal popups, show a Controls panel
  • nf-zbqs fix height song and sounds panels
  • nf-3ifd controls panel in sound editor issues
  • nf-r2j0 Make R3 reset a dial in sound editor to the default value
  • nf-dk6v try better controller icon textures
  • nf-8367 rename song cancel takes u back to songs list menu, not home menu
  • nf-jjc3 in general, the control panels 'flash' when the focus moves around, even if the commands in the panel didn't change. only animate when the commands shown change.
  • nf-0koe butterbar in notes editor flashes too much
  • nf-6tsw reviewer dispatch: treat a head-sha change since the last verdict as activity
  • nf-l8ew probe: assert a 7-char pattern name renders un-ellipsised in a song cell
  • nf-qupr reviewer: delta re-verify on comment-less rebuild pushes (green PRs drop to yellow limbo)
  • nf-ff9n probe: expect_hint step — assert the CONTROLS guide's rendered hints
  • nf-u2si PR #350 follow-ups: expect_hint empty-arg pass, computed-vs-rendered hints, guide ambiguity
  • nf-qrmj song page: wrap long sound names instead of ellipsis; widen name column
  • nf-npbf debug-build focus telemetry + playtest capture, auto-published for /playtest
  • nf-ob7z probe runs: off-screen window + isolated user dir (kill flicker, enable concurrent sessions)
  • nf-er1q Which chord should fire the playtest capture?
  • nf-hobp PR #359 follow-ups: LabelShown has no probe reader (wrap gate unarmed)
  • nf-naem probe: colour-modes selector is stale ('⚙ options…' not found)
  • nf-1fan PR #360 follow-ups: UserPathGuardTests self-check is vacuous; scan picks up nested checkouts
  • nf-iiws PR #368 follow-ups: manifest under-report window, sha-length coupling, publish churn
  • nf-t239 PR #375 follow-ups: gojq ^ anchor in poll.sh, rebuild_f5 HEAD on failure, delta-check cost
  • nf-l511 PR #378 follow-ups: base_ref could ride the head fetch, push-path HEAD, two verdict matchers
  • nf-zr6d probe.sh silently runs the last-built DLL — build (or refuse) first
  • nf-madl song page: wrapped sound names should draw one tall pennant, not two
  • nf-q265 "fit notes in view" should centre the notes, not push them to the top
  • nf-jtzl main: #359 regressed three focus/layout probes (focus-cujs, focus-ring, grid-scroll)
  • nf-urd9 nothing runs probe_all automatically, so main's UI gate rots unnoticed
  • nf-kdx7 PR #390 follow-ups: success-path hand-back, charter quoting rule, unpinned parsing
  • nf-jc33 session lifecycle: poll only while work is live, then wrap up and reset context
  • nf-8dwn /triage: activate work deliberately, let the backlog stay inert
  • nf-nk5k Session board — who is running and what they're on
  • nf-d8a3 rebuild_f5.sh leaves f5/integration stale when the PR queue is empty
  • nf-1yi4 PR #403 follow-ups: fast-forwarded branches bypass the merge-parent map
  • nf-liin PR #407 follow-ups: off-main report prose, gate path resolution, comm collation
  • nf-ax5k the shell tier has no test harness, so every script change is verified by hand and re-verified from scratch
  • nf-vip0 poll.sh digest fetches full detail for every open issue, for every session
  • nf-032h make an easy way to tag a PR so that it doesnt get reviewed by the auto-reviewer
  • nf-s6d5 rev:off mutes one PR — also want a global reviews pause?
  • nf-rk2z Game-side art: games/<name>/assets/ or loose beside the scene?
  • nf-80rk Implement `design_docs/001-no-logic-in-shell.md` — tooling tier moves to Python
  • nf-o3wb Install ShellCheck on the boxes, or ship the lane skipping loudly?
  • nf-75vd Steam Deck: △ switches between a fullscreen SONG screen and a fullscreen NOTES screen
  • nf-4k90 text scale caps at 160% — take the ceiling to 200%
  • nf-3jah rename "sound" to "channel" in the UI, so "change channel instrument" means something
  • nf-gm0q new channel: pick the name on the radial, then the instrument — cancel aborts the creation
  • nf-w5hc PR #437 follow-ups: liveness-check residuals
  • nf-a296 poll fingerprint: a session's own board edit wakes it on the next tick
  • nf-9h50 One-screen layout: keep the CONTROLS guide pinned, collapse, or drop?
  • nf-yxz4 One-screen home: should song rows grow to fill the panel, or keep their height?
  • nf-mm60 design 001 rejects Bazel as packaging, never evaluates it as a dependency graph
  • nf-xojv STALE-DISPATCH fires falsely: merging the heartbeat doesn't restart the dispatcher
  • nf-nggo rebuild_f5.sh cannot converge on a delete/modify conflict — rerere never records it
  • nf-4zcc menu-focus probe is flaky, and a flaky probe makes the UI gate cry wolf
  • nf-ff49 poll.sh cutover: every running session's cron holds a path #463 deletes
  • nf-1n1l Restore #435: PR #472's rebuild reverted it, and the revert is on main
  • nf-wbpm Tests co-located with their subject: land #485, then finish the two deferred directories
  • nf-kozi notes-editor playhead lags / shows only a few frames — regression since release
  • nf-s7w7 rebuild_f5.sh leaves other PRs' build artifacts in the working tree
  • nf-9hnk Notes-editor playhead when the open pattern isn't sounding: ghost or hide?
  • nf-f6qa PR #505 follow-ups: rerere's `git add -A` eats untracked files, and `paused` blocks wrap-up
  • nf-m4m0 A probe that flakes once during a gate sweep is absorbed into the baseline as an accepted failure
  • nf-vwfi rebuild_f5 should run in a dedicated worktree, not the session's checkout
  • nf-llll probe.sh hardcodes the window, so layout-dependent bugs cannot be probed
  • nf-5207 f5 worktree per clone (~1.4 GB), or one shared directory?
  • nf-g2um git rerere is per-clone, so every session re-resolves the same f5 conflict independently
  • nf-6u2m One scheduled f5 rebuilder, like the reviewer — instead of every dev session rebuilding
  • nf-tk2m PR #544 follow-ups: publish.sh's header names a caller that no longer calls it
  • nf-pank move general dev agents to an invoke models for reviews
  • nf-i69i Python tier: 3 tests fail on Linux (platform assumptions, not real defects)
  • nf-npax Allowlist spawn_dev.py for the office CTO, or keep transcribing?
  • nf-7w12 PR #558 follow-ups: --resume flag handling in spawn_dev.py
  • nf-wdku PR #558 follow-ups: test isolation, the notes bullet, and an unchecked write
  • nf-yva5 PR #558 follow-ups: the MainTest box-dependency rule, and a stale notes bullet
  • nf-762p can't merge on WSL / linux
  • nf-29r4 Five probes fail on Linux and pass on Windows, with identical game code
  • nf-s66u WRAP_UP can fire with an open PR: tracked-prs.txt lives on tmpfs, and a missing file reads as an empty one
  • nf-dl5f allow dev agents to invoke the reviewer on their PRs at will
  • nf-pvmy main's probe baseline can only ever be advanced from Windows, so the UI gate goes report-only as dev moves to Linux
  • nf-uplj Put the reviewer App key on dev boxes?
  • nf-u77q probe_gate reports all 34 probes as regressions when Godot is absent, and offers to file it as an issue
  • nf-2fdc probe_gate blames a merge for regressing every probe when the engine is simply missing
  • nf-7ca7 Four entry points CLAUDE.md documents as ./tool.py are not executable in git, so they fail on Linux
  • nf-y14p claude md pending edits shouldn't break f5
  • nf-cady spawn_dev.py tells every dev it is on the WSL office box, whatever box it is on
  • nf-9j5z mechanism to tidy up worktrees of closed out agents & generally manage backlog
  • nf-8rtr PR #604 follow-ups: an empty-queue sentence that overclaims, and a dangling pointer
  • nf-5ird PR #603 follow-ups: gate-note wording, and the last role literal in the spawn_dev tests
  • nf-xqeg notes/machines.md's box inventory is tracked only inside PR #549
  • nf-xiv6 Widen the f5 docs-only filter to other inert paths, or stop here?
  • nf-wtos PR #600 follow-ups: a live-file line citation, and two soft spots in the new charter gate
  • nf-3iyu poll.py: a MISSING tracked-prs.txt reads as an empty one, and can green-light WRAP_UP with a live PR open
  • nf-anuc Probes run with NO Godot import cache on the Linux gating VM — every texture fails to load, and nothing says so
  • nf-frjf poll.py --check reports CHANGED every tick: the session board and closing_refs escape the per-session scoping
  • nf-z3qb spawn_dev.py cannot adopt an existing branch, so every handover needs a hand-written kickoff
  • nf-6hwc merge_pr.py: a successful merge reports `refuse: a GitHub call failed` when the repo's auto-delete beats `gh --delete-branch`, skipping the #389 UI gate
  • nf-jo4t probe_gate.py: with no display, all 34 probes 'fail' and it offers a paste-ready issue claiming main regressed every one
  • nf-nqag Nothing reconciles the session board against the sessions actually running
  • nf-56wj probe_gate: skip the sweep when a merge changes nothing the Godot build can see
  • nf-9rd1 wrap_up.py: a finished session removes its own worktree and its -f5 sibling
  • nf-8tw4 tools/office/reap.py: reap sessions that were archived and so never wrapped up
  • nf-eigt PR #638 follow-ups: audit_sessions.py drift-classification edges
  • nf-gi0w PR #638 follow-ups: the cron carve-outs are inert when tmux is unlistable
  • nf-zh26 merge_pr.py refuses EVERY merge since 13:28 today — ruleset set required_approving_review_count to 0, so reviewDecision is now always null
  • nf-kiwe rebuild_f5.py creates a nested `<topic>-f5-f5` when run from inside an f5 worktree
  • nf-gcqq PR #638 follow-ups: --board is parsed but the report always names #398
  • nf-4gyf Session audit: give the office CTO a board row, or exempt it?
  • nf-nv5t merge_pr.py cannot merge ANY PR since 13:28Z: the ruleset now sets required_approving_review_count=0, so reviewDecision is never APPROVED
  • nf-faj6 PR #653 follow-ups: baseline `recorded` timestamp, and sln-build inputs the skip calls inert
  • nf-xrba `gh pr edit` fails repo-wide on this box, which silently breaks the documented re-request-review step
  • nf-wfhi merge_pr.py's post-merge probe gate reports a FALSE all-red on headless Linux — it doesn't wrap probe_gate.py in xvfb-run
  • nf-wy66 PR #645 follow-ups: report lines that assert more than the checks proved
  • nf-i0hi probe_all.py --help runs the entire 34-probe sweep instead of printing usage
  • nf-zhsu PR #662 follow-ups: an exit code with no consumer, two host-coupled tests, a Linux-only hint
  • nf-g3zu Implement `design_docs/004-one-owner-for-the-integration-build.md`
  • nf-hdxa gh --body with backticks runs them as command substitution: PR comments post successfully with content silently deleted
  • nf-poa0 Design probes and testing infra
  • nf-rh23 Implement design 004: one owner for the integration build
  • nf-dnlc A probe whose assertions all passed can still be recorded FAIL, when Godot crashes during shutdown
  • nf-09tx Lean on review_now: the dev asks when ready, instead of the cron re-reviewing every push
  • nf-w8jx design_docs/ is tier:1 and inside the T1 perimeter — a design amended itself with no human approval
  • nf-1ho1 Session state (tracked-prs.txt, poll-*.txt) lives under /tmp and is emptied at every boot — move it to ~/nf/tmp
  • nf-4a6u PR #710 follow-ups: probe_gate baseline-staleness line
  • nf-w7zu perimeter_check.py cannot post a check run: check-runs require a GitHub App token and the tool never mints one
  • nf-1a12 Reviewer grace: 4h before the cron reviews unasked, or shorter?
  • nf-sf69 wrap_up.py --remove: a TypeError in the branch-cleanup probe leaves a merged local branch behind
  • nf-9rfg merge_pr.py outlasts the maximum tool timeout, so the post-merge UI gate is killed and main goes silently unverified
  • nf-2881 PR #716 follow-ups: three comments in probe_gate.py that #716 falsified
  • nf-jymv wrap_up.py --remove crashes on branch cleanup: Gh.pr_list() has no head= argument, and two call sites pass one
  • nf-7ykw poll digest: a human's inline ask prints 166 lines below an empty review header, with no unreplied marker
  • nf-d2h4 massively simplify developer workflow - delete poll review mechanism and more
  • nf-6aku design 005 piece 1+3: import-cache preflight for probes, and the core count in machines.md
  • nf-capl design 005 piece 15 (S18): notes/adding-a-game.md gains the scene recommendation
  • nf-quvo PR #748 follow-ups: the redirect guard's blind mutation, and a stale claim in the catch comment
  • nf-cas8 PR #752 follow-ups: document the deadlines, and derive the import rung from a cold import
  • nf-oyhz design 005 piece 5b: the three standing reds all pass serially — re-read the premise before fixing them
  • nf-yyx4 test_an_unapproved_pr_is_refused makes a LIVE network call to real PR #42 on every presubmit run
  • nf-gwa7 merge_pr.py --why cannot see the published merge-authority check, so it says "would merge" while GitHub blocks the merge
  • nf-wrgo PR #772 follow-ups: session_start.py residuals
  • nf-d17w PR #772 follow-ups: session_start.py report accuracy
  • nf-qv8v Delete the automated reviewer dispatcher: review_now is the only mechanism
  • nf-4rqh make merge-authority check require rev:pass tag (or equivalent)
  • nf-xjif PR #787 follow-ups: unpinned wrap-up payload keys, the dropped tree list, one fake still swallowing kwargs
  • nf-5mxd merge_pr.py hard-resets whatever branch is checked out when it finishes, with no guard
  • nf-vxgd PR #794 follow-ups: the other paths that still set a chunk branch upstream to origin/main
  • nf-obhw PR #801 follow-ups: the named-file resolve, and /triage's bare poll.py
  • nf-ygo3 PR #802 follow-ups: probe.py --help has the same bug, and one width-dependent assertion
  • nf-mymf board.py --set-row: replace the #398 whole-body-edit race with a compare-and-swap verb (design 006 S12)
  • nf-7nhw spawn_dev.py: add a --model flag, threaded through to the claude launch line
  • nf-mdum PR #809 follow-ups: comments and a test still describe the --no-track mechanism it deleted
  • nf-306d PR #814 follow-ups: --model in spawn_dev's docs and its closing report
  • nf-gho9 Convert the shared base clone /root/nf/ninefold to bare, and give the CTO a dedicated read-only worktree
  • nf-cmcw PR #815 follow-ups: wire board.py into the callers that still hand-roll the race
  • nf-hhaw dev.py pr — gate, create, register, and open stacked children (design 006 pieces 5 + 19a)
  • nf-yn91 merge_pr.py's explain()/--why learns presubmit, and reads the published merge-authority check (design 006 piece 6)
  • nf-m0j7 poll digest: flag an unreplied human ask, don't bury it 166 lines down (design 006 piece 7, closes #732)
  • nf-jqv1 Delete the session board (#398) and its supporting machinery, before building fleet
  • nf-oadu spawn_dev.py should run session_state.py --init, so no dev ever meets it
  • nf-fwfp PR #838 follow-ups: no regression test on poll.py's WRAP_UP text; office README carries the obituary
  • nf-e4xe Use review sparingly: make the pass count and cost visible, refuse a pass mid-work, and land at CONVERGED
  • nf-gdvd notes/merging.md: --why now has a fourth output, and its list still says three
  • nf-hd9g dev.py pr: default --base from Graphite parent metadata when the branch is gt-tracked
  • nf-kpqa dev.py pr: optionally create PRs via gt submit so Graphite's UI renders real stacks
  • nf-2ih6 005b T1: affected_probes — map a diff to a probe set
  • nf-tw2v 007 T1: pin the reviewer's model to claude-opus-5
  • nf-973z 005b T2: merge gate runs the affected set; #847's default reverts
  • nf-6qzo PR #879 follow-ups: amend design 007 for the claude-opus-5[1m] pin
  • nf-8ad2 005b T3: run_probes.py — affected set by default, --all for the sweep
  • nf-xb7h merge_pr.py --why gains --json (design 006a T1a) — status renders explain()'s full block instead of one line
  • nf-eb8v 005b T4: amend 005 — the retractions and the #847 deviation
  • nf-y39l Add a label flag to dev.py pr
  • nf-mamf 005b T5: smoke probes per scene + presubmit/postsubmit marking
  • nf-5xlw think about cheese
  • nf-g19l Implement design_docs/008-live-status-for-design-doc-tasks.md
  • nf-kzv4 add icon to ninefold game
  • nf-efo1 review_now.py --force doesn't actually lift rev:off — reviewer self-skips anyway, still spends the run
  • nf-6eis 008 T2: tools/github_live — portable GitHub read+write library
  • nf-1fhf perimeter.py: narrow design_docs/* governance to *.md, so design_docs/tools/ code isn't gated
  • nf-mre2 zzz-github_live-smoke-1786690748-DELETE-ME
  • nf-hx6f 008 T3: design_docs/tools/operationalize_design.py — dry-run / apply / close
  • nf-d2xc zzz-github_live-smoke-1786696300-DELETE-ME
  • nf-uant Implement design_docs/009-games-merge-without-a-click.md
  • nf-3uyc 008 T4: backfill operationalize_design.py against 005b, 006a, 007
  • nf-k8qf operationalize_design.py --apply: pre-filled Issue cells assume OPEN, never check real state
  • nf-v0au 006a T3: `dev.py claim` / `release` / `say` / `file`
  • nf-yjbo 006a T4: `dev.py feedback`
  • nf-d5qv operationalize_design.py: _stamp_project_header inserts mid-bullet when a header field wraps onto a second physical line
  • nf-ahrs 007 T3: Charter: re-reviews are deltas
  • nf-tfqt operationalize_design.py: create_project doubles the doc-id prefix when the doc's own title already starts with it
  • nf-9h0d PR #958 follow-ups: stale org-Projects-permission docs + missing default-owner regression test
  • nf-b21e operationalize_design.py: golden before/after tests from the 005b/006a/007 backfill, fix to green
  • nf-hupq 008 T5: dev.py designs — JSON of live design-doc task status
  • nf-ehws Three unrelated meanings of "tier" — rename the reviewer's advisory tier: labels
  • nf-ngqo 009 T1: The single-game exception to R1
  • nf-bvyf 009 T2: Refusal reasons prescribe the next action
  • nf-2pot 009 T3: `tier:*` → `risk:*`, and *tier* freed for the philosophy
  • nf-1olo 009 T4: Pre-merge `approval:*` label in; `merged:*` and `--audit` out
  • nf-42hz reap.py's standing-slot list is hardcoded and already stale
  • nf-y3rt spawn_dev.py's --model has no default, and claude's own default resolves to Opus here
  • nf-iape 008 T6: Dashboard panel — design-doc task status, live-fetched
  • nf-vvhx rebuild_f5: fast verify when nothing Godot-visible changed; dev.py pr/merge run the rebuild
  • nf-tzo5 008 T7: Document the schema + two-stage workflow
  • nf-iocb Co-located C# tests: layout gate + singular `.Test.cs` sweep from main, then withdraw #485
  • nf-58s5 Co-located Python tests: discovery-reconciliation guard, then the `_test.py` move (after #990)
  • nf-j7f5 Probes move to per-game `probes/` folders (design 005 S15)
  • nf-kkvs 010 T1: `layout` presubmit lane + `STYLE_GUIDE.md`
  • nf-9wto 010 T2: C# sweep: singular `.Test.cs` + `.GodotTest.cs`, delete `tests/` dirs
  • nf-yrg7 010 T3: Terminal rule: lane fails any `.cs` under a `tests/` dir; drop dual-layout acceptance
  • nf-z15o 010 T4: Withdraw #485 (in-thread reply), tidy #494
  • nf-essa 010 T5: Python discovery-reconciliation guard
  • nf-3m0j 010 T6: Python move to `*_test.py`; flip `-p` in the same commit; delete `tools/tests/`
  • nf-q4uu 010 T7: Probes → `games/<name>/probes/` + `shared/probes/`, all S15 preconditions atomic
  • nf-8fu6 PR #1017 follow-ups: stale tools/tests/test_X.py doc references after the co-location rename
  • nf-ucxy Cut and publish a live release including PR #1011 (orbit-view globe) — handoff, in progress
  • nf-6ame dev.py pr: stamp approval:* at creation, stop auto-requesting Aedan's review; delete the dead review-requested gate
  • nf-158n Investigate: can a Linux host with Windows export templates actually cross-export a working Windows build?
  • nf-n917 notes/machines.md: new-box setup should cover rclone + R2 credentials
  • nf-o5d2 design-doc-followup channel (#1018) never grants: App token can't resolve org Projects v2
  • nf-2gqu Retire "Tier 1" language from user-facing output — everything is approval:*/rev:* vocabulary after design 009
  • nf-9utu explore-walk: player position off by ~30 cells after orbit-globe-terrain (#1011)
  • nf-kzcy design_docs/README.md Index is missing design 010
  • nf-31ig explore-walk: PlayerCell/PlayerPixel off by a scale factor since #915
  • nf-5cbg explore-walk: PlayerCell/PlayerPixel off from probe expectations (predates #1015)
  • nf-ilrd Reviewer docs: drop "Tier 0/Tier-0" vocabulary — design 009 reserved "tier" for hacky-vs-hardened
  • nf-lqso Reviewer source: drop "Tier 0/Tier-0" from Python docstrings, CLI help, and comments (post #1077)
  • nf-bxrv godot_build.py: hold presubmit.py/presubmit_test.py out of f5/integration — they're never in the playtest chain
  • nf-dr3r Reviewer DESIGN.md roadmap: is "Reviewer-performed merges" still wanted, given design 009 shipped Tier 1 merge authority differently?
  • nf-lwxv Rename tier1_authority / retire "Tier 1"/"Tier 2" merge-authority prose — reopens design 009's Non-goal
  • nf-4kit probe: explore-pause fails PlayerCell assertion after resume — '-40,0' expected, got '-10,0'
  • nf-21lu design 011: one shared bd workspace per machine, not per-worktree copies + sync (Amendment A1)
  • nf-h793 PR #1123 follow-ups: Amendment A1's TOC entry and Landed-in line don't match the Step 7 template
  • nf-a6ep bd export backup chokepoint silently never writes: .beads/backup/ isn't created first
  • nf-534g tl.md: make 'assign always means a fresh dev' unambiguous
  • nf-d7ss presubmit --doctor: check the reserved bd workspace exists, not just the bd binary
  • nf-b93u presubmit --all: python lane broken on main, merge_pr_test.BdSyncChokepointTest references undefined _T1Gh
  • nf-okiy web_probe_test.py: BeadsPageNoWorkspaceProbeTests mocks BEADS_DIR, which Amendment A1's Bd.raw ignores
  • nf-aiec 011 T9a: backup.py scaffolding + Dolt-on-R2 research + Windows checklist (no live R2 creds needed)
  • nf-lakr operationalize_design.py: minted tasks should include the doc's per-task section, not just the table row
  • nf-ovxi import_github.py: twin creation never copies the GitHub issue's body text
  • nf-ct5w web_frontend homepage still reads GitHub Projects directly, not bd
  • nf-ijyi opening the dashboard is slow - investigate
  • nf-1owx spawn_dev.py: add a --bd flag, --issue is GitHub-int-only and can't name a bd-native chunk
  • nf-wb9w notes/beads.md documents 'bd comment --body', a flag bd 1.2.2 rejects
  • nf-oqmx merge_pr.py: land native-stack members via GitHub's async stack-merge API, every gate intact
  • nf-jfeh PR #1160 follow-ups: web_frontend/server.py's issue-filing form calls Bd.create(body=...), a param it doesn't have
  • nf-mbjj 011: T8 gate — restore drill + full bd-native chunk rehearsal (single-machine)
  • nf-iw4i Re-verify: is tools/beads/import_github_golden_test.py's golden fixture actually broken by #1152?
  • nf-hou tools/beads: import_github_golden_test's design-011 golden is stale on main
  • nf-ui0 design 011: web_frontend dashboard — iterate on Aedan's feedback
  • nf-q2j PR #1106 follow-ups: unhandled exceptions in claim/release/say
  • nf-q6v *.GodotTest.cs scenes fail to instantiate under godot --headless (confirmed on ControllerNav.GodotTest.cs)
  • nf-s4h 011 T8-import: real one-shot import of all open GitHub issues into bd (import only, not flip/turndown)
  • nf-152 dev.py pr refuses to open on ANY red --all, even failures nothing in the diff touches

File an issue

Filed issues never carry an assignee or active/session:* labels — dropped even if entered here.