Files
PaperClipAI/server
DottaandPaperclip a871f5c42e test(security): inventory board-key routes from the runtime router
Replace the source-regex board-key route inventory with an enumeration of
the real Express router stack that createApp mounts. Express 5 does not keep
the mount path string on a mounted layer, so a probe records it as each router
is mounted; the inventory then walks the built app and reconstructs every
final normalized path, including nested routers.

Runtime-only surfaces (handlers injected through createApp options, plugin
sub-apps) are declared through an explicit registration hook; anything mounted
at runtime that is not registered resolves to undeclared and stays denied.

The runtime set is compared bidirectionally with the explicit registry
inventory so a reachable route without metadata (missing) and a declared row
with no live route (stale) both fail CI. A regression registers a direct
app.post and proves the gate fails on it. Declare the top-level /_plugins and
/llms surfaces the runtime walk newly surfaces as explicit denials; deny and
concealment behavior are unchanged.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-19 19:43:55 +00:00
..