docs: Stage-1 canonical sync — FCI alignment, world-substrate plan v2.1, M1.5 records, F1.1 audit, F1.9 synthesis#1077
Merged
Conversation
Stage-0 planning doc for evolving Fundamental from a relational field runtime into a governed computational-world substrate: World Contract above FieldPattern, executable Projection Contracts, an Opportunity Graph, a world evidence ledger, and typed comparison — staged in five gated phases with a hard compression discipline (ablate every proposed field; a smaller public surface is a valid outcome). Grounds each pillar in the primitives already in code and fences the kernel from policy/analysis. Linked from the critical-path README; no shipped behavior changes.
…field Add a Terminology section to the world-substrate program: world = the representation-independent declared totality (possible-worlds sense, not 3D-scene), an instance whose type is a WorldContract; model = the type/theory (CompInt's layer); environment = a part of a world; field = one execution substrate inside a world. Fixes the term ambiguity before it spreads.
…rate program Consolidate the formal plan into the repo beside the program README: two tracks (Fundamental substrate F0-F5, CompInt corpus/V2 C1-C2), six governing rules, every item carrying a falsification-based acceptance criterion, milestones with a no-skip gate discipline, four decision gates, and a status ledger. Terminology and narrative stay in README (referenced, not duplicated); F0.2 marked done.
… + tightened stages Fold the review's 20 corrections into the world-substrate program: - Split 'derived' into runtime-derived / contract-relative / empirically-inferred; the runtime asserts only the first, supplies evidence for the third. - Kernel is a hypothesis: name K0=<X,Θ,Π,V> as a competing smaller factorization; authority + capability are typed constraints, not primitives. - Rules: split R1 into R1a (computational) / R1b (empirical); R3 minimization now uses four ablations (delete/substitute/collapse/factor) + necessity classes. - F1.1 requires three equivalences + no field escape hatch; F1.2 limited to system- relative opportunity; F1.3 becomes parameterized candidate-episode detection with adversarial examples; add F1.0 version envelope. - F2 typed property language (decidable/model-checkable/empirical); empirical claims yield an unresolved obligation, never a pass. F3.2 renamed transition evidence ledger with typed causal classes. F4.1 admissibility gate before profile. Add F4.5 adversarial world suite before the flagship. - R4: plane-neutral core, native ports deferred until JS survives a stage. - C1.1 gets an alias/migration registry; C1.5 dual-license (Apache-2.0 / CC BY 4.0); C1.6 namespace system; C1.7–C1.10/C1.12 become semantic prerequisites feeding a new M1.5 semantic-freeze milestone. C2 items split A–E. - Revised gates (G1 approve-w/revision, G2 conditional, G3 partial, G4 defer) and critical path; revised program statement.
…e, plane split, licensing, envelope) - F0.3 marked done (d69b8a6); status ledger updated. - M1.5 depends on provisional decisions (C1.7-C1.10, C1.12), not completed C1 edits. - Pin Ω_sys notation: f(X, 𝒪, Cap, Auth, Reach, Π, H) with symbol definitions. - F1.3 acceptance = preregistered result under declared boundary; alternate valid parameterizations reported, not treated as errors. - F4.5 splits plane burden: all four on JS ref, >=1 cross-plane; F4.3 carries the rest. - C1.5 adds a LICENSES.md content-boundary manifest. - C1.10 becomes ContractEnvelope (shared metadata/lifecycle, not shared semantics).
The pre-F1 semantic freeze (gate G2 precondition), one decision record each: derivation taxonomy, participant admission, boundary validity, authority+capability as typed constraints, causal-claim permissions ladder, kernel role hypotheses (baseline for F1.4), version envelope, and four-form ablation methodology. Each is a ratifiable decision (Decision/Alternatives/Reason/Consequences/Falsification/ Open questions/Ratification), not an essay. Cross-record audit: no contradictions. Branch holds until decisions are ratified; F1 does not begin before then.
…fication) Convert the M1.5 decisions into an implementable F1 design: experimental packages/core/src/world/ module layout; the 8-field version-envelope interface; the three-equivalence + no-escape-hatch host test; the Ω_sys signature (system- relative only); detectInteractions with the 8 preregistered adversarial fixtures; the four-ablation harness API; plane-neutral conformance vectors; and a test→ acceptance map. Commits no code and touches no frozen surface; F1 code remains gated on an explicit go (G2).
Apply the granted ratification: record 02 gains the two-level World/Episode participant distinction (authority held-but-unexercised qualifies a world participant only, not an episode participant); record 01/03 fix candidate episodes as runtime-derived under a declared detection contract ⟨B,T,C,R,I⟩; records 04-08 ratified as proposed. Final cross-record contradiction check: clean. Ledger closed; F1 may build. Canonical application (C1.7-C1.10, C1.12) tracked separately and does not block F1.
…ached pre-code) The mandated pre-implementation audit of the FieldPattern path (10 points, file: line grounded) and the CompiledPattern -> generic-kernel mapping. Finding: the field's state is representable as read-only lossy data, but its lawful evolution is NOT declaratively representable -- forces are apply(b,p,env) code in a per-field registry (types.ts:586, integrator.ts:90), CompiledPattern carries only tokens, and a snapshot cannot rehydrate a live field. A running-field host would therefore need to retain an opaque FieldHandle and delegate tick() -- tripping two declared F1.1 stop conditions BEFORE kernel code is written. Determination: finding class 'the field can be represented only with additional generic structure' (a declarative force IR); Operations/Dynamics reclassify toward 'opaque code, not declarations' (feeds m1.5-06). Design fork presented; holding kernel code for a decision.
The audit falsified the original F1.1 ('host a FieldPattern, prove three
equivalences'). Reframe Stage 1 around World -> DynamicsContract ->
ExecutionSubstrate, preserving the F1.1 finding as the completed falsification.
- F1 renumbered: F1.0 envelope (done) · F1.1 representation finding (done) ·
F1.2 generic World (built) · F1.3 DynamicsContract (MVP) · F1.4 FieldDynamics
substrate (adapter; equivalence measurement pending) · F1.5 declarative
FieldDynamics experiment · F1.6 Omega_sys · F1.7 episodes · F1.8 ablation ·
F1.9 findings · F1.10 ports.
- Kernel role table: DynamicsContract is an experimental runtime boundary, NOT an
8th primitive; ExecutionSubstrate is not a kernel element.
- Status ledger made factual/commit-specific; the interim 'F1.1c' label retired
and precisely classified (F1.2 World + F1.3 MVP contract + F1.4 opaque adapter,
NOT a kernel that hosts field evolution). M1.5 marked done; G2 marked approved.
- README no longer says 'nothing is built' (states F1.0-F1.2 exist experimentally).
- Old F1-execution-spec.md marked SUPERSEDED (preserved as the falsified
hypothesis); F1-execution-spec-v2.md added as the current build reference.
The broader cross-repo reconciliation (FCI canonical adoption, licensing, archive
hygiene, repo maps) runs in parallel (M1.6 track), not blocking F1.
…rrent increment Sync the planning docs to the implementation (F1.3 acceptance #6): PLAN status ledger and exec-spec v2 now record F1.3 (enriched execution boundary, typed results + evidence, consistency validator) as done and green; F1.4 (raw-vs- substrate operational-equivalence measurement) is the remaining Stage-1 code item.
…easured Sync planning docs to the implementation (F1.4 acceptance): PLAN + exec-spec v2 record F1.4 (transition-level raw-vs-substrate equivalence harness, honest coverage + fidelity + conditions, negative fixtures) as done and green. Observable execution is preserved under declared conditions — not a claim the kernel understands field laws. Next: F1.5 (declarative FieldDynamics experiment, optional) or F1.6 (Omega_sys).
Sync PLAN + exec-spec v2 to the implementation: F1.5 declarative-FieldDynamics experiment (partial-with-opaque-extensions, b214a7e), F1.6 Omega_sys runtime opportunity (007a258), F1.7 candidate-episode detection (bebb6fc). Full suite 980/980; check:api 20 intact. Remaining Stage 1: F1.8 ablation, F1.9 findings.
…6; Stage 1 closed - F1.9-stage1-findings.md: the 14-section scientific synthesis (initial hypothesis -> F1.1 falsification -> World/DynamicsContract separation -> conditional substrate equivalence -> declarative/opaque dynamics boundary -> Omega_sys -> episodes -> ablation method -> K vs K0 -> accepted/rejected reductions -> necessary distinctions -> limits of evidence -> Stage-2 implications). Evidential language only; no theorem claims; falsified positions preserved as stated. - m1.5/06-kernel-role-hypotheses.md: APPENDS the F1.8 outcome table alongside the preserved pre-registration. Both open questions resolved for the tested domain: Projection is kernel (not merely derived observation); Invariants cannot be guards inside an opaque substrate (unresolved for fully declarative substrates). - PLAN.md: F1.8/F1.9 marked done; status ledger records Stage 1 COMPLETE (992/992). - F1-execution-spec-v2.md: ablation + findings rows done. - README.md: status corrected from 'F1.0-F1.2 exist' to Stage 1 complete, public substrate still not shipped, Stage 2 not begun. K0 = <X, Theta, Pi, V> supported as a REPRESENTATIONAL reduction: Entities/Relations/ Operations fold into X as typed structures; nothing is derived away.
… canonical docs Record how Fundamental relates to FCI, an external research framework that names Fundamental as a computational substrate for a subset of its distinctions. The two converged independently — projection and coupling carry the same meaning in both, and both adopt the same evidence-discipline and metric-vs-construct doctrines. New canonical/computational-interaction-alignment.md maps each FCI concept to the Fundamental primitive that instantiates it (with maturity verified against code), records the shared epistemic doctrines, and fences the relationship: 'neither proves the other', and FCI vocabulary is deliberately not forced into the frozen public API. Cross-linked from the canonical map and the research paper family README.
Add a 'Relationship to research' section to /docs/concepts naming Foundations of Computational Interaction (FCI), the external framework that names Fundamental as a substrate, with the bounded 'neither proves the other' claim and honest pre-empirical framing. Point to it from the /writings intro. Marketing/homepage copy is deliberately unchanged, and no FCI vocabulary is introduced into the API — the relationship stays in docs.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
… ledger Records the cross-substrate generalization outcome (generalized-with-refinement), the ProjectionContract and property-classification foundations, and the limitations — including that the second substrate is behaviourally but not organizationally independent, and that the unused context.now was kept rather than removed on two substrates' evidence.
Committed BEFORE any corpus substrate is implemented or adapted, so the predictions are predictions. Defines the churn metric, the convergence and divergence criteria, the substrate-first/adapt-second protocol, and three pre-registered predictions: FSM as a control expected to require zero contract change, the planner as the falsification candidate expected to expose a missing termination concept, and the event-sourced aggregate as a probe of whether replay/deterministicReplay is a real distinction.
…ion was falsified Appends results below the unedited pre-registration so prediction and outcome can be compared without trusting either to have been written honestly. Records that P1 (FSM control, churn 0) was falsified by accepting states, why that is a stronger result than a confirmation, what was deliberately not added, and the rejected convenience. Also records the protocol's remaining weakness: same author wrote the substrates and the contract.
…istration Extracts the method the corpus converged on: the sequence with its two enforcing commit boundaries, the three-way refinement taxonomy, the discovery registry, prediction accuracy with its anti-gaming rules, and evidence grading. Records what the method is NOT — the accuracy figure is self-graded and rests on commit order rather than independence, and the rejected-convenience count is a floor because early rejections were never written down. Also pre-registers the projection round (P-005..P-008) before it starts, with composition (projecting a projection) as the falsification candidate: every existing fixture tests a single projection over a source, and a second layer could launder what the first withheld.
…neutral document The protocol is no longer just how this repository is developed. It is a general method for evolving a computational theory by constraining when it may change: frozen implementations, pre-registered predictions, measured churn, a discovery criterion that demands necessity rather than novelty, prediction grading with anti-gaming rules, permanent negative results, and evidence provenance separated from maturity. docs/method/empirical-protocol.md states it domain-neutrally, with this program as one instance rather than the subject, and is explicit about what the protocol does NOT do — it removes authorship-order bias but not author bias, and self-graded accuracy is a discipline rather than independent evidence. The world-substrate document becomes this program's instance, carrying the current numbers, plus the negative-results and provenance tables.
Records why the instrument is trustworthy: the app cannot import the runtime, so 'the Observatory derives nothing' is a structural property rather than a discipline. Documents each refusal and the test that enforces it, and states the first version's limits plainly — the capture's projection surfaces, opportunity contexts and episode traces are fixtures chosen to exercise the runtime, not observations of a live application, and there is no live-system mode yet.
…rch subject Records the distinction the first build did not make: a trustworthy downstream instrument is not the same as an instrument that has been characterized. A renderer can compute nothing and still mislead. Documents the transformation ledger and its refusals, the representation invariants, the three layers that must never merge (subject claims / instrument claims / interpretation), and the fidelity measures — including that interpretation error is deliberately not measured, because presuming it zero would be the unearned claim this program exists to prevent. Also records the two instrument effects found in the shipped build (an unlabelled projection baseline and a default episode segmentation) rather than quietly fixing them, and why live mode, cross-framework comparison and reviewer analytics stay deferred.
zachshallbetter
added a commit
that referenced
this pull request
Jul 20, 2026
…bstrate + F2 foundation — experimental, unexported (#1078) ## Purpose **Stage‑1 implementation (F1.0–F1.9)** of the world‑substrate kernel experiment, plus the **G3 second‑substrate generalization** and the **F2 foundation** (`ProjectionContract` + property classification). Every surface is **internal and unexported**; the frozen public API is untouched. No release. Stage‑2 implementation has **not** begun. ## Scientific motivation After F1.1 falsified direct `FieldPattern` hosting, Stage 1 became a sequence of falsifiable experiments rather than a build‑out. The central question: > Which elements of `K` remain necessary after representation, execution, opportunity derivation, and episode detection have been exercised experimentally? Each milestone answers one part, and each was allowed to return a negative or partial result. F1.5 did exactly that, and the result was kept rather than engineered away. G3 then addressed a distinct problem: after Stage 1, `DynamicsContract` had been validated against exactly one substrate — the field runtime it was extracted from. A contract with one implementation is indistinguishable from a description of that implementation. A field‑fitted outcome was a permitted (and pre‑declared) result. ## Architectural changes ``` World → DynamicsContract → ExecutionSubstrate → Transition evidence → Ω_sys → Episode detection ``` - The kernel holds **opaque `State`** threaded through `initialize`/`advance`; it never holds a substrate instance. - `DynamicsContract` carries `executionKind` (closed union) · capabilities · a determinism **declaration** (not a boolean) · typed `DynamicsResult` · a typed evidence channel whose `unresolvedInterpretations` **record**, never assert, interpretation. - The field is one substrate behind that boundary, declared `opaque-native`. - A static guard enforces the kernel imports no field code and exposes no `any`/`Function` escape hatch. ## Evidence produced | Milestone | Artifact | Commit | |---|---|---| | F1.0 | Eight‑field `WorldVersionEnvelope`, explicit‑fail, no silent migration | `a1a69858` | | F1.2 | Generic field‑free `World` | `c2f8cb1c` | | F1.3 | `DynamicsContract` boundary + consistency validator | `6c117a1b` | | F1.4 | Transition‑level raw‑vs‑substrate equivalence harness | `fec2a008` | | F1.5 | Declarative‑dynamics experiment (minimal typed expression IR) | `b214a7e9` | | F1.6 | `Ω_sys` opportunity derivation | `007a258e` | | F1.7 | Parameterized candidate‑episode detection | `bebb6fce` | | F1.8 | Kernel ablation harness (executed, not asserted) | `4fcdf74d` | ## Findings - **Dynamics is `non-substitutable`.** Declarative‑only substitution covers 8/11 corpus laws; 3 remain opaque (hidden mutable state, host/callback, nonlinear time). `Dynamics = Declarative Region + Opaque Execution Region`. The IR was **not** expanded to force success. - **`DynamicsContract` is `execution-boundary-only`** — deliberately *not* promoted to an eighth primitive. One kernel drives an `opaque-native` and an `interpreted` substrate unchanged. - **`Ω_sys` is `derived-complete`** — reconstructed from state, operations, capability, authority, projection, reachability, history; all five lower inputs necessary; contains no belief/interpretation (asserted by test). - **Episodes are `derived-conditional`** — findings are relative to a declared contract; coupling vs shared cause is **structural**, surviving the most permissive thresholds. - **The contract generalizes (G3.3): `generalized-with-refinement`.** Across 18 dimensions compared against a second substrate, **no dimension was field‑biased**. The second substrate adopted executionKind, determinism, capabilities, evidence shape, failure taxonomy, snapshot fidelity, replay, restore, lifecycle and ordering unchanged; four dimensions are substrate‑specific values carried by the generic type parameters. - **One missing general concept, found only by the second substrate.** `capabilities.declareTransitionLaw` could be claimed truthfully while the contract offered **no accessor for the law**. Added `describeTransitionLaw()` with capability‑iff‑accessor consistency rules; `opaque-native` stays barred from declaring a law. The rule immediately caught a **pre‑existing** F1.3 fixture that claimed the capability without being able to produce a law. - **One over‑generalization, recorded and kept.** `DynamicsExecutionContext.now` was read by neither substrate. It was **not** removed — two substrates do not justify deleting a concept, and removal would erase the finding. - **Projection is not observation (F2).** A projection is *subtractive with respect to power*: it can hide, withhold and understate, but can never manufacture capability or silently grant permission — overstatements are reported, which is what makes them non‑silent. `exposed` / `hidden` / `unavailable` stay three distinct states. A projection changes `Ω_sys` over an identical snapshot without changing world state. - **Empirical claims cannot be settled internally (F2).** Enforced in code: an empirical property never returns `satisfied` — only `unresolved`, `insufficient-evidence`, or a deferral referencing an external study — and an explicit `true` verdict is not honoured. Likewise, one observed execution is not a model check; 500 runs still yield `insufficient-evidence`. - **Rejected reductions:** Relations → transitions (latent + typed semantics lost) · Operations → observed transitions (latent ops unrecoverable) · Projection → observation (materially changes `Ω_sys`) · Invariants → dynamics guards (no guard point in an opaque substrate) · Capability ⊕ Authority → one flag (loses the diagnosis). ## Limitations - F1.5's corpus is **representative laws modeled on the engine's force categories**, not the exact 36 shipped forces. - F1.4 equivalence is **conditional** (injected RNG/clock, `dt`, ordering, environment, geometry) and covers only the **observable** projection — velocity/accumulated force are `lossy` and were not compared; snapshot fidelity is `partial-observable`, non‑restorable. - One real substrate plus one synthetic substrate characterized; JS plane only (native ports deferred by R4). - **The G3 second substrate is behaviourally but not organizationally independent.** It is a faithful core‑local **port** of the *shipped* `@fundamental-engine/dom` `QualityGovernor` — `core` cannot import `dom` and core's `exports` map is closed, so the shipped class is unreachable and no suitable core‑local substrate existed. It is a genuine second implementation; it is **not** evidence that an unrelated third‑party system would adapt as cleanly. - **F2 is a foundation, not a runtime.** Projections are applied and checked, but nothing *executes* through a projection. Property classification recognizes whether sufficient evidence was supplied; it does not discharge model‑checkable properties. - Episode boundary justification is analytic/empirical, not runtime‑decidable. - `K₀` fold is representational and untested at scale. ## Repository impact Adds `packages/core/src/world/**` (envelope, world, dynamics, kernel, adapters, equivalence, experiments, opportunity, episodes, ablation, substrates, cross‑substrate, projection, properties) + tests, and `[Unreleased]` CHANGELOG entries. **Nothing exported from the package entry.** Existing field goldens unchanged; no accepted F1.3–F1.7 behavior was altered to make a later ablation pass. ## Testing and gates ``` typecheck (core) clean check:api ✓ 20 frozen entries intact (13 values, 4 types, 2 elements, [data-body]) check:docs ✓ 193/193 documented (100%) core test suite 1039 / 1039 pass, 0 fail check:links PASS — 155 markdown files ``` ## Merge dependencies **Based on `main`; #1077 is NOT required to merge first.** Verified by running `check-doc-links` on this branch standalone — it introduces no reference depending on files added by #1077. Merging #1077 first is *recommended* (so CHANGELOG prose references resolve in‑repo) but is **not a blocker**. Reviewer merge order: **#1077 → this PR → CompInt #1.** Does not touch #1034 or #1027. ## Release impact **None.** `FIELD_VERSION` remains `0.9.4`; no `package.json` version change, no tag, no publish. All notes retained under `## [Unreleased]` (8 entries). Stage 2 has **not** begun.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Consolidated documentation for the Stage‑1 world‑substrate program: FCI ↔ Fundamental alignment, the program plan (
PLAN.mdv2.1), the M1.5 semantic freeze, the F1.1 audit, execution spec v2, and the F1.9 Stage‑1 synthesis. Docs only — no runtime code, no API change, no release.Combines three previously separate branches preserving their original commit sequence (17 commits):
docs/fci-alignment,plan/world-substrate,docs/m1.5-semantic-freeze.Scientific motivation
Stage 1 opened with a kernel hypothesis
K = ⟨Entities, State, Relations, Operations, Dynamics, Projection, Invariants⟩and a concrete test: host an existingFieldPatterninside it. That premise was falsified. The documentation exists to record why the architecture changed and to freeze the semantics that made the subsequent experiments interpretable — participant admission, boundary validity, authority/capability, the causal ladder, kernel roles, the version envelope, and the ablation methodology. Without a ratified semantic freeze, an ablation result means nothing.Architectural changes
The kernel moved above the runtime rather than around it:
PLAN.mdv2.1 reframes Stage 1 around this. The original F1.1 acceptance criterion is marked superseded, not deleted; execution spec v1 is retained as evidence of the pre‑finding hypothesis.Evidence produced
F1.1-integration-audit.md— a file/line‑grounded audit of the realCompiledPattern→createFieldpath.m1.5/— 8 ratified decision records, each with Decision / Alternatives / Reason / Consequences / Falsification / Open questions / Ratification.F1.9-stage1-findings.md— the 14‑section synthesis, with §13 stating the limits of the evidence explicitly.Findings
CompiledPatternis authoring/runtime configuration, not a world declaration — lawful evolution exists only as executable force code; live state is closure‑scattered; snapshots are lossy. Direct hosting would have required delegation, so it was rejected rather than faked.K₀ = ⟨X, Θ, Π, V⟩is supported as a representational reduction. Entities/Relations/Operations fold intoXas typed structures — nothing is derived away.Limitations
Describes experimental, unexported work. The public substrate is not shipped; Stage 2 has not begun. Evidence limits are enumerated in §13 of the findings report (representative force corpus rather than all 36 forces; conditional equivalence; one real substrate; JS plane only; analytic boundary justification;
K₀fold untested at scale). No empirical or human‑subject validation is claimed anywhere.Repository impact
docs/canonical/(+1 doc, 2 edits),docs/planning/world-substrate/(program, plan, m1.5, audit, specs, synthesis),docs/research/README.md, and twoapps/sitecopy pointers. NoCHANGELOG.mdchange — all changelog entries live on the code branch, so there is no overlap with #1078.Testing and gates
Merge dependencies
None. Based on
main, independently mergeable. (Verified:docs/m1.5-semantic-freezealready containedplan/world-substrate's five commits at identical SHAs, so there were no duplicate plan commits to reconcile.)Reviewer merge order: this PR → #1078 → CompInt #1. Does not touch #1034 or #1027.
Release impact
None. No version bump, no tag, no publish, no
[Unreleased]promotion; nopackage.jsonorversion.tstouched.