carlos / platform Public

spec+plan: record F9/F10 in §12; anchor the .gitignore binary pattern

F10 (orphaned .rst-pagination [aria-disabled] rule in tokens.css) was
found during the blog branch's final whole-branch review; the spec's
friction log now matches the example's README. The plan's .gitignore
gains the leading slash execution proved necessary — an unanchored
`blog` pattern also ignores internal/blog/.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul Campbell 0a8861f6e3c48b92cf791fb15267a541d058b693 parent 0ac63fe
2 files changed, +34 −2
  • docs/superpowers/plans/2026-08-03-rastrillo-blog-example.md +4 −1
  • docs/superpowers/specs/2026-08-03-rastrillo-blog-example-design.md +30 −1
diff --git a/docs/superpowers/plans/2026-08-03-rastrillo-blog-example.md b/docs/superpowers/plans/2026-08-03-rastrillo-blog-example.md
index 30c05225b..535f43da9 100644
--- a/docs/superpowers/plans/2026-08-03-rastrillo-blog-example.md
+++ b/docs/superpowers/plans/2026-08-03-rastrillo-blog-example.md
@@ -149,12 +149,15 @@ cp ../../ui/tokens.css static/tokens.css
`go build ./cmd/blog` drops a `blog` binary in the app root, and a local run creates `blog.db` beside it. Ignore all four once, here, rather than remembering to delete them before every commit. Create `examples/blog/.gitignore`:
```
-blog
+/blog
blog.db
blog.db-shm
blog.db-wal
```
+(The leading `/` on the binary matters: an unanchored `blog` pattern
+also ignores the `internal/blog/` directory — found during execution.)
+
- [ ] **Step 5: Write the failing store test**
Create `internal/blogtest/store_test.go`:
diff --git a/docs/superpowers/specs/2026-08-03-rastrillo-blog-example-design.md b/docs/superpowers/specs/2026-08-03-rastrillo-blog-example-design.md
index 20eda013a..77badc7a7 100644
--- a/docs/superpowers/specs/2026-08-03-rastrillo-blog-example-design.md
+++ b/docs/superpowers/specs/2026-08-03-rastrillo-blog-example-design.md
@@ -8,6 +8,11 @@ away.
`go build/vet/test ./...` all fail on multi-action apps; scoped commands
are the supported form (found during plan review).
+**Amended 2026-08-03 (2):** §12 extended with F9 and F10 so the spec's
+friction log matches the example's README — F10 (orphaned
+`[aria-disabled]` rule in `tokens.css`) was found during the blog
+branch's final whole-branch review.
+
**Builds on** `2026-08-02-rastrillo-ui-component-library-design.md` (the
"library spec") — the eight partials, `tokens.css`, `Funcs()`, and its §5
data contracts are this app's entire component vocabulary — and on
@@ -652,7 +657,7 @@ and in any rastrillo app with more than one action; `helloworld` never
hit it because it has exactly one. The supported commands are the scoped
ones above, and §13's acceptance criterion (which repeats the old
`go test ./...` wording) reads with them. This is friction finding
-**F9**, recorded in the example's README beside F1–F8.
+**F9**, recorded in §12 below and in the example's README beside F1–F8.
The tests import `blog/gen`, which imports the generated actions, which
import `blog/internal/blog` — so they cannot be an *internal* test of
@@ -820,6 +825,30 @@ library review; confirmed here as a thing a reader hits on their first
run, which is why the README documents `cd examples/blog && ./blog`
explicitly.
+**F9 — `./...` does not work in a rastrillo app with more than one
+action.** `go build ./...`, `go vet ./...` and `go test ./...` all fail
+from the app root: sibling action files in one directory each declare
+`Handle` (a redeclaration under `./...`), and a `[id]` directory is a
+malformed Go import path, which every `./...` walk trips over — `vet`
+included. `helloworld` never hit it because it has exactly one action.
+The supported commands are the scoped ones in §11 (`go build
+./cmd/blog`, `go vet ./cmd/... ./gen/... ./internal/...`, `go test
+./internal/...`). Either the generator should emit something that makes
+`./...` survivable, or the scaffold should ship a Makefile/README
+stating the scoped forms. Full analysis in §11.
+*(Added during plan review, 2026-08-03.)*
+
+**F10 — `tokens.css` styles a pagination state the partial no longer
+emits.** The library's final-review polish (rastrillo `c00653c`) dropped
+`aria-disabled` from the role-less `<span>` in `pagination.html`, but
+`tokens.css` still carries `.rst-pagination [aria-disabled="true"]
+{ border-style: dashed; color: var(--rst-text-faint); }`, which now
+matches nothing. The consequence is visible on this app's own screens: a
+disabled Previous chip on page 1 is visually identical to a live page
+link. One-line fix in the library (retarget the selector or restyle the
+bare span); parked for a ui slice rather than patched in the example.
+*(Added during the blog branch's final whole-branch review, 2026-08-03.)*
+
## 13. Acceptance criteria
- **All eight partials are used by the running app**, each in its