The brief line — the news brief is the product design · 2026-09-22

Short answer: Ink stops asking a persona to write. Each morning the scope's harvest is read, the day's stories are picked by the brief's shares, and every picked story becomes a block brief — the gist, keep reading, the questions, the numbers, the people, what came before, still unknown — on the list as a news item. No essay, no meeting, no rival reader, no art. About 3.7 cents a brief, about 50 cents a morning of twelve, off-peak; the essay line it replaces spent more than that on one piece.

Now we change the Ink design. We will no longer have the persona to write, for now; the brief is the end product. Describe the brief production line and mark the cost. — the owner, 2026-09-22

1 · The line

THE MORNING (03:00 CST, off-peak) cost · per morning of 12 1 HARVEST the brief's searches (Google News RSS, 20 a query, zh edition for zh) $0 search + the broad themes' SECTIONS read whole + the wild-card front pages $0 feeds → ~1,000 stories, ads out, folded (one story, many outlets) code 2 THE READ every story judged against the brief: in? theme · ● ●● ●●● · beat ~$0.05 Flash, batched → the pool, seated by the brief's shares (floor a quarter of equal) code 3 THE PICK N stories (the console's count): per-theme cap ceil(N × share) + 1, ●●● first by attention, one wild card if the brief reserves one, the same story never twice code $0 │ ▼ per story, 4 in parallel 4 THE DESK fetch the story (the full-text ladder), 2 searches, 2–4 pages read, ONE Flash distillation → the notebook: facts · numbers · people · quotes · disputed · unknown, each with its source $0.006 ($0.004 model + $0.002 search) 5 THE QUESTIONS ONE call, two lists: up to six the story itself raises + up to three 「what does this mean for me」only when it touches money, home, health, safety (the union, under nine) + four canned intents, never printed as labels (precedent · numbers · critics · mechanism) $0.001 6 THE LOOK-UP one search a question, 12 pages read once, notes per page, ONE answer a question merged $0.028 ($0.018 model + $0.010 search) 7 THE BLOCKS ONE Flash call reads the notebook + the look-up → the JSON page $0.002 → the LINTS in code: every figure in the records · digits in the gist · no「the records do not say」· a timeline line is an event · no aggregator among the sources; one re-ask on a fail +$0.002 sometimes 8 THE DEK one line under the title: what the headline leaves out, under 15 words; re-asked once when it reuses a third of the headline $0.001 9 PUBLISH the list item {kind: "brief", field, title, dek} + the page record (pegs.json, brief.en.blocks); the edition flips; yesterday's stays code $0 ONE BRIEF ≈ $0.037 · TWELVE ≈ $0.44 + the morning's shared read ≈ $0.05 A MORNING ≈ $0.50 off-peak · ≈ $0.90 at peak

Every figure above is measured, not estimated: the three real-estate briefs built from scratch on 09-22 (desk + look-up + blocks + dek, the dev call ledger by leaf) and the 09-22 scope harvest's read. The search fees are Serper's ($0.001 a query). Peak = DeepSeek's 09–12 and 14–18 CST at twice the model price; the search fees do not move.

2 · Where the money goes

StepModelSearchPer briefShareThe dial
the desk notebook$0.004$0.002$0.00616%none — the notebook is the floor; a brief without it has nothing to say
the questions + the look-up$0.019$0.010$0.02978%the one dial. Six questions + four intents = 10 searches, 12 pages. Four questions + two intents ≈ $0.018; no look-up = a notebook-only brief under a cent, and no questions block
the blocks + the lints + the dek$0.002$0.0026%none worth turning
one brief$0.025$0.012$0.037≈ $0.06 at peak
the morning's read (shared)$0.05$0≈ $0.004 at twelvegrows with the pool, not with the count of briefs

For comparison, the essay line: the Nscale piece alone was $0.11 of writing and $0.017 of art, after a meeting, a pitch round and a rival reader that a brief never needs. The brief line writes twelve pages for what one essay cost.

3 · What the old morning did that this one does not

Stage of the essay brewIn the brief line
the pitches — every persona reads the pool and pitchesgone; the pick is code, by the brief's shares
the meeting and the slate — the editor matches stories to writers, the match gategone; a story needs no writer
the archive — prior coverage, the precedent, the study, the numbers over yearsfolded into the look-up's canned intents (precedent · numbers · critics · mechanism)
the persona drives — reaction · life · angle · point · order · draft · mend · rereadgone
the rival reader and the mends, the rereadgone; the lints in code take the seat
the renditions (en ⇄ zh)open: a zh reader today gets the English blocks; one more Flash call a brief (≈ $0.002) would render them in Chinese — decide when a zh reader asks
the artoff (owner: not yet); $0.017 an image when it returns
the gate and the fine printgone; a brief that fails its lints twice is dropped, the morning says so in its log
the Background page behind an essayis the product — opened from the list item, the field in its head

4 · Built and owed

PieceStateWhere
the scope: the brief → searches, sections, shares, wild cardon the boxthe scope · ink_harvest.harvest_brief
the harvest + the read + the seats by shareon the boxink_harvest.judge_pool · select
the desk notebookon the box (the essay line's research)ink_brew.research
the look-upon the box (the essay line's; today given the persona's questions)ink_brew.look_up
the reader's questionsbuilt 09-22ink_brew.reader_questions
the blocks call + the five lints + the re-askbuilt 09-22ink_brew.brief_blocks · brief_lint (the prompt is BRIEF_SYS); a brief whose page is unusable after the re-ask is dropped and the log says so
the pickbuilt 09-22ink_brew.line_pick: the brief's shares walked (weighted_order), ●●● before ●●, never ●, a dry theme's seat handed on, the wild card's reserve, a story burned for three days after it is briefed, the same headline never twice
the dek · the list item · the page recordon mainink_brew.brief_dek · brief_item · peg_card
the list, the page, the bubbles, the text sizeon main (v1111–v1116)the Background page
the stage — pegs → the line (four stories at a time) → publish, one passbuilt 09-22, run on devink_brew.run_line · stage_line · line_one · publish_line; the CLI python lib/ink_brew.py line --n 12; the console's Brew now and the dawn slot run it while「the brief line」is on (the evening slot has nothing to do — the news would be stale by morning)
the zh rendition of the blocksbuilt 09-22 (owner: yes for Chinese)ink_brew.blocks_zh, one call a brief on the rendition seat; a Chinese reader gets the zh title on the list and the zh blocks on the page
the consolebuilt 09-22Ink tab: the switch「the brief line」(knob line: briefs | essays, default briefs) · Usage & cost ▸ the day's cost groups lead with the line's four (the harvest · the desk · the look-up · the brief) · Models & APIs: the seats' copy says what each does under the line and its measured price
the same story twice from two outletsowedthe pick refuses a headline that repeats a picked one by half its words; two rewrites of one Reuters story with different words still both pass (seen 09-22: two Anthropic-model stories) — the fix is a check after the desk on the notebooks' one-line, before the look-up spends

5 · Status

DateWhat
2026-09-22 · a weak answer, tracedthe owner:「What is driving SF prices so far above asking?」came back as three Compass figures — the good answer touches the inventory and the AI rich. Traced: both WERE in the look-up's notes (the Guardian's AI boom, CBS's agent on AI pay, a buyer's guide on scarce single-family inventory); the merge kept one page's figures under its 130-word cap and dropped the other two, then the blocks rule「one fact with its figure」dropped the causes that had no number. Fixed at both seams: a WHY question is merged causes-first from every page, figures after; on the page a why question gets one cause per bullet, named. The mortgage brief re-run.
2026-09-22 · deployedthe owner:「I think we can now deploy」→ the box at v1130: the line, the company, the pictures. The box's line knob reads briefs by default from here. Owed on the box: OPENROUTER_API_KEY in its .env — until then Jev is unreachable there and the seating falls to the tag shortlist's top two.
2026-09-22 · the meter's clockthe owner:「make sure the cost numbers are accurate」. A recompute of the day's ledger against the price sheet disagreed by a quarter. Traced: the brew stamps each call with Shanghai time and the meter's peak test read that stamp on the UTC clock — so a 15:00 CST pass (07:00 UTC, peak) was booked off-peak, and the box's 03:00 CST dawn brew (19:00 UTC, off-peak) was booked at the peak rate, since 09-13 when calls began to be priced as of their own hour. Fixed at the seam (cost.is_peak and the dated rows normalise an aware time to UTC; the ledger row now carries the call's own hour), a smoketest check pins 03:00 CST off-peak and 10:00 CST peak, and scripts/reprice_ledger.py re-derives booked rows from their tokens and hour — run on dev (5,700 Ink rows since 09-13: $6.51 booked → $8.34 true; the dev brews ran in CST afternoons, i.e. at peak). The box owes the same run after deploy; its dawn rows will come DOWN. The figures on this page stand: they are rate-based (off-peak sheet), not clock-based. Jev's rows are booked flat from OpenRouter's own cost line and were right — a probe shows that line is exactly input tokens × $0.042/M, output free — and since 09-22 they also carry their token counts, so the console's token columns no longer read zero for Jev. Jev also has its row on the console's price sheet (Models & APIs › prices, under TypeSafe): $0.042/M on every input column, output 0 — the sheet OpenRouter's line has matched, and the brew's fallback rate when a response carries none.
2026-09-22 · the story's own picture (v1128)the owner:「50 cents for 12 personalized stories plus the masters — the only thing missing is a good hero picture, but at 3¢ it carries little info」→「use the source picture if available and meaningful」. The outlet's photograph is free and IS the story: the peg page's og:image (then the first fetched sources'), pulled once through the unfurl guard (the reader never hotlinks the origin), the code drops logos, icons, strips and tiny files, and ONE look by the eyes (V4.1 Flash, multimodal, ≈0.1¢ — Jev reads text only, so it cannot judge a picture) says whether it is OF the story or stock art, a logo, a reporter's headshot. A brief with no usable picture has none. It rides the list row and the top of the brief page, credited「Photo: CBS News」. Owed: a per-outlet opt-in before a launch (rights).
2026-09-22 · the questions' unionthe owner read the crater's「who pays to protect NASA's moon base?」→ a comp on four briefs (the checklist A · 「after reading this」on the notebook B · the same on the finished brief C, docs/ink-background.html): A wins on the reader's own stakes, B and C on what the story raises, B ≈ C. The owner:「A is worth keeping — how does this impact me; B and C are very good — the union, cheaply」→ ONE call returns two lists (the story's six, the reader's three only when the story touches money, home, health or safety), the look-up's page budget holds (≈ +0.3¢ a brief), and the four canned intents never reach the page as their labels — a found fact is written under the question a reader would have asked. The crater and the mortgage briefs re-run on dev.
2026-09-22 · built on localthe whole line in ink_brew (the pick · the desk · the questions · the look-up · the blocks with five lints and one re-ask · the zh blocks · the dek · the publish), the console's switch, the seats' copy, the smoketest's three checks (the lints, the pick, the wiring); the first dev morning for 09-22 run at 12 under the dev scope. Not on the box.
2026-09-22 · the designthe owner's turn:「the brief is the end product」after reading twelve on the dev server. The line above; the cost measured on the 09-22 set. Next: the build of the stage, then a dev morning under the box's scope for the owner's read, then the box.
design 2026-09-22 · siblings: the Background page · the scope · the brew (the essay line)