docs(website): the server half does not slice, and slice 1's record #136
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/module-extract-server"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The docs half of Phase 3 slice 1, split off from docs#135 (which landed the plan and slice 0's record only).
What's here
docs(website): the server half does not slice, and why— found before writing any of slice 1. §2.7.1 had split the server extraction five ways by feature; it does not divide, because two contract rules compose. A mount prefix is claimed whole (/admin/shardis one 386-line router carrying 25 routes across atlas, clilocs, shard-ops, visibility, market and account links) and a model cannot be shared across the boundary, so it moves with its last consumer. Take the closure and every prefix is in it.Giving the admin routes their own prefixes would divide it, and is rejected: it changes API URLs, which §1.2 promises not to do — and not hypothetically, since the shipped Android app calls
POST /api/v1/admin/shard/kick,/ban,/unban,/broadcastand the three/pagesroutes.The slice table is now six slices, not ten. The client half is unaffected and still slices cleanly.
docs(website): record slice 1, and MODULE_API 1.1.0— the whole server half is out: 40 files, ~9,674 lines, 27 of 68 tables. The acceptance criterion held exactly — core's manifest goes 228 → 158 public routes, the 70 that left reappear byte-identical once the module loads, androutes.guards.jsonis identical across all 228.The contract grew to 1.1.0:
ctx.activity.log,ctx.users.getById,ctx.site.baseUrl,ctx.middleware.rateLimit+accountChangeLimiter, and a fourth registry,registerPostHook. Each is documented with why it could not be vendored — an admin action a module performs belongs in core's one audit log, a second rate-limit store is a limit enforced by two counters, and core's CMS was calling a UO file directly.§2.7.1 also records the
core.jsport mechanism and its consequence (require order is load-bearing), the vendoring line (pure leaf helpers may be copied, security controls may not), the two core defects the extraction exposed, the one deliberate behaviour change, and the one test that looked like it should move and should not.Corresponding code
Already merged:
Module-uo#3andwebsite#137.AI disclosure
Written with Claude Code.
Co-Authored-By: Claude noreply@anthropic.com