the runbook tells the next agent to decide, not to ask
it previously said 'decide before moving a file, and tell me the decision', which turns an overnight run into a blocked one. every open call here has two defensible answers, a corrected decision is cheap, and a stalled extraction is not. adds a default for each of the three homeless parts — close the platform gap when there is runway, because every later plugin needs it too, but a working music with cliamp left in the platform beats a perfect design that did not land. the bar at the end is unchanged: install, enable, disable, uninstall cleanly. a piece left in the platform is a documented seam; a piece left dangling is a bug. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -116,8 +116,12 @@ A normal refresh is enough; the shell is `no-store`. When the log's last line ap
|
|||||||
## Music specifically — READ THIS BEFORE STARTING
|
## Music specifically — READ THIS BEFORE STARTING
|
||||||
|
|
||||||
**Music is not a bigger offscale. It does not fit the shape, and three of its parts have nowhere to go.**
|
**Music is not a bigger offscale. It does not fit the shape, and three of its parts have nowhere to go.**
|
||||||
Mapped 2026-08-15. Decide what to do about each *before* moving a file, or the extraction strands
|
Mapped 2026-08-15.
|
||||||
half-done.
|
|
||||||
|
**Decide these yourself. Do not stop to ask.** Every one of them has two defensible answers, the owner has
|
||||||
|
said either is fine, and a corrected decision is cheap where a stalled extraction is not. Record what you
|
||||||
|
chose and why — in the manifest, in a comment, in the commit message — and keep going. The failure mode to
|
||||||
|
avoid is not a wrong call; it is a tree left half-moved with a question attached.
|
||||||
|
|
||||||
### What has no home yet
|
### What has no home yet
|
||||||
|
|
||||||
@@ -166,16 +170,27 @@ take `homedir()` as their root independently. So a granted member's favourites a
|
|||||||
`/stream` serves them the **owner's** files and cliamp spawns a process in the **owner's** home. The
|
`/stream` serves them the **owner's** files and cliamp spawns a process in the **owner's** home. The
|
||||||
app-store entry promises a configurable `library` folder and **nothing reads it**.
|
app-store entry promises a configurable `library` folder and **nothing reads it**.
|
||||||
|
|
||||||
### Suggested order
|
### How to decide the three, if you want a default
|
||||||
|
|
||||||
**Do not** invent the visibility model during the move. Extract with the semantics it already has, or the
|
Each of these is "close the platform gap" or "leave the piece behind". **Closing the gap is better when
|
||||||
two changes tangle and a bug in either is a bug in both.
|
you have the runway**, because every later plugin needs it too — but a music that works with cliamp left
|
||||||
|
in the platform is worth far more than a perfect design that did not land.
|
||||||
|
|
||||||
1. Decide the three homeless parts first — close the platform gaps, or leave those pieces behind and say
|
| Part | Close the gap | Leave it behind |
|
||||||
so explicitly in the manifest. Either is defensible; drifting is not.
|
| --- | --- | --- |
|
||||||
2. `assertCapabilityTotality` should be fixed **before** this one: the cliamp routes are the live example
|
| websockets | wire `server.reload({ routes })` — already proven, never called — so a manifest can declare ws providers | leave `cliamp`/`cliamp-audio` and the relay in the platform, note it in the manifest |
|
||||||
of the exact drift it cannot currently see.
|
| global overlay | add one slot the shell renders from installed plugins | leave `MusicPlayerHost` in `DashboardLayout`, gated on the permission as it already is |
|
||||||
3. Then the move, in the order above.
|
| widget | let a plugin contribute `widgetRegistryMetas` | leave `widgets/MusicPlayer` where it is |
|
||||||
|
|
||||||
|
Whatever you pick, the plugin must **install, enable, disable and uninstall cleanly** at the end. A piece
|
||||||
|
left in the platform is a documented seam; a piece left dangling is a bug.
|
||||||
|
|
||||||
|
`assertCapabilityTotality` is worth fixing on the way past if you touch the websocket path — the cliamp
|
||||||
|
routes are the live example of the drift it cannot currently see (routes upgrading into commented-out
|
||||||
|
handlers). Not required.
|
||||||
|
|
||||||
|
**Do not** invent music's per-user visibility model during the move. Extract with the semantics it has, or
|
||||||
|
the two changes tangle and a bug in either is a bug in both.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user