Merge branch 'worktree-module-unresolvable' into main
2 files changed,
+48
−12
README.md+16 −10docs/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 |