Execution-free brief for the read-only GitHub-connector lane: comprehension- primitive inventory, question-layer gap survey, subject-readiness recommendation, then gated capability-axis/ADR/corpus drafts. Proposal-only; serving stays frozen (wrong=0, pinned lanes). Companion to the Claude execute/validate/commit lane.
11 KiB
Handoff: Next-Subjects Readiness (ChatGPT / GitHub-connector lane)
Audience: ChatGPT operating with read-only GitHub access (mobile). Author: Claude Code session, 2026-05-30. Status: Active brief. Self-contained — read this file, then execute one task at a time.
0. What you (ChatGPT) can and cannot do here
You have a GitHub connector and nothing else. That means:
- ✅ You can read and search any file in
AssetOverflow/core. - ✅ You can reason, synthesize, and draft new content.
- ❌ You cannot run code, run tests, run the CLI, or prove anything empirically.
- ❌ You cannot change serving behaviour or evaluation scores.
Therefore every deliverable in this brief is an execution-free artifact:
a Markdown analysis, a taxonomy, a draft spec, or a draft data file. Empirical
validation (running core test, checking the wrong=0 invariant, wiring code)
happens later, in the Claude Code lane, on WiFi. Your job is the read →
analyze → draft half. Claude's job is the execute → validate → commit half.
How to return work
For each deliverable, output a complete file in a fenced code block, with the intended repo path on the first line as a comment/heading, e.g.:
# FILE: docs/analysis/comprehension-primitive-inventory.md
<full contents>
The operator (Shay) will paste it into the repo, or hand it to Claude to land.
If — and only if — your connector can open issues or PRs, you may instead
file each deliverable as a GitHub issue titled [next-subjects] <task id>; do
not push commits directly.
1. What CORE is (orientation — read CLAUDE.md for the full version)
CORE is a deterministic cognitive engine: listen → comprehend → recall → think → articulate → learn → replay. It is not an LLM wrapper. It decodes
structure that is already present in the input; it does not sample text.
Load-bearing invariants you must respect in everything you draft:
wrong = 0is sacred. On the real-GSM8K serving metric the engine is allowed to refuse but never to answer wrong. Current serving score: 6 correct / 44 refused / 0 wrong onevals/gsm8k_math/train_sample/v1. Nothing you propose may create a path that could answer wrong.- Serving is frozen until ratified. The serving path is pinned by
scripts/verify_lane_shas.pyandCLAIMS.md. Do not propose edits to serving modules; propose new files only. - Decoding, not generating. Every proposal must answer: does this teach the engine to find/comprehend structure better — not does this store another canned answer. (See the project thesis: "decoding, not generating.")
- No synthetic-corpus overfitting. Hand-authored corpora are validation-only / held-out probes, rich in hard negatives. They are never training/tuning targets. (A past lesson: a 150-case templated set moved the synthetic metric massively but real GSM8K barely moved — surface-cue overfit.)
- Proposal-only. ADR drafts are
Status: Proposed (draft), neverAccepted. Corpora go under aproposed/subfolder. Nothing is wired. - ADR numbers collide easily. The highest ADR is currently 0195.
Many operators work in parallel. Do not hard-assign a number. Title your
ADR drafts
ADR-XXXX — <title>and let Claude assign the number at land time. (We just spent a session fixing a real 0194 collision. Don't recreate one.)
2. Why we're doing "next subjects" now (and the honest caveat)
The math (GSM8K) frontier is currently composition-bound: single-capability widenings are metric-inert; the wall is composing comprehension primitives and, specifically, the question-extraction layer. The heavy lifting there needs the CLI + test lanes (WiFi + Claude).
So while that waits, this lane does work that is (a) genuinely safe (read + draft, reversible, touches nothing live) and (b) opportunistically chosen to feed back into the math by clarifying which comprehension primitives are subject-general vs math-specific.
Honest caveat (do not skip): CLAUDE.md explicitly warns against "broad
docs-first churn." This brief is scoped to avoid that. The early tasks are
analysis that directly informs the math frontier (high leverage, low volume).
Corpus/ADR drafting is a gated later phase that only proceeds if the analysis
shows it's warranted. If you find yourself generating large volumes of
speculative scaffolding, stop and flag it — that's the failure mode.
3. Map of what already exists (read these first; don't reinvent)
CLAUDE.md— the constitution. Read it.docs/decisions/— all ADRs (0001…0195) +README.mdnarrative.evals/already contains:gsm8k_math/—train_sample/(the real metric),practice/(sealed),confusers/(discrimination probes). This is your structural template.math_capability_axes/—G1_verb_classes,G2_comparatives,G3_numerics,G4_multi_clause,G5_aggregate(+README.md). The capability-axis pattern already exists — extend its shape, don't invent a new one.symbolic_logic/— a logic lane already exists. Survey it before proposing any logic work.identity_divergence/,calibration/,confusers/.
generate/derivation/— the comprehension composer:extract.py(quantity/lexeme extraction),clauses.py(segmentation),compose.py/accumulate.py(referent-scoped combination),multistep.py/search.py(bounded search),verify.py(thewrong=0self-verification gate),pool.py,product_bridge.py.generate/math_candidate_graph.py,generate/math_candidate_parser.py,generate/recognizer_anchor_inject.py— the serving recognizer→injection→graph spine.CLAIMS.md+scripts/verify_lane_shas.py+scripts/generate_claims.py— the serving-frozen gate.
Note:
binding_graphis in-flight in branches, not onmain. Do not cite it as an existing path; if you see it referenced, treat it as future work.
4. The tasks (do them in order; one deliverable each)
TASK A — Comprehension-Primitive Inventory & Cross-Subject Leverage Map (highest priority; directly helps math)
Read: generate/derivation/*.py, generate/math_candidate_parser.py,
generate/recognizer_anchor_inject.py, generate/math_candidate_graph.py,
and skim the ADRs they reference.
Produce: docs/analysis/comprehension-primitive-inventory.md — a table of
every reusable comprehension primitive the math substrate uses
(entity extraction, quantity extraction, unit grounding, clause segmentation,
referent/pronoun binding, question-frame parsing, completeness gate, round-trip
filter, branch-disagreement gate, …). For each: a one-line description, the file
it lives in, and a column "subject-general vs math-specific?" with a short
justification. End with a 5-bullet "what transfers to other subjects" summary.
Why it helps math: it makes the composition wall legible and tells us which
primitives a new subject could exercise for free.
Definition of done: every primitive maps to a real file/function you actually
read; no invented APIs.
TASK B — Question-Layer Gap Survey (directly helps math)
Read: the question-parsing logic in generate/math_candidate_graph.py and
related parsers; evals/gsm8k_math/train_sample/v1/report.json (the per-case
reason strings for the 44 refused cases).
Produce: docs/analysis/question-layer-gap-survey.md — group the 44 refused
cases by why the question clause failed to parse/bind (e.g. aggregate "how
many… in total", residual "how many are left", rate "how much per…", multi-step,
comparative target, …). Rank the groups by (count × estimated tractability).
This is the prioritized backlog for the math question-layer work.
Definition of done: every refused case id is assigned to exactly one group;
counts sum to 44; no claim that a case "would pass" — only why it currently doesn't.
TASK C — Subject Readiness Survey + Recommendation (decides scope for D+)
Read: evals/symbolic_logic/, evals/math_capability_axes/,
docs/decisions/README.md, and ADRs touching logic (search "0123") and
capability axes (search "0131").
Produce: docs/analysis/next-subjects-readiness.md — for each candidate
subject below, state: what substrate already exists, which primitives from
Task A it would reuse, what's missing, and a risk-to-wrong=0 note. Then
recommend an ordering. Candidate subjects to assess (you may add one, with
justification):
- Deductive / symbolic logic (extend
evals/symbolic_logic/— coherence-aligned, deterministic). - Reading comprehension / referent binding (exercises exactly the math composition-wall primitives: coreference, clause binding, question frames).
- Measurement / geometry math axis (natural extension of
math_capability_axes). Definition of done: a clear recommended order with the cross-leverage to the math frontier made explicit. Stop here and wait for the operator to confirm the subject before doing Task D.
TASK D — Capability-Axis Spec for the chosen subject (gated on C)
Only after the operator confirms a subject. Mirror the
evals/math_capability_axes/ shape: produce docs/analysis/<subject>-capability-axes.md
enumerating the axes (analogous to G1…G5), each with: the primitive it tests, a
refusal-first acceptance note, and 2–3 illustrative items. No corpus files yet.
TASK E — Draft ADR for the chosen subject (gated on D)
Produce ADR-XXXX — <subject> comprehension lane (proposed) as a Markdown draft
in the repo's ADR style (read 2–3 recent ADRs first for format). Status: Proposed (draft). It must state the wrong=0 trust boundary, the eval lane it
would add (validation-only, sealed), and the invariant that proves the field
stays valid. Leave the number as XXXX.
TASK F (optional, small) — Held-out probe corpus draft (gated on E)
A small (≤20 item) evals/<subject>/proposed/cases.jsonl draft, hard-negative
rich, mirroring the gsm8k_math case schema (read
evals/gsm8k_math/train_sample/v1/cases.jsonl for the exact field shape).
Clearly marked validation-only. Keep it small — this is a shape demo, not a corpus.
5. Hard "do not" list
- ❌ Do not propose edits to anything under
generate/,core/,chat/,field/,vault/,algebra/, or any serving/eval-scoring path. - ❌ Do not modify
evals/gsm8k_math/**,CLAIMS.md, orreport.json. - ❌ Do not assign a concrete ADR number.
- ❌ Do not mark anything
Accepted/Implemented. - ❌ Do not author large corpora or tune anything to surface cues.
- ❌ Do not claim empirical results ("this passes", "wrong stays 0") — you can't run anything. Say "expected, to be verified in the Claude lane."
6. Handback checklist (what Claude picks up on WiFi)
For each artifact you return, Claude will: assign ADR numbers, run
core test --suite smoke -q + the relevant lanes, verify wrong=0, and land via
PR. Make that easy: keep each deliverable a single self-contained file with its
target path on line 1, and list at the bottom of each artifact the "open
questions for the Claude lane" you couldn't resolve read-only.