# Scoring notes, written while reading each answer (model run question: score; reason)
gemma r1 Q01: partial; a (request and answer kept in order, but not 'attributed' or Fossil) and d (one decider and writer); no receipt sender (b), no envelope (c); spends a sentence on removed locks. Reader omission; texts state b and c plainly.
gemma r1 Q02: right; alice by the envelope's `to`; review not OCX's kind, nothing written. Does not mention the inner `to`/`ocx` 1 at all (neither misread nor addressed).
gemma r1 Q03: right; (a) layer 3 reads `clone` from content, 2.4's 'never refuses' is not 2.0's layer-3 failure; (b) layer 2 cannot tell from `to`, layer 3 follows `re` and checks the run 'in its care' (a fair reading via the owner draft).
gemma r1 Q04: right; `to` carries rules 1 and 2; `clone` separates repositories sharing a user; drop neither. Does not name 'one user per clone' as the alternative; conflates addressing with the per-host invariant in one sentence.
gemma r1 Q05: partial; (3) right (no way to wake a live owner); (1) says the list is not needed, the owner 'could identify new artifacts by reading the record' - misses that telling new from old needs the list or a cursor, which the draft keeps none of, and misses deliveries; (2) 'texts do not state the cost'. The draft's 'a wake says read the record' supports the misreading.
gemma r1 Q06: right; tools, administrators, Fossil's receive; 'not justified as written'.
gemma r1 Q07: partial; ticket-change argument only as a conditional ('the text does not specify' whether tickets have reply links - true, a Fossil fact outside the texts); no several-runs/exact-hash/edit argument; says 2.0's sentence is contradicted by `re` and should change.
gemma r1 Q08: right; 10 items incl. hash-named storage, places, capabilities, server-code new per clone, receipts, order, receipt query, after-receive trigger.
gemma r1 Q09: right; layers 1-2 and receipt sender stay; 2.3, 2.4, layer 4 and the whole owner draft no longer apply; the tool defines kinds' envelope keys, senders, content, acting rules.
gemma r1 Q10: right; {"ocx":2,"to":"dave","question":{...}} and {"ocx":2,"to":"carol","re":"HASH","answer":{...}}; OCX passes them untouched. Lists 'Layer 1/Layer 2' as concepts but not the receipt sender explicitly.
gemma r1 Q11: right; `re` in both, `lab` by receipt, rule 2 for `started`; poll and the kernel as triggers.
gemma r1 Q12: right, but a different ambiguity: 'exactly one key besides the envelope's own, whose value is an object' read as counting only object-valued keys, so block 1 (`run` object + `note` string) holds a message; fix 'and that key's value is an object'. Reads 'first such block' as first block holding a message without seeing the other reading. NEW FINDING: 2.1's key-count clause has two readings.
gemma r1 Q13: wrong; takes the sentence's grammar at its word: the outside writer's write fails (on 'the owner's lock'), so the hook's record is never placed and the event is lost; misses the intended reading (OCX's write fails when Fossil's receive holds the repository). The grammar ('a write by a writer outside OCX ... fails') supports its reading: the sentence is the cause. 6565 tokens of thinking.
gemma r1 Q14: right; (b) next owner, `lost` if the worker died with it, taken back if it outlived (Open); second `started` ignored; undefined: whether the check verifies the server's `started` before launching. (a) 'the run continues' does not engage what the owner does without the reply.
gemma r1 Q15: wrong; 'Nothing is lost for good because the owner acts on the record': claims the next owner delivers the plain post and applies the stop from the record. No text says the start re-delivers posts or reads stops; no unbounded wait noted; open question not raised. The draft's own 'so nothing is missed' (Starting) and 'the record ... is what the owner acts on' (Events) lead it there.
gemma r1 Q16: right; (1) states both rules (2.3 needs a `publish`; owner draft's next owner publishes) without calling it a conflict; (2) the watcher sentence and the lock sentence of 2.3; adds two 2.4 sentences that need no change; omits 'nothing publishes by itself' from the list.
gemma r1 Q17: right (6/7); (d) answered 'not settled: Open' instead of placing it in the protocol.
gemma r2 Q01: partial; a in part ('request work and report on it within a repository'), d (one decider and writer, event-driven); no receipt sender, no envelope keys.
gemma r2 Q02: right; alice by the envelope `to`; nothing written. Says layer 2 'reads ... the content' then that it hands it on unread (loose, not a misreading of the case).
gemma r2 Q03: right; (a) layer 3, reads `clone` from content, 2.4's 'never refuses' is not 2.0's layer-3 failure; (b) 'Unsettled': 'the texts do not define what "addressed to this reader" means for messages that do not require a `to`' - states the finding exactly.
gemma r2 Q04: right; both consequences; drop neither; alternative a single identifier combining user and server-code.
gemma r2 Q05: partial; (3) right; (1) the list is 'redundant if the owner always reads the durable record'; (2) costs not in the texts. Same misreading as r1, from the same sentence.
gemma r2 Q06: right; tools, administrators, Fossil; 'not justified as written'.
gemma r2 Q07: partial; ticket changes have no other link (stated firmly this time); keep `re`; 2.0's sentence should change; no several-runs/exact-hash/edit argument.
gemma r2 Q08: right; hash storage, places, fenced/icomment, receipts with order, users and capabilities, server-code, after-receive hook, sender attribution; the clone's receipt query only as 'unsettled transport'.
gemma r2 Q09: right; as r1.
gemma r2 Q10: right; query/answer kinds with object values, `re` the full hash, OCX passes them untouched.
gemma r2 Q11: right; `re` both; `lab`; rule 2 with maria; poll and kernel triggers.
gemma r2 Q12: right; the same key-count ambiguity as r1, located in 'more than one' (keys besides the envelope's, or object-valued keys); two fixes, one per reading. Again reads 'first such block' one way only.
gemma r2 Q13: wrong; both readings make the outside writer's write fail (not authorized by 2.2, or locked out by the owner's lock); says the texts give no handling of a live owner's failed write; proposed wording keeps the misreading. Same cause as r1: the sentence's grammar.
gemma r2 Q14: right; (a) no relaunch for want of an acknowledgement; (b) counted `started`, no worker, `lost`; undefined: the workers' fate (Open). Does not raise whether a live owner resends or waits.
gemma r2 Q15: wrong; (1) right; (2) 'the next owner will find and act upon' the stop, from the record (unsupported); (3) 'ignored: a plain post ... does not constitute a delivery' - the texts given never define 'delivery' (2.11 is outside them), so this reading is open to it; 'nothing is lost' quoting 'nothing is missed'.
gemma r2 Q16: right; (1) both rules; (2) the lock sentence and 'nothing publishes by itself' (called a contradiction); adds 2.4's acting sentence; omits the watcher sentence.
gemma r2 Q17: right (6/7); (d) 'not settled: Open' again.
qwen r1 Q01: wrong; only the owner's deciding and writing, called idempotent; nothing of a, b or c; says 'what OCX keeps on the host' (barred word).
qwen r2 Q01: partial; d (one process decides, event-driven, publications), a and c only loosely ('managing runs within a Fossil repository', 'layers and envelopes ... correctly formatted'); no receipt.
qwen r3 Q01: wrong; d (event-driven, decided once) and a loose 'runs in a Fossil repository'; no a, b or c in substance.
qwen r1 Q02: partial; alice and nothing written are right; (1) 'passes the entire block to layer 3' - no kind named, handed to OCX's layer 3 rather than the reader of `review`.
qwen r2 Q02: wrong; 'The user asked to act is bob ... the content field overrides the to field'. 2.1 says layer 2 does not read content; reader missed it.
qwen r3 Q02: partial; alice and nothing written; (1) hands '"review": {...}' to layer 3, no kind named, no reader of `review`.
qwen r1 Q03: wrong; (a) 'layer 2 will ignore the message' because `clone` does not match - layer 2 is made to read content, as 2.0's 'not addressed to this reader' invites; (b) a `stop` for its own run 'refused'.
qwen r2 Q03: wrong; (a) layer 3, outcome 'refused' (2.0's layer-3 failure, against 2.4's 'never refuses'); (b) reads 'the `to` key in the envelope' of a stop that has none; 'refused'.
qwen r3 Q03: wrong; (a) layer 3, 'refused' per 2.0's table; (b) layer 2 reads `re`, 'ignored' although the run is its own.
qwen r1 Q04: wrong; reads `to` as 'the user who should be notified' and recommends dropping it; no rule 1 or 2, no clones sharing a user.
qwen r2 Q04: partial; dropping `to`: 'any user could ... have their answers count' (authority, right); dropping `clone`: 'accurately track which clone should act' without the duplicate action of clones sharing a user; drop neither.
qwen r3 Q04: wrong; the two consequences are vague and swapped ('only the appropriate user can act' for `clone`); proposes 'stronger validation checks'.
qwen r1 Q05: wrong; (3) 'wait for its next scheduled wake' - there is no schedule; (1) vague; (2) redundant reads.
qwen r2 Q05: wrong; (1) a confused appeal to rule 2; (3) only 'additional information' would be lost, not the wake itself.
qwen r3 Q05: wrong; (1) list not needed, (2) 'costs nothing', (3) 'impossible for the owner to know what triggered the wake' - misses that no wake would reach it.
qwen r1 Q06: partial; names the tools as writers but calls the removal justified because tools 'are stateless and do not hold locks'.
qwen r2 Q06: wrong; 'Workers write to any repository they are supervising' - reads the parts table's Never column ('decides, or writes to any repository') as abilities; calls the removal justified.
qwen r3 Q06: wrong; Fossil and 'Worker Processes ... can write' (the Never column read as abilities again); no tools; 'not justified' for that wrong reason.
qwen r1 Q07: wrong; generic arguments ('complex discussions'), no ticket case; keeps `re` but proposes adding 'which post it replies to' to 2.0's list of things not repeated, which contradicts keeping it.
qwen r2 Q07: wrong; 'the text does not contain any information regarding the proposal'; would change 2.0 to say OCX relies on Fossil's reply links (accepts the removal); no ticket case.
qwen r3 Q07: wrong; generic loss of context, no ticket case; 2.0's sentence 'should not be changed'.
qwen r1 Q08: partial; storage, receipts with sender and order, places, users and capabilities, immutability of edits (5); no arrival trigger, no clone receipt query, no server-code.
qwen r2 Q08: partial; storage named by hash, receipts, places, users and capabilities, authentication (4-5); nearly every citation is the envelope row, whatever the item.
qwen r3 Q08: partial; durable storage, receipts and order, arrival notification (3-4); citations invented ('Table "Event" in "2.4 Events, each with its trigger"', 'A message never changes' in 2.3).
qwen r1 Q09: partial; envelope and layers stay, OCX kinds go, tool defines kinds and permissions; but keeps 2.4 'unchanged ... since the review tool handles the `run` kind'.
qwen r2 Q09: partial; envelope stays, kinds go; but 'the envelope structure must be adapted to accommodate new kinds', against 2.1 'Layer 2 reads every message the same way'.
qwen r3 Q09: partial; three groups, but what the tool must define is generic (kinds, validation, processing); no senders, no counting of answers, no `to`/`re` requirements.
qwen r1 Q10: wrong; 'insufficient messages or concepts provided ... to create' the exchange; says layer 3 would check whether it is 'a run of type started'. The texts claim other uses (2.0, 2.1) but show none.
qwen r2 Q10: wrong; kind `note` with a string value (2.1 requires an object), no `re` on the answer.
qwen r3 Q10: wrong; not JSON (bare strings as keys with no values), and 'OCX sends an `ended` message back to Carol'.
qwen r1 Q11: wrong; blanks right, but gives rule 2 to `ended` instead of `started`, and the events are 'a worker starts (2.5)'.
qwen r2 Q11: partial; blanks right, `lab` for both; no rule 2; events are the owner reacting to answers received, not the arrival and the worker's exit.
qwen r3 Q11: partial; blanks right, `lab` (called 'the user who initiated the run'); no rule 2; `started` 'triggered when the worker's process starts' (the owner writes it before launching), `ended` on exit.
qwen r1 Q12: wrong; misparses the fences and the marker lines; picks 'the second block' for a fence reason; no reading of 2.1's rule.
qwen r2 Q12: partial; block 1 not a message (right); its two readings are about whether extra keys are allowed (the key-count clause gemma found), but the fix 'exactly two keys' is wrong; does not say which block is the message.
qwen r3 Q12: partial; block 1 none, block 2 the message (reading A), but for a wrong reason ('the key `note` is repeated'); readings and fix incoherent.
qwen r1 Q13: wrong; readings 'fails silently' and 'generates an error message', both about the outside writer's write; 'no changes needed'.
qwen r2 Q13: wrong; an outside write 'fails if it does not follow OCX's naming conventions'.
qwen r3 Q13: wrong; 'fails to trigger an owner decision' / 'retries'; neither is the owner's write meeting Fossil's receive.
qwen r1 Q14: wrong; (a) 'Yes, the process can launch twice', citing the lock sentences and 2.3's publish sentence as the owner draft's.
qwen r2 Q14: wrong; 'launch once or not at all' by a garbled rule 1; no `lost`, no start sweep.
qwen r3 Q14: partial; both cases 'not twice' because a second `started` is ignored (2.4) - right for (a); (b) misses `lost`; names as undefined whether the process launches if the owner dies before any acknowledgement.
qwen r1 Q15: wrong; all three 'remain in the owner's inbox', which 'persists across triggers'. The inbox is a pipe; the name reads as a durable mailbox.
qwen r2 Q15: wrong; the (dead) owner 'reads all messages in its inbox' on waking; plain post ignored; nothing lost.
qwen r3 Q15: wrong; 'the next owner who takes over will find this post as part of their inbox'; nothing lost.
qwen r1 Q16: wrong; puts 2.3's 'nothing publishes by itself' sentence in the owner draft and says 2.3 is silent; the changes listed are invented key renamings.
qwen r2 Q16: wrong; again attributes 2.3's sentence to the owner draft; 'every sentence in 2.0-2.4 would have to change'.
qwen r3 Q16: wrong; 'Both texts state' the same; the sentences listed are copied unchanged or rewritten at random.
qwen r1 Q17: partial (4/7); (a) (b) (e) (f) placed right; (c) labelled 'above (a pattern)' while saying 'protocol level'; (d) above; (g) 'neither'.
qwen r2 Q17: wrong (3/7); (a) (b) (c) right; (e) in the protocol via `objective`; (f) in the protocol; (g) in 2.3; (d) host policy.
qwen r3 Q17: wrong (2/7); (a) (c) right; (b) within; (e) 'below the protocol'; (d) host policy; (f) (g) within.
# Checked against today's code (tree 6de902eb1d): src/ocx/fossil.cr Fossil.turn wraps every fossil command OCX runs on a repository file (line 141), tools' included, 'so two of OCX's never meet there'; LOCKED = "database is locked" is the named failure when another writer holds the repository. So Q06's finding holds against the implementation, and Q13's intended reading is: OCX's own write fails with "database is locked" when Fossil's receive holds the file.
