gaps against all four conventions, and reference-only declined for now

Writes the first real gaps: what an adopter could not tell from the documents,
recorded while the misunderstandings are fresh rather than after they stop being
visible.

cart — whether a response is an annotation or a reply in your own file, and the
discriminator that resolves it appearing nowhere; what to do when an open item has
no fallback, which breaks the mechanism rather than omitting a nicety; what a third
file means once one exists; and what must be extracted before converting, now that
v1 makes conversion destroy.

annotating — how a reader detects the freeze was violated, since the hash we check
is a local invention; that responding means a rewrite, which is named only in our
local protocol; and that under cart v1 a prompt's answer has no archive at all.

recording-decisions — the one that matters most: never revised and somebody must
be able to read it both hold and eventually conflict, and the document does not say
which gives. Provisional answer recorded, with the line compaction may not cross —
never drop a decline, a measurement, a falsified belief, or a supersession, because
those are the record of somebody changing their mind.

publication — whether publishing implies the audience can read it, and where
confidentiality lives given that what is safe to publish depends on who can read
the repository it sits in.

Also declines reference-only adoption with its reason: it is adoption minus
reconciliation-by-diff, not adoption minus offline reading, and the convention's
other exit is the one that actually occurred. The warning now names both exits
including the unbuilt one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UTxuSizozEA8yDitPuris
This commit is contained in:
2026-09-07 15:41:12 -04:00
co-authored by Claude Opus 5
parent c09a1b7570
commit e0d7afecae
6 changed files with 214 additions and 4 deletions
+7 -4
View File
@@ -202,10 +202,13 @@ func warnIfNotPublic(cfg *config.Config, raw string, out io.Writer) {
return
}
fmt.Fprintf(out, " WARN this needed a credential — anonymously it is %s.\n", resp.Status)
fmt.Fprintf(out, " Confidentiality does not travel with the copy: writing it into\n")
fmt.Fprintf(out, " .loom/externals/ republishes it to anyone who can read THIS\n")
fmt.Fprintf(out, " repository. Do not adopt from a source less readable than the\n")
fmt.Fprintf(out, " repository you are adopting into.\n")
fmt.Fprintf(out, " Confidentiality does not travel with the copy: this now lives in\n")
fmt.Fprintf(out, " .loom/externals/ and is readable by anyone who can read THIS\n")
fmt.Fprintf(out, " repository, which I cannot see. Do not adopt from a source less\n")
fmt.Fprintf(out, " readable than the repository you are adopting into.\n")
fmt.Fprintf(out, " Two ways out: ask them to publish it — usually the thing you\n")
fmt.Fprintf(out, " needed was not the confidential part — or keep no copy and\n")
fmt.Fprintf(out, " record only the dependency, which loomctl cannot do yet.\n")
}
type fetched struct {