Skip to content

docs(deed): family-1 mapping spec corrections — booleans, uuid5 names, escapes (grammar-faithful) - #841

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/837-clade-spec-corrections
Sep 17, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
fix/837-clade-spec-corrections

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Faithfulness pass against the normative grammar (deed.anbf v1.0.0) after #840 merged — three gotchas caught while implementing the validator:

  1. Booleans: grammar recognises ONLY #t/#f (strict lowercase); the worked example wrote :present true — a parse ERROR. Field table + example fixed; transform rule added.
  2. uuid5 body = NAME, not hex: grammar states the body is the RFC 4122 §4.3 name input; emitted literal is #u5"github.com/hyperpolymath/rsr-template-repo", never derived hex. P-1 aligned; oracle CI-reproducible (stdlib uuid.uuid5(NAMESPACE_URL, …) == the instance's stored value, verified).
  3. Escapes: only \" \\ \n \t legal; \r/\uXXXX are parse errors; non-ASCII raw UTF-8. P-3 states the emission rule.

Refs #837. One file, five targeted edits; no normative text changed.

@coderabbitai

coderabbitai Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 2 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: eab842cc-d63c-4bf4-99ca-31406838c215

📥 Commits

Reviewing files that changed from the base of the PR and between 598d6a5 and 866390d.

📒 Files selected for processing (1)
  • 1-formats/deed/mappings/clade-to-repo-deed.adoc

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit 8169053 into main Sep 17, 2026
15 of 22 checks passed
@hyperpolymath
hyperpolymath deleted the fix/837-clade-spec-corrections branch September 17, 2026 22:06
@sonarqubecloud

Copy link
Copy Markdown

hyperpolymath added a commit that referenced this pull request Sep 17, 2026
…en translator (campaign #837) (#849)

The campaign's tooling half arrives alongside the merged spec half
(#840–#848). One property defines the lane: **nothing invalid ever
lands** — emission is gated by validation, and CI gates the repo.

## `deed_lint.py` — the validator

Stdlib-only, written against `spec/abnf/deed.anbf` v1.0.0 (current until
the canonical-file ruling):

- SPDX header required; exactly one form; full input consumed (trailing
content is an error)
- head=`estate-deed|repo-deed|estate-atlas-deed|praxis-deed`;
`:schema-version` STRING exactly once
- filename↔head dispatch with the exact-stem-first side condition
(`estate_chora.deed` can never parse as repo-deed; dots in stems
preserved — final-suffix split only)
- booleans ONLY `#t`/`#f`; bare `true/false/yes/no` rejected as values
(they lex as symbols — the grammar's note is enforced here as a
value-level semantic)
- `#u5"name"` literals (body is the RFC 4122 §4.3 NAME input)
- strings: exactly 4 escapes (`\" \\ \n \t`); `\r`/`\uXXXX` parse
errors; raw control bytes rejected
- separators SP/line-end/comment only — tabs invalid (K9-consistent);
bare CR rejected
- 14-case embedded corpus (`--self-test`) mirrored to
`fixtures/valid|invalid` + one REAL translated deed
(`rsr-template-repo_chora.deed`)

It has already caught two real things: my own mapping spec's `:present
true`/`#u5"<hex>"` errors (fixed in #841 before merge) and a
validator-side guard bug (empty clauses rejected against grammar).

## `a2ml_to_deed.py` — the translator

Implements the specs in `1-formats/deed/mappings/` — and ONLY those. It
cannot invent mappings:

- **P-1**: uuid re-derived via RFC 4122 §4.3 (URL namespace) and
compared to the instance — mismatch writes nothing. Oracle verified:
`uuid5(URL, "github.com/hyperpolymath/rsr-template-repo") ==
a5ea1382-a34c-5334-8a46-a2ebe904c810`
- **refuse-to-emit** without `--beholding-chora` (no invented
identifiers)
- booleans→`#t`/`#f`; enums→symbols against closed sets; slot doctrine
(`""`/`()`) for missing-but-tabled fields; SPDX passthrough
- untabled fields/sections FAIL CLOSED (P-2a) — live catches during
development: `[axis-3-audit-rules]` (#846), `[methodology]` (#847),
`[rsr-repo-skeleton]` (#848) → review → table extended → translate.
Exactly the frame's prescription
- **POST-CONDITION**: emitted text is linted; failure writes nothing

Modes: `full` (six instance files → one deed), per-family
(`clade|agentic|neurosym|playbook`, meta/ecosystem merge via full),
`state-scan` (family-3 classification report — the ruling's paperwork,
no translation), `scorecard-scan` (family-5 census + absolute-path leak
TSV).

## Findings delivered, not silently fixed

- standards' own `.machine_readable/CLADE.a2ml` **lacks `primary-name`**
— CLADE-006 territory; flagged, not patched (reported on #837)
- scorecard corpus census + leak TSV generated from the scanner (28
files here, 48 absolute-path leak lines — full list rides #837)

## CI

`deed-conformance.yml`: self-test → fixtures → lint every committed
`*.deed`, triggered on grammar/tools/deed changes. checkout pinned by
SHA, `persist-credentials: false`.

Refs #837; does not close it (campaign still open: conversion wave,
remaining rulings).
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