[{"data":1,"prerenderedAt":1424},["ShallowReactive",2],{"$fvDWYbhf--mu04njLO_OpwvFhZRe065Go59WVJc8RyLY":3},{"newThing":4,"project":5,"cycle":9,"sections":25,"threads":1335,"otherDocs":1336,"documents":1338,"images":1342,"archiveItems":1421,"links":1422},"The inbox, the empty state",{"id":6,"label":7,"liveBase":8},"qnative","Qnative (provisional)",null,{"id":10,"num":11,"dir":12,"name":13,"title":14,"focus":15,"status":16,"statusNote":8,"created":17,"completed":8,"mode":18,"report":8,"recordless":19,"thumbnail":20,"imageCount":21,"artifactCount":22,"lastActivity":23,"hasPickup":19,"hasInitialPrompt":24},"c4",4,"c4.messaging","messaging","Messaging","The V1 slice of the message channel between the control plane and the person at this machine (design c137, Phase 3): the bones as types, the inbox store, the four ports as far as the endpoint owns them (inbox, tray, OS notification; the web app is c134's), the person's controls over delivery, and the one message that flows in V1, the identity confirmation on Connect. The enforcement notice is drawn from the fixture and flows only in synthetic worlds until qcontrol sends it.","active","2026-11-11","evolution (the design is ruled; this cycle ports it onto the pipes c2 built and records what the port taught).",false,"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-acknowledged-light.png",13,2,"2026-11-13",true,[26,49,236,442,1307],{"key":27,"title":28,"empty":19,"ast":29},"why","Why",{"type":30,"children":31},"root",[32],{"type":33,"tag":34,"props":35,"children":36},"element","p",{},[37,40,47],{"type":38,"value":39},"text","When qcontrol enforces a policy the person sees a disruption and nothing else; when they connect this machine to a plane, nothing confirms what just happened. c137 designed the channel once so every message rides one schema through ports the person controls, and Mark ruled its plumbing into V1 even though only the Connect confirmation flows at first. Building it as its own cycle keeps the one surface an employee sees quiet by design: the inbox is a record, the tray a count, the OS notification a choice per kind, and ",{"type":33,"tag":41,"props":42,"children":44},"code",{"className":43},[],[45],{"type":38,"value":46},"required",{"type":38,"value":48}," the single counted override.",{"key":50,"title":51,"empty":19,"ast":52},"objective","Objective",{"type":30,"children":53},[54,59,223],{"type":33,"tag":34,"props":55,"children":56},{},[57],{"type":38,"value":58},"Done means, in the brief's order, each step its own commit:",{"type":33,"tag":60,"props":61,"children":62},"ol",{},[63,106,163,195,205],{"type":33,"tag":64,"props":65,"children":66},"li",{},[67,73,75,81,83,89,91,97,99,104],{"type":33,"tag":68,"props":69,"children":70},"strong",{},[71],{"type":38,"value":72},"Types.",{"type":38,"value":74}," ",{"type":33,"tag":41,"props":76,"children":78},{"className":77},[],[79],{"type":38,"value":80},"Message",{"type":38,"value":82}," and its parts in ",{"type":33,"tag":41,"props":84,"children":86},{"className":85},[],[87],{"type":38,"value":88},"types",{"type":38,"value":90},", written from ",{"type":33,"tag":41,"props":92,"children":94},{"className":93},[],[95],{"type":38,"value":96},"bones.md",{"type":38,"value":98}," in the wire shape (serde, snake_case; states and severities as enums; the ",{"type":33,"tag":41,"props":100,"children":102},{"className":101},[],[103],{"type":38,"value":46},{"type":38,"value":105}," count; the person's per-kind delivery setting: quiet · normal · priority, or off · inbox). A drift test deserialises the ten example messages, kept as a fixture file.",{"type":33,"tag":64,"props":107,"children":108},{},[109,114,116,121,123,129,131,137,139,145,147,153,155,161],{"type":33,"tag":68,"props":110,"children":111},{},[112],{"type":38,"value":113},"The store.",{"type":38,"value":115}," SQLite beside the app's settings (c137 D1): the state transitions and their rules, expiry, the ",{"type":33,"tag":41,"props":117,"children":119},{"className":118},[],[120],{"type":38,"value":46},{"type":38,"value":122}," count per month. ",{"type":33,"tag":41,"props":124,"children":126},{"className":125},[],[127],{"type":38,"value":128},"local",{"type":38,"value":130}," keeps messages on this machine only; ",{"type":33,"tag":41,"props":132,"children":134},{"className":133},[],[135],{"type":38,"value":136},"synthetic",{"type":38,"value":138}," seeds from the fixture for the ",{"type":33,"tag":41,"props":140,"children":142},{"className":141},[],[143],{"type":38,"value":144},"pilot",{"type":38,"value":146}," and ",{"type":33,"tag":41,"props":148,"children":150},{"className":149},[],[151],{"type":38,"value":152},"connected",{"type":38,"value":154}," worlds and leaves ",{"type":33,"tag":41,"props":156,"children":158},{"className":157},[],[159],{"type":38,"value":160},"fresh",{"type":38,"value":162}," empty; a world switch resets it.",{"type":33,"tag":64,"props":164,"children":165},{},[166,171,173,178,179,185,187,193],{"type":33,"tag":68,"props":167,"children":168},{},[169],{"type":38,"value":170},"The ports.",{"type":38,"value":172}," The inbox page (the lift: open ",{"type":33,"tag":41,"props":174,"children":176},{"className":175},[],[177],{"type":38,"value":46},{"type":38,"value":146},{"type":33,"tag":41,"props":180,"children":182},{"className":181},[],[183],{"type":38,"value":184},"new",{"type":38,"value":186}," above ",{"type":33,"tag":41,"props":188,"children":190},{"className":189},[],[191],{"type":38,"value":192},"seen",{"type":38,"value":194},", then by time; the card with \"why am I seeing this\"; Acknowledge with a toast through the Root's notification host; the honesty line), the tray's count and one line, the OS notification on macOS first (passive · active · time-sensitive from the mode; time-sensitive only with the entitlement, else active plus the tray), the settings view per kind with quiet hours in front of the OS's Focus. Windows and Linux behind one trait, honest \"not available here\" where the crate has nothing.",{"type":33,"tag":64,"props":196,"children":197},{},[198,203],{"type":33,"tag":68,"props":199,"children":200},{},[201],{"type":38,"value":202},"The flowing type.",{"type":38,"value":204}," The identity confirmation arrives as a message on Connect; the enforcement notice is drawn from the fixture and flows only in synthetic worlds until qcontrol sends it.",{"type":33,"tag":64,"props":206,"children":207},{},[208,213,215,221],{"type":33,"tag":68,"props":209,"children":210},{},[211],{"type":38,"value":212},"Stories and the budget.",{"type":38,"value":214}," One story per inbox state (empty, new, lifted required, acknowledged, expired, the withheld count) and of the settings, per world where it matters; captured off-screen and published to design's atlas (thread ",{"type":33,"tag":41,"props":216,"children":218},{"className":217},[],[219],{"type":38,"value":220},"c4-messaging",{"type":38,"value":222},"); strobe after the slice, the tray at rest with an inbox open.",{"type":33,"tag":34,"props":224,"children":225},{},[226,228,234],{"type":38,"value":227},"Then a review stop, ",{"type":33,"tag":41,"props":229,"children":231},{"className":230},[],[232],{"type":38,"value":233},"review-1.md",{"type":38,"value":235},": what to look at, the figures, the calls for Mark.",{"key":237,"title":238,"empty":19,"ast":239},"scope","Scope",{"type":30,"children":240},[241],{"type":33,"tag":242,"props":243,"children":244},"ul",{},[245,367,401,432],{"type":33,"tag":64,"props":246,"children":247},{},[248,253],{"type":33,"tag":68,"props":249,"children":250},{},[251],{"type":38,"value":252},"Here:",{"type":33,"tag":242,"props":254,"children":255},{},[256,275,286,297,338,349],{"type":33,"tag":64,"props":257,"children":258},{},[259,265,267,273],{"type":33,"tag":41,"props":260,"children":262},{"className":261},[],[263],{"type":38,"value":264},"crates\u002Ftypes",{"type":38,"value":266}," (",{"type":33,"tag":41,"props":268,"children":270},{"className":269},[],[271],{"type":38,"value":272},"messages.rs",{"type":38,"value":274},": the bones);",{"type":33,"tag":64,"props":276,"children":277},{},[278,284],{"type":33,"tag":41,"props":279,"children":281},{"className":280},[],[282],{"type":38,"value":283},"crates\u002Fmessages",{"type":38,"value":285}," (new: the inbox store, the delivery rules, the OS notification trait and its platform ports);",{"type":33,"tag":64,"props":287,"children":288},{},[289,295],{"type":33,"tag":41,"props":290,"children":292},{"className":291},[],[293],{"type":38,"value":294},"crates\u002Ffixtures",{"type":38,"value":296}," (the ten example messages as a fixture);",{"type":33,"tag":64,"props":298,"children":299},{},[300,306,308,314,316,322,323,329,330,336],{"type":33,"tag":41,"props":301,"children":303},{"className":302},[],[304],{"type":38,"value":305},"crates\u002Fapp",{"type":38,"value":307}," (the Inbox and Messages settings pages, the tray's count and line, Connect's confirmation; shared files touched: ",{"type":33,"tag":41,"props":309,"children":311},{"className":310},[],[312],{"type":38,"value":313},"router.rs",{"type":38,"value":315},", ",{"type":33,"tag":41,"props":317,"children":319},{"className":318},[],[320],{"type":38,"value":321},"shell.rs",{"type":38,"value":315},{"type":33,"tag":41,"props":324,"children":326},{"className":325},[],[327],{"type":38,"value":328},"main.rs",{"type":38,"value":315},{"type":33,"tag":41,"props":331,"children":333},{"className":332},[],[334],{"type":38,"value":335},"Cargo.toml",{"type":38,"value":337},");",{"type":33,"tag":64,"props":339,"children":340},{},[341,347],{"type":33,"tag":41,"props":342,"children":344},{"className":343},[],[345],{"type":38,"value":346},"crates\u002Fstories",{"type":38,"value":348}," (a story per state);",{"type":33,"tag":64,"props":350,"children":351},{},[352,358,360,365],{"type":33,"tag":41,"props":353,"children":355},{"className":354},[],[356],{"type":38,"value":357},"cycles\u002Fc4.messaging\u002F",{"type":38,"value":359}," (this record, the captures' thread file, ",{"type":33,"tag":41,"props":361,"children":363},{"className":362},[],[364],{"type":38,"value":233},{"type":38,"value":366},").",{"type":33,"tag":64,"props":368,"children":369},{},[370,375,377,383,385,391,393,399],{"type":33,"tag":68,"props":371,"children":372},{},[373],{"type":38,"value":374},"Design:",{"type":38,"value":376}," captures published to ",{"type":33,"tag":41,"props":378,"children":380},{"className":379},[],[381],{"type":38,"value":382},"public\u002Fcycles\u002Fqnative\u002F",{"type":38,"value":384}," through ",{"type":33,"tag":41,"props":386,"children":388},{"className":387},[],[389],{"type":38,"value":390},"scripts\u002Fpublish-stories.py",{"type":38,"value":392},"; one Key Changes bullet in ",{"type":33,"tag":41,"props":394,"children":396},{"className":395},[],[397],{"type":38,"value":398},"cycles\u002Fc137.app-messaging\u002FCYCLE.md",{"type":38,"value":400},". Nothing else.",{"type":33,"tag":64,"props":402,"children":403},{},[404,409,410,416,417,423,424,430],{"type":33,"tag":68,"props":405,"children":406},{},[407],{"type":38,"value":408},"Reads, never changed:",{"type":38,"value":74},{"type":33,"tag":41,"props":411,"children":413},{"className":412},[],[414],{"type":38,"value":415},"..\u002Fdesign\u002Fcycles\u002Fc137.app-messaging\u002F*",{"type":38,"value":315},{"type":33,"tag":41,"props":418,"children":420},{"className":419},[],[421],{"type":38,"value":422},"..\u002Fdesign\u002Fcycles\u002Fc131.native-app-v1\u002F{plan,synthetic-data}.md",{"type":38,"value":315},{"type":33,"tag":41,"props":425,"children":427},{"className":426},[],[428],{"type":38,"value":429},"..\u002Fqcontrol",{"type":38,"value":431}," (for the IT contact, which it does not have yet).",{"type":33,"tag":64,"props":433,"children":434},{},[435,440],{"type":33,"tag":68,"props":436,"children":437},{},[438],{"type":38,"value":439},"Out:",{"type":38,"value":441}," the plane's side (c134 Phase 4: the operator's inbox, Send, recall, the audit events); replies and Contact IT as a thread (one-way mailto only, D13); the violation tour (c131 D15, after this slice); the product words for the two roles (c0); email and Slack.",{"key":443,"title":444,"empty":19,"ast":445},"key-changes","Key Changes",{"type":30,"children":446},[447],{"type":33,"tag":242,"props":448,"children":449},{},[450,460,656,719,989,1066,1192,1269],{"type":33,"tag":64,"props":451,"children":452},{},[453,458],{"type":33,"tag":68,"props":454,"children":455},{},[456],{"type":38,"value":457},"kick-off (2026-11-11):",{"type":38,"value":459}," this record and the brief, from Mark's ruling that c137's Phase 3 starts now as qnative c4. No code yet; step 1 (the types) next. c3 is in the tree at its review stop 0.",{"type":33,"tag":64,"props":461,"children":462},{},[463,476,477,483,484,489,491,496,498,504,505,511,513,519,521,527,529,535,537,543,545,550,551,557,559,565,566,572,573,579,581,587,589,594,596,601,603,608,610,616,618,623,625,631,633,639,641,647,648,654],{"type":33,"tag":68,"props":464,"children":465},{},[466,468,474],{"type":38,"value":467},"step 1, the types (2026-11-11, ",{"type":33,"tag":41,"props":469,"children":471},{"className":470},[],[472],{"type":38,"value":473},"3cf6b94",{"type":38,"value":475},"):",{"type":38,"value":74},{"type":33,"tag":41,"props":478,"children":480},{"className":479},[],[481],{"type":38,"value":482},"types::messages",{"type":38,"value":90},{"type":33,"tag":41,"props":485,"children":487},{"className":486},[],[488],{"type":38,"value":96},{"type":38,"value":490}," in the wire shape: ",{"type":33,"tag":41,"props":492,"children":494},{"className":493},[],[495],{"type":38,"value":80},{"type":38,"value":497}," and its parts (fifteen types, three severities, five states with their reasons, actions and their seven kinds, ",{"type":33,"tag":41,"props":499,"children":501},{"className":500},[],[502],{"type":38,"value":503},"Sender",{"type":38,"value":146},{"type":33,"tag":41,"props":506,"children":508},{"className":507},[],[509],{"type":38,"value":510},"Recipient",{"type":38,"value":512}," tagged by ",{"type":33,"tag":41,"props":514,"children":516},{"className":515},[],[517],{"type":38,"value":518},"kind",{"type":38,"value":520},", links, the three-sentence body), ",{"type":33,"tag":41,"props":522,"children":524},{"className":523},[],[525],{"type":38,"value":526},"Message::check()",{"type":38,"value":528}," for the hard checks of §9, and the person's controls (",{"type":33,"tag":41,"props":530,"children":532},{"className":531},[],[533],{"type":38,"value":534},"Delivery",{"type":38,"value":536}," as a ladder off · inbox · quiet · normal · priority with ",{"type":33,"tag":41,"props":538,"children":540},{"className":539},[],[541],{"type":38,"value":542},"priority",{"type":38,"value":544}," reserved to ",{"type":33,"tag":41,"props":546,"children":548},{"className":547},[],[549],{"type":38,"value":46},{"type":38,"value":315},{"type":33,"tag":41,"props":552,"children":554},{"className":553},[],[555],{"type":38,"value":556},"QuietHours",{"type":38,"value":558}," with the one preset, ",{"type":33,"tag":41,"props":560,"children":562},{"className":561},[],[563],{"type":38,"value":564},"Mute",{"type":38,"value":315},{"type":33,"tag":41,"props":567,"children":569},{"className":568},[],[570],{"type":38,"value":571},"DeliverySettings",{"type":38,"value":315},{"type":33,"tag":41,"props":574,"children":576},{"className":575},[],[577],{"type":38,"value":578},"RequiredCount",{"type":38,"value":580},"). The ten examples of §10 are ",{"type":33,"tag":41,"props":582,"children":584},{"className":583},[],[585],{"type":38,"value":586},"crates\u002Ffixtures\u002Fmessages\u002Fbones-examples.json",{"type":38,"value":588},", verbatim, each naming the worlds whose inbox carries it (",{"type":33,"tag":41,"props":590,"children":592},{"className":591},[],[593],{"type":38,"value":144},{"type":38,"value":595}," ten, ",{"type":33,"tag":41,"props":597,"children":599},{"className":598},[],[600],{"type":38,"value":152},{"type":38,"value":602}," nine, ",{"type":33,"tag":41,"props":604,"children":606},{"className":605},[],[607],{"type":38,"value":160},{"type":38,"value":609}," and the quiet default none); the strict test deserialises them and the drift test reads ",{"type":33,"tag":41,"props":611,"children":613},{"className":612},[],[614],{"type":38,"value":615},"..\u002Fdesign",{"type":38,"value":617},"'s ",{"type":33,"tag":41,"props":619,"children":621},{"className":620},[],[622],{"type":38,"value":96},{"type":38,"value":624}," and compares every subject and sentence. Two findings for the specification: ",{"type":33,"tag":41,"props":626,"children":628},{"className":627},[],[629],{"type":38,"value":630},"required_reason",{"type":38,"value":632}," (§6 shows it on the card, §1 does not carry it) and Reply (E6 names it, §4 has no kind; it rides ",{"type":33,"tag":41,"props":634,"children":636},{"className":635},[],[637],{"type":38,"value":638},"contact-it",{"type":38,"value":640},"). c5 (Status) was in the tree with uncommitted hunks in ",{"type":33,"tag":41,"props":642,"children":644},{"className":643},[],[645],{"type":38,"value":646},"types\u002Flib.rs",{"type":38,"value":146},{"type":33,"tag":41,"props":649,"children":651},{"className":650},[],[652],{"type":38,"value":653},"fixtures\u002Flib.rs",{"type":38,"value":655},"; only this cycle's lines were staged.",{"type":33,"tag":64,"props":657,"children":658},{},[659,664,666,671,673,679,681,686,688,693,695,701,703,709,711,717],{"type":33,"tag":68,"props":660,"children":661},{},[662],{"type":38,"value":663},"step 2, the store (2026-11-11):",{"type":38,"value":665}," the new ",{"type":33,"tag":41,"props":667,"children":669},{"className":668},[],[670],{"type":38,"value":283},{"type":38,"value":672},": ",{"type":33,"tag":41,"props":674,"children":676},{"className":675},[],[677],{"type":38,"value":678},"Store",{"type":38,"value":680}," over SQLite (a file beside the settings, or in memory for a synthetic world; a scope per source in one file), the transitions as §5 allows them and no others, expiry with the per-severity default set at delivery, the ",{"type":33,"tag":41,"props":682,"children":684},{"className":683},[],[685],{"type":38,"value":46},{"type":38,"value":687}," count per calendar month, and a delivery record per message (the level it was posted at, or what held it back: off, inbox, quiet hours, a mute, and whether ",{"type":33,"tag":41,"props":689,"children":691},{"className":690},[],[692],{"type":38,"value":46},{"type":38,"value":694}," overrode one) so the inbox's honesty line is read from the record, not kept beside it. ",{"type":33,"tag":41,"props":696,"children":698},{"className":697},[],[699],{"type":38,"value":700},"deliver::decide",{"type":38,"value":702}," is the one decision at delivery; ",{"type":33,"tag":41,"props":704,"children":706},{"className":705},[],[707],{"type":38,"value":708},"clock",{"type":38,"value":710}," keeps UTC on the wire and this machine's zone for quiet hours. ",{"type":33,"tag":41,"props":712,"children":714},{"className":713},[],[715],{"type":38,"value":716},"for_world",{"type":38,"value":718}," seeds a synthetic inbox from the fixture under the default settings. macOS links the system SQLite; Linux and Windows bundle one. Ten tests, among them the lift (the open required censure first though it is the oldest of the day) and a file store read back across opens.",{"type":33,"tag":64,"props":720,"children":721},{},[722,734],{"type":33,"tag":68,"props":723,"children":724},{},[725,727,733],{"type":38,"value":726},"step 3, the ports (2026-11-11, ",{"type":33,"tag":41,"props":728,"children":730},{"className":729},[],[731],{"type":38,"value":732},"0a5e518",{"type":38,"value":475},{"type":33,"tag":242,"props":735,"children":736},{},[737,816,902,926,936,946],{"type":33,"tag":64,"props":738,"children":739},{},[740,745,746,752,754,759,761,767,769,775,777,783,785,791,793,798,800,806,808,814],{"type":33,"tag":68,"props":741,"children":742},{},[743],{"type":38,"value":744},"The OS notification behind one trait",{"type":38,"value":266},{"type":33,"tag":41,"props":747,"children":749},{"className":748},[],[750],{"type":38,"value":751},"messages::notify::Notifier",{"type":38,"value":753},"): availability (is posting possible here, did the person allow it, can ",{"type":33,"tag":41,"props":755,"children":757},{"className":756},[],[758],{"type":38,"value":542},{"type":38,"value":760}," break through Focus), the ceiling, permission asked once, a post at a level, dismiss, the click. The macOS port is ",{"type":33,"tag":41,"props":762,"children":764},{"className":763},[],[765],{"type":38,"value":766},"UNUserNotificationCenter",{"type":38,"value":768}," through the same objc2 bindings GPUI's platform uses, with the interruption level set per post (passive · active · time-sensitive), which GPUI's own ",{"type":33,"tag":41,"props":770,"children":772},{"className":771},[],[773],{"type":38,"value":774},"show_system_notification",{"type":38,"value":776}," cannot do; the framework aborts a process with no bundle identifier, so ",{"type":33,"tag":41,"props":778,"children":780},{"className":779},[],[781],{"type":38,"value":782},"cargo run",{"type":38,"value":784}," reads \"not available here\" honestly and the tray and the inbox carry everything. The time-sensitive entitlement is read from the process's own code signature (",{"type":33,"tag":41,"props":786,"children":788},{"className":787},[],[789],{"type":38,"value":790},"SecTaskCopyValueForEntitlement",{"type":38,"value":792},"), so ",{"type":33,"tag":41,"props":794,"children":796},{"className":795},[],[797],{"type":38,"value":542},{"type":38,"value":799}," is a word only until a signed build carries it. Windows and Linux are ",{"type":33,"tag":41,"props":801,"children":803},{"className":802},[],[804],{"type":38,"value":805},"Unavailable",{"type":38,"value":807}," with the reason in one sentence; ",{"type":33,"tag":41,"props":809,"children":811},{"className":810},[],[812],{"type":38,"value":813},"Recording",{"type":38,"value":815}," stands in for stories and tests.",{"type":33,"tag":64,"props":817,"children":818},{},[819,824,825,831,833,838,839,845,847,853,855,861,863,869,871,877,879,884,886,892,894,900],{"type":33,"tag":68,"props":820,"children":821},{},[822],{"type":38,"value":823},"The channel in the app",{"type":38,"value":266},{"type":33,"tag":41,"props":826,"children":828},{"className":827},[],[829],{"type":38,"value":830},"app::messaging",{"type":38,"value":832},"): one global holding the store for the source on show (following the data generation, so a world switch makes a new in-memory inbox; ",{"type":33,"tag":41,"props":834,"children":836},{"className":835},[],[837],{"type":38,"value":128},{"type":38,"value":146},{"type":33,"tag":41,"props":840,"children":842},{"className":841},[],[843],{"type":38,"value":844},"plane",{"type":38,"value":846}," share ",{"type":33,"tag":41,"props":848,"children":850},{"className":849},[],[851],{"type":38,"value":852},"inbox.sqlite",{"type":38,"value":854}," beside ",{"type":33,"tag":41,"props":856,"children":858},{"className":857},[],[859],{"type":38,"value":860},"settings.json",{"type":38,"value":862},", one scope each; ",{"type":33,"tag":41,"props":864,"children":866},{"className":865},[],[867],{"type":38,"value":868},"QPOINT_INBOX",{"type":38,"value":870}," moves it), the person's settings saved under ",{"type":33,"tag":41,"props":872,"children":874},{"className":873},[],[875],{"type":38,"value":876},"messages",{"type":38,"value":878}," in ",{"type":33,"tag":41,"props":880,"children":882},{"className":881},[],[883],{"type":38,"value":860},{"type":38,"value":885},", and the port. ",{"type":33,"tag":41,"props":887,"children":889},{"className":888},[],[890],{"type":38,"value":891},"deliver",{"type":38,"value":893}," decides, stores, posts and tells the tray; ",{"type":33,"tag":41,"props":895,"children":897},{"className":896},[],[898],{"type":38,"value":899},"act",{"type":38,"value":901}," runs the transition, shows the toast through the Root's notification host (D12) and tells the tray. The tray's Inbox item carries the count and the newest waiting subject, the icon its title; a click on an OS notification brings the window and opens the card.",{"type":33,"tag":64,"props":903,"children":904},{},[905,910,912,917,919,924],{"type":33,"tag":68,"props":906,"children":907},{},[908],{"type":38,"value":909},"The inbox page",{"type":38,"value":911},": the lift (open ",{"type":33,"tag":41,"props":913,"children":915},{"className":914},[],[916],{"type":38,"value":46},{"type":38,"value":918},", then ",{"type":33,"tag":41,"props":920,"children":922},{"className":921},[],[923],{"type":38,"value":184},{"type":38,"value":925},", then the other open ones; ended under a fold with its count), one row per thread with the reply count, the severity pill in grey or orange (never red), the card with the three sentences, the verbatim label on a censure, \"Why am I seeing this\", the kind and dates, Acknowledge first when owed, Dismiss on info, a mute (this policy's notices, or this thread, until tomorrow 09:00), the replies; the honesty line at the top names what held a message back and links to the settings. The record is read on the main thread (local state, tens of rows a year).",{"type":33,"tag":64,"props":927,"children":928},{},[929,934],{"type":33,"tag":68,"props":930,"children":931},{},[932],{"type":38,"value":933},"Messages, the settings page",{"type":38,"value":935},": four positions per kind (Off · Inbox · Quiet · Normal; Priority reserved to required and said so), the tray's one switch, quiet hours with the preset, steppers and the weekends switch, mutes with Lift, the required override in two sentences with the month's count and subjects, what this build can post, what this app records (R6).",{"type":33,"tag":64,"props":937,"children":938},{},[939,944],{"type":33,"tag":68,"props":940,"children":941},{},[942],{"type":38,"value":943},"The delivery ladder, as built:",{"type":38,"value":945}," Off keeps a kind in the inbox and nowhere else; Inbox counts it in the tray; Quiet and Normal add one notification at passive or active; Priority is the level a required message is delivered at (time-sensitive with the entitlement, else active). A call for Mark in review-1: whether these five words carry the inventory's four (off · inbox · tray · notify) the way he meant.",{"type":33,"tag":64,"props":947,"children":948},{},[949,951,957,958,964,966,972,974,980,981,987],{"type":38,"value":950},"Eleven stories (",{"type":33,"tag":41,"props":952,"children":954},{"className":953},[],[955],{"type":38,"value":956},"app-inbox-*",{"type":38,"value":315},{"type":33,"tag":41,"props":959,"children":961},{"className":960},[],[962],{"type":38,"value":963},"app-messages-settings*",{"type":38,"value":965},"); ",{"type":33,"tag":41,"props":967,"children":969},{"className":968},[],[970],{"type":38,"value":971},"QPOINT_NOW",{"type":38,"value":973}," pins the clock so a capture reads the same tomorrow; ",{"type":33,"tag":41,"props":975,"children":977},{"className":976},[],[978],{"type":38,"value":979},"QPOINT_SPIKE_DRILL",{"type":38,"value":146},{"type":33,"tag":41,"props":982,"children":984},{"className":983},[],[985],{"type":38,"value":986},"QPOINT_SPIKE_CONNECT",{"type":38,"value":988}," drive the two flows without a pointer. The app map gains both pages (21 now; its test counts them). Shared files were edited beside c5's uncommitted hunks and committed after its groundwork landed.",{"type":33,"tag":64,"props":990,"children":991},{},[992,997,999,1005,1006,1012,1014,1020,1022,1027,1029,1035,1037,1042,1044,1050,1052,1057,1059,1064],{"type":33,"tag":68,"props":993,"children":994},{},[995],{"type":38,"value":996},"step 4, the flowing types (2026-11-11):",{"type":38,"value":998}," messages are a resource of the nozzle (c137 D2): ",{"type":33,"tag":41,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":38,"value":1004},"types::routes::MESSAGES",{"type":38,"value":266},{"type":33,"tag":41,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":38,"value":1011},"\u002Fapi\u002Fmessages",{"type":38,"value":1013},"), ",{"type":33,"tag":41,"props":1015,"children":1017},{"className":1016},[],[1018],{"type":38,"value":1019},"Repo::messages()",{"type":38,"value":1021},", the synthetic world answering the fixture's examples for its name, the fixture plane answering the same over HTTP (a plane serves what a plane stores), a source that serves none answering none. The inbox syncs from it at open and on a world switch: a ",{"type":33,"tag":41,"props":1023,"children":1025},{"className":1024},[],[1026],{"type":38,"value":184},{"type":38,"value":1028}," message arrives as any does (decided, posted where the settings say), one the plane already saw is adopted as it is; so the synthetic seed now flows through the pipes (R1) and a real plane's record will land the same way. The identity confirmation: ",{"type":33,"tag":41,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":38,"value":1034},"messaging::connected()",{"type":38,"value":1036}," composes it from the plane's label, URL, this machine's name and the account when known, asks alert permission once (D9) and delivers it; a launch in ",{"type":33,"tag":41,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":38,"value":844},{"type":38,"value":1043}," mode sends it the first time that scope has none, a Connect page will call the same on the person's own connect. The enforcement notice: ",{"type":33,"tag":41,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":38,"value":1049},"messaging::drill()",{"type":38,"value":1051}," delivers the fixture's local notice (E2) now, with the time of day, in synthetic worlds only; the tour's simulate step (c131 D15) will call it. Checked against two fixture planes: over the quiet world the composed confirmation arrives once and a second launch finds it in the file; over ",{"type":33,"tag":41,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":38,"value":144},{"type":38,"value":1058}," the ten sync and the ",{"type":33,"tag":41,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":38,"value":184},{"type":38,"value":1065}," ones are delivered. A nozzle test reads the route through both transports.",{"type":33,"tag":64,"props":1067,"children":1068},{},[1069,1074,1076,1082,1083,1089,1090,1096,1097,1103,1104,1110,1111,1117,1118,1124,1125,1131,1132,1138,1139,1145,1147,1152,1153,1159,1161,1167,1169,1175,1177,1182,1184,1190],{"type":33,"tag":68,"props":1070,"children":1071},{},[1072],{"type":38,"value":1073},"step 5, stories, captures, the budget, the review stop (2026-11-11):",{"type":38,"value":1075}," ten stories (",{"type":33,"tag":41,"props":1077,"children":1079},{"className":1078},[],[1080],{"type":38,"value":1081},"app-inbox-empty",{"type":38,"value":315},{"type":33,"tag":41,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":38,"value":1088},"app-inbox",{"type":38,"value":315},{"type":33,"tag":41,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":38,"value":1095},"-card",{"type":38,"value":315},{"type":33,"tag":41,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":38,"value":1102},"-acknowledged",{"type":38,"value":315},{"type":33,"tag":41,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":38,"value":1109},"-expired",{"type":38,"value":315},{"type":33,"tag":41,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":38,"value":1116},"-withheld",{"type":38,"value":315},{"type":33,"tag":41,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":38,"value":1123},"-drill",{"type":38,"value":315},{"type":33,"tag":41,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":38,"value":1130},"-connected",{"type":38,"value":315},{"type":33,"tag":41,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":38,"value":1137},"app-messages-settings",{"type":38,"value":315},{"type":33,"tag":41,"props":1140,"children":1142},{"className":1141},[],[1143],{"type":38,"value":1144},"-tuned",{"type":38,"value":1146},"), each setting the channel up before the page draws (a story's button press waits a frame for the Root, the toast's host); thirteen captures published to design's atlas (thread ",{"type":33,"tag":41,"props":1148,"children":1150},{"className":1149},[],[1151],{"type":38,"value":220},{"type":38,"value":315},{"type":33,"tag":1154,"props":1155,"children":1157},"a",{"href":1156},"captures\u002Fmessaging.json",[1158],{"type":38,"value":1156},{"type":38,"value":1160},"). The guide's map carries both pages (the card and the honesty line marked as shown only in some states); ",{"type":33,"tag":41,"props":1162,"children":1164},{"className":1163},[],[1165],{"type":38,"value":1166},"scripts\u002Fguide-check.py",{"type":38,"value":1168}," passes 147 of 147 against the running app. ",{"type":33,"tag":41,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":38,"value":1174},"scripts\u002Fbundle-dev-app.sh",{"type":38,"value":1176}," wraps the release binary in an ad hoc signed bundle so the real macOS notification can be tried. The budget with strobe, interleaved with the tree before the slice: the tray at rest 23 MB on both builds with four messages waiting; the window on the Inbox 61.8 MB at 0.02 % of a core (the baseline's overview 62.2 MB at 0.002 %); the binary +0.99 MB (with c5's pages and c3's stream core in it); one finding handed to c5: the Status landing draws at rest (2.4 % of a core, 212 wakes a second). Then ",{"type":33,"tag":1154,"props":1178,"children":1180},{"href":1179},"\u002Fcycles\u002Fqnative\u002Fc4\u002Fdoc\u002Freview-1",[1181],{"type":38,"value":233},{"type":38,"value":1183},": how to try it, the figures, six findings for the specification, seven calls for Mark, what is not built. c3 fast-forwarded main onto this cycle's commits meanwhile (",{"type":33,"tag":41,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":38,"value":1189},"2c01ebf",{"type":38,"value":1191},"); this record and the README's two sections went on top.",{"type":33,"tag":64,"props":1193,"children":1194},{},[1195,1200,1202,1206,1208,1214,1216,1222,1224,1230,1232,1238,1240,1246,1248,1253,1254,1259,1261,1267],{"type":33,"tag":68,"props":1196,"children":1197},{},[1198],{"type":38,"value":1199},"Mark's rulings on review stop 1 (2026-11-11, evening), built:",{"type":38,"value":1201}," the six open calls walked in this session, each the recommended answer (",{"type":33,"tag":1154,"props":1203,"children":1204},{"href":1179},[1205],{"type":38,"value":233},{"type":38,"value":1207}," § Ruled). (1) The delivery words are Inbox · Tray · Quiet · Normal: the ladder renamed in the types, the hold reasons, the settings page, the honesty line and the guide's map; the old word ",{"type":33,"tag":41,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":38,"value":1213},"off",{"type":38,"value":1215}," still reads as Inbox. (2) The IT contact comes from qcontrol's configuration: the bridge's ",{"type":33,"tag":41,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":38,"value":1221},"EffectiveConfig",{"type":38,"value":1223}," carries ",{"type":33,"tag":41,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":38,"value":1229},"it_contact",{"type":38,"value":1231},", the pilot world's names ",{"type":33,"tag":41,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":38,"value":1237},"mailto:it-help@meridian.dev",{"type":38,"value":1239},", a local Contact IT opens it and never the message's own target, and the field is an ask for qcontrol's engineer with the ",{"type":33,"tag":41,"props":1241,"children":1243},{"className":1242},[],[1244],{"type":38,"value":1245},"\u002Fapi\u002Fconfig",{"type":38,"value":1247}," route. (3) Windows and Linux ports with packaging (c131 Phase 4). (4) The time-sensitive capability is asked for now on the App ID, so the first signed build answers it. (5) Sync cadence is c134's; meanwhile the pull for ",{"type":33,"tag":41,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":38,"value":128},{"type":38,"value":146},{"type":33,"tag":41,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":38,"value":844},{"type":38,"value":1260}," moved to the background executor. (6) The tray's line stays in the Inbox item until the tray's long form. Four captures retaken and republished under the same names. Pushed with c3's Phase 3 when c5 pushed ",{"type":33,"tag":41,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":38,"value":1266},"045eed1..4ccf511",{"type":38,"value":1268}," on Mark's word, a fast-forward.",{"type":33,"tag":64,"props":1270,"children":1271},{},[1272,1277,1279,1284,1286,1292,1294,1299,1301],{"type":33,"tag":68,"props":1273,"children":1274},{},[1275],{"type":38,"value":1276},"retired by c13 (2026-11-13, night):",{"type":38,"value":1278}," design c147 replaced the inbox with the finding (Mark's R6: the plumbing stays). qnative c13 removed the Inbox and Messages settings pages, ",{"type":33,"tag":41,"props":1280,"children":1282},{"className":1281},[],[1283],{"type":38,"value":830},{"type":38,"value":1285}," and their ten stories; the OS notification trait, the tray, quiet hours and Focus stay and announce findings at the person's noise position; the SQLite store is repurposed for the person's notes on a finding (",{"type":33,"tag":41,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":38,"value":1291},"messages::person",{"type":38,"value":1293},"). The message types, the fixture and the drift test against ",{"type":33,"tag":41,"props":1295,"children":1297},{"className":1296},[],[1298],{"type":38,"value":96},{"type":38,"value":1300}," stay as this cycle's record. → ",{"type":33,"tag":1154,"props":1302,"children":1304},{"href":1303},"\u002Fcycles\u002Fqnative\u002Fc13\u002Fdoc\u002FCYCLE",[1305],{"type":38,"value":1306},"c13",{"key":1308,"title":1309,"empty":19,"ast":1310},"outcome","Outcome",{"type":30,"children":1311},[1312],{"type":33,"tag":34,"props":1313,"children":1314},{},[1315],{"type":33,"tag":1316,"props":1317,"children":1318},"em",{},[1319,1321,1326,1328,1333],{"type":38,"value":1320},"Review stop 1 cleared (2026-11-11): the slice stands, built in the brief's five steps, measured, and changed by Mark's six rulings the same evening. Waiting outside this repo: qcontrol's ",{"type":33,"tag":41,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":38,"value":1229},{"type":38,"value":1327}," field and ",{"type":33,"tag":41,"props":1329,"children":1331},{"className":1330},[],[1332],{"type":38,"value":1245},{"type":38,"value":1334}," route, the time-sensitive capability on the App ID, the plane's message contract (c134). Waiting on packaging (c131 Phase 4): the Windows and Linux notification ports and the first signed build. Next on this channel: the violation tour (c131 D15), which the drill is ready for.",[],[1337,233],"initial-prompt.md",[1339,1340],{"file":1337,"title":14},{"file":233,"title":1341},"Review stop 1: the messaging slice",[1343,1353,1358,1363,1369,1374,1379,1385,1391,1397,1404,1410,1415],{"src":1344,"kind":1345,"order":1346,"caption":1347,"thread":1348,"capturedAt":1350,"subject":1351,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-empty-light.png","hero",146,"The inbox on the quiet default laptop (nina-mbp): empty, with the welcome the inventory dropped as a type. The sidebar's Messages group: Inbox and Settings.",{"id":220,"label":1349,"date":17},"c4 · Messaging: the inbox per state, the settings, the flows (design c137 Phase 3)","2026-11-11T20:16:04.000Z","native\u002Fapp-inbox","\u002Fcycles\u002Fqnative\u002Fc4\u002Fdoc\u002FCYCLE",{"src":1354,"kind":1345,"order":1355,"caption":1356,"thread":1357,"capturedAt":1350,"subject":1351,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-light.png",147,"The pilot world's inbox, seeded through the nozzle's messages route from bones' ten: the lift (D10) puts the open required censure first though it is the oldest of the day, then the new ones, then the seen; the severity pill is grey or orange, never red; one row per thread with its reply count; the count beside Inbox in the sidebar.",{"id":220,"label":1349,"date":17},{"src":1359,"kind":1345,"order":1360,"caption":1361,"thread":1362,"capturedAt":1350,"subject":1351,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-dark.png",148,"The same inbox in dark.",{"id":220,"label":1349,"date":17},{"src":1364,"kind":1345,"order":1365,"caption":1366,"thread":1367,"capturedAt":1350,"subject":1368,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-card-light.png",149,"The censure's card: the three sentences as HQ wrote them with the verbatim label (D6), \"Why am I seeing this\" fixed at send time, the kind and dates, Acknowledge first because it is owed (added by the app, never by the sender), then Contact IT.",{"id":220,"label":1349,"date":17},"native\u002Fapp-inbox-card",{"src":1370,"kind":1345,"order":1371,"caption":1372,"thread":1373,"capturedAt":1350,"subject":1368,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-card-dark.png",150,"The card in dark.",{"id":220,"label":1349,"date":17},{"src":20,"kind":1345,"order":1375,"caption":1376,"thread":1377,"capturedAt":1350,"subject":1378,"route":1352},151,"Acknowledge pressed on the censure: it ended (a censure has no completion action, so acknowledged is terminal) and moved under the fold; the toast through the Root's notification host says \"Acknowledged. HQ sees it.\" (D12); the sidebar count fell to 3.",{"id":220,"label":1349,"date":17},"native\u002Fapp-inbox-acknowledged",{"src":1380,"kind":1345,"order":1381,"caption":1382,"thread":1383,"capturedAt":1350,"subject":1384,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-expired-light.png",152,"Monday has passed: the HQ notice about Monday expired at its own date and sits under the fold with the sensor notice that ended as done when the tap returned. Nothing is deleted; the fold counts them.",{"id":220,"label":1349,"date":17},"native\u002Fapp-inbox-expired",{"src":1386,"kind":1345,"order":1387,"caption":1388,"thread":1389,"capturedAt":1350,"subject":1390,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-drill-light.png",154,"The drill (c131 D15's simulate step): the local enforcement notice from qcontrol on this machine arrives now on the quiet laptop, at Normal, with its notification posted (recorded, not the OS, in a story); the first message of an inbox that was empty.",{"id":220,"label":1349,"date":17},"native\u002Fapp-inbox-drill",{"src":1392,"kind":1345,"order":1393,"caption":1394,"thread":1395,"capturedAt":1350,"subject":1396,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-connected-light.png",155,"The V1 flow: Connect just ran and the identity confirmation arrived as a message (bones E4): this machine, the plane, the account; Open Status and Open Connect; Dismiss because it is info; a mute for the thread.",{"id":220,"label":1349,"date":17},"native\u002Fapp-inbox-connected",{"src":1398,"kind":1345,"order":1399,"caption":1400,"thread":1401,"capturedAt":1402,"subject":1403,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-inbox-withheld-light.png",240,"The honesty line: a new HQ notice at its default (Inbox: kept, no signal) and a drill's enforcement notice during quiet hours both went to the inbox quietly; the line names the setting that did it and links to it. Control never erases the record.",{"id":220,"label":1349,"date":17},"2026-11-12T01:52:17.000Z","native\u002Fapp-inbox-withheld",{"src":1405,"kind":1345,"order":1406,"caption":1407,"thread":1408,"capturedAt":1402,"subject":1409,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-messages-settings-light.png",241,"Messages, the settings page, in the words Mark ruled on 2026-11-11: one four-position control per kind, Inbox · Tray · Quiet · Normal, each word saying where the message goes; Priority reserved to required. The inventory's defaults: enforcement notices at Tray (no floor), censures at Normal, HQ notices at Inbox.",{"id":220,"label":1349,"date":17},"native\u002Fapp-messages-settings",{"src":1411,"kind":1345,"order":1412,"caption":1413,"thread":1414,"capturedAt":1402,"subject":1409,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-messages-settings-dark.png",242,"The settings in dark.",{"id":220,"label":1349,"date":17},{"src":1416,"kind":1345,"order":1417,"caption":1418,"thread":1419,"capturedAt":1402,"subject":1420,"route":1352},"\u002Fcycles\u002Fqnative\u002Fc4-app-messages-settings-tuned-light.png",243,"Lower on the page, tuned: quiet hours on with the preset and its steppers, HQ notices raised to Tray, a policy's notices muted from a card (with Lift), the required override with this month's count and subject, and what this build can post: no priority without the time-sensitive entitlement on a signed build.",{"id":220,"label":1349,"date":17},"native\u002Fapp-messages-settings-tuned",[],[1423],{"route":1352,"href":8},1794599378681]