on master help sign in
Lay out the review questions' options as lists

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U4FzmSdubYxmZGDp2VJRAQ

commit9440a2df9cb374405cb35cf0379ad75796d7a2d8 authorClaude <noreply@anthropic.com> dateMon 2 Nov 2026, 13:36 (4 hours ago) parente146134
1 file changed+235−90
docs/reviews/2026-11-02-questions.md+235−90
docs/reviews/2026-11-02-questions.md+235−90
@@ -7,191 +7,336 @@ Questions 16 to 28 are language or spec rulings. Under the ground rules they are
77## Scope and process
88
99**1. Where should the review land?** It is on `claude/project-thread-7prdcx` now.
10−a) Push it to `master`, as development.md's "push straight to master" rule says. b) Open a pull request. c) Leave it on the branch.
11−Answer: a
10+
11+- a) Push it to `master`, as development.md's "push straight to master" rule says.
12+- b) Open a pull request.
13+- c) Leave it on the branch.
14+
15+**Answer:** a
1216
1317**2. What should be done first?**
14−a) The eight "fix first" bugs. b) The simplifications, starting with the test runner. c) The docs cleanup. d) Nothing more for now.
15−Answer: a, then c
18+
19+- a) The eight "fix first" bugs.
20+- b) The simplifications, starting with the test runner.
21+- c) The docs cleanup.
22+- d) Nothing more for now.
23+
24+**Answer:** a, then c
1625
1726**3. How should fixes land?**
18−a) Commits straight to `master` once every check passes, as development.md says. b) One pull request per theme. c) A branch you merge yourself.
19−Answer: a
27+
28+- a) Commits straight to `master` once every check passes, as development.md says.
29+- b) One pull request per theme.
30+- c) A branch you merge yourself.
31+
32+**Answer:** a
2033
2134**4. Should a fake ship be set up in the cloud container**, so the ship checks run too? That needs the brass pill from GitHub LFS and a few minutes to boot.
22−a) Yes, before any fix that touches tools/ship, the desks or the mark. b) No, eval checks are enough.
23−Answer: a
35+
36+- a) Yes, before any fix that touches tools/ship, the desks or the mark.
37+- b) No, eval checks are enough.
38+
39+**Answer:** a
2440
2541## Direction
2642
2743**5. How should the checker grow from here?** (A121)
28−a) Build the general core first: union-find bindings with levels, a deferred-constraint queue and Maranget's usefulness check, with `main = (program …)` checked as an ordinary application. b) Keep adding recovery paths until milestone 2's examples pass, and refactor after. c) Both: make today's recovery fall back to ordinary inference now, and plan the core as the next milestone-2 task.
29−Answer: c
44+
45+- a) Build the general core first: union-find bindings with levels, a deferred-constraint queue and Maranget's usefulness check, with `main = (program …)` checked as an ordinary application.
46+- b) Keep adding recovery paths until milestone 2's examples pass, and refactor after.
47+- c) Both: make today's recovery fall back to ordinary inference now, and plan the core as the next milestone-2 task.
48+
49+**Answer:** c
3050
3151**6. Should the partial `golden-types` report be rendered from the full checker's per-definition results**, so there is one pipeline? (A122) About 283 `types.txt` outputs would change once.
32−a) Yes. b) No, keep the two pipelines.
33−Answer: a
52+
53+- a) Yes.
54+- b) No, keep the two pipelines.
55+
56+**Answer:** a
3457
3558## Checker fixes
3659
3760**7. How should the keyed-view screen be fixed?** (A119, A38)
38−a) Run ordinary inference first, and recovery only for components it leaves unresolved. Some todo diagnostics may change. b) Keep recovery first, and fall back to ordinary inference when it declines.
39−Answer: a
61+
62+- a) Run ordinary inference first, and recovery only for components it leaves unresolved. Some todo diagnostics may change.
63+- b) Keep recovery first, and fall back to ordinary inference when it declines.
64+
65+**Answer:** a
4066
4167**8. Should the narrow initializer recovery go?** Deleting the null-sample gate and `program-init-context` (about 140 lines) lets the general path handle reordered models, and the seven negative init fixtures still fail. (A39)
42−a) Yes, once the todo, store and program tests pass. b) No.
43−Answer: a
68+
69+- a) Yes, once the todo, store and program tests pass.
70+- b) No.
71+
72+**Answer:** a
4473
4574**9. How should an imported Hoon `(unit T)` be handled?** (A10)
46−a) Translate it to the prelude's `unit` union, passing the prelude template into the import bridge. b) For now, make it fit as unknown, so it fails closed instead of giving a false error.
47−Answer: a
75+
76+- a) Translate it to the prelude's `unit` union, passing the prelude template into the import bridge.
77+- b) For now, make it fit as unknown, so it fails closed instead of giving a false error.
78+
79+**Answer:** a
4880
4981**10. Should printed types say `ask` and `qath` instead of `ask.internal` and `qath.internal`?** Two expected outputs change. (A134)
50−a) Yes. b) No.
51−Answer: a
82+
83+- a) Yes.
84+- b) No.
85+
86+**Answer:** a
5287
5388**11. Should every `?-` branch kind join its arm results by one rule:** unify, and if that fails, widen to an explicitly present parent aura or `@`? Then `?- b %.y n %.n 0` with `n=@ud` checks. (A133)
54−a) Yes. b) No, keep the per-kind rules.
55−Answer: a
89+
90+- a) Yes.
91+- b) No, keep the per-kind rules.
92+
93+**Answer:** a
5694
5795**12. Should top-level resolution make one pass in dependency order**, keeping the fixpoint as a fallback, with a 400-definition timing check added to the suite? (A135)
58−a) Yes. b) Only the fix. c) No.
59−Answer: a
96+
97+- a) Yes.
98+- b) Only the fix.
99+- c) No.
100+
101+**Answer:** a
60102
61103**13. Should the checker keep the errors it already finds?** That means the real error inside a local `++`, the name of the failing definition, the API reasons, and a definite error for a derived-name clash. Boundary strings that tests lock in would change. (A12, A40, A24)
62−a) Yes. b) No.
63−Answer: a
104+
105+- a) Yes.
106+- b) No.
107+
108+**Answer:** a
64109
65110**14. Should the 26-variable printer limit stop gating which modules check?** The printer would print `T27` and on, as it already can. (A124)
66−a) Yes. b) No.
67−Answer: a
111+
112+- a) Yes.
113+- b) No.
114+
115+**Answer:** a
68116
69117**15. Should the 32,768-node freshness scan be replaced** by a fresh-ID high-water mark computed once, with `%recursive` treated as a leaf? (A37)
70−a) Yes. b) Keep the scan and document its budget.
71−Answer: a
118+
119+- a) Yes.
120+- b) Keep the scan and document its budget.
121+
122+**Answer:** a
72123
73124## Language and spec rulings
74125
75126**16. Which auras may a term literal fit?** Today `^- @tas %1.000` and `^- @tas %&` are accepted and `^- @ud %1.000` is rejected, the opposite of Hoon. grammar.md:141 supports the code; grammar.md:29 and "Literals: exactly Hoon's" don't. (A20)
76−a) Follow Hoon: a term literal fits its own aura family, so `%1.000` is `@ud` and `%&` is `?`. b) Keep grammar.md:141 as written.
77−Answer: a
127+
128+- a) Follow Hoon: a term literal fits its own aura family, so `%1.000` is `@ud` and `%&` is `?`.
129+- b) Keep grammar.md:141 as written.
130+
131+**Answer:** a
78132
79133**17. May a name term fit `@t`, as `@tas` nests in `@t` in Hoon?** grammar.md:141 lists only `@tas`, `@ta`, `@` and `*`. (A20)
80−a) Yes. b) No.
81−Answer: a
134+
135+- a) Yes.
136+- b) No.
137+
138+**Answer:** a
82139
83140**18. May a gate fit `*`?** core-language.md says a function isn't a noun, but the prelude's `element` erases gates into `*`. (A23)
84−a) Yes: say in the spec that `*` may hold gates. b) No: design a typed erasure first.
85−Answer: a
141+
142+- a) Yes: say in the spec that `*` may hold gates.
143+- b) No: design a typed erasure first.
144+
145+**Answer:** a
86146
87147**19. Where should `[]` and `m()` be rejected?** Both are decided errors. Today the parser accepts them, and the checker calls `[]` "not supported". (A6, A100)
88−a) In the parser, at the closer, with new golden cases. b) In the checker, as definite errors.
89−Answer: a
148+
149+- a) In the parser, at the closer, with new golden cases.
150+- b) In the checker, as definite errors.
151+
152+**Answer:** a
90153
91154**20. Is `[a=@ud [a=@t b=?]]` one record or two scopes?** Hoon treats it as flat, and field access already does. Today the duplicate `a` is accepted and `a.x` is "ambiguous". (A30)
92−a) One record: the duplicate is an error. b) Two scopes, as compiler.md says now.
93−Answer: a
155+
156+- a) One record: the duplicate is an error.
157+- b) Two scopes, as compiler.md says now.
158+
159+**Answer:** a
94160
95161**21. Should `/% %foo` together with `++ foo 1` be allowed?** `/%` binds only a mold, and molds and values have separate namespaces (grammar.md:94 and :102), but the scope check rejects it. (A25)
96−a) Yes. b) No.
97−Answer: a
162+
163+- a) Yes.
164+- b) No.
165+
166+**Answer:** a
98167
99168**22. Should a `?-` arm that matches no remaining case be a definite error** ("arm matches no case"), as grammar.md:184 implies, instead of "not supported"? (A15)
100−a) Yes. b) No.
101−Answer: a
169+
170+- a) Yes.
171+- b) No.
172+
173+**Answer:** a
102174
103175**23. Should `(mop K V)` carry its comparator,** so that `get.on gth` on an `lte` mop is an error? Neither Hoon nor decisions.md:39 does this. (A55)
104−a) No, match Hoon. b) Yes.
105−Answer: a
176+
177+- a) No, match Hoon.
178+- b) Yes.
179+
180+**Answer:** a
106181
107182**24. Should Hoon's `each` mold be renamed to `each.hoon`**, since the prelude also has the element gate `each`? They live in separate namespaces. (A64)
108−a) No, keep both. b) Yes.
109−Answer: a
183+
184+- a) No, keep both.
185+- b) Yes.
186+
187+**Answer:** a
110188
111189**25. When should `eq` and the gate-free type-variable constraint be built?** Both are decided, neither exists, and no doc tracks them. (A98)
112−a) In milestone 2. b) Later, and list them as outstanding.
113−Answer: a
190+
191+- a) In milestone 2.
192+- b) Later, and list them as outstanding.
193+
194+**Answer:** a
114195
115196**26. Which Hoon unions should the importer learn?** Today `$%` with `%&`, `%|` or `%0` tags, `(each a b)` and `json` all fail, though the spec's import table lists them. (A50)
116−a) The non-`%tas` tags now, then `each` and `json` as catalog entries. b) Only the tags. c) Later.
117−Answer: a
197+
198+- a) The non-`%tas` tags now, then `each` and `json` as catalog entries.
199+- b) Only the tags.
200+- c) Later.
201+
202+**Answer:** a
118203
119204**27. Should the `%jibb` mark keep dropping the final newline on a `%txt` round trip**, as `%hoon` does? (A61)
120−a) Keep it, like `%hoon`. b) Preserve the newline, and change tools/ship's assertion.
121−Answer: a
205+
206+- a) Keep it, like `%hoon`.
207+- b) Preserve the newline, and change tools/ship's assertion.
208+
209+**Answer:** a
122210
123211**28. Should the printer flatten `[a [b c]]` to `[a b c]` and print named molds by name**, such as `theme` and `item.todo`? (A136)
124−a) Yes. b) No.
125−Answer: a
212+
213+- a) Yes.
214+- b) No.
215+
216+**Answer:** a
126217
127218## Tests and tooling
128219
129220**29. Should one runner over the `tests/lib` test arms replace the 49 `tools/type-*-test` scripts and `importer-test`?** A prototype ran them in 681 s instead of 2,591 s. The `my-app` byte guards would move to a manifest. (A82, A120)
130−a) Yes. b) No.
131−Answer: a
221+
222+- a) Yes.
223+- b) No.
224+
225+**Answer:** a
132226
133227**30. Should there be one `tools/check` command, and CI?** (A92, A96)
134−a) `tools/check` now, and a CI job for the eval checks now. b) `tools/check` now, CI at milestone 7 as planned. c) Neither.
135−Answer: b
228+
229+- a) `tools/check` now, and a CI job for the eval checks now.
230+- b) `tools/check` now, CI at milestone 7 as planned.
231+- c) Neither.
232+
233+**Answer:** b
136234
137235**31. How should the 28 copies of `my-app` files under `tests/` be handled?** (A108, A109)
138−a) Map `my-app` into the `jibb-dev` desk outside `/tests` and read it directly, removing the copies. b) Keep the copies, and guard them all from one manifest.
139−Answer: a
236+
237+- a) Map `my-app` into the `jibb-dev` desk outside `/tests` and read it directly, removing the copies.
238+- b) Keep the copies, and guard them all from one manifest.
239+
240+**Answer:** a
140241
141242**32. Should the generated `tests/lib/jibb.hoon` (3,949 lines) stop being committed?** Assembly drops it and regenerates it anyway. (A83)
142−a) Yes, and add it to .gitignore. b) No.
143−Answer: a
243+
244+- a) Yes, and add it to .gitignore.
245+- b) No.
246+
247+**Answer:** a
144248
145249**33. Should the importer's test fixtures (about 550 lines) move out of `jibb-import.hoon`**, which app desks vendor, into `tests/lib/jibb-import.hoon`? (A52)
146−a) Yes. b) No.
147−Answer: a
250+
251+- a) Yes.
252+- b) No.
253+
254+**Answer:** a
148255
149256**34. Should the import-only fixtures move off `my-app`** (`sur/import-fixture.hoon`, `mar/label.hoon`, the Tlon probe) to a fixtures desk? (A113)
150−a) Yes. b) No.
151−Answer: a
257+
258+- a) Yes.
259+- b) No.
260+
261+**Answer:** a
152262
153263**35. Should the five `tools/hoon` checks that exit 0 whatever they print become test arms?** (A91)
154−a) Yes. b) No.
155−Answer: a
264+
265+- a) Yes.
266+- b) No.
267+
268+**Answer:** a
156269
157270**36. Should type-checker golden cases keep their full token and tree outputs?** They are 73% of all parser golden lines. (A94)
158−a) Keep them: each stage's output is compared. b) Let type cases opt out.
159−Answer: a
271+
272+- a) Keep them: each stage's output is compared.
273+- b) Let type cases opt out.
274+
275+**Answer:** a
160276
161277**37. Should the tests keep calling internal library arms (137 of them)?** (A126)
162−a) Keep them for now, and revisit after the checker core changes. b) Move them behind a small public facade.
163−Answer: a
278+
279+- a) Keep them for now, and revisit after the checker core changes.
280+- b) Move them behind a small public facade.
281+
282+**Answer:** a
164283
165284**38. Should `my-app` keep the failing buttons example and the doc theme's static font?** Milestone 4 will treat both as errors. (A112)
166−a) Keep them through milestone 2, and list it as a milestone-4 open question. b) Move the error example out now.
167−Answer: a
285+
286+- a) Keep them through milestone 2, and list it as a milestone-4 open question.
287+- b) Move the error example out now.
288+
289+**Answer:** a
168290
169291**39. Should every vendored package keep going into every desk?** (A117)
170−a) Yes, as designed. b) Make it per desk.
171−Answer: a
292+
293+- a) Yes, as designed.
294+- b) Make it per desk.
295+
296+**Answer:** a
172297
173298**40. Should `tools/hoon` get a `--no-debug` mode** for timings, with the docs' figures re-measured? Every eval runs with `!:`, which makes checker work 2.2 to 2.6 times slower. (A137)
174−a) Yes. b) No.
175−Answer: a
299+
300+- a) Yes.
301+- b) No.
302+
303+**Answer:** a
176304
177305## Docs and repository
178306
179307**41. Should status.md become a capability table** (area, status, the test that proves it) plus a short list of gaps, with the history table replaced by `git log`? (A97, A95)
180−a) Yes. b) Only fix the contradictions.
181−Answer: a
308+
309+- a) Yes.
310+- b) Only fix the contradictions.
311+
312+**Answer:** a
182313
183314**42. Until the Claude design doc is synced, which spec wins?** (A104)
184−a) The repository copy, with a "synced" column in decisions.md. b) The Claude doc, as development.md says now.
185−Answer: a
315+
316+- a) The repository copy, with a "synced" column in decisions.md.
317+- b) The Claude doc, as development.md says now.
318+
319+**Answer:** a
186320
187321**43. Who syncs the Claude design doc with the repository's decisions?**
188−a) Me, if you give me edit access to it. b) @iko. c) Leave it for now.
189−Answer: b
322+
323+- a) Me, if you give me edit access to it.
324+- b) @iko.
325+- c) Leave it for now.
326+
327+**Answer:** b
190328
191329**44. Should open-questions.md hold only open questions**, with settled ones moved to decisions.md? (A103)
192−a) Yes. b) No.
193−Answer: a
330+
331+- a) Yes.
332+- b) No.
333+
334+**Answer:** a
194335
195336**45. Which licence should the repository have?** It has none, and doesn't state the licences of `vendor/` or the Tlon fixtures. (A107)
196−a) MIT, like urbit/urbit. b) Another licence. c) None: keep it private.
197−Answer: a
337+
338+- a) MIT, like urbit/urbit.
339+- b) Another licence.
340+- c) None: keep it private.
341+
342+**Answer:** a