Repository navigation
docs: record the /public path prefix and the release-lane rules in CLAUDE.md - #1469
Merged
olsonanl merged 1 commit intoOct 17, 2026
Conversation
…AUDE.md Two bodies of hard-won knowledge that existed only in an uncommitted working tree and were one `git checkout` away from being lost. **`/public` is a UI-only prefix.** Workspace paths display and route as `/public/<owner>/<folder>`, but the Workspace service has never heard of `/public` -- the canonical path it accepts is `/<owner>/<folder>`. The prefix is added for display and stripped before every outbound call, so a path crossing a layer boundary is in one of two forms and you have to know which. Tabulates the four strip sites and the inverse re-add, plus two consequences: favorites double up unless normalized, and the Workshop shortcut correctly stores a literal space rather than `%20` because it is an internal path, not a URL. **Release branches, versions, and hotfixes.** Why there is no fourth version component -- `3.59.12-1` sorts *below* `3.59.12`, `3.59.12+hotfix.1` compares *equal* to it, and `3.59.12.1` is silently mis-parsed by npm as `3.59.1-2.1` while exiting 0. Two npm traps found the hard way: `npm version --dry-run` writes the manifest anyway, and `node -p` prints `write()`'s return value, which once produced a literal `3.59.12true` version string. Then the lane invariant (master holds the lower line, alpha the higher, a hotfix must be strictly below alpha's) and the `hotfix-tag.yml` gotchas -- notably that the tag step succeeds even when everything after it fails, so checking only that the tag landed checks nothing. Verified rather than transcribed. Two line references had drifted since the notes were written and are corrected here: `WorkspaceBrowser.js:2787 -> :2847` and `ContainerActionBar.js:103 -> :105`. The other three strip/re-add sites, and the workflow claims about `hotfix.yml` and `diff-filter=U`, check out against the current tree. The "51 prior tags" figure was stale (58 now), so it is dated rather than left to rot. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
olsonanl
added a commit
to olsonanl/bvbrc_website
that referenced
this pull request
Oct 17, 2026
Picks up the four commits alpha gained while the previous merge was in flight: the v3.60.7 release bump and the CLAUDE.md documentation of the /public path prefix and release-lane rules (BV-BRC#1469). Clean auto-merge. CLAUDE.md took both sides without duplication -- this branch's Unified Download Wizard and RQL-in-HTML sections sit alongside alpha's state.search, /public and release-lane sections. 75 tests pass. The branch is now current with alpha, so the download-side 429 work lands on the code it will actually ship with. 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.
Summary
Two bodies of hard-won knowledge that existed only in an uncommitted working tree and were
one
git checkoutaway from being lost. Documentation only — 96 insertions, 0 deletions,no code touched.
/publicis a UI-only path prefixWorkspace paths display and route as
/public/<owner>/<folder>, but the Workspace servicehas never heard of
/public— the canonical path it accepts is/<owner>/<folder>. Theprefix is added for display and stripped before every outbound call, so a path crossing a
layer boundary is in one of two different forms and you have to know which.
Tabulates the four strip sites and the inverse re-add, plus two consequences worth holding
onto:
the same folder favorited from its owner's view are the same object; only
_normalizePathmakes them compare equal.%20— correct, because that valueis an internal path rather than a URL. The same folder appears with
%20in hand-writtenhrefs elsewhere. Don't "fix" either to match the other; they're in different domains.
Release branches, versions, and hotfixes
Why there is no fourth version component, with the specifics:
3.59.12-1is a prerelease and sorts below3.59.123.59.12+hotfix.1is build metadata, excluded from precedence —semver.eq()against3.59.12returns true3.59.12.1isn't SemVer at all, and npm silently mis-parses it as3.59.1-2.1whileexiting 0
Two npm traps found the hard way:
npm version --dry-runis not read-only — it reported a version and wrote themanifest
node -pprints the final expression's value, sonode -p "...write(v)"emitted theversion and
write()'s boolean, producing a literal3.59.12trueversion stringThen the lane invariant (master holds the lower line, alpha the higher, a hotfix must be
strictly below alpha's) and the
hotfix-tag.ymlgotchas — notably that the tag stepsucceeds even when everything after it fails, so checking only that the tag landed checks
nothing.
Verified, not transcribed
Reading these notes against the current tree turned up real drift. Two line references were
stale and are corrected here:
WorkspaceBrowser.js:2787:2847ContainerActionBar.js:103:105The other three strip/re-add sites check out exactly, as do the workflow claims about
hotfix.ymlenforcing the lane invariant andhotfix-tag.ymlusingdiff-filter=U.The "51 prior
vX.Y.Ztags" figure was stale — it's 58 now — so it's dated rather than leftto rot.
Worth stating since it's the point: documentation with stale
file:linerefs is worse thannone. It sends the next person to the wrong place and costs them the time it was meant to
save. Anything here with a line number has been checked against
alphaas of this PR.🤖 Generated with Claude Code