The owner console

The running jobjob_4Tx2 · delivered · workpapers-2026.txt · return.txt · $1,800.00 charged

The tax brand's console after the plan's first year, with ten returns in it, each Service's charges and costs, the dates at risk and the dates ahead, and every return's record and ledger.

tax's wordsreturn is a jobtaxpayer is a subjectreview is a taskpreparer is a member

The brand's owner reads every return here, in its own words: returns, reviews, preparers. This is the console on 2 February 2028, after the year ran, with the plan's second cycle begun:

Owner console/consoleafter the tick 1y walk

Its first line is the brand's year, as dev prints it:

Run
open http://localhost:8787/console   # the owner console
magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }
tax · 10 jobs · +$6,600.00 · AI $9.24 · people $405.00 · you $6,185.76
Annual Return: a person approved 2 of 2 jobs unchanged, at $315.00 in payouts. next: try human: 'risky', or delete the line.
PartWhat it shows
The brand's lineTen returns, $6,600 charged: the 2025 return at its own price, then two plan cycles. AI $9.24, people $405, and the rest the brand's, before services.dev's take
By ServiceEach Service's returns, charges, AI, people and what's left. Inside the plan's allowances a return charges $0, so an estimate's row and the 1099s' are their AI cost alone
Dates at riskThe dates that need the owner's hand: none, here
Next 30 daysEach date with its clock, its Service, its return, who answers for it and its next rung, the signer of record's first claim on the 2027 return among them
ReturnsEach return with its record, the rules version it pinned, 2026-10, and its ledger

Each return holds the rules version it pinned when it was ordered, which every act on it is held to, whatever the table says later.

An auditor, or the brand's own reviewer, exports one taxpayer's year: every record, the rules version each return pinned, each signature bound to its packet, and each figure rebuilt from its inputs:

Run
npx services.dev jobs export --subject sbj_7Hq2 --period 2026
magic values: owner.email = signs@example.test, metadata.sandbox.asks = {"organizer.books":"after 160d","organizer.assets":"waive","organizer #2":"after 2d","w9":"after 19d"}, metadata.sandbox.outside = {"reject":{"file.US-NY":["ein_mismatch"]}}, metadata.sandbox.events = { notice.received: { at: 2027-11-14T15:00:00Z, data: { notice, reply_by, tax_years } } }
sbj_7Hq2 · Acme Robotics · 2026 · 3 returns · job_4Tx1 information-returns · job_4Tx3 annual-return · job_4Tx7 notice-response
  bundle    returns-2026.zip · sha256:4b1e… · 184 records, each with the rules version it pinned, 2026-10
  replay    every clock rebuilt from its events: the same · every figure rebuilt from its inputs and lib/tax.ts at the pinned commit: the same
  signed    mbr_8Ea1 · PTIN P01234568 · 2027-07-11 and 2027-07-13 · each signature bound to its packet's hash
  consent   §7216 · ask_7Hq2 · use: prepare · disclose: none · every read of the return on the record, none outside it
  kept      until 2031-06-30, three years past the return period it was filed in, after the 2030-07-11 assessment date · each Form 8879 to 2030-10-15

The owner console covers what the console shows for any brand, and Dates at risk the dates. Run it: a season on a test clock, a return's trace, a week in April and the freeze.