Skip to content

Kernel: two smaller gaps in what it is given #39

Closed

Description

@don-petry

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.
  • Each has its boundary test first and its mutant.

Needs. Nothing outside the repo.

Design. §3.3, complete; I-20, I-27.

Activity

  1. don-petry commented on Oct 14, 2026

    @don-petry
    ContributorAuthor

    #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.

    1. 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.
    2. Put a flag in the context for each pass. That adds a second rule beside I-20, and a second mutant.
    3. 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).
    • FR-70 requires a Lens grounded in execution. With none, I-27 and the dependency rule of Kernel: a dependency update needs no model review #32 are true of nothing.

    Acceptance criteria.

    1. 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.
    2. 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.
    3. examples/invalid/config.no-deterministic-lens.json is rejected by tools/check_examples.py, with its test in tests/test_tools.py.
    4. 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.

    Needs the Maintainer? No.

  2. don-petry commented on Oct 15, 2026

    @don-petry
    ContributorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions