Skip to content

docs: Stage-1 canonical sync — FCI alignment, world-substrate plan v2.1, M1.5 records, F1.1 audit, F1.9 synthesis#1077

Merged
zachshallbetter merged 24 commits into
mainfrom
docs/stage1-canonical-sync
Jul 20, 2026
Merged

docs: Stage-1 canonical sync — FCI alignment, world-substrate plan v2.1, M1.5 records, F1.1 audit, F1.9 synthesis#1077
zachshallbetter merged 24 commits into
mainfrom
docs/stage1-canonical-sync

Conversation

@zachshallbetter

@zachshallbetter zachshallbetter commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Purpose

Consolidated documentation for the Stage‑1 world‑substrate program: FCI ↔ Fundamental alignment, the program plan (PLAN.md v2.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 existing FieldPattern inside 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:

World  →  DynamicsContract  →  ExecutionSubstrate      (FieldRuntime is the first substrate)

PLAN.md v2.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 real CompiledPatterncreateField path.
  • 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

  • F1.1 falsification (preserved): CompiledPattern is 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 vs K₀: K₀ = ⟨X, Θ, Π, V⟩ is supported as a representational reduction. Entities/Relations/Operations fold into X as typed structures — nothing is derived away.
  • Two pre‑registered open questions resolved (tested domain): Projection is kernel (it materially changes derivations, so it does not collapse into observation); Invariants cannot be guards inside an opaque substrate.

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 two apps/site copy pointers. No CHANGELOG.md change — all changelog entries live on the code branch, so there is no overlap with #1078.

Testing and gates

check-doc-links   PASS
check:docs        PASS
check:readme      PASS

Merge dependencies

None. Based on main, independently mergeable. (Verified: docs/m1.5-semantic-freeze already contained plan/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; no package.json or version.ts touched.

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.
@vercel

vercel Bot commented Jul 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fundamental-engine Ready Ready Preview Jul 20, 2026 3:01am

Request Review

@vercel
vercel Bot requested a deployment to Preview July 20, 2026 00:19 Abandoned
… 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
zachshallbetter merged commit c9cc109 into main Jul 20, 2026
15 checks passed
@zachshallbetter
zachshallbetter deleted the docs/stage1-canonical-sync branch July 20, 2026 03:10
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.
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