done-done-axi 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,140 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
6
+ <title>done-done: no proof, no "done"</title>
7
+ <meta name="description" content="done-done won't accept &quot;done&quot; without real, fresh proof from your product, captured at the exact commit being called done.">
8
+ <meta property="og:title" content="done-done">
9
+ <meta property="og:description" content="No proof, no &quot;done&quot;.">
10
+ <link rel="icon" href="logo.svg" type="image/svg+xml">
11
+ <meta name="theme-color" content="#F5F5F7" media="(prefers-color-scheme: light)">
12
+ <meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)">
13
+ <style>
14
+ /* The same Spacious tokens as sign-off's page: grey grouped page and white tiles by day, black and #161617 by night. */
15
+ :root { color-scheme: light dark; --page: #F5F5F7; --tile: #FFFFFF; --sunk: #E8E8ED; --line: #D2D2D7; --text: #1D1D1F; --muted: #6E6E73; --accent: #0066CC; --action: #0071E3; --code: #1D1D1F; --code-text: #F5F5F7; }
16
+ @media (prefers-color-scheme: dark) { :root { --page: #000000; --tile: #161617; --sunk: #2C2C2E; --line: #424245; --text: #F5F5F7; --muted: #86868B; --accent: #2997FF; --code: #161617; --code-text: #F5F5F7; } }
17
+ * { box-sizing: border-box; }
18
+ html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
19
+ body { margin: 0; background: var(--page); color: var(--text); overflow-wrap: anywhere; -webkit-font-smoothing: antialiased;
20
+ font: 1.0625rem/1.4706 -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Segoe UI", Roboto, sans-serif; letter-spacing: -0.022em; }
21
+ a { color: var(--accent); text-decoration: none; } a:hover { text-decoration: underline; }
22
+ :focus-visible { outline: 3px solid var(--action); outline-offset: 2px; border-radius: 0.5rem; }
23
+ img, picture { display: block; max-width: 100%; height: auto; }
24
+ code { font: 0.9em ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: 0; }
25
+ .wrap { max-width: 68rem; margin: 0 auto; padding: 0 max(1.25rem, env(safe-area-inset-left)) 0 max(1.25rem, env(safe-area-inset-right)); }
26
+ nav { display: flex; align-items: center; gap: 1rem; padding: 1.25rem 0; }
27
+ nav .brand { display: flex; align-items: center; gap: 0.625rem; font-weight: 600; color: var(--text); }
28
+ nav .brand img { width: 2rem; height: 2rem; border-radius: 0.5rem; }
29
+ nav .links { margin-left: auto; display: flex; gap: 1.25rem; font-size: 0.9375rem; }
30
+ nav .links a.gh { display: none; }
31
+ h1 { font-size: clamp(2.25rem, 7vw, 4rem); line-height: 1.05; letter-spacing: -0.03em; margin: 0 0 1rem; font-weight: 700; }
32
+ h2 { font-size: clamp(1.625rem, 4.5vw, 2.5rem); line-height: 1.1; letter-spacing: -0.028em; margin: 0 0 0.75rem; font-weight: 700; }
33
+ h3 { font-size: 1.25rem; margin: 0 0 0.25rem; letter-spacing: -0.02em; }
34
+ p { margin: 0 0 1rem; } .lead { font-size: 1.25rem; line-height: 1.4; color: var(--muted); max-width: 38rem; }
35
+ section { padding: 3rem 0; }
36
+ .hero { padding: 2rem 0 1rem; text-align: center; } .hero .lead { margin: 0 auto 1.5rem; }
37
+ .actions { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; margin-bottom: 2.5rem; }
38
+ .btn { display: inline-flex; align-items: center; min-height: 2.75rem; padding: 0 1.375rem; border-radius: 999px; background: var(--action); color: #fff; font-weight: 600; }
39
+ .btn:hover { text-decoration: none; filter: brightness(1.08); }
40
+ .btn.quiet { background: var(--sunk); color: var(--text); }
41
+ .shot { border-radius: 1rem; border: 1px solid var(--line); overflow: hidden; background: var(--tile); }
42
+ .hero .shot { max-width: 44rem; margin: 0 auto; }
43
+ .grid { display: grid; gap: 1rem; grid-template-columns: 1fr; }
44
+ .tile { background: var(--tile); border-radius: 1.25rem; padding: 1.5rem; }
45
+ .step { counter-increment: step; } .step::before { content: counter(step); display: grid; place-items: center; width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--action); color: #fff; font-weight: 600; font-size: 0.9375rem; margin-bottom: 0.75rem; }
46
+ .steps { counter-reset: step; }
47
+ pre { margin: 0.5rem 0 0; padding: 0.75rem 1rem; border-radius: 0.75rem; background: var(--code); color: var(--code-text); overflow-x: auto; font: 0.875rem/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: 0; white-space: pre; }
48
+ .tile p.note { margin: 0.75rem 0 0; color: var(--muted); }
49
+ .figs { display: grid; gap: 1rem; grid-template-columns: 1fr; }
50
+ .figs figure { margin: 0; } .figs figcaption { margin-top: 0.5rem; font-size: 0.9375rem; color: var(--muted); } .figs b { color: var(--text); display: block; }
51
+ .figs .shot { background: transparent; }
52
+ ul.plain { padding-left: 1.25rem; margin: 0 0 1rem; } ul.plain li { margin-bottom: 0.5rem; }
53
+ .sibs { display: grid; gap: 1rem; grid-template-columns: 1fr; }
54
+ .tile p.what { margin: 0; color: var(--muted); }
55
+ footer { padding: 2.5rem 0 3rem; color: var(--muted); font-size: 0.9375rem; display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; }
56
+ @media (min-width: 48rem) {
57
+ nav .links a.gh { display: inline; }
58
+ .grid.three { grid-template-columns: repeat(3, 1fr); } .figs { grid-template-columns: repeat(2, 1fr); }
59
+ .sibs { grid-template-columns: repeat(2, 1fr); } section { padding: 4.5rem 0; }
60
+ }
61
+ @media (min-width: 64rem) { .sibs { grid-template-columns: repeat(4, 1fr); } }
62
+ </style>
63
+ </head>
64
+ <body>
65
+ <div class="wrap">
66
+ <nav aria-label="Main">
67
+ <a class="brand" href="./"><img src="logo.svg" alt="" width="32" height="32">done-done</a>
68
+ <div class="links"><a href="#install">Install</a><a href="#see">See it work</a><a class="gh" href="https://github.com/umeranjum17/done-done-axi">GitHub</a><a href="https://www.npmjs.com/package/done-done-axi">npm</a></div>
69
+ </nav>
70
+
71
+ <header class="hero">
72
+ <h1>No proof, no &ldquo;done&rdquo;.</h1>
73
+ <p class="lead">done-done won't accept &ldquo;done&rdquo; without real, fresh proof from your product, captured at the exact commit being called done.</p>
74
+ <div class="actions"><a class="btn" href="#install">Install in 3 steps</a><a class="btn quiet" href="#see">See it work</a></div>
75
+ <div class="shot"><picture><source media="(prefers-color-scheme: dark)" srcset="media/flow-dark.svg"><img src="media/flow-light.svg" width="710" height="270" alt="How it works: capture your real app, tie every file to the exact commit, then check: pass with exit 0 or fail with exit 1."></picture></div>
76
+ </header>
77
+
78
+ <section id="install">
79
+ <h2>Install in 3 steps</h2>
80
+ <p class="lead">From npm, with Node 22.18 or newer and git.</p>
81
+ <div class="grid three steps">
82
+ <div class="tile step"><h3>Install</h3><pre>npm install -g done-done-axi</pre><p class="note">Puts <code>done-done</code> on your PATH.</p></div>
83
+ <div class="tile step"><h3>Set up your repo</h3><pre>cd your-app &amp;&amp; done-done init</pre><p class="note">Writes a minimal <code>.done-done.yaml</code> and asks which coding agent and which judge to use. It never picks either for you.</p></div>
84
+ <div class="tile step"><h3>Check the setup</h3><pre>done-done doctor</pre><p class="note">Changes nothing and names each missing piece with the command that fixes it.</p></div>
85
+ </div>
86
+ <p style="margin-top:1rem;color:var(--muted)">Then prove something: <code>done-done verify --outcome "&lt;what a user can now do&gt;"</code>. Or give your agent the skill with <code>npx skills add umeranjum17/done-done-axi --skill done-done -a &lt;agent&gt; -y</code> and ask &ldquo;is this really done?&rdquo;</p>
87
+ </section>
88
+
89
+ <section>
90
+ <h2>Why</h2>
91
+ <p class="lead">&ldquo;Done&rdquo; is easy to say. Screenshots get reused, recordings go stale, and a green test run is not the app.</p>
92
+ <p class="lead" style="margin-top:-0.25rem">done-done runs your capture and ties every screenshot, recording and log it saves to the exact commit. When someone says &ldquo;done&rdquo;, it checks the proof they point to: is it really there, is it a real picture or video, is it from this commit, and is it new? If not, the check fails. If it can't tell, it says so instead of passing.</p>
93
+ </section>
94
+
95
+ <section id="see">
96
+ <h2>See it work</h2>
97
+ <p class="lead">Four moments from a demo notes app. Every picture is real output from the current build; the demo's judge is a stub, so no model runs.</p>
98
+ <div class="figs">
99
+ <figure><div class="shot"><picture><source media="(prefers-color-scheme: dark)" srcset="media/run-dark.svg"><img src="media/run-light.svg" width="505" height="478" loading="lazy" alt="done-done run sync records one screenshot for the current commit."></picture></div><figcaption><b>Record a run</b>One screenshot, tied to the current commit.</figcaption></figure>
100
+ <figure><div class="shot"><picture><source media="(prefers-color-scheme: dark)" srcset="media/pass-dark.svg"><img src="media/pass-light.svg" width="505" height="838" loading="lazy" alt="A Checks block cites the new screenshot, the judge passes it, and done-done check passes."></picture></div><figcaption><b>Fresh proof passes</b>The judge sees the right screen; the check exits 0.</figcaption></figure>
101
+ <figure><div class="shot"><picture><source media="(prefers-color-scheme: dark)" srcset="media/reasons-dark.svg"><img src="media/reasons-light.svg" width="505" height="406" loading="lazy" alt="done-done check fails: one screenshot is from an older commit, one file is empty, one is a blank frame."></picture></div><figcaption><b>Weak proof is blocked</b>Older commit, empty file, blank frame: each named.</figcaption></figure>
102
+ <figure><div class="shot"><picture><source media="(prefers-color-scheme: dark)" srcset="media/config-dark.svg"><img src="media/config-light.svg" width="505" height="166" loading="lazy" alt="done-done run stops with exit 2 because the config has an unknown key."></picture></div><figcaption><b>Mistakes stop early</b>A config typo exits 2 before anything runs.</figcaption></figure>
103
+ </div>
104
+ </section>
105
+
106
+ <section>
107
+ <h2>What it checks</h2>
108
+ <ul class="plain">
109
+ <li><b>Tied to a commit.</b> Every run records the commit, and whether there were uncommitted changes.</li>
110
+ <li><b>Real media.</b> Empty, cut-off, blank or tiny screenshots fail. Videos must hold real frames.</li>
111
+ <li><b>Fresh, and not reused.</b> Proof from an older commit fails, and so does proof reused for a different claim.</li>
112
+ <li><b>Shows the outcome.</b> A fresh, tools-off judge on your own plan or key says whether each capture is the right screen for the claim. There is no way to turn it off.</li>
113
+ <li><b>Honest claims.</b> A pull request's <code>## Checks</code> block must have every line filled in, and <code>lint</code> gates it with no model.</li>
114
+ <li><b>Verifiable later.</b> <code>receipt</code> records a passing check against the commit and the sha256 of every file it cited.</li>
115
+ <li><b>Looks right.</b> <code>design</code> and <code>look</code> catch squashed or clipped text, overlap and pages wider than the screen.</li>
116
+ </ul>
117
+ <p style="color:var(--muted)">Every answer is an exit code: <b>0</b> pass, <b>1</b> fail, <b>2</b> usage or config error, <b>3</b> can't tell, <b>4</b> a run is still running or waits at its gate.</p>
118
+ </section>
119
+
120
+ <section>
121
+ <h2>Alone, and with the other tools</h2>
122
+ <p class="lead">done-done works on its own: the CLI and the skill need nothing else. It is one of four tools that each do one job and connect through small written contracts. Neither needs the others.</p>
123
+ <div class="sibs">
124
+ <div class="tile"><h3>done-done</h3><p class="what">Verification. This page.</p></div>
125
+ <div class="tile"><h3><a href="https://www.npmjs.com/package/sign-off-axi">sign-off</a></h3><p class="what">The board where agents ask you questions. <code>done-done signoff</code> writes a run's gate or evidence in its format; it never posts.</p></div>
126
+ <div class="tile"><h3><a href="https://www.npmjs.com/package/learn-from-mistakes-axi">learn-from-mistakes</a></h3><p class="what">Retros that find mistakes your agents keep repeating, with evidence.</p></div>
127
+ <div class="tile"><h3><a href="https://www.npmjs.com/package/first-draft-axi">first-draft</a></h3><p class="what">Turns a prompt into design mocks. Pass one to <code>done-done design --mock</code> to judge a screen next to it.</p></div>
128
+ </div>
129
+ </section>
130
+
131
+ <section>
132
+ <h2>Inside Firstmate, or outside</h2>
133
+ <p class="lead">done-done behaves the same with or without <a href="https://github.com/kunchenguid/firstmate">Firstmate</a>. Nothing here is needed to use it.</p>
134
+ <p class="lead">Inside a Firstmate home, <code>integrations/firstmate/</code> ships a brief include that tells each worker to run a journey, write a <code>## Checks</code> block, pass <code>check</code> and record a <code>receipt</code>, and an optional merge gate that refuses a merge without it. A lone agent in a terminal skips all of that.</p>
135
+ </section>
136
+
137
+ <footer><span>done-done · Apache-2.0</span><a href="https://github.com/umeranjum17/done-done-axi">GitHub</a><a href="https://www.npmjs.com/package/done-done-axi">npm</a><a href="https://github.com/umeranjum17/done-done-axi/blob/main/docs/reference.md">Reference</a><a href="https://github.com/umeranjum17/done-done-axi/blob/main/VISION.md">Vision</a><a href="https://github.com/umeranjum17/done-done-axi/blob/main/docs/example-cli.md">Worked example</a></footer>
138
+ </div>
139
+ </body>
140
+ </html>
package/docs/logo.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="72" height="72" viewBox="0 0 24 24" role="img" aria-label="done-done logo"><style>.t{fill:#4E5BC9}.c{fill:none;stroke:#FFFFFF;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}@media (prefers-color-scheme:dark){.t{fill:#6C78E0}}</style><rect class="t" width="24" height="24" rx="6"/><path class="c" d="M3.9 12.6l2.6 2.6 4.1-5"/><path class="c" d="M10.4 13.2l2.4 2.4 6.7-8"/></svg>
@@ -119,7 +119,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
119
119
  <g class="l4"><text xml:space="preserve" x="22" y="168" textLength="172.8" lengthAdjust="spacing"><tspan class="d">source: </tspan>pr-body.md</text></g>
120
120
  <g class="l5"><text xml:space="preserve" x="22" y="192" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text></g>
121
121
  <g class="l6"><text xml:space="preserve" x="22" y="216" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text></g>
122
- <g class="l7"><text xml:space="preserve" x="22" y="240" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text></g>
122
+ <g class="l7"><text xml:space="preserve" x="22" y="240" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text></g>
123
123
  <g class="l8"><text xml:space="preserve" x="22" y="264" textLength="57.6" lengthAdjust="spacing">judge:</text></g>
124
124
  <g class="l9"><text xml:space="preserve" x="22" y="288" textLength="249.6" lengthAdjust="spacing"> route: "answerer:gemini"</text></g>
125
125
  <g class="l10"><text xml:space="preserve" x="22" y="312" textLength="182.4" lengthAdjust="spacing"> model: demo-judge</text></g>
@@ -127,7 +127,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
127
127
  <g class="l12"><text xml:space="preserve" x="22" y="360" textLength="211.2" lengthAdjust="spacing"> author: no agent set</text></g>
128
128
  <g class="l13"><text xml:space="preserve" x="22" y="384" textLength="432.0" lengthAdjust="spacing"> judged[1]{path,verdict,reason,seen,cached}:</text></g>
129
129
  <g class="l14"><text xml:space="preserve" x="22" y="408" textLength="307.2" lengthAdjust="spacing"> ~/.done-done/evidence/notes/</text></g>
130
- <g class="l15"><text xml:space="preserve" x="22" y="432" textLength="355.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/</text></g>
130
+ <g class="l15"><text xml:space="preserve" x="22" y="432" textLength="355.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/</text></g>
131
131
  <g class="l16"><text xml:space="preserve" x="22" y="456" textLength="441.6" lengthAdjust="spacing"> after.png,pass,The screen shows the synced</text></g>
132
132
  <g class="l17"><text xml:space="preserve" x="22" y="480" textLength="355.2" lengthAdjust="spacing"> note.,The screen shows the synced</text></g>
133
133
  <g class="l18"><text xml:space="preserve" x="22" y="504" textLength="144.0" lengthAdjust="spacing"> note.,false</text></g>
@@ -141,10 +141,10 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
141
141
  <g class="l26"><text xml:space="preserve" x="22" y="696" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text></g>
142
142
  <g class="l27"><text xml:space="preserve" x="22" y="720" textLength="460.8" lengthAdjust="spacing"><tspan class="f b">error: </tspan>"check: the judge was not asked, so there</text></g>
143
143
  <g class="l28"><text xml:space="preserve" x="22" y="744" textLength="451.2" lengthAdjust="spacing"> is no verdict: ~/.done-done/evidence/notes/</text></g>
144
- <g class="l29"><text xml:space="preserve" x="22" y="768" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png:</text></g>
145
- <g class="l30"><text xml:space="preserve" x="22" y="792" textLength="460.8" lengthAdjust="spacing"> evidence is for commit 396dc99b6db7, HEAD is</text></g>
146
- <g class="l31"><text xml:space="preserve" x="22" y="816" textLength="422.4" lengthAdjust="spacing"> a890428671ea (changed: src/sync.js) (run</text></g>
147
- <g class="l32"><text xml:space="preserve" x="22" y="840" textLength="364.8" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550)"</text></g>
144
+ <g class="l29"><text xml:space="preserve" x="22" y="768" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png:</text></g>
145
+ <g class="l30"><text xml:space="preserve" x="22" y="792" textLength="460.8" lengthAdjust="spacing"> evidence is for commit fedec802045e, HEAD is</text></g>
146
+ <g class="l31"><text xml:space="preserve" x="22" y="816" textLength="422.4" lengthAdjust="spacing"> cce55aa4e026 (changed: src/sync.js) (run</text></g>
147
+ <g class="l32"><text xml:space="preserve" x="22" y="840" textLength="364.8" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2)"</text></g>
148
148
  <g class="l33"><text xml:space="preserve" x="22" y="864" textLength="432.0" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Commit your change, re-capture with</text></g>
149
149
  <g class="l34"><text xml:space="preserve" x="22" y="888" textLength="403.2" lengthAdjust="spacing"> done-done run sync, then check the new</text></g>
150
150
  <g class="l35"><text xml:space="preserve" x="22" y="912" textLength="96.0" lengthAdjust="spacing"> files"</text></g>
@@ -152,18 +152,18 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
152
152
  <g class="l37"><text xml:space="preserve" x="22" y="72" textLength="268.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done run sync</tspan></text><g class="k37"><rect x="118" y="55" width="192.8" height="24" fill="#161b22"/><rect class="h37" x="118" y="56" width="9.6" height="20" fill="#e6edf3" opacity=".7"/></g></g>
153
153
  <g class="l38"><text xml:space="preserve" x="22" y="96" textLength="115.2" lengthAdjust="spacing"><tspan class="d">command: </tspan>run</text></g>
154
154
  <g class="l39"><text xml:space="preserve" x="22" y="120" textLength="153.6" lengthAdjust="spacing"><tspan class="d">result: </tspan><tspan class="p b">recorded</tspan></text></g>
155
- <g class="l40"><text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261018T081521Z-396dc99b-969550</text></g>
156
- <g class="l41"><text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>396dc99b6db71f41bac00a43ac75439e6fb1e91c</text></g>
155
+ <g class="l40"><text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261020T065410Z-fedec802-12efe2</text></g>
156
+ <g class="l41"><text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>fedec802045ebc823249c819dcfc195647ebad75</text></g>
157
157
  <g class="l42"><text xml:space="preserve" x="22" y="192" textLength="115.2" lengthAdjust="spacing"><tspan class="d">dirty: </tspan>false</text></g>
158
158
  <g class="l43"><text xml:space="preserve" x="22" y="216" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text></g>
159
159
  <g class="l44"><text xml:space="preserve" x="22" y="240" textLength="451.2" lengthAdjust="spacing"><tspan class="d">record: </tspan>~/.done-done/evidence/notes/.done-done/</text></g>
160
- <g class="l45"><text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261018T081521Z-396dc99b-969550.json</text></g>
160
+ <g class="l45"><text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261020T065410Z-fedec802-12efe2.json</text></g>
161
161
  <g class="l46"><text xml:space="preserve" x="22" y="288" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text></g>
162
- <g class="l47"><text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text></g>
162
+ <g class="l47"><text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text></g>
163
163
  <g class="l48"><text xml:space="preserve" x="22" y="336" textLength="412.8" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Check this proof: done-done check</text></g>
164
164
  <g class="l49"><text xml:space="preserve" x="22" y="360" textLength="364.8" lengthAdjust="spacing"> --outcome \"&lt;what you proved&gt;\" ~/</text></g>
165
165
  <g class="l50"><text xml:space="preserve" x="22" y="384" textLength="288.0" lengthAdjust="spacing"> .done-done/evidence/notes/</text></g>
166
- <g class="l51"><text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png"</text></g>
166
+ <g class="l51"><text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png"</text></g>
167
167
  <g class="l52"><text xml:space="preserve" x="22" y="432" textLength="451.2" lengthAdjust="spacing"> synced a note on two devices, saved after.png</text></g>
168
168
  <g class="l53"><text xml:space="preserve" x="22" y="456" textLength="412.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done check --from pr-body.md</tspan></text><g class="k53"><rect x="118" y="439" width="336.8" height="24" fill="#161b22"/><rect class="h53" x="118" y="440" width="9.6" height="20" fill="#e6edf3" opacity=".7"/></g></g>
169
169
  <g class="l54"><text xml:space="preserve" x="22" y="480" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text></g>
@@ -172,7 +172,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
172
172
  <g class="l57"><text xml:space="preserve" x="22" y="552" textLength="172.8" lengthAdjust="spacing"><tspan class="d">source: </tspan>pr-body.md</text></g>
173
173
  <g class="l58"><text xml:space="preserve" x="22" y="576" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text></g>
174
174
  <g class="l59"><text xml:space="preserve" x="22" y="600" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text></g>
175
- <g class="l60"><text xml:space="preserve" x="22" y="624" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text></g>
175
+ <g class="l60"><text xml:space="preserve" x="22" y="624" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text></g>
176
176
  <g class="l61"><text xml:space="preserve" x="22" y="648" textLength="57.6" lengthAdjust="spacing">judge:</text></g>
177
177
  <g class="l62"><text xml:space="preserve" x="22" y="672" textLength="249.6" lengthAdjust="spacing"> route: "answerer:gemini"</text></g>
178
178
  <g class="l63"><text xml:space="preserve" x="22" y="696" textLength="182.4" lengthAdjust="spacing"> model: demo-judge</text></g>
@@ -180,7 +180,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
180
180
  <g class="l65"><text xml:space="preserve" x="22" y="744" textLength="211.2" lengthAdjust="spacing"> author: no agent set</text></g>
181
181
  <g class="l66"><text xml:space="preserve" x="22" y="768" textLength="432.0" lengthAdjust="spacing"> judged[1]{path,verdict,reason,seen,cached}:</text></g>
182
182
  <g class="l67"><text xml:space="preserve" x="22" y="792" textLength="307.2" lengthAdjust="spacing"> ~/.done-done/evidence/notes/</text></g>
183
- <g class="l68"><text xml:space="preserve" x="22" y="816" textLength="355.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/</text></g>
183
+ <g class="l68"><text xml:space="preserve" x="22" y="816" textLength="355.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/</text></g>
184
184
  <g class="l69"><text xml:space="preserve" x="22" y="840" textLength="441.6" lengthAdjust="spacing"> after.png,pass,The screen shows the synced</text></g>
185
185
  <g class="l70"><text xml:space="preserve" x="22" y="864" textLength="355.2" lengthAdjust="spacing"> note.,The screen shows the synced</text></g>
186
186
  <g class="l71"><text xml:space="preserve" x="22" y="888" textLength="144.0" lengthAdjust="spacing"> note.,false</text></g>
@@ -195,10 +195,10 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
195
195
  <g class="l80"><text xml:space="preserve" x="22" y="120" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text></g>
196
196
  <g class="l81"><text xml:space="preserve" x="22" y="144" textLength="460.8" lengthAdjust="spacing"><tspan class="f b">error: </tspan>"check: the judge was not asked, so there</text></g>
197
197
  <g class="l82"><text xml:space="preserve" x="22" y="168" textLength="451.2" lengthAdjust="spacing"> is no verdict: ~/.done-done/evidence/notes/</text></g>
198
- <g class="l83"><text xml:space="preserve" x="22" y="192" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png:</text></g>
199
- <g class="l84"><text xml:space="preserve" x="22" y="216" textLength="460.8" lengthAdjust="spacing"> evidence is for commit 396dc99b6db7, HEAD is</text></g>
200
- <g class="l85"><text xml:space="preserve" x="22" y="240" textLength="422.4" lengthAdjust="spacing"> a890428671ea (changed: src/sync.js) (run</text></g>
201
- <g class="l86"><text xml:space="preserve" x="22" y="264" textLength="364.8" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550)"</text></g>
198
+ <g class="l83"><text xml:space="preserve" x="22" y="192" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png:</text></g>
199
+ <g class="l84"><text xml:space="preserve" x="22" y="216" textLength="460.8" lengthAdjust="spacing"> evidence is for commit fedec802045e, HEAD is</text></g>
200
+ <g class="l85"><text xml:space="preserve" x="22" y="240" textLength="422.4" lengthAdjust="spacing"> cce55aa4e026 (changed: src/sync.js) (run</text></g>
201
+ <g class="l86"><text xml:space="preserve" x="22" y="264" textLength="364.8" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2)"</text></g>
202
202
  <g class="l87"><text xml:space="preserve" x="22" y="288" textLength="432.0" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Commit your change, re-capture with</text></g>
203
203
  <g class="l88"><text xml:space="preserve" x="22" y="312" textLength="403.2" lengthAdjust="spacing"> done-done run sync, then check the new</text></g>
204
204
  <g class="l89"><text xml:space="preserve" x="22" y="336" textLength="96.0" lengthAdjust="spacing"> files"</text></g>
@@ -119,7 +119,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
119
119
  <g class="l4"><text xml:space="preserve" x="22" y="168" textLength="172.8" lengthAdjust="spacing"><tspan class="d">source: </tspan>pr-body.md</text></g>
120
120
  <g class="l5"><text xml:space="preserve" x="22" y="192" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text></g>
121
121
  <g class="l6"><text xml:space="preserve" x="22" y="216" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text></g>
122
- <g class="l7"><text xml:space="preserve" x="22" y="240" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text></g>
122
+ <g class="l7"><text xml:space="preserve" x="22" y="240" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text></g>
123
123
  <g class="l8"><text xml:space="preserve" x="22" y="264" textLength="57.6" lengthAdjust="spacing">judge:</text></g>
124
124
  <g class="l9"><text xml:space="preserve" x="22" y="288" textLength="249.6" lengthAdjust="spacing"> route: "answerer:gemini"</text></g>
125
125
  <g class="l10"><text xml:space="preserve" x="22" y="312" textLength="182.4" lengthAdjust="spacing"> model: demo-judge</text></g>
@@ -127,7 +127,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
127
127
  <g class="l12"><text xml:space="preserve" x="22" y="360" textLength="211.2" lengthAdjust="spacing"> author: no agent set</text></g>
128
128
  <g class="l13"><text xml:space="preserve" x="22" y="384" textLength="432.0" lengthAdjust="spacing"> judged[1]{path,verdict,reason,seen,cached}:</text></g>
129
129
  <g class="l14"><text xml:space="preserve" x="22" y="408" textLength="307.2" lengthAdjust="spacing"> ~/.done-done/evidence/notes/</text></g>
130
- <g class="l15"><text xml:space="preserve" x="22" y="432" textLength="355.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/</text></g>
130
+ <g class="l15"><text xml:space="preserve" x="22" y="432" textLength="355.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/</text></g>
131
131
  <g class="l16"><text xml:space="preserve" x="22" y="456" textLength="441.6" lengthAdjust="spacing"> after.png,pass,The screen shows the synced</text></g>
132
132
  <g class="l17"><text xml:space="preserve" x="22" y="480" textLength="355.2" lengthAdjust="spacing"> note.,The screen shows the synced</text></g>
133
133
  <g class="l18"><text xml:space="preserve" x="22" y="504" textLength="144.0" lengthAdjust="spacing"> note.,false</text></g>
@@ -141,10 +141,10 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
141
141
  <g class="l26"><text xml:space="preserve" x="22" y="696" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text></g>
142
142
  <g class="l27"><text xml:space="preserve" x="22" y="720" textLength="460.8" lengthAdjust="spacing"><tspan class="f b">error: </tspan>"check: the judge was not asked, so there</text></g>
143
143
  <g class="l28"><text xml:space="preserve" x="22" y="744" textLength="451.2" lengthAdjust="spacing"> is no verdict: ~/.done-done/evidence/notes/</text></g>
144
- <g class="l29"><text xml:space="preserve" x="22" y="768" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png:</text></g>
145
- <g class="l30"><text xml:space="preserve" x="22" y="792" textLength="460.8" lengthAdjust="spacing"> evidence is for commit 396dc99b6db7, HEAD is</text></g>
146
- <g class="l31"><text xml:space="preserve" x="22" y="816" textLength="422.4" lengthAdjust="spacing"> a890428671ea (changed: src/sync.js) (run</text></g>
147
- <g class="l32"><text xml:space="preserve" x="22" y="840" textLength="364.8" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550)"</text></g>
144
+ <g class="l29"><text xml:space="preserve" x="22" y="768" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png:</text></g>
145
+ <g class="l30"><text xml:space="preserve" x="22" y="792" textLength="460.8" lengthAdjust="spacing"> evidence is for commit fedec802045e, HEAD is</text></g>
146
+ <g class="l31"><text xml:space="preserve" x="22" y="816" textLength="422.4" lengthAdjust="spacing"> cce55aa4e026 (changed: src/sync.js) (run</text></g>
147
+ <g class="l32"><text xml:space="preserve" x="22" y="840" textLength="364.8" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2)"</text></g>
148
148
  <g class="l33"><text xml:space="preserve" x="22" y="864" textLength="432.0" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Commit your change, re-capture with</text></g>
149
149
  <g class="l34"><text xml:space="preserve" x="22" y="888" textLength="403.2" lengthAdjust="spacing"> done-done run sync, then check the new</text></g>
150
150
  <g class="l35"><text xml:space="preserve" x="22" y="912" textLength="96.0" lengthAdjust="spacing"> files"</text></g>
@@ -152,18 +152,18 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
152
152
  <g class="l37"><text xml:space="preserve" x="22" y="72" textLength="268.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done run sync</tspan></text><g class="k37"><rect x="118" y="55" width="192.8" height="24" fill="#f6f8fa"/><rect class="h37" x="118" y="56" width="9.6" height="20" fill="#1f2328" opacity=".7"/></g></g>
153
153
  <g class="l38"><text xml:space="preserve" x="22" y="96" textLength="115.2" lengthAdjust="spacing"><tspan class="d">command: </tspan>run</text></g>
154
154
  <g class="l39"><text xml:space="preserve" x="22" y="120" textLength="153.6" lengthAdjust="spacing"><tspan class="d">result: </tspan><tspan class="p b">recorded</tspan></text></g>
155
- <g class="l40"><text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261018T081521Z-396dc99b-969550</text></g>
156
- <g class="l41"><text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>396dc99b6db71f41bac00a43ac75439e6fb1e91c</text></g>
155
+ <g class="l40"><text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261020T065410Z-fedec802-12efe2</text></g>
156
+ <g class="l41"><text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>fedec802045ebc823249c819dcfc195647ebad75</text></g>
157
157
  <g class="l42"><text xml:space="preserve" x="22" y="192" textLength="115.2" lengthAdjust="spacing"><tspan class="d">dirty: </tspan>false</text></g>
158
158
  <g class="l43"><text xml:space="preserve" x="22" y="216" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text></g>
159
159
  <g class="l44"><text xml:space="preserve" x="22" y="240" textLength="451.2" lengthAdjust="spacing"><tspan class="d">record: </tspan>~/.done-done/evidence/notes/.done-done/</text></g>
160
- <g class="l45"><text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261018T081521Z-396dc99b-969550.json</text></g>
160
+ <g class="l45"><text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261020T065410Z-fedec802-12efe2.json</text></g>
161
161
  <g class="l46"><text xml:space="preserve" x="22" y="288" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text></g>
162
- <g class="l47"><text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text></g>
162
+ <g class="l47"><text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text></g>
163
163
  <g class="l48"><text xml:space="preserve" x="22" y="336" textLength="412.8" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Check this proof: done-done check</text></g>
164
164
  <g class="l49"><text xml:space="preserve" x="22" y="360" textLength="364.8" lengthAdjust="spacing"> --outcome \"&lt;what you proved&gt;\" ~/</text></g>
165
165
  <g class="l50"><text xml:space="preserve" x="22" y="384" textLength="288.0" lengthAdjust="spacing"> .done-done/evidence/notes/</text></g>
166
- <g class="l51"><text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png"</text></g>
166
+ <g class="l51"><text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png"</text></g>
167
167
  <g class="l52"><text xml:space="preserve" x="22" y="432" textLength="451.2" lengthAdjust="spacing"> synced a note on two devices, saved after.png</text></g>
168
168
  <g class="l53"><text xml:space="preserve" x="22" y="456" textLength="412.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done check --from pr-body.md</tspan></text><g class="k53"><rect x="118" y="439" width="336.8" height="24" fill="#f6f8fa"/><rect class="h53" x="118" y="440" width="9.6" height="20" fill="#1f2328" opacity=".7"/></g></g>
169
169
  <g class="l54"><text xml:space="preserve" x="22" y="480" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text></g>
@@ -172,7 +172,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
172
172
  <g class="l57"><text xml:space="preserve" x="22" y="552" textLength="172.8" lengthAdjust="spacing"><tspan class="d">source: </tspan>pr-body.md</text></g>
173
173
  <g class="l58"><text xml:space="preserve" x="22" y="576" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text></g>
174
174
  <g class="l59"><text xml:space="preserve" x="22" y="600" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text></g>
175
- <g class="l60"><text xml:space="preserve" x="22" y="624" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text></g>
175
+ <g class="l60"><text xml:space="preserve" x="22" y="624" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text></g>
176
176
  <g class="l61"><text xml:space="preserve" x="22" y="648" textLength="57.6" lengthAdjust="spacing">judge:</text></g>
177
177
  <g class="l62"><text xml:space="preserve" x="22" y="672" textLength="249.6" lengthAdjust="spacing"> route: "answerer:gemini"</text></g>
178
178
  <g class="l63"><text xml:space="preserve" x="22" y="696" textLength="182.4" lengthAdjust="spacing"> model: demo-judge</text></g>
@@ -180,7 +180,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
180
180
  <g class="l65"><text xml:space="preserve" x="22" y="744" textLength="211.2" lengthAdjust="spacing"> author: no agent set</text></g>
181
181
  <g class="l66"><text xml:space="preserve" x="22" y="768" textLength="432.0" lengthAdjust="spacing"> judged[1]{path,verdict,reason,seen,cached}:</text></g>
182
182
  <g class="l67"><text xml:space="preserve" x="22" y="792" textLength="307.2" lengthAdjust="spacing"> ~/.done-done/evidence/notes/</text></g>
183
- <g class="l68"><text xml:space="preserve" x="22" y="816" textLength="355.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/</text></g>
183
+ <g class="l68"><text xml:space="preserve" x="22" y="816" textLength="355.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/</text></g>
184
184
  <g class="l69"><text xml:space="preserve" x="22" y="840" textLength="441.6" lengthAdjust="spacing"> after.png,pass,The screen shows the synced</text></g>
185
185
  <g class="l70"><text xml:space="preserve" x="22" y="864" textLength="355.2" lengthAdjust="spacing"> note.,The screen shows the synced</text></g>
186
186
  <g class="l71"><text xml:space="preserve" x="22" y="888" textLength="144.0" lengthAdjust="spacing"> note.,false</text></g>
@@ -195,10 +195,10 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
195
195
  <g class="l80"><text xml:space="preserve" x="22" y="120" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text></g>
196
196
  <g class="l81"><text xml:space="preserve" x="22" y="144" textLength="460.8" lengthAdjust="spacing"><tspan class="f b">error: </tspan>"check: the judge was not asked, so there</text></g>
197
197
  <g class="l82"><text xml:space="preserve" x="22" y="168" textLength="451.2" lengthAdjust="spacing"> is no verdict: ~/.done-done/evidence/notes/</text></g>
198
- <g class="l83"><text xml:space="preserve" x="22" y="192" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png:</text></g>
199
- <g class="l84"><text xml:space="preserve" x="22" y="216" textLength="460.8" lengthAdjust="spacing"> evidence is for commit 396dc99b6db7, HEAD is</text></g>
200
- <g class="l85"><text xml:space="preserve" x="22" y="240" textLength="422.4" lengthAdjust="spacing"> a890428671ea (changed: src/sync.js) (run</text></g>
201
- <g class="l86"><text xml:space="preserve" x="22" y="264" textLength="364.8" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550)"</text></g>
198
+ <g class="l83"><text xml:space="preserve" x="22" y="192" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png:</text></g>
199
+ <g class="l84"><text xml:space="preserve" x="22" y="216" textLength="460.8" lengthAdjust="spacing"> evidence is for commit fedec802045e, HEAD is</text></g>
200
+ <g class="l85"><text xml:space="preserve" x="22" y="240" textLength="422.4" lengthAdjust="spacing"> cce55aa4e026 (changed: src/sync.js) (run</text></g>
201
+ <g class="l86"><text xml:space="preserve" x="22" y="264" textLength="364.8" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2)"</text></g>
202
202
  <g class="l87"><text xml:space="preserve" x="22" y="288" textLength="432.0" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Commit your change, re-capture with</text></g>
203
203
  <g class="l88"><text xml:space="preserve" x="22" y="312" textLength="403.2" lengthAdjust="spacing"> done-done run sync, then check the new</text></g>
204
204
  <g class="l89"><text xml:space="preserve" x="22" y="336" textLength="96.0" lengthAdjust="spacing"> files"</text></g>
@@ -16,7 +16,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
16
16
  <text xml:space="preserve" x="22" y="144" textLength="172.8" lengthAdjust="spacing"><tspan class="d">repro: </tspan>n/a: no bug</text>
17
17
  <text xml:space="preserve" x="22" y="168" textLength="412.8" lengthAdjust="spacing"><tspan class="d">proof: </tspan>no verify skill - done-done run sync</text>
18
18
  <text xml:space="preserve" x="22" y="192" textLength="364.8" lengthAdjust="spacing"><tspan class="d">evidence: </tspan>~/.done-done/evidence/notes/</text>
19
- <text xml:space="preserve" x="22" y="216" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text>
19
+ <text xml:space="preserve" x="22" y="216" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text>
20
20
  <text xml:space="preserve" x="22" y="240" textLength="412.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done check --from pr-body.md</tspan></text>
21
21
  <text xml:space="preserve" x="22" y="264" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text>
22
22
  <text xml:space="preserve" x="22" y="288" textLength="115.2" lengthAdjust="spacing"><tspan class="d">result: </tspan><tspan class="p b">pass</tspan></text>
@@ -24,7 +24,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
24
24
  <text xml:space="preserve" x="22" y="336" textLength="172.8" lengthAdjust="spacing"><tspan class="d">source: </tspan>pr-body.md</text>
25
25
  <text xml:space="preserve" x="22" y="360" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text>
26
26
  <text xml:space="preserve" x="22" y="384" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text>
27
- <text xml:space="preserve" x="22" y="408" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text>
27
+ <text xml:space="preserve" x="22" y="408" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text>
28
28
  <text xml:space="preserve" x="22" y="432" textLength="57.6" lengthAdjust="spacing">judge:</text>
29
29
  <text xml:space="preserve" x="22" y="456" textLength="249.6" lengthAdjust="spacing"> route: "answerer:gemini"</text>
30
30
  <text xml:space="preserve" x="22" y="480" textLength="182.4" lengthAdjust="spacing"> model: demo-judge</text>
@@ -32,7 +32,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
32
32
  <text xml:space="preserve" x="22" y="528" textLength="211.2" lengthAdjust="spacing"> author: no agent set</text>
33
33
  <text xml:space="preserve" x="22" y="552" textLength="432.0" lengthAdjust="spacing"> judged[1]{path,verdict,reason,seen,cached}:</text>
34
34
  <text xml:space="preserve" x="22" y="576" textLength="307.2" lengthAdjust="spacing"> ~/.done-done/evidence/notes/</text>
35
- <text xml:space="preserve" x="22" y="600" textLength="355.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/</text>
35
+ <text xml:space="preserve" x="22" y="600" textLength="355.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/</text>
36
36
  <text xml:space="preserve" x="22" y="624" textLength="441.6" lengthAdjust="spacing"> after.png,pass,The screen shows the synced</text>
37
37
  <text xml:space="preserve" x="22" y="648" textLength="355.2" lengthAdjust="spacing"> note.,The screen shows the synced</text>
38
38
  <text xml:space="preserve" x="22" y="672" textLength="144.0" lengthAdjust="spacing"> note.,false</text>
@@ -16,7 +16,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
16
16
  <text xml:space="preserve" x="22" y="144" textLength="172.8" lengthAdjust="spacing"><tspan class="d">repro: </tspan>n/a: no bug</text>
17
17
  <text xml:space="preserve" x="22" y="168" textLength="412.8" lengthAdjust="spacing"><tspan class="d">proof: </tspan>no verify skill - done-done run sync</text>
18
18
  <text xml:space="preserve" x="22" y="192" textLength="364.8" lengthAdjust="spacing"><tspan class="d">evidence: </tspan>~/.done-done/evidence/notes/</text>
19
- <text xml:space="preserve" x="22" y="216" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text>
19
+ <text xml:space="preserve" x="22" y="216" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text>
20
20
  <text xml:space="preserve" x="22" y="240" textLength="412.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done check --from pr-body.md</tspan></text>
21
21
  <text xml:space="preserve" x="22" y="264" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text>
22
22
  <text xml:space="preserve" x="22" y="288" textLength="115.2" lengthAdjust="spacing"><tspan class="d">result: </tspan><tspan class="p b">pass</tspan></text>
@@ -24,7 +24,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
24
24
  <text xml:space="preserve" x="22" y="336" textLength="172.8" lengthAdjust="spacing"><tspan class="d">source: </tspan>pr-body.md</text>
25
25
  <text xml:space="preserve" x="22" y="360" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text>
26
26
  <text xml:space="preserve" x="22" y="384" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text>
27
- <text xml:space="preserve" x="22" y="408" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text>
27
+ <text xml:space="preserve" x="22" y="408" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text>
28
28
  <text xml:space="preserve" x="22" y="432" textLength="57.6" lengthAdjust="spacing">judge:</text>
29
29
  <text xml:space="preserve" x="22" y="456" textLength="249.6" lengthAdjust="spacing"> route: "answerer:gemini"</text>
30
30
  <text xml:space="preserve" x="22" y="480" textLength="182.4" lengthAdjust="spacing"> model: demo-judge</text>
@@ -32,7 +32,7 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
32
32
  <text xml:space="preserve" x="22" y="528" textLength="211.2" lengthAdjust="spacing"> author: no agent set</text>
33
33
  <text xml:space="preserve" x="22" y="552" textLength="432.0" lengthAdjust="spacing"> judged[1]{path,verdict,reason,seen,cached}:</text>
34
34
  <text xml:space="preserve" x="22" y="576" textLength="307.2" lengthAdjust="spacing"> ~/.done-done/evidence/notes/</text>
35
- <text xml:space="preserve" x="22" y="600" textLength="355.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/</text>
35
+ <text xml:space="preserve" x="22" y="600" textLength="355.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/</text>
36
36
  <text xml:space="preserve" x="22" y="624" textLength="441.6" lengthAdjust="spacing"> after.png,pass,The screen shows the synced</text>
37
37
  <text xml:space="preserve" x="22" y="648" textLength="355.2" lengthAdjust="spacing"> note.,The screen shows the synced</text>
38
38
  <text xml:space="preserve" x="22" y="672" textLength="144.0" lengthAdjust="spacing"> note.,false</text>
@@ -14,10 +14,10 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
14
14
  <text xml:space="preserve" x="22" y="96" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text>
15
15
  <text xml:space="preserve" x="22" y="120" textLength="460.8" lengthAdjust="spacing"><tspan class="f b">error: </tspan>"check: the judge was not asked, so there</text>
16
16
  <text xml:space="preserve" x="22" y="144" textLength="451.2" lengthAdjust="spacing"> is no verdict: ~/.done-done/evidence/notes/</text>
17
- <text xml:space="preserve" x="22" y="168" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png:</text>
18
- <text xml:space="preserve" x="22" y="192" textLength="460.8" lengthAdjust="spacing"> evidence is for commit 396dc99b6db7, HEAD is</text>
19
- <text xml:space="preserve" x="22" y="216" textLength="422.4" lengthAdjust="spacing"> a890428671ea (changed: src/sync.js) (run</text>
20
- <text xml:space="preserve" x="22" y="240" textLength="364.8" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550);</text>
17
+ <text xml:space="preserve" x="22" y="168" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png:</text>
18
+ <text xml:space="preserve" x="22" y="192" textLength="460.8" lengthAdjust="spacing"> evidence is for commit fedec802045e, HEAD is</text>
19
+ <text xml:space="preserve" x="22" y="216" textLength="422.4" lengthAdjust="spacing"> cce55aa4e026 (changed: src/sync.js) (run</text>
20
+ <text xml:space="preserve" x="22" y="240" textLength="364.8" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2);</text>
21
21
  <text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> empty.png: empty (0 bytes); blank.png: png</text>
22
22
  <text xml:space="preserve" x="22" y="288" textLength="451.2" lengthAdjust="spacing"> is a blank frame (luminance spread 0.0000)"</text>
23
23
  <text xml:space="preserve" x="22" y="312" textLength="432.0" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Commit your change, re-capture with</text>
@@ -14,10 +14,10 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
14
14
  <text xml:space="preserve" x="22" y="96" textLength="134.4" lengthAdjust="spacing"><tspan class="d">command: </tspan>check</text>
15
15
  <text xml:space="preserve" x="22" y="120" textLength="460.8" lengthAdjust="spacing"><tspan class="f b">error: </tspan>"check: the judge was not asked, so there</text>
16
16
  <text xml:space="preserve" x="22" y="144" textLength="451.2" lengthAdjust="spacing"> is no verdict: ~/.done-done/evidence/notes/</text>
17
- <text xml:space="preserve" x="22" y="168" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png:</text>
18
- <text xml:space="preserve" x="22" y="192" textLength="460.8" lengthAdjust="spacing"> evidence is for commit 396dc99b6db7, HEAD is</text>
19
- <text xml:space="preserve" x="22" y="216" textLength="422.4" lengthAdjust="spacing"> a890428671ea (changed: src/sync.js) (run</text>
20
- <text xml:space="preserve" x="22" y="240" textLength="364.8" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550);</text>
17
+ <text xml:space="preserve" x="22" y="168" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png:</text>
18
+ <text xml:space="preserve" x="22" y="192" textLength="460.8" lengthAdjust="spacing"> evidence is for commit fedec802045e, HEAD is</text>
19
+ <text xml:space="preserve" x="22" y="216" textLength="422.4" lengthAdjust="spacing"> cce55aa4e026 (changed: src/sync.js) (run</text>
20
+ <text xml:space="preserve" x="22" y="240" textLength="364.8" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2);</text>
21
21
  <text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> empty.png: empty (0 bytes); blank.png: png</text>
22
22
  <text xml:space="preserve" x="22" y="288" textLength="451.2" lengthAdjust="spacing"> is a blank frame (luminance spread 0.0000)"</text>
23
23
  <text xml:space="preserve" x="22" y="312" textLength="432.0" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Commit your change, re-capture with</text>
@@ -13,18 +13,18 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
13
13
  <g clip-path="url(#body)"><text xml:space="preserve" x="22" y="72" textLength="268.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done run sync</tspan></text>
14
14
  <text xml:space="preserve" x="22" y="96" textLength="115.2" lengthAdjust="spacing"><tspan class="d">command: </tspan>run</text>
15
15
  <text xml:space="preserve" x="22" y="120" textLength="153.6" lengthAdjust="spacing"><tspan class="d">result: </tspan><tspan class="p b">recorded</tspan></text>
16
- <text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261018T081521Z-396dc99b-969550</text>
17
- <text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>396dc99b6db71f41bac00a43ac75439e6fb1e91c</text>
16
+ <text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261020T065410Z-fedec802-12efe2</text>
17
+ <text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>fedec802045ebc823249c819dcfc195647ebad75</text>
18
18
  <text xml:space="preserve" x="22" y="192" textLength="115.2" lengthAdjust="spacing"><tspan class="d">dirty: </tspan>false</text>
19
19
  <text xml:space="preserve" x="22" y="216" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text>
20
20
  <text xml:space="preserve" x="22" y="240" textLength="451.2" lengthAdjust="spacing"><tspan class="d">record: </tspan>~/.done-done/evidence/notes/.done-done/</text>
21
- <text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261018T081521Z-396dc99b-969550.json</text>
21
+ <text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261020T065410Z-fedec802-12efe2.json</text>
22
22
  <text xml:space="preserve" x="22" y="288" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text>
23
- <text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text>
23
+ <text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text>
24
24
  <text xml:space="preserve" x="22" y="336" textLength="412.8" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Check this proof: done-done check</text>
25
25
  <text xml:space="preserve" x="22" y="360" textLength="364.8" lengthAdjust="spacing"> --outcome \"&lt;what you proved&gt;\" ~/</text>
26
26
  <text xml:space="preserve" x="22" y="384" textLength="288.0" lengthAdjust="spacing"> .done-done/evidence/notes/</text>
27
- <text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png"</text>
27
+ <text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png"</text>
28
28
  <text xml:space="preserve" x="22" y="432" textLength="451.2" lengthAdjust="spacing"> synced a note on two devices, saved after.png</text>
29
29
  <text xml:space="preserve" x="22" y="456" textLength="57.6" lengthAdjust="spacing"><tspan class="d">exit 0</tspan></text></g>
30
30
  </svg>
@@ -13,18 +13,18 @@ text{font:16px ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation
13
13
  <g clip-path="url(#body)"><text xml:space="preserve" x="22" y="72" textLength="268.8" lengthAdjust="spacing"><tspan class="c">~/notes $ </tspan><tspan class="b">done-done run sync</tspan></text>
14
14
  <text xml:space="preserve" x="22" y="96" textLength="115.2" lengthAdjust="spacing"><tspan class="d">command: </tspan>run</text>
15
15
  <text xml:space="preserve" x="22" y="120" textLength="153.6" lengthAdjust="spacing"><tspan class="d">result: </tspan><tspan class="p b">recorded</tspan></text>
16
- <text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261018T081521Z-396dc99b-969550</text>
17
- <text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>396dc99b6db71f41bac00a43ac75439e6fb1e91c</text>
16
+ <text xml:space="preserve" x="22" y="144" textLength="384.0" lengthAdjust="spacing"><tspan class="d">run_id: </tspan>20261020T065410Z-fedec802-12efe2</text>
17
+ <text xml:space="preserve" x="22" y="168" textLength="460.8" lengthAdjust="spacing"><tspan class="d">commit: </tspan>fedec802045ebc823249c819dcfc195647ebad75</text>
18
18
  <text xml:space="preserve" x="22" y="192" textLength="115.2" lengthAdjust="spacing"><tspan class="d">dirty: </tspan>false</text>
19
19
  <text xml:space="preserve" x="22" y="216" textLength="76.8" lengthAdjust="spacing"><tspan class="d">files: </tspan>1</text>
20
20
  <text xml:space="preserve" x="22" y="240" textLength="451.2" lengthAdjust="spacing"><tspan class="d">record: </tspan>~/.done-done/evidence/notes/.done-done/</text>
21
- <text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261018T081521Z-396dc99b-969550.json</text>
21
+ <text xml:space="preserve" x="22" y="264" textLength="441.6" lengthAdjust="spacing"> runs/20261020T065410Z-fedec802-12efe2.json</text>
22
22
  <text xml:space="preserve" x="22" y="288" textLength="393.6" lengthAdjust="spacing"><tspan class="d">evidence[1]: </tspan>~/.done-done/evidence/notes/</text>
23
- <text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png</text>
23
+ <text xml:space="preserve" x="22" y="312" textLength="441.6" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png</text>
24
24
  <text xml:space="preserve" x="22" y="336" textLength="412.8" lengthAdjust="spacing"><tspan class="d">help[1]: </tspan>"Check this proof: done-done check</text>
25
25
  <text xml:space="preserve" x="22" y="360" textLength="364.8" lengthAdjust="spacing"> --outcome \"&lt;what you proved&gt;\" ~/</text>
26
26
  <text xml:space="preserve" x="22" y="384" textLength="288.0" lengthAdjust="spacing"> .done-done/evidence/notes/</text>
27
- <text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261018T081521Z-396dc99b-969550/after.png"</text>
27
+ <text xml:space="preserve" x="22" y="408" textLength="451.2" lengthAdjust="spacing"> 20261020T065410Z-fedec802-12efe2/after.png"</text>
28
28
  <text xml:space="preserve" x="22" y="432" textLength="451.2" lengthAdjust="spacing"> synced a note on two devices, saved after.png</text>
29
29
  <text xml:space="preserve" x="22" y="456" textLength="57.6" lengthAdjust="spacing"><tspan class="d">exit 0</tspan></text></g>
30
30
  </svg>