Protocol (SPEC.md §9): for credentials/destructive actions/weeks-costly-wrong/legal/budget items only. Each entry: context, options, our recommendation, and what we do in the meantime. Design choices are decided autonomously per the decision rules and logged in PLAN.md.
Escalation bar (tightened 2026-10-12, per human process note): a question lands here only if it is expensive to reverse (language-level promises, legal, credentials, destructive, budget). A design choice reversible in an afternoon is a PLAN.md Decision Log entry, not an escalation. Fewer, sharper escalations get faster, better answers. Retroactively applied: Q2 below was reclassified as a design decision by the human and lives in PLAN.md.
(none — Q1 and Q2 were both resolved on 2026-10-12; see below)
Ruling: (c)+(b), the strictest reading. Kept as a properly-qualified escalation (a language-level promise is expensive to reverse). The human's additions, all binding on SPEC-LANGUAGE.md:
- The claim is the product. Go-compatible (a) would make Hybrid "a worse Go"; the only reason to adopt a new language over Go is a guarantee Go cannot give. Strict is the only reading that earns a market position.
- Spike 6 is weaker evidence than it looks — the ten programs were chosen by us, so selection bias is built in. The adversarial corpus is what actually tests the decision. The adversarial programs are written BEFORE the checker lands and are treated as the spec. If a strict rule rejects code real Go programmers write daily (shared map across tasks, a worker pool mutating a shared struct), we must know before shipping.
- Friction must be diagnostic, not punitive. "Not sendable" is hostile;
"this map is shared across tasks; wrap it in
managed, or send ownership withmove" is a teaching moment. Real time is budgeted for fix-it suggestions in checker diagnostics. People forgive strictness when the compiler says exactly what to do. - Name the escape hatch honestly.
managedis greppable, auditable, and countable per project (--report-managed) — turning the escape hatch into a visible trust metric instead of a hidden hole. - Tripwire armed. Reopen G0 if more than ~25% of the adversarial corpus
needs
managed, OR if reviewers consistently hit the same rejection on idiomatic patterns. Without a tripwire, "provisional" becomes permanent by inertia. (The ~25% figure is the lead's concretization of "more than ~X%" — the human left the number open; recorded as tunable.) - No overclaiming. SPEC-LANGUAGE.md states the race-freedom claim ONLY
for the checked subset, with the
managedboundary in the same paragraph. Overclaiming safety is the fastest way to lose credibility with exactly the audience that cares.
Provisional marking requirement: the decision is recorded as PROVISIONAL with the three alternatives — (a) Go-compatible, (b) freeze-after-send alone, (c) safe-by-type alone — and the reason each was rejected, so a reviewer can reverse it cheaply. Rejection reasons: (a) = no race-prevention claim = no reason to exist; (b) alone = partial claim, still permits shared-mutable aliasing at spawn; (c) alone without freeze = move semantics incomplete (sender could race on the moved value's aliases).
Effect: SPEC-LANGUAGE.md Tier-0 chapter is written under (c)+(b) with items 1–6 above as normative requirements, not commentary.
Q2 — Thread budget: derived-by-probe vs configured-by-default — RESOLVED 2026-10-12 by the human; RECLASSIFIED as a design decision (process note)
The human's process ruling: Q2 did not meet the SPEC §9 escalation bar — it is a design choice reversible in an afternoon. It is recorded in PLAN.md's Decision Log with the human-endorsed tightened design, and future questions of this class stay out of QUESTIONS.md.
Ruling: (b) — configurable default + probe — with tightening (see PLAN.md
Decision Log 2026-10-12 for the full binding design): ceiling = configured
value only; probes and rlimit/pids.max may LOWER the effective budget, never
raise it (invariant, explicitly tested); default derived as
min(512, 0.5 × pids.max) when readable; effective budget + source
(configured / lowered-by-probe / lowered-by-rlimit) logged at startup;
failure mode at the budget documented (queue/backpressure/error); docs note
the ceiling is raisable (max_threads) on high-pid environments.