PIS
Platonic Ideal Software Specification
Recorder

Domain root. Offline-first attributed capture.

zoom in for ASCII · 4 exits
List · Empty

No recordings. CTA to start capture.

zoom in for ASCII · 2 exits
List · Populated

Library of saved recordings with offline shares.

zoom in for ASCII · 3 exits
Recording · Active

Live multi-speaker capture with attributed transcript.

zoom in for ASCII · 3 exits
Recording · Paused

Held session; mic warm; resume or finalize.

zoom in for ASCII · 2 exits
Playback

Synced transcript with speaker highlights.

zoom in for ASCII · 1 exits
Settings

Audio, diarization, offline storage.

zoom in for ASCII · 1 exits
Bank

Domain root. Declarative auth on money messages.

zoom in for ASCII · 3 exits
Dashboard

Balances and recent activity.

zoom in for ASCII · 2 exits
Deposit · Capture

Only Capture and Cancel are legal here.

zoom in for ASCII · 2 exits
Deposit · Review

Retake or Submit (auth-wrapped).

zoom in for ASCII · 2 exits
Transfer

Destination + Money (fiat|crypto) + auth.

zoom in for ASCII · 1 exits
Timer

Domain root. Composable from Recorder speech.

zoom in for ASCII · 2 exits
Idle

Armed duration; not yet running.

zoom in for ASCII · 1 exits
Running

Counting down.

zoom in for ASCII · 3 exits
Paused

Held countdown.

zoom in for ASCII · 2 exits
Finished

Alarm fired.

zoom in for ASCII · 2 exits
Calculator

Composable domain; speech → key messages.

zoom in for ASCII · 1 exits
Display

10-digit classic keypad.

zoom in for ASCII · 1 exits
Tea · domain

Satirical multi-gate “afternoon tea” interview. Each favour is a state; refusal and fine-print pushback terminate at goodday.

zoom in for ASCII · 2 exits
Blog home

Greg in Codeland · entry to the invitation post.

zoom in for ASCII · 1 exits
Invitation

Sit darling — favours first, not labours of Hercules.

zoom in for ASCII · 2 exits
Gate 1 · Flattery

Why head-over-heels for tea with me — build rapport fast.

zoom in for ASCII · 2 exits
Gate 2 · Credentials

Complete list of tea brewing accomplishments.

zoom in for ASCII · 2 exits
Gate 3 · Provenance

Darjeeling district + several estates — historical roots.

zoom in for ASCII · 2 exits
Gate 4 · Field brew

Lowest quality leaf; primitive tools; elevated cup required.

zoom in for ASCII · 2 exits
Gate 5 · Perfect plan

Whimsy, spectacle, treats, philosophy — must rival the host.

zoom in for ASCII · 2 exits
Offer · fine print

Event of a lifetime — candidate supplies tea, treats, transport.

zoom in for ASCII · 2 exits
Dissonance

You expected more? We never overhyped — culture fit test.

zoom in for ASCII · 2 exits
Hollow win

Accepted: you fund the pinnacle; calendar TBD.

zoom in for ASCII · 2 exits
Good day

Terminal reject. I said good day.

zoom in for ASCII · 1 exits
Discourse · domain

Archetype: concurrent multi-participant conversation-document. One shared object holds body, nested reply units (blips), op log, and presence. History is first-class (playback).

zoom in for ASCII · 3 exits
Inbox · Empty

No shared objects yet. CTA creates a discourse root.

zoom in for ASCII · 1 exits
Inbox · Populated

ForEach discourse: title, live count, last activity.

zoom in for ASCII · 3 exits
Object · Live

Head of the op log. Concurrent editors, nested blips, live presence strip.

zoom in for ASCII · 5 exits
Object · Playback

Cursor over OpLog reconstitutes document+blips at time t. Read-only view of past State.

zoom in for ASCII · 1 exits
Blip · Compose

Nested reply unit. Parent pointer + body; concurrent post merges.

zoom in for ASCII · 1 exits
Presence

Derived map: ForEach participant → caret|typing|idle. Not stored as source of truth.

zoom in for ASCII · 1 exits
Participants

IdentifiedArray of roles on the discourse object.

zoom in for ASCII · 1 exits
Audience · domain

Archetype: audience-segmented social broadcast plus ephemeral multi-party presence. Identity graph, named visibility ACLs (segments), filtered activity stream, and short-lived co-presence sessions — not durable conversation-documents.

zoom in for ASCII · 5 exits
Stream · Filtered

Derived feed: ForEach item where viewer hits segment ACL. Optional live session chip.

zoom in for ASCII · 6 exits
Stream · Empty

No segments selected or no matching items.

zoom in for ASCII · 2 exits
Compose · Broadcast

Body + multi-select segments. Share emits one item with segmentIds.

zoom in for ASCII · 1 exits
Stream item

Single broadcast with audience label, acks, lightweight reply.

zoom in for ASCII · 1 exits
Segments · List

IdentifiedArray of named ACLs the actor owns.

zoom in for ASCII · 2 exits
Segment · Detail

Member set for one ACL. Used for post visibility and stream filter.

zoom in for ASCII · 1 exits
Profile

Identity node. Follow graph is separate from segment ACLs.

zoom in for ASCII · 1 exits
Presence · Lobby

List of ephemeral multi-party sessions. Not durable objects.

zoom in for ASCII · 2 exits
Presence · Live

Ephemeral co-presence: voice/optional media + strip chat. Leave last → end.

zoom in for ASCII · 2 exits
PIS

Platonic Ideal Software Specification root.

zoom in for ASCII · 9 exits
CLI

show · send · help · settings. Bare URI → show.

zoom in for ASCII · 5 exits
CLI Settings

Default device phone; fallback verb show.

zoom in for ASCII · 1 exits
zoom 55% · pinch or scroll to zoom · drag background to pan