Skip to content

The consolidation program — one engine by extraction #43

Description

@softmarshmallow

The umbrella for the era after the v2 landing (#5): consolidating the legacy engine (crates/grida) and the v2 engine (crates/n0) into one engine by extraction — the successor program to the legacy seam program (#27).

The normative reference is the git-persisted program directory: docs/wg/consolidation/ — start at its index. The docs:

  • index — start-here: reading order, the standing rules, working conventions
  • goal — what n0 becomes (render CLIs, engine ecosystem, dev editor, render modes, format posture) and its non-goals
  • topology — chassis vs know-how: the per-domain adoption map, render modes, the crate silhouette
  • method — the step lifecycle, the three step shapes with worked examples, the gates
  • glossary — the program vocabulary
  • charter — the ratified route: phases 0–6 with entry/exit gates, the first three PRs, the owner decision registry, and the known unknowns

This issue tracks execution state (the position); the directory defines the program (the route).

Sequencing rule (binding on every PR in this program)

  • Zero-behavior moves (crate cuts, re-exports) are gated by byte-identical sweeps alone — they never wait for the scoreboard.
  • Capability-granting moves (n0 gaining an importer or any new rendering surface) are gated by the v1-vs-n0 scoreboard — no capability lands unmeasured.
  • The conformance bar is the Chromium/consensus oracle, never v1 itself.
  • Patrol-before-drop applies to every absorption step.

Milestones

  • Phase 0 — Land + arm: model-v2: anchor — land the v2 engine as the crates/n0 family #5 merged --no-ff; CI arming PR (required checks: declared pixel-sweep subset, seam architecture tests, lock-additions-only, wasm build, CI-hosted v2 gate baselines); decision issues filed; the two long-pole docs lanes started (anchor-spec WG graduation, htmlcss font-provider study)
  • Phase 1 — Vocabulary lane (∥ 2): cg crate cut (byte gates); paint-RFD conformance suite vs both engines + gap report; the two pinned RFD amendments ratified; D-C decided on evidence
  • Phase 2 — Instrument lane (∥ 1): scoreboard v0 (enumerated intersection corpus, per-fixture triples + coverage), CI-hosted with bless flow and wall-clock budget; flip rule ratified before any score exists
  • Phase 3 — SVG: the SVG import IR crate cut (name + math vocabulary decided at cut); n0 packer with the dependency-direction lock; legacy suites byte-identical; n0 SVG entry scores on the board
  • Phase 4 — HTML + editor lanes (concurrent): htmlcss front-end extraction after its closed-set lock + font-provider decision; n0 from_styled adapter scored; D6 (editor-core ownership, The engine migration — history & the consolidation guideline (residue from gridaco/grida) #1) decided via the timeboxed spike
  • Phase 5 — Format + text oracle: .grida→n0 converter over a pinned real-document corpus; v2 archive story decided; text-oracle identity decided at this boundary only
  • Phase 6 — Flip + retirement: per-suite bar flips off the Phase-2 criterion; crates/grida contracts by subtraction; wasm switch + freeze-contract retirement coordinated with the product side

First three PRs

  1. CI arming
  2. cg crate cut (no n0 changes)
  3. Scoreboard v0 (+ PR 4: the paint conformance suite)

Refs: #5 (the landing), #9 (v2 model tracking), #27 (predecessor), #1 (D6 context).

Execution log

  • CI arming PR landedci(consolidation): arm permanent migration gates #46 merged as 182bb7f2; permanent gates and CI-owned n0 baselines are on main, and all post-merge push workflows are green.
  • Required-check ruleset registration — the active main ruleset still contains only deletion and non-fast-forward protection; register consolidation gates / armed and canvas build / build as required checks.
  • Decision-issue filing sweep — twelve dedicated trackers filed; no registry decision taken.
  • Anchor-spec WG graduation lane
  • htmlcss font-provider study lane
  • cg crate cut landedrefactor(cg): extract shared vocabulary crate #59 merged as cdba65c0; crates/cg is the skia-free workspace crate, legacy retains grida::cg through a re-export, and the declared 65-fixture sweep is byte-identical. No n0 or frozen-surface change.

Decision tracker index

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions