You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of the epic "Epic: nine gaps in the Kernel, found in review".
Why. The facts say whether each list was read whole, but not the list of Runs, from which every ceiling is counted. And the configuration may name no deterministic Lens, which makes "no model review before the checks pass" true of nothing.
Done when
The facts carry a completeness flag for the list of Runs, in the schema, the example, the builders and the simulator, and an incomplete list defers.
A configuration that names no deterministic required Lens is rejected by a check, with a counter-example.
Working ruling (Solution Architect, delegated). The Maintainer may overturn it in review.
Question. Where should the facts say whether the list of Runs was read in full, and how is a configuration that names no deterministic Lens refused?
Options.
Add complete.runs to each item's facts, set by the port from its single read of the list, so the existing rule I-20 defers. Add minItems: 1 to required_lenses.deterministic in the configuration schema.
Put a flag in the context for each pass. That adds a second rule beside I-20, and a second mutant.
Refuse an empty set in the Kernel. That is a branch in code for something the schema can say.
Ruling: 1.
One rule should cover every list that was not read in full (L-09, L-53, I-20).
Every ceiling is counted from Runs, so a short list must defer (I-13).
complete.runs is required in the facts schema, the example, tests/support.py and sim/world.py. Counter-example: examples/invalid/facts.no-completeness-for-runs.json.
test_incomplete_facts_never_converge_or_admit also covers runs: outcome defer, reason facts_incomplete. Its mutant makes incomplete() skip runs. The simulator gains a fault that cuts the list short.
examples/invalid/config.no-deterministic-lens.json is rejected by tools/check_examples.py, with its test in tests/test_tools.py.
Documents: design §3.3 complete; L-53 names the test.
Confidence. High. I would rule otherwise in no foreseeable case: if the list is read once per repo instead of once per pass, the flag is still set per item.
Note (2026-10-14): criterion 3, minItems: 1 on required_lenses.deterministic with the counter-example config.no-deterministic-lens.json, lands in "Kernel: a dependency update needs no model review" (#32). That story makes an empty list dangerous. This story keeps complete.runs.
Activity
don-petry commentedon Oct 14, 2026
#39 Kernel: two smaller gaps in what it is given
Working ruling (Solution Architect, delegated). The Maintainer may overturn it in review.
Question. Where should the facts say whether the list of Runs was read in full, and how is a configuration that names no deterministic Lens refused?
Options.
complete.runsto each item's facts, set by the port from its single read of the list, so the existing rule I-20 defers. AddminItems: 1torequired_lenses.deterministicin the configuration schema.Ruling: 1.
Acceptance criteria.
complete.runsis required in the facts schema, the example,tests/support.pyandsim/world.py. Counter-example:examples/invalid/facts.no-completeness-for-runs.json.test_incomplete_facts_never_converge_or_admitalso coversruns: outcomedefer, reasonfacts_incomplete. Its mutant makesincomplete()skipruns. The simulator gains a fault that cuts the list short.examples/invalid/config.no-deterministic-lens.jsonis rejected bytools/check_examples.py, with its test intests/test_tools.py.complete; L-53 names the test.Confidence. High. I would rule otherwise in no foreseeable case: if the list is read once per repo instead of once per pass, the flag is still set per item.
Needs the Maintainer? No.
don-petry commentedon Oct 15, 2026
Note (2026-10-14): criterion 3,
minItems: 1onrequired_lenses.deterministicwith the counter-exampleconfig.no-deterministic-lens.json, lands in "Kernel: a dependency update needs no model review" (#32). That story makes an empty list dangerous. This story keepscomplete.runs.