web: give stim a display pane #15

Merged
perishadmin merged 4 commits from stim-cold-start into main 2026-07-29 06:30:57 +00:00
Contributor

web: give stim a display pane

stim had one workload and no interaction surface. It now carries an
apps/web pane on the workshop's design system, and a second sidecar
workload to run it.

The pane is deliberately thin: a view holds no fetch of its own, and
reaches the api only through src/lib/hooks. That directory is already a
first-class one under the skeleton's web law, so the hooks layer needed
no new convention invented for it.

Two things the checkers taught rather than confirmed. Bringing apps into
ectropy's scan immediately refused a hand-written vite proxy that read
API_URL, because plumb already forbids an app consuming sidecar dispatch
environment by hand -- vite-plugin-design owns that proxy and follows the
api lease itself. And the same pass demanded the boundary declarations
for vite's root-level config files, which is the law asking to be told
rather than guessing.

The layering this is built toward, and why the CLI is a display pane
rather than a privileged entrance, is now written into AGENTS.md as
prose. It stays prose until the shape is settled enough to mechanize.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

web: give stim a display pane stim had one workload and no interaction surface. It now carries an apps/web pane on the workshop's design system, and a second sidecar workload to run it. The pane is deliberately thin: a view holds no fetch of its own, and reaches the api only through src/lib/hooks. That directory is already a first-class one under the skeleton's web law, so the hooks layer needed no new convention invented for it. Two things the checkers taught rather than confirmed. Bringing apps into ectropy's scan immediately refused a hand-written vite proxy that read API_URL, because plumb already forbids an app consuming sidecar dispatch environment by hand -- vite-plugin-design owns that proxy and follows the api lease itself. And the same pass demanded the boundary declarations for vite's root-level config files, which is the law asking to be told rather than guessing. The layering this is built toward, and why the CLI is a display pane rather than a privileged entrance, is now written into AGENTS.md as prose. It stays prose until the shape is settled enough to mechanize. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
web: give stim a display pane
Some checks failed
guard / guard (pull_request) Failing after 12s
876118f7d8
stim had one workload and no interaction surface. It now carries an
apps/web pane on the workshop's design system, and a second sidecar
workload to run it.

The pane is deliberately thin: a view holds no fetch of its own, and
reaches the api only through src/lib/hooks. That directory is already a
first-class one under the skeleton's web law, so the hooks layer needed
no new convention invented for it.

Two things the checkers taught rather than confirmed. Bringing apps into
ectropy's scan immediately refused a hand-written vite proxy that read
API_URL, because plumb already forbids an app consuming sidecar dispatch
environment by hand -- vite-plugin-design owns that proxy and follows the
api lease itself. And the same pass demanded the boundary declarations
for vite's root-level config files, which is the law asking to be told
rather than guessing.

The layering this is built toward, and why the CLI is a display pane
rather than a privileged entrance, is now written into AGENTS.md as
prose. It stays prose until the shape is settled enough to mechanize.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
guard: install the workspace before the gauntlet
Some checks failed
guard / guard (pull_request) Failing after 46s
ad90281887
The lane gained a web app but not the step that makes one buildable, so
CI ran biome, tsc, vitest, and the vite build against a tree with no
node_modules while the local guard passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
guard: let the lane run pnpm
Some checks failed
guard / guard (pull_request) Failing after 40s
95f225b97a
The workspace install landed but the deno permission list in the lane
did not, so CI still refused to spawn pnpm. The runseal profile and the
lane carry that list separately; both had to learn the same name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
guard: name the collision between two laws
All checks were successful
guard / guard (pull_request) Successful in 2m22s
ad936d5f23
CI installs ectropy v0.4.0-beta.1, which stopped reporting word findings
as debt and started failing on them. The offending identifier is the
file name itself: use-health.

That is not a defect in this repository. plumb's web law *requires*
hooks to be named use-*.ts, and ectropy's word law requires an
identifier to be one word. The two-word spelling is mandated by the
first law and refused by the second, so any repository that grows a
hooks directory under the skeleton's web shape will hit it.

Declared as a boundary here rather than renamed, because renaming would
break the law that is checked by the doctor to satisfy the law that is
checked by the checker. Filed upward separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
perishadmin deleted branch stim-cold-start 2026-07-29 06:30:57 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
PerishFire/stim!15
No description provided.