Skip to content

Admin Settings IA stage D part 1: split Governance and Scale, move Front Door to Security - #1309

Merged
Paul Lizer (paullizer) merged 3 commits into
microsoft:feature/admin-settings-iafrom
paullizer:admin-ia-stage-d
Aug 19, 2026
Merged

Paul Lizer (paullizer) merged 3 commits into
microsoft:feature/admin-settings-iafrom
paullizer:admin-ia-stage-d

Conversation

@paullizer

Copy link
Copy Markdown
Contributor

First part of stage D — the stage that actually moves cards. Targets the feature/admin-settings-ia staging branch.

Two groups are re-homed here, deliberately chosen because both split within a single source pane. That proves the mechanics before the harder cross-pane moves.

What moved

Governance held five cards doing three different jobs → Feature Governance (what is governed) · Policies (the policies themselves) · MCP Governance.

Scale mixed cache config with Cosmos capacity → Redis & Caching · Cosmos.

Azure Front Door left Scale entirely for Security, under a new Network tab. It configures auth and redirect flows, not throughput — it never belonged next to RU autoscaling.

Old #governance and #scale links still resolve, via a new LEGACY_TAB_REDIRECTS map.

The safety mechanism

The split is done by a tool that works line by line and refuses to write unless every source line lands in exactly one output. That's not ceremony — it caught a real bug immediately.

It found a duplicate-ID bug before I could ship it

governance-status sat after the last card in the pane. My tool copies the pane trailer (the closing </div>s) into each new pane — so that div would have been duplicated into three panes with the same id.

The tool refused:

governance.html has content after its last card:
    line 249: <div id="governance-status" class="alert d-none" role="alert"></div>
  Copying it into every new pane would duplicate element ids.

Fixing it properly turned out to also fix a latent UX bug: governance-status is an inline status target written by admin_governance.js. Inside a pane, a message raised while working in Policies could render on a tab you weren't looking at. It now lives outside the tabs and is visible wherever you are in Governance.

Interleaved modals (complication I1)

Scale was the real test: five modals sit between cards, not collected at the end, and each must travel with the tab owning its trigger.

The tool assigns the gap after a card to that card. Verified by listing modals per output pane:

New pane Modals it took
redis-caching redisExplorerModal
cosmos cosmosIndexingPolicyApplyModal, staleCacheCleanupApplyModal, documentAccessIndexResetModal, cosmosThroughputSetupModal, cosmosThroughputContainerModal
network —

Every one landed with its trigger.

A useful property fell out

Moving a whole tab between groups needs no markup change at all. Panes are independent files; groups are entries in the nav map. So Front Door moving from Scale to Security was a one-line map edit.

Only moving a card between tabs requires markup surgery. That distinction shapes the rest of stage D.

Verification

  • Field names and card ids unchanged: 462 names, 110 card ids — saving untouched
  • Regression set: 32 pre-existing failures, identical set
  • 24/24 admin templates parse under Jinja
  • check_xss_sinks.py full-file scan of all 7 touched files
  • node --check on modified JS

Where stage D goes next

The remaining groups pull cards from multiple source panes — Data Lifecycle wants Retention and Classification out of Workspaces and Archiving out of Safety. The split tool only handles one pane at a time, so the next step is a move-card-between-panes operation carrying the same every-line-accounted-for guarantee.

I stopped here rather than hand-editing those moves. Hand-moving markup across files is exactly where a name= attribute goes missing silently, and the whole point of the tooling is that it can't.

Current structure: 12 groups, 22 tabs. Version 0.260.011. Status doc updated with the proven pattern.

Paul Lizer (paullizer) and others added 3 commits August 19, 2026 15:14
First card move of the information architecture rework, and the pattern the
remaining groups follow: split the pane markup, update the navigation map, and
add a legacy redirect so existing links keep working.

Governance held five cards covering three distinct concerns. It is now three
tabs: which features are governed, the policies themselves, and MCP-specific
governance.

The split is done by a tool that works line by line and refuses to write unless
every source line is carried into exactly one output. That immediately caught a
real problem: governance-status sat after the last card, so copying the pane
trailer into each new pane would have produced three elements sharing one id.
It is now rendered once outside the panes, which is also better behaviour,
since a status message is no longer trapped on whichever governance tab
happened to be active when it was raised.

Adds LEGACY_TAB_REDIRECTS so #governance still resolves, now to Feature
Governance. Later moves extend the same map.

Field names and card ids are unchanged at 462 and 110, and the regression set
holds at 32 pre-existing failures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…rity

Scale mixed three concerns: cache configuration, Cosmos capacity, and Front
Door. It is now Redis & Caching and Cosmos, with Front Door moved out entirely.

Front Door configures authentication and redirect flows, not throughput, so it
sits under Security as a Network tab. That move needed no markup surgery: panes
are independent files and groups are entries in the navigation map, so moving a
whole tab between groups is a map change alone. Only moving a card between tabs
requires touching markup.

This pane exercised the interleaved-modal case. Five modals sit between cards
rather than collected at the end, and each has to travel with the tab owning its
trigger. The split tool assigns the gap after a card to that card, which placed
the Redis explorer with Redis, the three maintenance confirmations with Cosmos
Maintenance, and the two throughput dialogs with Cosmos Throughput. Verified by
listing the modals in each new pane.

Extends the legacy redirect map so #scale still resolves.

Field names and card ids are unchanged at 462 and 110, and the regression set
holds at 32 pre-existing failures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Records the split pattern that Governance and Scale established, the property
that moving a whole tab between groups needs only a navigation map change, and
the gap that has to close before the remaining groups can move: the split tool
handles one source pane at a time, but the rest pull cards from several.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@paullizer
Paul Lizer (paullizer) merged commit 40c5fb0 into microsoft:feature/admin-settings-ia Aug 19, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant