The dates to file and pay

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

The annual return's dates as clocks, each state on its own rule. The date to file belongs to the signer of record, and three days out its rung deposits the tentative tax and files each extension that state needs. The date to file moves as far as each rule says; the date to pay never does. Three more dates outlive the return on the taxpayer.

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

The date to file can be extended; the date to pay can't. So the annual return names a clock for each, and three more that outlive it:

Run
grep -A6 "clocks: {" services/annual-return.ts
magic values: none
  clocks: {
    file: { due: fileDue, each: { of: 'jurisdictions' }, owner: 'of_record', rungs: ['notice 90d', 'notice 30d', 'run tentative 3d', 'ack daily 5d'], moves: { extend: extendedDue }, exposure: lateFiling, guarantee: { covers: ['penalties', 'interest on them'], up_to: 5_000, after: 'notice-response', excludes: 'held' } },
    pay: { due: payDue, owner: 'buyer', hard: true, rungs: ['notice 14d', 'escalate 3d'], satisfied_by: ['pay', 'file'], exposure: lateCost },
    assessment: { due: assessmentCloses, owner: 'brand', lives_on: 'subject', rungs: ['notice 30d'] },
    refund: { due: refundCloses, owner: 'of_record', lives_on: 'subject', hard: { bars: [{ step: 'amended-return.file', when: claimsRefund }] } },
    expiring: { due: earliestExpiry, owner: 'brand', lives_on: 'subject', rungs: ['notice 180d'] },
  },
ClockDueOwnerRungsSatisfied, or moved
filefileDue, one for each jurisdiction, by its own rule below, or a later date the client's own extension setof_record, the signer of recordA notice 90 and 30 days out; run tentative 3 days out; an acknowledgement on each of the last 5 daysWhen that jurisdiction's filing commits. extend moves it to extendedDue, each state on its own receipt. exposure prices a month late; guarantee pays a penalty for a date the brand missed, up to $5,000
paypayDue, the federal datebuyer, the businessA notice 14 days out, an escalation 3 days out, each with what a month late costsWhen pay or file commits, by satisfied_by. hard: true: nothing moves it
assessmentassessmentCloses: 3 years after filing, from the date it was due when filed early; 6 when a quarter of gross income was left out; or the date a signed Form 872 setsthe brandA notice 30 days outLives on the taxpayer. The signer's seat of record, the cover's tail and the custodian end on it. A payment never moves it
refundrefundCloses: the same 3 years, or 2 years after the tax was last paid if later, and 6 months past a Form 872's dateof_recordnonehard: { bars: [{ step: 'amended-return.file', when: claimsRefund }] }: past it, an amendment for the year that claims money back is refused date_passed
expiringearliestExpiry, the first carryforward to expirethe brandA notice 180 days outLives on the taxpayer; Carryforward watch keeps it after a plan ends

Each date comes from your code, on the brand's calendar, rolling past weekends and holidays.

JURISDICTIONS in lib/tax.ts holds each one's rule:

Run
grep -A6 "export const JURISDICTIONS" lib/tax.ts
magic values: none
export const JURISDICTIONS: Readonly<Record<string, Rule>> = {
  US: { due: { 'C corp': 4, '*': 3 }, extend: { form: 'Form 7004', months: 6 } },
  'US-CA': { due: { 'C corp': 4, '*': 3 }, extend: { automatic: true, months: 7, voucher: 'FTB 3539' } },
  'US-NY': { due: { 'C corp': 4, '*': 3 }, extend: { form: 'CT-5', months: 6, carries: 'first installment' } },
  'US-NJ': { due: { 'C corp': 5, '*': 4 }, extend: { form: 'CBT-200-T', months: 6, paid: 0.9 } },
  'US-TX': { due: '05-15', extend: { form: '05-164', months: 6 } },
}
JurisdictionA C corp's return is dueIts extensionRunsPaid with it
Federalthe 15th of the fourth month, the third for othersForm 70046 monthsthe tax expected, deposited
Californiathe 15th of the fourth month, the third for othersautomatic: nothing is filed7 monthsby voucher, FTB 3539
New Yorkthe 15th of the fourth month, the third for othersCT-56 monthsthe tax expected, and next year's mandatory first installment, a quarter of this year's tax
New Jerseya month after the federal dateCBT-200-T, valid only with 90% of the tax paid6 monthsthe tax expected
Texas15 Mayits own extension6 months

A C corp's 30 June year begun before 2026 keeps the third month and a seven-month extension: Beta Labs. Every rule is illustrative.

Ada leaves the organizer open. The date to file belongs to the signer of record, and there's none yet; its rungs fire all the same:

Call
→ POST /returns {"service":"annual-return","business":{"name":"Acme Robotics","email":"books@acme.example"},"owner":{"name":"Ada Lovelace","email":"ada@example.com"},"ein":"12-3456789","tax_year":"2026","entity":"C corp","jurisdictions":["US","US-CA","US-NY","US-NJ"],"books":"https://books.example/acme","max_usd":1800,"key":"acme-extension"}
magic values: none
← job_4Tx2 · waiting · on party · $1,800.00 held · consent · ask_7Hq2 (consent)
Call
→ GET /clocks?job=job_4Tx2
magic values: none
  clk_7Hq2#US     file  due 2027-04-15 · no owner: no member of record yet
  clk_7Hq2#US-CA  file  due 2027-04-15 · no owner: no member of record yet
  clk_7Hq2#US-NY  file  due 2027-04-15 · no owner: no member of record yet
  clk_7Hq2#US-NJ  file  due 2027-05-17, rolled from 2027-05-15 · no owner: no member of record yet
  clk_7Hq3        pay   due 2027-04-15 · owner buyer · open · about $324 a month if it's late

Three days out with nothing filed, the rung runs the tentative step: the year's tax as the ledger stands, less the estimates paid, deposited in each jurisdiction, then each extension its rule needs:

Call
→ POST /test_clocks/default/advance {"to":"2027-04-14T00:00:00Z"}
magic values: none
  2027-03-16  clock file · rung notice 30d · due 2027-04-15 · US, US-CA, US-NY
  2027-04-01  clock pay · rung notice 14d · due 2027-04-15 · owner buyer · about $324 a month if it's late
  2027-04-10  clock file · rung ack daily 5d · no member of record to acknowledge: at risk on the owner console
  2027-04-11  clock file · rung ack daily 5d · no member of record to acknowledge: at risk on the owner console
  2027-04-12  clock file · rung run tentative 3d → tentative proposed · committed
  2027-04-12  tentative · the year as the ledger stands · US $73,710 · US-CA $6,205 · US-NY $7,605, and 2027's first installment $1,901 · US-NJ $6,318
  2027-04-12  clock pay · rung escalate 3d · due 2027-04-15 · owner buyer
  2027-04-12  pay · Treasury and states · 4 accepted, US first · rcp_7Hq2 · $95,739.00 deposited
  2027-04-12  clock pay · satisfied · pay committed
  2027-04-12  extend · US Form 7004 accepted → US-CA automatic, no filing; paid by voucher · US-NY CT-5 accepted · US-NJ CBT-200-T accepted, 100% paid
  2027-04-12  clock file · moved 2027-04-15 → 2027-10-15 · US, US-NY · US-NJ 2027-05-17 → 2027-11-15 · US-CA → 2027-11-15, automatic · each by its own rule · clock pay unmoved, still 2027-04-15
  2027-04-13  clock file · rung ack daily 5d · superseded: the date moved

Each date moved on its own receipt; the date to pay closed on the deposit's:

Call
→ GET /clocks?job=job_4Tx2
magic values: none
  clk_7Hq2#US     file  due 2027-10-15 · moved from 2027-04-15 by extend, Form 7004 · next rung notice 90d on 2027-07-17
  clk_7Hq2#US-CA  file  due 2027-11-15 · moved from 2027-04-15 by extend, automatic: nothing filed
  clk_7Hq2#US-NY  file  due 2027-10-15 · moved from 2027-04-15 by extend, CT-5
  clk_7Hq2#US-NJ  file  due 2027-11-15 · moved from 2027-05-17 by extend, CBT-200-T, valid with 100% of the tax paid
  clk_7Hq3        pay   due 2027-04-15 · owner buyer · satisfied

The return credits the deposit on a workpaper line of its own, so July's return owes $0:

Call
→ GET /returns/job_4Tx2
magic values: none
← job_4Tx2 · waiting · on party · $1,800.00 held · organizer
  rcp_7Hq2  US    pay     accepted · $73,710.00 · the Form 7004 deposit · paid 2027-04-12
  rcp_7Hq3  US    extend  accepted · filed 2027-04-12 · US Form 7004 2026 accepted
  rcp_7Hq4  US-CA extend  accepted · after rcp_7Hq3 · US-CA automatic, no filing; paid by voucher · $6,205.00 by FTB 3539
  rcp_7Hq5  US-NY extend  accepted · after rcp_7Hq3 · US-NY CT-5 2026 accepted · $9,506.00 with it, $1,901.00 toward 2027
  rcp_7Hq6  US-NJ extend  accepted · after rcp_7Hq3 · US-NJ CBT-200-T 2026 accepted · $6,318.00 with it

  record  consent · owner · §7216 | file clock · run tentative 3d · goto tentative | tentative · code | pay · Treasury and states · 4 accepted · rcp_7Hq2 | extend · IRS and states · 3 filed, US-CA automatic | file clock · moved, each by its own rule
  kept    at acceptance: paid 2026 US $73,710 · US-CA $6,205 · US-NY $7,605 · US-NJ $6,318, which the return's compute credits on a workpaper line of its own, "Tax deposited with Form 7004 $73710"

The return still waits on its books: A year, and the next runs it to the filing. Clocks covers every key, and A date the world sets builds one.