בס״ד

Mildred Ops Page — design spec (v1)

docs/superpowers/specs/2026-06-01-mildred-ops-page-design.md · last changed (pre-VM history) · rendered from GitHub master

Mildred Ops Page — design spec (v1)

Date: 2026-06-01 · Session 41 (overnight) · Claude Code (Opus 4.8, 1M)
Canonical visual: outputs/mockups/2026-05-31_stitch/2026-06-01_mildred-ops-home.png
(+ .html for reference). Generated via Stitch in the Hook Street house design system.
Status: DESIGN LOCKED (Sam: "whichever way you can figure it out go for it"). Build = next session.

What it is

The next audience-scoped view of the existing portal (the Chanie PWA is the
prototype; DESIGN_SYSTEM §2 = one source → many scoped views). NOT a new app.
Mildred's work surface: she sees what she owns + what Sam pushed, acts on it, and
sends notes back — all through the command-inbox. "Give her the info she wants,
not Sam reacting to her."

Decisions locked (Sam, 2026-05-31/06-01)

URL / auth

ops.hookstreetservices.com/mildred.html, Cloudflare Access — add
mildred@hookstreetcapital.com to the Access policy. Same family as Chanie/home.

Look

House bones, forced-light, navy/gold header band, בס״ד, bubbly white cards, 8px
status dots, tabular numerals, mobile-first dense. Greeting by name + today +
current/next work window ("Tuesday · 10 AM–4 PM · 2 due before 1 PM").
(Sam may later want her own accent color vs Sam's navy — optional, not v1-blocking.)

Layout — Bento home (per the locked screenshot)

Drill-in (list view, build per the home's design language)

Tap a tile → filtered list of cards (Chanie-style item cards). Each card: title ·
lane · due · status dot. Two actions per card:
- Done → POST to inbox → marks the Action_Queue row complete.
- Note back to Sam → short note → flows to Sam via inbox/Telegram (so it's
her→Sam comms inside the system, not scattered WhatsApp).

Data model (already exists — big de-risk)

command-inbox Action_Queue already has: Lane, Owner, Assigned_To,
Visibility, Sensitive_Flag, Mildred_Allowed, Related_URL, plus a
MILDRED_OPS lane and an isSensitiveLane_() guard. Mildred's feed =
filter rows where (Mildred_Allowed = true OR Assigned_To = Mildred OR
Lane = MILDRED_OPS) AND NOT Sensitive_Flag AND NOT sensitive lane.

⚠ OFF-LIMITS — non-negotiable, server-side

The Mildred JSON feed NEVER includes family / wife / mother / finance-private /
MIS-trading / private-dates lanes. Enforced by the feed filter (server-side),
NOT by hiding in CSS. Verify the feed excludes every sensitive lane BEFORE her
email touches the Access policy. (Per feedback_mildred_scope_model OWN/FLAG/OFF-LIMITS
+ start-here.gs sensitiveLanes.)

Push-in (MILDRED command)

Confirm/extend the existing inbox MILDRED command so MILDRED <item> writes an
Action_Queue row with Assigned_To=Mildred, Mildred_Allowed=true,
Lane=MILDRED_OPS, Source=push. Appears in her "From Sam" tile on next load.

Build sequence (each step ships usable — anti-80%)

  1. Static mildred.html — Bento + list in hand house-CSS (NOT Stitch's Tailwind;
    build toward the screenshot). Mock data first.
  2. Mildred-scoped read feed — endpoint that filters Action_Queue → her JSON
    (reuse the inbox STATE-style read; add the Mildred filter + sensitive exclusion).
  3. Push-in — confirm/extend MILDRED command writes the assigned card.
  4. Write-back — Done + Note buttons POST to the inbox secret endpoint
    (same mechanism as Start-Here / obligations buttons).
  5. CF Access add mildred@hookstreetcapital.com → deploy → verify off-limits
    filter live before sharing the URL.

Realistic for the "by tomorrow" bumper: steps 1–3 solid, step 4 right behind.
Don't big-bang it.

Guardrails

Off-limits filter server-side (privacy-critical) · build in house CSS not Stitch
Tailwind (Stitch = anchor) · one data source (Action_Queue), don't fork ·
windows imply turnaround time.

Source trail · docs/superpowers/specs/2026-06-01-mildred-ops-page-design.md @ master · rendered 2026-07-02 7:23 PM EDT by scripts/build-docs.py · the .md in the repo is the truth; this page is the phone-readable view