quince converts: five entries, and the first conversion that destroys
Under cart/v1 the cart is untracked, so converting deletes the dailies outright rather than leaving them in history. That makes the write-ahead log the mechanism rather than a convenience, and it sharpens the conflict already recorded in cart.usages.md: the annotation protocol here says commit before dissolving because git is the only archive, and an ignored cart has no archive. Answers whether the cluster split removes the need for a PAT. For this repository yes, and in general no: the confidentiality rule sorts the cases, so a public repository may only adopt public documents and never needs a credential, while a private one adopting private documents legitimately does. Needing a credential stopped being a capability and became a signal, which is why add warns rather than deciding — it sees that the source is private and cannot see who may read the repository the copy lands in. Downgrades the git-over-HTTPS assumption from load-bearing to unexercised. The code did not change and its status did, which is the kind of thing only a log says. Records that the completeness case has a mechanism after all — the usages facet the tool points at when it stages a polad — and that it failed the first time because the facet did not exist rather than because nothing could work. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018UTxuSizozEA8yDitPuris
This commit is contained in:
@@ -714,3 +714,92 @@ own word, discoverable in `--help` rather than found in a hint.*
|
|||||||
|
|
||||||
*The domain word survives regardless: `externals` says adopting is fetching a URL,
|
*The domain word survives regardless: `externals` says adopting is fetching a URL,
|
||||||
and the tool says `adopted` throughout.*
|
and the tool says `adopted` throughout.*
|
||||||
|
|
||||||
|
## 2026-09-07 — the credential is not needed here, and is not gone `quince`
|
||||||
|
|
||||||
|
**`jeffry/homelab-cluster` is public and `jeffry/homelab-impl` is private.**
|
||||||
|
*Adoption flows public → private, so nothing this repository depends on requires a
|
||||||
|
credential, and `loomctl` has been exercised end to end without one.*
|
||||||
|
|
||||||
|
**That does not remove the PAT. It moves when you need it.** *`externals` now
|
||||||
|
says: **do not adopt from a source less readable than the repository you are
|
||||||
|
adopting into.*** *Which sorts the cases:*
|
||||||
|
|
||||||
|
- **a public repository adopting** — *may only adopt public documents*, **so it
|
||||||
|
never needs a credential**, *and needing one is the signal that something is
|
||||||
|
wrong.*
|
||||||
|
- **a private repository adopting private documents** — *legitimate, and needs
|
||||||
|
one.*
|
||||||
|
|
||||||
|
> **So needing a credential stopped being a capability and became a signal.** *The
|
||||||
|
> tool cannot tell the two apart — it sees that the source is private and cannot
|
||||||
|
> see who may read the repository the copy lands in* — **which is exactly why
|
||||||
|
> `add` warns rather than deciding.**
|
||||||
|
|
||||||
|
**Belief that could be shown wrong:** *that public-adopting-public covers the
|
||||||
|
common case.* **The moment a private repository wants to depend on another private
|
||||||
|
one, the credential is required and untested.**
|
||||||
|
|
||||||
|
## 2026-09-07 — status change: the git-over-HTTPS assumption is unexercised, not blocking `quince`
|
||||||
|
|
||||||
|
**An earlier entry records that nobody has confirmed a read-scoped PAT
|
||||||
|
authenticates git over HTTPS, and calls it load-bearing. It is no longer
|
||||||
|
blocking.**
|
||||||
|
|
||||||
|
*It bears on `external list` against a private repository, which is the
|
||||||
|
private-to-private case above and does not occur here.* **The path is unexercised
|
||||||
|
rather than untested-and-in-the-way.**
|
||||||
|
|
||||||
|
**Recorded because the code did not change and its status did**, *which is the
|
||||||
|
kind of thing only a log says.* **It stays the first thing to run against the next
|
||||||
|
token.**
|
||||||
|
|
||||||
|
## 2026-09-07 — the completeness case has a mechanism: it is the facet `quince`
|
||||||
|
|
||||||
|
**The open question was: a `200` tells you a document moved and says nothing about
|
||||||
|
whether your casting still covers it.**
|
||||||
|
|
||||||
|
**`check` prints the document's `.usages.md` when it stages a polad**, *and for an
|
||||||
|
agreement that is the file its roles are cast in* — **so the question is answered
|
||||||
|
by reading the facet the tool just pointed at.**
|
||||||
|
|
||||||
|
**It failed on the first real change because `externals.md` had no facet at all**,
|
||||||
|
*and the tool said `no .usages.md — nothing records what depends on this`:* **a
|
||||||
|
correct report and useless as a prompt.**
|
||||||
|
|
||||||
|
**So both were written.** *`externals.usages.md` names which Go file implements
|
||||||
|
which rule — an unusual usage, because this repository implements the convention
|
||||||
|
rather than using it — and `cart.usages.md` gained the `v1` casting it was missing.*
|
||||||
|
|
||||||
|
**Belief that could be shown wrong:** *that pointing is enough.* **Nothing checks
|
||||||
|
that a facet was updated, or that it was even read.**
|
||||||
|
|
||||||
|
## 2026-09-07 — decided: nothing committed announces an open cart `quince`
|
||||||
|
|
||||||
|
**A cart is local and untracked, so a clone cannot see that a round is open.**
|
||||||
|
*That is the boundary and not a defect:* **`v1` makes the cart local to the
|
||||||
|
working tree the two presences share, and somebody who has only cloned is by
|
||||||
|
construction not one of them.**
|
||||||
|
|
||||||
|
**`.gitignore` records that carts happen here. Nothing records that one is open**,
|
||||||
|
*and the asymmetry is deliberate* — **a mechanism for announcing something
|
||||||
|
designed to be ephemeral is the first step in it not being ephemeral.**
|
||||||
|
|
||||||
|
**Belief that could be shown wrong:** *that the shared working tree is the right
|
||||||
|
unit.* **If two presences ever work from different machines, the cart has nowhere
|
||||||
|
to live**, *and everything above stops being true at once.*
|
||||||
|
|
||||||
|
## 2026-09-07 — conversion now destroys, so the log is the only record `quince`
|
||||||
|
|
||||||
|
**Under `cart/v1` the cart is untracked, so converting a round deletes its dailies
|
||||||
|
outright.** *Every previous conversion left them in git.*
|
||||||
|
|
||||||
|
**So an entry that was not written before the `rm` is gone**, *and the write-ahead
|
||||||
|
log is the mechanism* — **stage as you go, because at conversion the cart is the
|
||||||
|
only copy and you are about to delete it.**
|
||||||
|
|
||||||
|
**And it sharpens a conflict recorded in `cart.usages.md`:** *the annotation
|
||||||
|
protocol here says commit before dissolving because git is the only archive.*
|
||||||
|
**With an ignored cart there is no archive, so dissolving a notes file destroys
|
||||||
|
the annotations outright.** *Both documents are loom's; this is where an adopter
|
||||||
|
can see the collision.*
|
||||||
|
|||||||
Reference in New Issue
Block a user