Skip to content

Stage D part 2: Data Lifecycle and Chat groups - #1310

Merged
Paul Lizer (paullizer) merged 1 commit into
feature/admin-settings-iafrom
admin-ia-stage-d2
Aug 19, 2026
Merged

Paul Lizer (paullizer) merged 1 commit into
feature/admin-settings-iafrom
admin-ia-stage-d2

Conversation

@paullizer

Copy link
Copy Markdown
Contributor

Second batch of Stage D. Creates the Data Lifecycle and Chat groups by moving cards across panes.

Base: feature/admin-settings-ia.

Why these two groups

Data Lifecycle. Retention policy, document classification and conversation archiving all answer the same question — how long does content live and how is it labelled — but they were split across Workspaces and Safety. Archiving in particular sat under Safety, which describes what it protects against rather than what it does.

Chat. Settings that shape what a conversation looks and behaves like were scattered across AI Models, Workspaces and Safety. Feedback and desktop notifications are about how the app talks back to the user, not about safety enforcement.

What moved

Card From To
retention-policy-section workspaces Data Lifecycle → Retention
document-classification-section workspaces Data Lifecycle → Classification
conversation-archiving-section safety Data Lifecycle → Archiving
processing-thoughts-section ai-models Chat → Chat Experience
chat-file-uploads-section workspaces Chat → Chat Experience
workspace-scope-lock-section workspaces Chat → Chat Experience
user-feedback-section safety Chat → Feedback & Alerts
desktop-notifications-section safety Chat → Feedback & Alerts

conversation-contents-drawer-section is nested inside chat-file-uploads-section and travelled with it without being named.

Navigation is now 13 groups / 27 tabs / 88 sections.

How the moves were done safely

move_card.py works line by line and refuses to write unless every source line lands in exactly one output. Two behaviours matter:

  • Nested cards travel with their parent, because the card scanner skips over card bodies.
  • The gap after a card travels with it, which is what keeps an interleaved modal with the tab that owns its trigger.

No settings changed

Not one name= attribute was touched, so the form posts exactly the payload it did before and every saved value survives.

Check Result
Field contract 462 names / 110 card ids, byte-identical
Regression set (75 files) 32 failures, identical set to baseline
Jinja compile 29/29 admin templates
XSS sinks 5 changed files pass
Admin nav / card link / dependency tests pass

Next

Remaining Stage D groups: Appearance, AI Models, Agents & Actions, Workspaces, Workflow, Knowledge, Security, Operations, Help. Backup & Recovery goes last because its ~985-line migration workflow has to split as one unit.

Move cards across panes so they sit with the settings they actually
work with, without touching a single field name.

Data Lifecycle (new group)
  Retention       retention-policy-section          from workspaces
  Classification  document-classification-section   from workspaces
  Archiving       conversation-archiving-section    from safety

  These three decide how long content lives and how it is labelled.
  Archiving was under Safety, which describes what it guards against
  rather than what it does.

Chat (new group)
  Chat Experience   processing-thoughts-section   from ai-models
                    chat-file-uploads-section     from workspaces
                      (carries nested conversation-contents-drawer-section)
                    workspace-scope-lock-section  from workspaces
  Feedback & Alerts user-feedback-section         from safety
                    desktop-notifications-section from safety

Moves use move_card.py, which refuses to write unless every source line
lands in exactly one output. Nested cards travel with their parent and
the gap after a card travels with it, so interleaved modals stay with
the tab owning their trigger.

Navigation is now 13 groups / 27 tabs / 88 sections.

Verified
  field contract   462 names / 110 card ids, unchanged
  regression set   32 failures, identical to baseline
  jinja compile    29/29 admin templates
  xss sinks        5 changed files pass

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@paullizer
Paul Lizer (paullizer) merged commit 87ad47f into 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