copy: EAC-1 to EAC-22 approved by Paul in copy review (2026-10-25), unchanged
1 file changed,
+22
−22
docs/superpowers/plans/2026-10-24-edge-asset-cache-copy.md+22 −22
diff --git a/docs/superpowers/plans/2026-10-24-edge-asset-cache-copy.md b/docs/superpowers/plans/2026-10-24-edge-asset-cache-copy.md| index fe96c576e..889d34f27 100644 |
| --- a/docs/superpowers/plans/2026-10-24-edge-asset-cache-copy.md |
| +++ b/docs/superpowers/plans/2026-10-24-edge-asset-cache-copy.md |
| @@ -44,45 +44,45 @@ none a prefix of another. |
| | id | file | text | status | |
| |---|---|---|---| |
| -| EAC-1 | cli.go (also deploy.go, from the same constant) | a folder your build writes files to, for example /assets/. repeat the flag for up to 8 folders. servers near your visitors may keep copies of the files in them | pending | |
| -| EAC-2 | deploy.go | ship with no asset folders, ignoring any saved in .carlos/config | pending | |
| -| EAC-20 | deploy.go | --assets and --no-assets cannot be used together. pick one. | pending | |
| +| EAC-1 | cli.go (also deploy.go, from the same constant) | a folder your build writes files to, for example /assets/. repeat the flag for up to 8 folders. servers near your visitors may keep copies of the files in them | approved | |
| +| EAC-2 | deploy.go | ship with no asset folders, ignoring any saved in .carlos/config | approved | |
| +| EAC-20 | deploy.go | --assets and --no-assets cannot be used together. pick one. | approved | |
| ## Grammar and refusals (plan 1, tasks 1 to 3) |
| | id | file | text | status | |
| |---|---|---|---| |
| -| EAC-3 | internal/release/assets.go | asset path <path> must start and end with /. name the folder your build writes to, for example /assets/. | pending | |
| -| EAC-4 | internal/release/assets.go | asset path / would cache every page on the site. name the folder your build writes to, for example /assets/. | pending | |
| -| EAC-5 | internal/release/assets.go | asset path <path> cannot contain %, ?, #, * or "..". write a plain folder path such as /assets/. | pending | |
| -| EAC-6 | internal/release/assets.go | asset path <path> must be at most 128 bytes, with no doubled slashes and no . parts. write it the way a clean folder path reads, for example /_app/immutable/. | pending | |
| -| EAC-7 | internal/release/assets.go | declare at most 8 asset paths, and none inside another, such as /a/ and /a/b/. drop the extras and try again. | pending | |
| -| EAC-8 | cli.go (also deploy.go and internal/console/apiship_assets.go) | a static site is already served from every region, so it has no asset folders to declare. leave --assets off. | pending | |
| -| EAC-9 | deploy.go | ignoring the asset folders saved in .carlos/config, because a static site is already served from every region. | pending | |
| -| EAC-21 | internal/console/apiship_assets.go | version <version> was already shipped with different asset folders. ship a new version to change them. | pending | |
| -| EAC-22 | apimode.go | this console is older than --assets and stored the release without your asset folders, so nothing would be kept near your visitors. nothing was promoted. update the console, then ship again under a new version. | pending | |
| +| EAC-3 | internal/release/assets.go | asset path <path> must start and end with /. name the folder your build writes to, for example /assets/. | approved | |
| +| EAC-4 | internal/release/assets.go | asset path / would cache every page on the site. name the folder your build writes to, for example /assets/. | approved | |
| +| EAC-5 | internal/release/assets.go | asset path <path> cannot contain %, ?, #, * or "..". write a plain folder path such as /assets/. | approved | |
| +| EAC-6 | internal/release/assets.go | asset path <path> must be at most 128 bytes, with no doubled slashes and no . parts. write it the way a clean folder path reads, for example /_app/immutable/. | approved | |
| +| EAC-7 | internal/release/assets.go | declare at most 8 asset paths, and none inside another, such as /a/ and /a/b/. drop the extras and try again. | approved | |
| +| EAC-8 | cli.go (also deploy.go and internal/console/apiship_assets.go) | a static site is already served from every region, so it has no asset folders to declare. leave --assets off. | approved | |
| +| EAC-9 | deploy.go | ignoring the asset folders saved in .carlos/config, because a static site is already served from every region. | approved | |
| +| EAC-21 | internal/console/apiship_assets.go | version <version> was already shipped with different asset folders. ship a new version to change them. | approved | |
| +| EAC-22 | apimode.go | this console is older than --assets and stored the release without your asset folders, so nothing would be kept near your visitors. nothing was promoted. update the console, then ship again under a new version. | approved | |
| ## CLI sentences (plan 1, task 10) |
| | id | file | text | status | |
| |---|---|---|---| |
| -| EAC-10 | instances_assets.go | <host> will keep copies of the asset folders its release declares. servers pick this up within a minute. | pending | |
| -| EAC-11 | instances_assets.go | <host> will keep no copies of its asset files, so every request for them reaches the app. servers pick this up within a minute. | pending | |
| -| EAC-12 | assets_cli.go | purged the saved asset files of <app> on <n> instances. servers drop the old copies within a minute. | pending | |
| -| EAC-13 | assets_cli.go | the purge of <app> changed <done> of <total> instances and left these unchanged: <hosts>. run carlos assets purge --app <app> again to finish it. | pending | |
| -| EAC-14 | assets_cli.go | HOST\tFOLDERS\tASSETS\tGENERATION\tPUBLISHED GENERATION\tPUBLISHED AT\n\na purge is done once the published generation matches the generation. servers that can reach the platform pick up a new generation within a minute. a server that cannot stops serving the app's saved asset files within an hour. | pending | |
| +| EAC-10 | instances_assets.go | <host> will keep copies of the asset folders its release declares. servers pick this up within a minute. | approved | |
| +| EAC-11 | instances_assets.go | <host> will keep no copies of its asset files, so every request for them reaches the app. servers pick this up within a minute. | approved | |
| +| EAC-12 | assets_cli.go | purged the saved asset files of <app> on <n> instances. servers drop the old copies within a minute. | approved | |
| +| EAC-13 | assets_cli.go | the purge of <app> changed <done> of <total> instances and left these unchanged: <hosts>. run carlos assets purge --app <app> again to finish it. | approved | |
| +| EAC-14 | assets_cli.go | HOST\tFOLDERS\tASSETS\tGENERATION\tPUBLISHED GENERATION\tPUBLISHED AT\n\na purge is done once the published generation matches the generation. servers that can reach the platform pick up a new generation within a minute. a server that cannot stops serving the app's saved asset files within an hour. | approved | |
| ## Console (plan 1, task 5) |
| | id | file | text | status | |
| |---|---|---|---| |
| -| EAC-15 | internal/console/apiassets.go | assets must be on or off. | pending | |
| +| EAC-15 | internal/console/apiassets.go | assets must be on or off. | approved | |
| ## Docs (plan 1, task 10) |
| | id | file | text | status | |
| |---|---|---|---| |
| -| EAC-16 | docs/site/cli.md | Throws away or inspects the copies that servers keep of an app's asset files. `carlos assets purge --app shop` makes every instance of the app forget what it has saved, so the next request for each file goes to the app. If it stops part way it names the instances that did not change, and running it again finishes the job. `carlos assets status --app shop` lists each instance with the folders its release declares, whether asset copying is on, and the generation the purge has reached. Copies are only kept for folders the release declares with `--assets`.\n\nA purge reaches every server that can read the platform's storage within a minute. A server that cannot stops serving the app's saved asset files within an hour. | pending | |
| -| EAC-17 | docs/site/cli.md | Turns asset copying on or off for one instance. `off` means requests for its asset files always reach the app, which helps while you are debugging. `on` goes back to following the folders its release declares. An instance follows its release until you set it. | pending | |
| -| EAC-18 | docs/site/cli.md | `--assets` names a folder your build writes its files to, for example `/assets/`. Repeat it for up to 8 folders. Each must start and end with `/`, be at most 128 bytes, and contain none of `%`, `?`, `#`, `*` or `..`. `/` alone is refused, because it would keep copies of every page. No folder may sit inside another. A static site cannot use it, because a static site is already served from every region. The folders belong to the release, so a rollback to an older build uses the folders that build declared. | pending | |
| -| EAC-19 | docs/site/cli.md | `carlos deploy` takes the same repeatable `--assets` flag and passes it to the ship. Save the list as `"assets": ["/assets/"]` in `.carlos/config` and a bare `carlos deploy` declares it on every release. A flag on the command line replaces the saved list for that run, and `--no-assets` ships with none. A release that declares no folders gets no copies, so deploying a build without them turns copying off for that build. `--assets` and `--no-assets` cannot be given together. | pending | |
| +| EAC-16 | docs/site/cli.md | Throws away or inspects the copies that servers keep of an app's asset files. `carlos assets purge --app shop` makes every instance of the app forget what it has saved, so the next request for each file goes to the app. If it stops part way it names the instances that did not change, and running it again finishes the job. `carlos assets status --app shop` lists each instance with the folders its release declares, whether asset copying is on, and the generation the purge has reached. Copies are only kept for folders the release declares with `--assets`.\n\nA purge reaches every server that can read the platform's storage within a minute. A server that cannot stops serving the app's saved asset files within an hour. | approved | |
| +| EAC-17 | docs/site/cli.md | Turns asset copying on or off for one instance. `off` means requests for its asset files always reach the app, which helps while you are debugging. `on` goes back to following the folders its release declares. An instance follows its release until you set it. | approved | |
| +| EAC-18 | docs/site/cli.md | `--assets` names a folder your build writes its files to, for example `/assets/`. Repeat it for up to 8 folders. Each must start and end with `/`, be at most 128 bytes, and contain none of `%`, `?`, `#`, `*` or `..`. `/` alone is refused, because it would keep copies of every page. No folder may sit inside another. A static site cannot use it, because a static site is already served from every region. The folders belong to the release, so a rollback to an older build uses the folders that build declared. | approved | |
| +| EAC-19 | docs/site/cli.md | `carlos deploy` takes the same repeatable `--assets` flag and passes it to the ship. Save the list as `"assets": ["/assets/"]` in `.carlos/config` and a bare `carlos deploy` declares it on every release. A flag on the command line replaces the saved list for that run, and `--no-assets` ships with none. A release that declares no folders gets no copies, so deploying a build without them turns copying off for that build. `--assets` and `--no-assets` cannot be given together. | approved | |