[{"data":1,"prerenderedAt":283},["ShallowReactive",2],{"navigation_docs":3,"-design":101,"-design-surround":278},[4,23,66],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":22},"Guide","i-lucide-book-open","\u002Fguide","1.guide",[10,14,18],{"title":11,"path":12,"stem":13},"Introduction","\u002Fguide\u002Fintroduction","1.guide\u002F1.introduction",{"title":15,"path":16,"stem":17},"Getting started","\u002Fguide\u002Fgetting-started","1.guide\u002F2.getting-started",{"title":19,"path":20,"stem":21},"Pieces and sets","\u002Fguide\u002Fpieces-and-sets","1.guide\u002F3.pieces-and-sets",false,{"title":24,"icon":25,"path":26,"stem":27,"children":28},"Design (ADRs)","i-lucide-drafting-compass","\u002Fdesign","2.design",[29,32],{"title":30,"path":26,"stem":31},"Design decisions (ADRs)","2.design\u002Findex",{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":22},"Decision records","i-lucide-scroll-text","\u002Fdesign\u002Fadrs","2.design\u002Fadrs",[38,42,46,50,54,58,62],{"title":39,"path":40,"stem":41},"ADR-001: The refinement-chain model for calendar points","\u002Fdesign\u002Fadrs\u002F001-refinement-chain","2.design\u002Fadrs\u002F001-refinement-chain",{"title":43,"path":44,"stem":45},"ADR-002: Sets first — the Span algebra","\u002Fdesign\u002Fadrs\u002F002-set-primary-spans","2.design\u002Fadrs\u002F002-set-primary-spans",{"title":47,"path":48,"stem":49},"ADR-003: Overflow policy — clamp by default, skip on request","\u002Fdesign\u002Fadrs\u002F003-overflow-policy","2.design\u002Fadrs\u002F003-overflow-policy",{"title":51,"path":52,"stem":53},"ADR-004: Fortnights as every-k scopes","\u002Fdesign\u002Fadrs\u002F004-fortnight-scopes","2.design\u002Fadrs\u002F004-fortnight-scopes",{"title":55,"path":56,"stem":57},"ADR-005: One denotation function, and what DST does to it","\u002Fdesign\u002Fadrs\u002F005-shared-denotation","2.design\u002Fadrs\u002F005-shared-denotation",{"title":59,"path":60,"stem":61},"ADR-006: Zocam is a standalone, released library","\u002Fdesign\u002Fadrs\u002F006-standalone-library","2.design\u002Fadrs\u002F006-standalone-library",{"title":63,"path":64,"stem":65},"ADR-007: A set is one value — struct answers, enumerable shapes","\u002Fdesign\u002Fadrs\u002F007-one-value-sets","2.design\u002Fadrs\u002F007-one-value-sets",{"title":67,"path":68,"stem":69,"children":70,"icon":100},"API Reference","\u002Fapi","3.api\u002Findex",[71,72,76,80,84,88,92,96],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75},"Zocam","\u002Fapi\u002Fzocam","3.api\u002Fzocam",{"title":77,"path":78,"stem":79},"Zocam.Intervals","\u002Fapi\u002Fzocam-intervals","3.api\u002Fzocam-intervals",{"title":81,"path":82,"stem":83},"Zocam.ISO","\u002Fapi\u002Fzocam-iso","3.api\u002Fzocam-iso",{"title":85,"path":86,"stem":87},"Zocam.Point","\u002Fapi\u002Fzocam-point","3.api\u002Fzocam-point",{"title":89,"path":90,"stem":91},"Zocam.Point.ComposeError","\u002Fapi\u002Fzocam-point-composeerror","3.api\u002Fzocam-point-composeerror",{"title":93,"path":94,"stem":95},"Zocam.Span","\u002Fapi\u002Fzocam-span","3.api\u002Fzocam-span",{"title":97,"path":98,"stem":99},"Zocam.Span.Arc","\u002Fapi\u002Fzocam-span-arc","3.api\u002Fzocam-span-arc","i-lucide-braces",{"id":102,"title":30,"body":103,"description":271,"extension":272,"links":273,"meta":274,"navigation":275,"path":26,"seo":276,"stem":31,"__hash__":277},"docs\u002F2.design\u002Findex.md",{"type":104,"value":105,"toc":266},"minimark",[106,124,132,135,140,250,255,263],[107,108,109,115,116,123],"p",{},[110,111,114],"span",{"className":112},[113],"ai-slop","AI SLOP"," An AI agent wrote this page. ",[117,118,122],"a",{"href":119,"rel":120},"https:\u002F\u002Fgithub.com\u002Fyuri4n",[121],"nofollow","yuri4n",", a senior engineer, gave the direction and did the review. The review is human, thus errors can stay.",[107,125,126,127,131],{},"An ADR is an architecture decision record: a short page that captures one decision, with its context, its options, and its consequences. This project writes one ADR for each choice that is hard to reverse. The records serve two goals. They teach: you can read ",[128,129,130],"em",{},"why"," the design is what it is, not only what it is. And they give traceability: when a later change pushes against an old decision, the ADR shows what that change must respect or revise.",[107,133,134],{},"Read the records in order. Each one builds on the ones before it: ADR-001 fixes the shape of a point, ADR-002 builds spans on top of points, and ADR-005 ties both to one shared meaning function.",[136,137,139],"h2",{"id":138},"timetable","Timetable",[141,142,143,156],"table",{},[144,145,146],"thead",{},[147,148,149,153],"tr",{},[150,151,152],"th",{},"ADR",[150,154,155],{},"Decision in one line",[157,158,159,170,180,195,209,226,236],"tbody",{},[147,160,161,167],{},[162,163,164],"td",{},[117,165,166],{"href":40},"ADR-001",[162,168,169],{},"A calendar point is a scope plus a refinement chain",[147,171,172,177],{},[162,173,174],{},[117,175,176],{"href":44},"ADR-002",[162,178,179],{},"Sets are primary; Span is a recursive set algebra over points and arcs",[147,181,182,187],{},[162,183,184],{},[117,185,186],{"href":48},"ADR-003",[162,188,189,190,194],{},"Overflow clamps by default; ",[191,192,193],"code",{},":skip"," is an explicit override",[147,196,197,202],{},[162,198,199],{},[117,200,201],{"href":52},"ADR-004",[162,203,204,205,208],{},"Fortnights are ",[191,206,207],{},"{:every, k, cycle, anchor}"," scopes with subsequence semantics",[147,210,211,216],{},[162,212,213],{},[117,214,215],{"href":56},"ADR-005",[162,217,218,221,222,225],{},[191,219,220],{},"member?"," and ",[191,223,224],{},"ground"," share one denotation function; DST rules pinned",[147,227,228,233],{},[162,229,230],{},[117,231,232],{"href":60},"ADR-006",[162,234,235],{},"Zocam is a standalone repository that releases to Hex",[147,237,238,243],{},[162,239,240],{},[117,241,242],{"href":64},"ADR-007",[162,244,245,246,249],{},"Set operations answer with the ",[191,247,248],{},"%Intervals{}"," struct; sets and arcs enumerate",[107,251,252],{},[128,253,254],{},"Figure 1 — The ADR timetable: one row per record, with the decision in one line. AI generated, human reviewed.",[256,257,258,259,262],"note",{},"These records are hand-written pages. They live in the zocam repository at ",[191,260,261],{},"docs\u002Fcontent\u002F2.design\u002Fadrs\u002F",", and nothing generates them. To change an ADR, edit the page itself. They are not ExDoc extras: hexdocs carries the API reference only.",[256,264,265],{},"This series records zocam's side of each decision. When a decision also binds the s7r application, s7r keeps its own record, numbered from 001 in its own repository. ADR-006 is such a case: its consumer half is s7r ADR-001.",{"title":267,"searchDepth":268,"depth":268,"links":269},"",2,[270],{"id":138,"depth":268,"text":139},"One record for each irreversible design choice in the zocam time library, with the reasoning behind it.","md",null,{},true,{"title":30,"description":271},"BunkXwjAYkNQJgFeDmrBOjezxxLEuk4nNOtStOJPcuQ",[279,281],{"title":19,"path":20,"stem":21,"description":280,"children":-1},"The four data names of zocam — Span.Arc, Span, Intervals.interval, and Intervals — and how to keep them apart.",{"title":39,"path":40,"stem":41,"description":282,"children":-1},"Accepted, 2026-08-04, decided by the project owner.",1786065169073]