# Next session — Souveraine-owned AGPL lock primitives

> Paste this into the next session as the opening message. It is orders, not
> a draft. Related task doc: `docs/tasks/souveraine-lock-primitives.md`.

---

We're building the Souveraine-owned lock surface. Read
`docs/tasks/souveraine-lock-primitives.md` first — it's the full spec:
dependency set, the primitive tiers, the build order, done-when criteria.

## Non-negotiables (do not re-litigate)

1. **SouveraineOS, not ii OS.** Cut the cord from ii by **rewriting**, never
   vendoring. ii files inherit GPLv3; we will not ship ii-derived files.
   Every primitive is original Souveraine AGPL, Casey as copyright holder.
2. **Build the end goal, not v1/v2.** No borrowed-widget bridges. The lock
   may not compile or may miss a subcomponent while the owned primitives
   are built — that's preferable to a single compromise. Full AGPL lock
   dep graph is the target.
3. **ii is behavioral reference only.** Read how ii's widget behaves (on the
   phone at `~/.config/quickshell/ii/modules/common/widgets/`, `ssh pixel`);
   do not copy. Write fresh.
4. **No subagents for this.** Write the code in the main conversation.
5. **No mid-session paperwork** beyond the task doc that already exists.
   Don't write PLAN.md / handoffs / memory unless asked.
6. **Don't run build/test loops as the model if you're Opus.** Verify once
   with the real build.

## Start here

Tier 0 (`Appearance` / `ColorUtils` / `Translation`) — nothing compiles
without them, and `Appearance` is where the Souveraine lock palette gets
defined (retire the scattered `#d9ffffff` etc. literals). Confirm the
target path (`modules/souveraine/widgets/` unless Casey says otherwise),
then Tier 0 → Tier 1 (`StyledText`, `MaterialSymbol`, `MaterialShape`,
`ErrorShakeAnimation`) → Tier 2 (`RippleButton`) → Tier 3 (`AmbientCard`,
`PinDots`, `LockKeypad`, `LockUtilityRow`, `LockReveal`) → rewire
`TouchLockSurface.qml` + the two cards → manifest lines → deploy.

Behavior reference on the phone: ii widgets at
`~/.config/quickshell/ii/modules/common/widgets/`; Phosh lockscreen at
`~/build/phosh/src/lockscreen.c` + `ui/lockscreen.ui` (swipe-capture model,
shake midpoint-crossing termination — implement in QML, do not port).

Go.
