Skip to content

design: CM execution model — JSON property graph and the coh runtime (M1 backbone) - #128

Closed
usurobor wants to merge 3 commits into
mainfrom
design/cm-execution-model
Closed

design: CM execution model — JSON property graph and the coh runtime (M1 backbone)#128
usurobor wants to merge 3 commits into
mainfrom
design/cm-execution-model

Conversation

@usurobor

Copy link
Copy Markdown
Owner

What changed

Adds research/cm-language/runtime/CM-EXECUTION-MODEL.md — the bounded design backbone for M1 — on its own review surface, cut from live main 274342f.

This document was previously committed onto agent/cm-developer-experience-note (PR #124), which coupled M0 promotion to a technical design still under active review. Per the accepted split, PR #124 is now vision-only again and this is the design's review surface.

Why

Shipping coh-min (#126/#127) produced five measured findings that turn M1 from "harvest three schemas from two runtimes" into a bounded ABI design step:

  • schema.cue defines no #MeasurementReceipt and no #RunRequest; the two runtimes carry local contracts under two different format strings;
  • the schema has an executable step type (#TypedStep) that neither runtime uses, while both independently invented the same private shape carrying the readiness-DAG edges the schema lacks;
  • schema conformance is not runnability (see gate 9 below);
  • result derivation is hardcoded in both runtimes; only the vocabulary is data;
  • the portable safety invariant has no single definition either runtime can be checked against.

Iterations applied on top of the reviewed draft

Four corrections, accepted before this branch was cut:

  • I1 — receipt discriminator bumped to tsc-measurement-receipt/0.2. The 0.1 string is already owned on main by the shipped coh-min receipt, whose core is structurally incompatible; reusing it would assert false compatibility and destroy format as a verifier discriminator. tsc-run-request/0.1 and tsc-sandbox-plan/0.1 keep their version — verified no live artifact claims either string.
  • I2 — new acceptance gate 9, presence not merely exactness. A closed schema rejects extra fields but not absent ones: measured with cue v0.9.2, deleting format, procedure, or result_contract still passes cue vet -d '#NormalizedCMIR' while the runtime refuses all eight. Every canonical block must be provably required, runtime and verifier must independently refuse absence, and the negative fixture set must carry one missing-block case per canonical top-level block.
  • I3 — fact-provenance invariant: any non-scheduler fact the result rule reads must originate in a declared typed step output or evidence predicate; scheduler facts are limited to status, principled skip/refusal/failure, and bounds/coverage. The Ascent-0 consequence is named in the implementation order — separating, pass count, tested-fiber size and the fiber/candidate counts must be republished through their producing steps' typed ports, which is the bulk of that step's work.
  • I4 — canonical subject-snapshot construction and digest algorithms are deferred with a fail-closed boundary: a subject kind is executable only when it names a versioned snapshot/digest scheme; unknown schemes refuse.

Impact

Documentation only. Defines no schema, changes no code, freezes no ABI, and dispatches no implementation. The document is a review candidate until accepted through the project-native review path.

Validation

  • one-file diff from main 274342f
  • 642 → 696 lines; the four iterations are the only substantive additions to the reviewed draft
  • format strings audited against live artifacts (tsc-run-request / tsc-sandbox-plan unused; tsc-measurement-receipt/0.1 and tsc-cm-ir/0.1 in live use, both correctly superseded)

Not in scope

.cm surface syntax and compiler, package registry and distribution, remote provider transport, cache semantics, the complete Core warrant-obligation catalog, and signature policy — all listed as deferred and fail-closed until versioned.


Generated by Claude Code

Splits the execution model off PR #124 (which stays vision-only so M0 can
promote) onto its own review surface, from live main 274342f, with the four
iterations Pi accepted in msg-cn-pi-tsc-execution-model-iterations-accepted-18:

I1 receipt discriminator bumped to tsc-measurement-receipt/0.2. The 0.1 string is
already owned on main by the shipped coh-min receipt, whose core is structurally
incompatible; reusing it would assert false compatibility and destroy format as a
verifier discriminator. tsc-run-request/0.1 and tsc-sandbox-plan/0.1 keep their
version — verified no live artifact claims either string.

I2 new acceptance gate 9: a closed schema rejects extra fields but not absent
ones. Measured with cue v0.9.2, deleting format, procedure, or result_contract
still passes cue vet against #NormalizedCMIR while the runtime refuses all eight.
Every canonical block must be provably required, the runtime and verifier must
independently refuse absence, and the negative fixture set must carry one
missing-block case per canonical top-level block.

I3 fact-provenance invariant: any non-scheduler fact the result rule reads must
originate in a declared typed step output or evidence predicate; scheduler facts
are limited to status, principled skip/refusal/failure, and bounds/coverage. The
Ascent-0 consequence is named in the implementation order — separating, pass
count, tested-fiber size and the fiber/candidate counts must be republished
through their producing steps' typed ports.

I4 canonical subject-snapshot construction and digest algorithms are deferred
with a fail-closed boundary: a subject kind is executable only when it names a
versioned snapshot/digest scheme; unknown schemes refuse.
usurobor pushed a commit that referenced this pull request Aug 12, 2026
…1-I4), PR #124 @f271f5c vision-only (reply to Pi -18)
usurobor added a commit that referenced this pull request Aug 13, 2026
…on (M0)

Pi exact-head GO at f271f5c: vision-only diff, forward history preserved, section
9 accurate to main 274342f and the #126/#127 runtime evidence with its limits.

This is the M0 architecture-authority gate. The note becomes project authority:
the cn / coh / TSC / CNOS boundary, the portable-runtime vs host-integration
split, typed holes, the shared runtime kernel, and the two-sided ABI-freeze proof.
It remains subordinate to docs/product/NORTH-STAR.md and reconciles with
docs/product/DIRECTION.md.

The CM execution model that was briefly committed to this branch now lives on
design/cm-execution-model (PR #128) under separate review, so M0 is not coupled
to a design still in iteration.

CI note: the 'ci' job is red on this head from a verified infrastructure failure
— it failed at the 'Setup CUE' dependency-setup step before any project step ran.
coh-min, katas, and CDD Artifact Validate are green at f271f5c, and the local
pre-merge closure gate passes. Re-running the job was not available to this
activation, and pushing a commit to re-trigger it would have invalidated the
exact-head GO.
1. Required vs optional output ports. A success must publish every required
output or the outcome is rejected; an optional output may lawfully be withheld,
and a downstream required binding on an absent optional port becomes a principled
skip naming the port. This resolves the contradiction between 'success publishes
its declared outputs' and a semantic checker successfully withholding
admissible_proposal. Withholding a required output is not a control mechanism.

2. Recursion. v0 forbids unbounded recursion and general control flow; bounded
invoke_cm recursion is permitted only under the RunRequest's named child_cm_depth,
child_cm_calls, and digest-cycle limits. Recursion with no named ceiling is not
expressible.

3. The canonical RunRequest example names a versioned subject snapshot scheme
(directory-merkle/0.1), and the text requires every subject entry to name one so a
verifier can recompute identity rather than trust it.

4. Requiredness. Replaced the concrete-typed guidance, which pointed at the wrong
lever: a concrete literal is the case that slips through, while cm_id: string is
caught. Now requires CUE's field!: marker or a fixture-proved equivalent, plus a
non-vacuity fixture so a schema cannot pass by validating nothing.

5. Ascent producer map completed with realization_fit publishing the
fitting-candidate count, and a rule that any input without a named producing step
is a gap to close rather than a fact the evaluator may reach for.

6. New gates 10 and 11: a digest-mismatch negative fixture per binding
(request/IR/plan), and checker configuration schemas owned by the capability
contract and validated at link time, with a negative fixture.

7. git diff --check clean.
usurobor pushed a commit that referenced this pull request Aug 13, 2026
usurobor pushed a commit that referenced this pull request Aug 14, 2026
No semantic change. Clears the one mechanical gate Pi held the #128 exact-head GO
on: git diff --check reported trailing whitespace on the three metadata lines and
a new blank line at EOF.

Copy link
Copy Markdown
Owner Author

Closing: superseded by the cohering reset.

main has been replaced with a parentless root from reset/cohering-foundation, which returns TSC to its original question — whether an LLM can be taught the generative operation of cohering. The CM execution model designed here belongs to the runtime direction that reset stopped.

This PR's base commit is no longer reachable from main. The full prior history, including this branch's base and every merged runtime cycle (#124, #126, #127, #129), is preserved at archive/cm-runtime-line (afbd065). Nothing is lost; it is simply no longer the project's direction.

The design work itself was sound and the branch remains at ecf3fbd. If a future plan justifies a runtime, this is the document to start from — but under the new plan's AC6, such machinery has to prove the first proof needs it before it returns.


Generated by Claude Code

@usurobor usurobor closed this Aug 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant