Skip to content

rc.6: specify eight guessed rules, move engine material to companion profiles, close the rc series - #68

Merged
callumalpass merged 7 commits into
mainfrom
spec/rc6-shape-and-gaps
Nov 12, 2026
Merged

callumalpass merged 7 commits into
mainfrom
spec/rc6-shape-and-gaps

Conversation

@callumalpass

Copy link
Copy Markdown
Collaborator

What this changes

Two kinds of change to the 0.3.0 rc.6 draft. Each commit is one of the items below and can be reviewed on its own.

Rules that tools had to guess (c81cd33)

Each has fixtures (since: 0.3.0-rc.6).

  1. slugify (ch09) is a four-step algorithm: NFD, drop combining marks, lowercase ASCII, runs of other characters become -. No transliteration.
  2. Wikilink targets (ch08) compare with record paths and filenames by path key.
  3. Closing frontmatter delimiter (ch03): what closes a block, and what an unclosed block is.
  4. Markdown link destinations (ch08): angle-bracket and bare forms, %20, titles, URI schemes.
  5. Code in the body and inline tags (ch08): one definition of fenced and inline code for links and tags, and a tag grammar.
  6. One write order (ch12), including the provisional path a create uses to freeze membership.
  7. order_by (ch11): a total value order by kind, with ascending file.path as the final tie-break in both directions.
  8. path_value_normalized (ch07, ch04): a write that normalizes a path-stored value reports a warning with the written and stored values.

Shape

  • Type packs move out of 05A into the companion profile type-packs/0.1 (968dec7).
  • Chapter 12A is dissolved (048d696). Three-way merge and move detection are the companion profile concurrent-edits/0.1 (claim profiles merge/0.1, move_detection/0.1). Record identity is in ch03 and writer format fidelity in ch12.
  • Gateway access and approval rules move to the interop profile (91c2404).
  • Self-contained normative text (7176917): the regex profile and the merge line alignment no longer refer to regex-lite or to the executable model. The alignment is a numbered procedure with pseudocode.
  • path_equivalence moves from Core Read to Collection Semantics (ffbaf68).
  • The rc series closes (26ee1ea): rc.6 is the last rc that adds or changes behavior; 0.3.0 is stable when no Provisional paragraph remains in chapters 00–14 and the release contract's implementations hold verified claims. spec_version is exactly "0.3.0". release/v0.3.0.md lists the 13 remaining Provisional paragraphs.

Behavior changes to note

  • Rebasing body_edits is a merge/0.1 requirement. Core Write alone applies edits directly or reports body_base_unavailable.
  • An externally moved file is reported as record_renamed only by implementations that claim move_detection/0.1; others report a delete and a create.
  • Claim profile ids changed: merge → merge/0.1, type_packs → type_packs/0.1, move detection left watch, and core_read.path_equivalence → collection_semantics.path_equivalence. Chapter 13 has the migration table.

Checks

  • scripts/check_v03_tests.py: 213 executable tests, 270 adapter-target tests.
  • scripts/check_test_levels.py, the TaskNotes migration fixture check and build_runtime_pack.mjs (no diff).
  • Package suites: interop, cel-host, runtime-contracts, runtime-executor, testbed (no generated-asset diff).
  • Site build, no dangling anchors.

The reference runtime passes the new fixtures (357 of 359; the two pending fixtures were pending before).

slugify, link targets by path key, link and tag syntax, code in the body,
frontmatter delimiters, the order_by value order and path tie-break, one
write order in Chapter 12 with the create membership path, and the
path_value_normalized warning. Fixtures and requirements for each; SN-103.
The pack manifest, lock file, assessment, and apply sections move verbatim
from Chapter 05A. The profile ID is now type_packs/0.1, in the manifest,
claim schema, checker, and fixtures.
Move detection and the three-way record merge move verbatim to
concurrent-edits/0.1.md as profiles move_detection/0.1 and merge/0.1.
Record identity moves to Chapter 03 and writer format fidelity to
Chapter 12. Core Write no longer depends on the body merge: rebasing
body_edits is a merge/0.1 requirement, and watch reports an externally
moved file as a rename only under move_detection/0.1.
Chapter 05A keeps what a collection tool needs: a lookup returns every
implementation, none is chosen silently, and implementing a contract
grants no access. What a gateway exposes and what an approval pins is
section 10 of interop/0.1.md.
…o an implementation

The regex-lite crate and diff-match-patch's bisect become informative
notes. The line alignment of the body merge is written out as a
procedure, checked against the executable model.
Core Read is now a per-record profile: it computes no path keys and
reports no path_collision.
… checklist

rc.6 is the last release candidate that adds or changes behavior. 0.3.0
is stable when no Provisional paragraph remains in chapters 00-14 and the
release contract's implementations hold verified claims. spec_version is
exactly 0.3.0. Chapter 13 lists the rc.6 rules and profile ID changes.
@callumalpass
callumalpass merged commit 47d257d into main Nov 12, 2026
20 checks passed
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