Repository navigation
One repository may hold both memory scopes, and the gates now know it - #93
Merged
Merged
Conversation
A project that cannot commit notes next to its code points public_repo and private_repo at the same repository; the scopes still do not collide, because they sit at public/projects/<key> and private/projects/<key> inside it. Every wiring verb builds that layout and reports success — and nothing checked it. FLOPPY_PRIVATE_STORE was derived by asking whether the private scope's repository DIFFERS from the memory store, which there it does not, so the variable was blanked, wrap-guard's scan returned on its first line, and each of fifteen changed files came back as "not changed: wrong path, or the edit was lost". The reader spent several iterations on their own paths before running `env`. What decides coverage is containment, not repository identity: the memory scan reaches what lies under the memory scope, and a sibling prefix is not under it. _derive_common has always used containment and says so. Two consequences travel with it. One repository is one commit: the scopes merge where the unit stops being a scope and becomes a repository, instead of writing two commits with one message and pushing twice into one clone. And an unscanned scope now says so, with the path it resolves to — the scan returns silently on an empty store, so any future blanking would wear the typo message again. Separately: the link scan took everything between [[ and ]], so a bash condition in a note failed the run as a dangling slug, inline or fenced. A slug never contains whitespace and a condition always does. The positive control pins that a misspelled slug still fails. Released as 0.25.1. Suite: 23 files, 1018 assertions, 0 failed on /bin/bash.
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.
Reported from the
fleetcheckout:run commitrefused to commit fifteen changed files in the private scope, each named asnot changed: wrong path, or the edit was lost, whilegit statusin the store listed every one of them.The layout
A project that cannot commit notes next to its code — a fork kept for upstream PRs — points
public_repoandprivate_repoat the same repository. The scopes do not collide: they sit atpublic/projects/<key>andprivate/projects/<key>inside it.store,workplaceandlinkall wire it and all report success. Only the checks did not cover it.The cause
FLOPPY_PRIVATE_STOREwas derived by asking whether the private scope's repository differs from the memory store — identity, where the question is containment. The memory scan reaches what lies underFLOPPY_MEMORY_REAL; a sibling prefix in the same repository is not under it. So the variable was blanked,scan_scopereturned on its first line, and every file in the scope wore the message for a typo._derive_commonnext to it has always used containment, and says so in its own comment:common/sharednormally resolves into the memory's own store.What is in the change
lib-config.shwrap-commit.shwrap-guard.shmemory-lint.sh[[ -n "\$x" ]]in a note is no longer read as a link — a hard error that tookcheckand the commit with it, inline or fencedVerification
Each half was reproduced before the fix and pinned after it:
tests/test-external-memory.sh— the one-repository shape end to end: both links wired,FLOPPY_PRIVATE_STOREequal to the memory store, guard accepting a private note, and a commit spanning both scopes landing as one commit with both paths in the remote. Plus the half-wired shape, asserting the honest message.tests/test-memory-lint.sh— a note quoting a bash condition passes, and the positive control that a dangling[[slug]]still fails.Suite: 23 files, 1018 assertions (+17), 0 failed on
/bin/bash.Released as 0.25.1; the shim is untouched, so the changelog answers "Refresh
.floppy/run?" with no.Not reproduced, and not changed: the reporter also saw
git status --porcelaincollapsing a new scope directory into one??line. With the store ignoring the wiring link the wayworkplaceleaves it (ignore_wiring_link), that line does not appear;scan_scopealready passes--untracked-files=all.