Three admin dev pages sit in the shared page wrapper

Screen-rule gaps G3, G11 and G14 (part 1). The access inspector, the integrations inspector and the agent-trace detail page each kept their own narrower page container; they now use PageBody, the same width and gutter as every other admin page.

2 Oct 2026 · branch fix/admin-dev-pagebody-p1 · captured against propflow-stage · at 33a15a91b52+local

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · Access inspector: PageBody width, title in the shared page header

Before, this page's body was capped at max-w-6xl (1152px) with a hand-built heading, so its left edge sat further in than every other admin page. It now uses PageBody (the default max-w-7xl, 1280px, with the shared gutter) and PageHeader for the title and the two-gates explainer. The tabs are deliberately untouched in this part.

Asserted in the captured DOM — Access Inspector · Two gates decide what a non-staff user sees · Roles · Modules · Arms. The title, the explainer, and all three tabs are on screen.

Access inspector: PageBody width, title in the shared page header
Sections 2–5

2 · Integrations inspector: PageBody width, nothing else moved

Same fix: the local max-w-6xl root becomes PageBody. The back link, the header, the property picker and the provider cards are unchanged; they just start at the same left edge as the rest of the admin pages.

Asserted in the captured DOM — Integrations Inspector · Back to dev tools · Property. The back link, the title and the property picker are on screen.

Integrations inspector: PageBody width, nothing else moved

3 · Agent-trace detail: one container, owned by the page

Before, the back link sat in one max-w-5xl box and the trace body drew a second max-w-5xl box of its own. Now the page wraps the back link and the body in one PageBody, and the body carries no width or gutter. The conversation dock renders the same body and now supplies the old gutter at its own call site, so the dock looks exactly as before.

Asserted in the captured DOM — Back to Traces · Agent Trace · Claude Calls · LLM Cost. The back link, the trace title and the summary cards are on screen.

Agent-trace detail: one container, owned by the page

4 · Agent-trace detail at phone width

At phone width, PageBody's gutter is 16px and nothing scrolls sideways. The body's own gutter is gone, so there is no doubled inset.

Asserted in the captured DOM — Back to Traces · Agent Trace. The back link and the title are on screen at 390px.

Agent-trace detail at phone width

5 · The conversation dock's trace tab is unchanged

The dock renders the same trace body. The body no longer draws its own container, so the dock now supplies the same PAGE_GUTTER_X py-8 padding at its call site. This shot is the control: the trace tab in the drawer should read exactly as it did before, with the same inset and no doubled or missing padding.

Asserted in the captured DOM — Agent Trace · Loop Iterations · LLM Cost. The trace body renders inside the dock's trace tab.

The conversation dock's trace tab is unchanged
PropFlow Docs