Source: c137 App Messaging — Phase 2, 2026-11-09 · design-local components in app/components/messaging/, headed for the layer and for the kit (c131)
One component renders every message between the control plane and the person at the keyboard. The schema is bones.md: a subject of sixty characters, a body of three sentences (what happened, why it matters, what to do next), up to three actions, a line that says why you are seeing it, and a state that always ends. Below, the ten examples and the two for the operator's inbox, each across the five states. Severity words are attention and required, in orange; the card is never red.
enforcement-notice
attention · to the person · c137V1 if Tyler rules it inA paste into ChatGPT was blocked
At 14:02 qcontrol blocked a paste into chat.openai.com because the text held an AWS access key.The key stayed on this machine; your company's policy Secrets in prompts keeps credentials out of AI tools.If this was work you needed to do, contact IT from here; otherwise nothing more happens.
Why am I seeing this: Policy Secrets in prompts, enforced for Engineering since 3 November
Not reachable: no acknowledgement is required.
enforcement-notice
attention · local mode · to the person · c137V1 if Tyler rules it inAn upload to Claude was blocked
At 09:41 qcontrol blocked the upload of customer-export.csv to claude.ai because the file holds email addresses and phone numbers.The file stayed here; this machine's policy keeps personal data out of AI tools.If this upload was work you needed to do, write to it-help@acme.example, the contact named in this machine's qcontrol configuration.
Why am I seeing this: Policy Personal data in prompts, from this machine's qcontrol configuration; no HQ connected
Not reachable: no acknowledgement is required.
hq-notice
info · to the person · c137AI tools: what changes on Monday
From Monday 17 November, pasting source code into AI tools other than GitHub Copilot and Claude for Work will be blocked on company laptops.The change comes out of October's security review and applies to every team.Nothing to do now; if your work needs another tool, ask IT before Monday.
Why am I seeing this: Dana Whitfield at HQ sent this to every team
No OS notification by default for this type: it reaches the inbox quietly. The person can raise it to notify.
Not reachable: no acknowledgement is required.
identity-confirmation
info · to the person · c137 · c131V1: flowsThis machine is connected to HQ
MBP-2291 is now connected to HQ at hq.acme.example as mark@acme.example.HQ manages this machine's configuration from there, and what qcontrol finds here is reported to it.Nothing to do; Status shows what is reported, and Connect lets you disconnect if this is not your machine.
Why am I seeing this: You connected this machine from Connect at 11:20
No OS notification by default for this type: it reaches the inbox and the tray. The person can raise it to notify.
Not reachable: no acknowledgement is required.
censure
required · requires acknowledgement · to the person · c137From HQ: stop using a personal ChatGPT account for work
Written by Dana Whitfield at HQ and shown as sent.
Over the last two weeks, work documents were pasted into a personal ChatGPT account from this machine.Company data in a personal account sits outside our agreement with OpenAI and cannot be recalled.Stop, use the company's Claude for Work account instead, and acknowledge this notice.
Why am I seeing this: Written by Dana Whitfield at HQ and shown as sent; Qpoint does not edit censures
Not reachable: acknowledged is its terminal state.
Not reachable: required messages never expire.
responsibility
attention · requires acknowledgement · to the person · c137You now own the Jira MCP server
HQ made you the owner of the Jira MCP server the Platform team uses, from today.The owner is asked before the server is blocked and reviews its tool list when it changes.Acknowledge to take it on, or reply if this should be someone else.
Why am I seeing this: Dana Whitfield at HQ assigned this to you
No OS notification by default for this type: it reaches the inbox and the tray. The person can raise it to notify.
Not reachable: acknowledged is its terminal state.
training-assignment
attention · to the person · c133A three-minute training: secrets in prompts
Twice this week a credential was pasted into an AI tool from this machine, and both pastes were blocked.A three-minute training shows what to paste instead and how to get a key rotated when one slips.Take it when you have a moment; completion goes into the audit log as proof of correction.
Why am I seeing this: Policy Secrets in prompts assigns this training after two blocked pastes
No OS notification by default for this type: it reaches the inbox and the tray. The person can raise it to notify.
Not reachable: no acknowledgement is required.
diagnostics-request
attention · to the person · c137HQ asks for diagnostics from this machine
Dana at HQ asked for this machine's qcontrol logs and effective configuration from the last 24 hours, to look into the slow starts you reported.The package holds qcontrol's own logs and settings and nothing of your own files or messages; you can read it before it goes.Review and send, or decline; Dana is told either way.
Why am I seeing this: Dana Whitfield at HQ asked, about the slow starts you reported on 8 November
No OS notification by default for this type: it reaches the inbox and the tray. The person can raise it to notify.
Not reachable: no acknowledgement is required.
sensor-state
attention · to the person · c137 · c131qcontrol stopped seeing Safari
Since 10:15 qcontrol has not seen traffic from Safari on this machine; other apps are still covered.Policies cannot act on what is not seen, so Safari is unprotected until this is fixed, and HQ sees the same gap.Quit and reopen Safari; if the Status line stays amber, contact IT from here.
Why am I seeing this: qcontrol lost its tap on Safari at 10:15 and it has stayed lost for 5 minutes
No OS notification by default for this type: it reaches the inbox and the tray. The person can raise it to notify.
Not reachable: no acknowledgement is required.
contact-it
info · to the operator · c137V1 if Tyler rules it inRe: A paste into ChatGPT was blocked
- What were you doing?
- Pasting a config file to get help with a deploy script; I did not see the key in it.
- What do you need?
- A way to share config files safely, or an exception for this project.
- Anything else?
- The key belongs to a test account.
Attached automatically: the policy, the finding, this machine and the time.
Why am I seeing this: You contacted IT from the notice "A paste into ChatGPT was blocked"
Not reachable: no acknowledgement is required.
grant-notice
info · to the operator · c136Qpoint has access to this plane until Thursday 14:00
A grant you approved opened at 09:00: fix, operate level, scoped to the ClickHouse layer, for Priya Nair at Qpoint.Every action under it carries grant G-142 in the audit log, and you can revoke it at any moment.Nothing to do; a summary arrives when it closes.
Why am I seeing this: Grant G-142, approved by Dana Whitfield on 8 November
Not reachable: no acknowledgement is required.
reply
info · to the person · c137Re: A paste into ChatGPT was blocked
Thanks, that explains it.From today, config files in the deploy repo are excepted for the Platform team.If a key slips again you will still see a notice, and that is all that happens.
Why am I seeing this: Dana Whitfield at HQ answered your message of 14:11
No OS notification by default for this type: it reaches the inbox and the tray. The person can raise it to notify.
Not reachable: no acknowledgement is required.
States and transitions
Every message ends (R5). Terminal states are done, expired, and acknowledged when nothing is left to complete. What the plane records: created, delivered, acknowledged, done, expired; seen only where an acknowledgement is required; never dwell or read time (R6).
| Event | From | To | Who |
|---|---|---|---|
| delivered (the OS notification, if any, posts now) | — | new | the app |
| opened in the inbox, or the notification clicked | new | seen | the person |
| Acknowledge pressed | new · seen | acknowledged | the person |
| the linked action completes (training, diagnostics, contact IT, a confirmation opened) | new · seen · acknowledged | done | the app |
| Dismiss (info only) | new · seen | done | the person |
| expires_at passes (info 30 days, attention 90, required never) | new · seen | expired | the app |
| the operator recalls it; the card says who withdrew it | new · seen | expired (recalled) | the operator |
Rules and calls
- Three sentences, one paragraph. The slots (what happened · why it matters · what to do next) are the authoring structure and the send form's fields; the card reads them as prose. A censure is HQ's words, labelled and never rewritten (D6).
- Orange, never red. Attention and required share the brand's warning colour; a blocked action is named in the sentence, not painted on the card. Info has no colour.
- Acknowledge is the app's. The sender sets
requires_ack; the app adds the button. It is never a notification button: acknowledging means having read the card. - The required count rides on the pill ("Required · 1 of 3 this month"), so the override is visible where it acts.
- Why am I seeing this is a line on every card, fixed at send time; never a dialog.
- Ended messages stay. The row greys and says how it ended; the inbox is a record. A recalled message says who withdrew it.
- For the layer and the kit. The card, the notification and the tray line are design-local (
app/components/messaging/). The same bones render in GPUI (c131) from thetypesentry; the web card goes to the layer when c134's operator side needs it.