oficina / suite Public

Merge branch 'worktree-module-unresolvable' into main

claude agent, operated by paul@keymail.dev pushed by paul@keymail.dev 60b01a8a0d6d138c70f6efbeb429dba3f8f5635d parent 2b78680parent 1ece92b
2 files changed, +48 −12
  • README.md +16 −10
  • docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md +32 −2

CI cancelled — superseded by a newer push — run details

diff --git a/README.md b/README.md
index 9082fdb..1141e05 100644
--- a/README.md
+++ b/README.md
@@ -27,8 +27,10 @@ owns the rule that binds the others.
An app spec cites the doctrine and lists the rulings it consumes. It never
restates one.
-In code, an app imports the module, mounts the three sibling routes on a
-handler, and runs the harness against that handler in CI:
+In code, an app *will* import the module, mount the three sibling routes on
+a handler, and run the harness against that handler in CI. **Not yet — see
+Status: the import path does not resolve, so the module has no consumers and
+cannot get one.** The shape it will take:
```go
func TestSuiteConformance(t *testing.T) {
@@ -60,12 +62,16 @@ layer.
## Status
-The doctrine is a design, revision 4. Three review passes have run
-against it, by two models, neither of which wrote the draft: Claude Opus 5
-on revision 1, then GPT-6 via Codex on revision 2, then GPT-6 and Fable
-independently on revision 3. The last two agreed closely and both asked
-for changes. All three reports sit beside the doctrine, unedited.
+**The doctrine is the status.** Read its own status block rather than this
+one — it is at `docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md`
+and it says which revision it is, who has reviewed it, and what is
+deliberately unanswered.
-Revision 4 fixes what those reviews found most seriously wrong and says,
-in its status block, what it has deliberately left for later. It has not
-itself been reviewed. §12 step 1 waits.
+This section used to repeat all of that and went stale within a day: it
+still said revision 4 and three review passes when the doctrine was at 7,
+which is precisely the drift §2 diagnoses and §10 exists to stop, committed
+by this repository's own README about its own document. So it stopped
+repeating it.
+
+What belongs here, because it is about the repository rather than the
+doctrine: **the contract module cannot currently be imported.**
diff --git a/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md b/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md
index ac34d76..47622e3 100644
--- a/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md
+++ b/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md
@@ -3,7 +3,14 @@
How the apps of the suite share identity, membership and content with
each other, and where the line is that nothing crosses.
-**Status:** design, **revision 7**, 2026-09-05.
+**Status:** design, **revision 8**, 2026-09-05.
+
+**Revision 8 records that the contract module cannot be imported**, which
+makes §12 step 2 built rather than done. `amadan.net/oficina/suite` does not
+resolve for the Go toolchain: the hub answers `?go-get=1` with a 302 to
+`/auth/login`, so `go get` never sees a `go-import` meta tag. Verified twice,
+independently. The module has zero consumers today and cannot get one, and
+§12 steps 3 and 4 both say "against the module".
**Revision 7 moves S6 to where it is actually needed and records why it has
the shape it has.** Revision 6 gave it a step before memoria slice 1, which
@@ -1164,7 +1171,30 @@ that cannot be written as stated is a spec bug.
code. **A.1 is now the largest of the four**, because ruling 12 gives
the home a table it did not have and amends home §7's sentence that
ownership is the instance's business.
-2. **The contract module**, types and fixtures only: S1, S2, S3, the
+2. **The contract module** — **built, and not importable.** The code, the
+ fixtures and the harness are on `main` and their tests pass. Nothing can
+ depend on them: `go get amadan.net/oficina/suite` fails because the hub
+ redirects `?go-get=1` to a login page, so the toolchain never sees a
+ `go-import` tag. Until that is fixed this step is done in the sense that
+ the artefact exists, and not done in the sense ruling 7 means: "every
+ app imports the module" has no consumers available to it.
+
+ **Three ways out, and the choice is Paul's**, because each is hub or
+ hosting rather than doctrine: the hub serves `go-import` for repo paths
+ without auth, which is the only one that works in CI and fixes every app
+ at once; a documented `GOPRIVATE=amadan.net/*` with credentials CI can
+ hold, if the hub can serve the tag behind auth; or the module moves to a
+ resolvable host, which contradicts ruling 10 in hosting but not in
+ structure.
+
+ **What is deliberately not being done**: a local `replace` directive,
+ which works on one machine and breaks CI while making a `go.mod` a
+ machine-local artefact, and vendoring, which is the second copy ruling 7
+ exists to prevent and defeats "fixtures are the interface" the first time
+ a fixture changes. The memoria session declined both and recorded itself
+ blocked, which is the right answer.
+
+ Types and fixtures only: S1, S2, S3, the
hostile-hostname fixture, gates 1 to 4. No server half yet. Docs moves
its module path.
3. **memoria slice 1 against the module**, with Sheets and Docs serving