bc-68ou.15: B7e-unlanded — Where does this exist, if it is not on main yet - #643
Open
mordam wants to merge 16 commits into
Open
bc-68ou.15: B7e-unlanded — Where does this exist, if it is not on main yet#643mordam wants to merge 16 commits into
mordam wants to merge 16 commits into
Conversation
…n yet, and what does it say there
Four sessions (bc-fh0sz, bc-gdub, bc-khoe.4, bc-khoe.30.14) each read a symbol, a file
or a hunk out of an unmerged branch or pull request by hand, six-plus git/gh calls
apiece. lib/unlanded.js carries the search (git grep/cat-file/diff across every
worktree branch, plus gh pr list/view for PR facts); bin/b7e-unlanded is the argv
parsing and printing.
- main short-circuits the search once a symbol/path is found there, since ~350
worktree-* branches all inherit anything already merged — an early cut took over
two minutes on an already-landed symbol before this was added. --all overrides it.
- ref:path (git cat-file -p <ref>:<path>) is built as a plain JS template string and
passed to execFile as one argv element — no shell involved, so the ${B}:path
gluing bug bc-khoe.30.14 hit cannot recur structurally.
- a query found nowhere prints 'nowhere' explicitly, never an empty diff.
Wired per the b7e-* skill checklist: bin registered in package.json and
package-lock.json's packages[""].bin, Bash(b7e-unlanded:*) on DEFAULT_TOOL_LIST
(lib/toolbelt.js) and classified read in lib/grants.js, a README section, and
test/b7eunlanded.mjs (16 checks, replaying the bead's three acceptance cases plus
the short-circuit/--all/--branch/--pr/--diff/--json paths).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Owner
Author
|
A beadcause worker opened this and does not merge its own work. It is on the merge queue as bc-lq91q. |
Owner
Author
|
The beadcause merge queue tried to merge this and could not: it has been tried 3 times and stopped at the same place each time. the branch still conflicts with |
…-68ou15 # Conflicts: # README.md # lib/grants.js # lib/toolbelt.js
…-68ou15 # Conflicts: # lib/grants.js # lib/toolbelt.js
…-68ou15 # Conflicts: # lib/grants.js
…-68ou15 # Conflicts: # lib/grants.js
The branch-side copy still lists lib/grants.js and lib/toolbelt.js as merge=union, which bc-wbrhi took off that list on purpose: both files are derived from bin/ now, and union on a derived file silently restores blocks the other side deleted. Git reads merge attributes from the checkout doing the merge — the branch — so main's copy has to be here before the merge, not brought in by it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Resolving the merge of origin/main into this branch. main moved the b7e-* half of the read-only surface out of lib/grants.js and lib/toolbelt.js and into the tools' own headers: a bin/b7e-* file says @grant read, write or excluded, and lib/tooldecl.js assembles both registries from that. This branch predates it and still appended a line to each, which is where both conflicts were. Both registries are taken from origin/main verbatim and the classification they carried moves into bin/b7e-unlanded's header. read rather than write for the reason this branch already gave, kept in its own words. node bin/b7e-enroll b7e-unlanded says nothing is owed, and this branch now touches neither registry. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
b7e-unlanded(bc-68ou.15), ab7e-*skill command that answers "where does thissymbol or path exist, if it is not on main yet, and what does it say there" — the
question four sessions (bc-fh0sz, bc-gdub, bc-khoe.4, bc-khoe.30.14) each answered by
hand with six-plus
git/ghcalls, one of them losing a call to a shell gluing a refand a path together wrong (
git show "${B}:test/panes.mjs"→fatal: ambiguous argument 'worktree-releases-view-khoe7est/panes.mjs').lib/unlanded.jscarries the search:git grep/cat-file/diffagainstmainandevery
worktree-*branch this checkout knows about, plusgh pr list/pr viewforeach hit's PR number, state, merge state and tip commit — best-effort, same as
lib/prior.js. Two design choices worth flagging for review: (1) a hit onmainshort-circuits the search rather than also walking every branch — this repo carries
~350
worktree-*branches, and once something has landed every branch cut afterwardinherits it in its tree, so an unconditional sweep on an already-landed symbol
(
viewHop, tested live) took over two minutes ofgh pr listcalls for nothing new.--alloverrides the short-circuit for a caller who wants to know about an unlandedchange on top of something that already merged. (2)
${ref}:${path}(git's ownobject-spec syntax, needed for
cat-file -p) is built as a plain JS template string andhanded to
execFileas a single argv element — no shell in between, which is why thebc-khoe.30.14 gluing bug cannot recur here structurally, not just by convention.
Wired per the checklist bc-dgx7.1's debrief and the memory store describe: bin
registered in both
package.jsonandpackage-lock.json'spackages[""].bin(alphabetized, inserted between
b7e-triage/b7e-watch),Bash(b7e-unlanded:*)addedto
DEFAULT_TOOL_LISTinlib/toolbelt.jsand classifiedreadinlib/grants.js(the second registration
test/grants.mjsfails closed on if it's missed), a READMEsection, and
test/b7eunlanded.mjs.Left for the reviewer's judgement: the
--showflag is accepted but is a no-op (pathmode already defaults to printing the whole file, which is what the bead's own
acceptance criterion for
public/releases.jsasks for without naming a flag) — I keptit only because the bead's own "Takes" example uses it, documented as "already the
default" in
--help. Also, symbol search across the full worktree-branch list (the"not on main" case) took ~14s against a real 345-branch tree in manual testing —
tolerable for what it replaces, but a
--branch/--prpin is much faster when thecaller already knows where to look.
Tests: Full gate (bin/b7e-gate, 6-way parallel over all 421 test/*.mjs + scripts/selftest.mjs + scripts/test-swap.js) run twice in the fresh worktree: first cut failed on a fresh worktree's missing node_modules (unrelated to this change — Cannot find package 'yaml'), fixed by symlinking node_modules from the main checkout and running scripts/vendor.js; the re-run passed all 421 suites, 0 failures. Also ran test/b7eunlanded.mjs (16 checks, replaying the bead's three acceptance criteria plus the main-short-circuit/--all/--branch/--pr/--diff/--json paths), test/grants.mjs, test/lockfile.mjs, test/anchors.mjs, test/loadorder.mjs individually before the full gate.
Files changed — 8 files · +790 −0 · against `main`
Opened by a beadcause worker session on bc-68ou.15 — b7e-unlanded — Where does this exist, if it is not on main yet — and what does it say there. It merges itself once the checks report; merging is what closes the bead. If this is still open, something stopped that, and the reason is on bc-68ou.15 and in Adam's inbox.
bead: bc-68ou.15