Skip to content

Commit 0eccbce

Browse files
committed
plans: D-LFA-1/2 GKAT amendment and D-GKAT-0 probe (docs only)
Operator-approved amendment after #1670: - D-LFA-1: a structured Rubicon reference flow and an optimized variant are GKAT-equivalent (same actions, declared guards and projections), plus a separate trace check that RequestCommit never occurs without a valid revision and MUL authorization. RequestCommit is an intent, not a Lance write. Three disable runs; GoTo/GoBack refused; WaitForInput is an observation at resume; the snapshot/codebook generation gate stays independent. - Guard projection: WHERE {T} vs CHECK {T,U} declared per guard, never interchanged; commit authorization never inherits CHECK semantics. - D-LFA-2: integration with graph-flow, thought-git verbs, Kanban transitions and authorized proposals against the from-scratch oracle; no second scheduler, evaluator, state store or commit owner. - D-GKAT-0: independent, unclaimed fixture probe (G1, G2, G5); no runtime, dependency or executor. D-RFT-2 unchanged; D-RFT-4 keeps thought binding/frontier. Co-research map: D-GKAT-0 and P-GKAT-RUBICON probe rows. STATUS_BOARD: D-RFT-0 shipped (#1668); D-LFA-1/2 and D-GKAT-0 rows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
1 parent 6782aea commit 0eccbce

3 files changed

Lines changed: 56 additions & 2 deletions

File tree

‎.claude/board/STATUS_BOARD.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
## D-RFT / D-QSP — ClassView × Quack semantic substrate (2026-10-21)
22

3-
Plans in #1667 (`d-rft-relalg-thought-git-frontier-v1.md`, `d-qsp-classview-quack-postgresql-parity-v1.md`; docs, not yet on main). Only the rows below have a claim or evidence; the other D-RFT / D-QSP / D-LFA ids stay as #1667 lists them.
3+
Plans in #1667 (`d-rft-relalg-thought-git-frontier-v1.md`, `d-qsp-classview-quack-postgresql-parity-v1.md`, `d-lfa-lance-graph-flow-rubicon-assimilation-v1.md`; merged). Only the rows below have a claim or evidence; the other D-RFT / D-QSP / D-LFA ids stay as #1667 lists them.
44

55
| D-id | scope | status | gate / falsifier |
66
|---|---|---|---|
7-
| **D-RFT-0 / D-QSP-0** | K3 normalization safety: rewrites keep SQL three-valued TRUE rows | In PR (EXO-50 claim `session_01G22yT6htkcdyXsihxxXdrg/031`; `entries/2026-10-21-d-rft-0-kleene-normalization.md`): `normalize_kleene`; `SetNormalize` admits it under `ThreeValued`. MEASURED: PostgreSQL 16.14 = Kleene oracle = `normalize_kleene` on 2000/2000; the two-valued form is wrong on 474 | Kleene evaluator over random expressions + PostgreSQL differential; 5 disables red. Remainder open: NULL literals, `COALESCE`, nullable arithmetic, empty `SUM`, `COUNT(expr)` |
7+
| **D-RFT-0 / D-QSP-0** | K3 normalization safety: rewrites keep SQL three-valued TRUE rows | Shipped (#1668; EXO-50 claim `session_01G22yT6htkcdyXsihxxXdrg/031`; `entries/2026-10-21-d-rft-0-kleene-normalization.md`): `normalize_kleene`; `SetNormalize` admits it under `ThreeValued`. MEASURED: PostgreSQL 16.14 = Kleene oracle = `normalize_kleene` on 2000/2000; the two-valued form is wrong on 474 | Kleene evaluator over random expressions + PostgreSQL differential; 5 disables red. Remainder open: NULL literals, `COALESCE`, nullable arithmetic, empty `SUM`, `COUNT(expr)` |
88
| **D-RFT-1..5, D-LFA-0** | composition, substitution, recursion, frontier, replay; flow census | PROPOSAL (`entries/2026-10-21-d-rft-d-lfa-0-assessment.md`) | per-row falsifiers in the entry; unclaimed |
9+
| **D-LFA-1 / D-LFA-2** (amended 2026-10-21) | guarded-control verification of a Rubicon flow; integration with the existing drivers | PROPOSAL (plan amendment, `d-lfa-…-v1.md` § Amendment 2026-10-21; map `entries/2026-10-21-coresearch-plans-mapping-foresight.md`) | GKAT equivalence + separate no-commit-without-revision-and-MUL trace check; 3 disables; `GoTo`/`GoBack` refused; unclaimed |
10+
| **D-GKAT-0** | GKAT fixture probe: G1 factoring, G2 nondeterminism refusal, G5 declared atom bound | Queued, unclaimed (research only; no runtime, dependency or executor) | the three fixtures in the D-LFA plan amendment |
911

1012
## D-RU — D-RELALG-UNIFIED: JC/R statistics and Datalog sharing work through the contract set IR (2026-10-20)
1113

‎.claude/board/entries/2026-10-21-coresearch-plans-mapping-foresight.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ All probes compare counts or scalar folds.
7070
| P-ABA-MODDEL | Modify on one side and delete on the other is a named refusal | It resolves silently |
7171
| P-REFUSAL-KIND | A RouteRefusal is retried on another route. A SemanticRefusal is never retried. | A semantic refusal is retried |
7272
| P-TLP-COUNT | The counts for P, NOT P and P IS NULL sum to the table's row count | The sum differs |
73+
| D-GKAT-0 (added 2026-10-21, after #1670) | GKAT fixtures: G1 guarded factoring, G2 refusal of genuine nondeterminism, G5 a declared atom bound. No runtime, dependency or executor. | A G1 rewrite with a changed label or polarity is accepted; nondeterminism is encoded as an `if` |
74+
| P-GKAT-RUBICON (D-LFA-1) | A Rubicon reference flow and its optimized variant are GKAT-equivalent. Separately, no `RequestCommit` trace exists without a valid revision and MUL authorization. Guards are projected WHERE-style `{T}`, never CHECK-style `{T,U}`. | Any disable stays green: reversed polarity, commit moved ahead of its guard, or unguarded choice. A `GoTo`/`GoBack` flow is translated instead of refused. |
7375

7476
Bridge findings worth a probe:
7577
- `JoinExec::bag_count` sums `u64` without an overflow check (`mork-pathmap-probe/src/join.rs:653-659`). The contract should be exact below a stated row bound and refused above it.

‎.claude/plans/d-lfa-lance-graph-flow-rubicon-assimilation-v1.md‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,56 @@ The z8run adapter is a **host** of flow graphs; Quack remains the evaluator. No
4848

4949
**Stop conditions:** new execution loop or SQL evaluator, checkpointer becoming authoritative storage, conflicting Kanban transition owner, workflow graph identity becoming row identity, missing generation refusal, non-equivalent replay, or requiring pre-existing data materialization in Context. Halt runtime assimilation rather than papering over with adapters.
5050

51+
## Amendment 2026-10-21: guarded-control verification (GKAT)
52+
53+
**Status:** approved by the operator 2026-10-21. Docs and probes only; no implementation is claimed, no owner is assigned. Source: [.arxiv/1907.05920 GKAT excerpt](../../.arxiv/1907.05920_guarded_kleene_algebra_verified_control_flow_excerpt.md) (#1670); [co-research map](../board/entries/2026-10-21-coresearch-plans-mapping-foresight.md).
54+
55+
This amendment replaces the D-LFA-1 and D-LFA-2 contracts above where they differ; D-LFA-0 and D-LFA-3 are unchanged. D-RFT-2 is unchanged. D-RFT-4 keeps versioned thought binding and frontier behaviour; it does not own guarded workflow verification.
56+
57+
### Guard projection (applies to D-LFA-1 and D-LFA-2)
58+
59+
GKAT tests are Boolean. A K3 predicate becomes a GKAT test only through a **declared projection** of its designated truth values:
60+
61+
- WHERE-style: designated `{T}` (UNKNOWN and FALSE do not pass);
62+
- CHECK-style: designated `{T, U}` (only FALSE fails).
63+
64+
The two are never interchanged. **Commit authorization uses `{T}` and must never inherit CHECK semantics:** an UNKNOWN revision or authorization does not authorize.
65+
66+
### D-LFA-1: one Rubicon reference flow and one optimized variant
67+
68+
- **Flows.** One structured Rubicon reference flow, and one optimized variant of it. Both use only sequence, guarded choice (`if b then e else f`) and guarded iteration (`while b do e`).
69+
- **Equivalence.** The two are GKAT-equivalent, checked by bisimulation of their guarded automata. Conditions:
70+
- both use the same action alphabet;
71+
- both use the same declared guards, each with its declared projection.
72+
- **Safety, checked separately.** No trace of the reference flow contains `RequestCommit` unless both a valid revision and MUL authorization precede it. Equivalence alone does not establish this: it only says the variant behaves like the reference.
73+
- **`RequestCommit` is an intent, not a Lance write.** It proposes; the existing supervisor and `cycle_driver` seal. No flow step moves a dataset version.
74+
- **Disable runs.** Each must fail the check named:
75+
1. Reverse a guard's polarity: the equivalence check fails.
76+
2. Move `RequestCommit` ahead of its guard: the equivalence check and the safety check both fail.
77+
3. Introduce an unguarded nondeterministic choice: the flow is refused as outside GKAT; it is never encoded as an `if` under an invented predicate.
78+
- **Unstructured jumps are refused.** A flow that uses `GoTo` or `GoBack` is refused, never translated into an unsupported GKAT fragment.
79+
- **`WaitForInput`.** It is modelled as an observation of external state at resume, i.e. a test, not an autonomous state transition.
80+
- **Runtime gate.** Snapshot and codebook generation validation stays an independent runtime gate: a stale source refuses at resume. GKAT does not model versions and is not that gate.
81+
82+
### D-LFA-2: integration with existing drivers
83+
84+
- **Scope.** Exercise the existing pieces together:
85+
- the graph-flow driver;
86+
- thought-git verbs;
87+
- Kanban/Rubicon transitions (`kanban.rs` `next_phases`);
88+
- authorized action proposals.
89+
- **Oracle.** Compare deterministic replay results and receipts against the independent from-scratch oracle (`thought-git-probe::oracle::next_version`). The D-TGB-4 receipt is a prerequisite; it does not exist in code yet.
90+
- **Nothing new beside the existing pieces.** There is no second scheduler, evaluator, state store or commit owner.
91+
92+
### D-GKAT-0: independent fixture probe
93+
94+
- **Status.** Independent and unclaimed; a research and fixture probe only.
95+
- **Checks.** The numbering follows the #1670 excerpt:
96+
- **G1:** guarded factoring and equivalence. The paper's example: `if b then {p; q} else {q}` ≡ `(if b then {p} else {skip}); q` for identical pure `q`. Changing one action label or guard polarity must be rejected.
97+
- **G2:** genuine nondeterminism is rejected rather than encoded.
98+
- **G5:** the Boolean atom set is explicitly bounded and declared. Beyond the bound the probe refuses; it never enumerates silently.
99+
- **Exclusions.** No production runtime, no dependency and no executor. A DR64 or DR256 mask is a physical lane set, never a set of GKAT tests.
100+
51101
## Coordination
52102

53103
Main PR: [ClassView/Quack PostgreSQL parity plan](d-qsp-classview-quack-postgresql-parity-v1.md). Priority companion: [relalg × thought-git frontier](d-rft-relalg-thought-git-frontier-v1.md). Existing source: '.claude/plans/thought-git-basics-v1.md' and EXO-98; '.claude/plans/relalg-v1.md' and EXO-86; EXO-50 messages. Any code handoff needs an explicit owner/claim and separate implementation PR. This PR changes plans only.

0 commit comments

Comments
 (0)