diff --git a/agent-feedback/items/2026-08-20-marko-run-multipart-uploads.md b/agent-feedback/items/2026-08-20-marko-run-multipart-uploads.md
new file mode 100644
index 000000000..26609ba03
--- /dev/null
+++ b/agent-feedback/items/2026-08-20-marko-run-multipart-uploads.md
@@ -0,0 +1,12 @@
+---
+type: dx
+impact: med
+effort: med
+site: docs/marko-run/validation.md › ### form
+---
+
+# Show a worked multipart upload under the `form` option
+
+The `form` option's table is the whole of what the site says about uploads: `maxParts`, `maxFiles`, `maxFileBytes` and `onFile` get one cell each, and `onFile`'s reads `(ctx, file) => any called for each uploaded file`. What a handler actually receives is stated nowhere, and it is the expensive part to rediscover: a multipart field arrives on `await ctx.body` as a `File` carrying an extra `fieldName` property, in the same record as the string fields, and a repeated file field collapses to an array of them exactly as a repeated text field does. No page under `docs/` contains an ``, so there is no path from a form to a stored upload anywhere on the site. An example under the `form` option showing the form markup, the options object and reading the `File` back out of the validated body would cover it; it cannot name `onFile`'s second parameter yet, since `Multipart` is not exported from `@marko/run` (filed in that repo's `agent-feedback/dx.md`).
+
+Check: `grep -rin 'multipart\|onFile' docs/` names only `docs/marko-run/validation.md` and `grep -rn 'type="file"' docs/` returns nothing; both should reach an upload example on the validation page.
diff --git a/agent-feedback/items/2026-08-20-marko-run-static-assets.md b/agent-feedback/items/2026-08-20-marko-run-static-assets.md
new file mode 100644
index 000000000..551c9b56a
--- /dev/null
+++ b/agent-feedback/items/2026-08-20-marko-run-static-assets.md
@@ -0,0 +1,12 @@
+---
+type: dx
+impact: high
+effort: low
+site: docs/marko-run/file-based-routing.md › # File-based Routing
+---
+
+# Document where a file served at a fixed URL belongs
+
+Nothing across the nine `docs/marko-run/*.md` pages says how an application serves a file at a fixed path, so `` in a root layout is the plausible first guess and it 404s in production. `src/routes` is a route directory, not a static root: a `favicon.png` sitting beside `+page.marko` never reaches the build output, and the build reports nothing. Vite's public directory is the mechanism, and Marko Run already wires it up, setting `build.copyPublicDir` for the client pass in `packages/run/src/vite/plugin.ts` and serving the client output directory from `serve-static` in its default entry, so `public/favicon.png` builds to `dist/public/favicon.png` and answers at `/favicon.png`. A short Static Assets section naming `public/` and stating that `src/routes` holds only routable files closes it.
+
+Check: `grep -rin 'publicDir\|favicon\|static asset' docs/` returns nothing today and should name `public/`; a built app with `src/routes/favicon.png` answers `GET /favicon.png` with 404 while the same file under `public/` answers 200 `image/png`.