Skip to content

Align mdx.org.ai / primitives.org.ai / mdxld.org with the ratified MDX–MDXLD frame #3

Open

Description

@nathanclevenger

Tracking issue for aligning the three MDX/MDXLD-facing properties with the frame ratified 2026-07-27, and for the two upstream conversations that alignment opened.

The frame

MDX is an open standard authored by others — the MDX community, mdxjs.com. MDXLD is ours: an extension/superset of MDX, plus a superset of YAML-LD in the frontmatter ($id / $type / $context), with $context always https://schema.org.ai, unversioned.

Markdown  ──▶  MDX             ──▶  MDXLD
(theirs)       (theirs, open)       (ours, superset)

JSON-LD   ──▶  YAML-LD         ──▶  MDXLD frontmatter
(theirs)       (theirs, open)       (ours, superset)

Exactly parallel to schema.org → schema.org.ai and auth.md → id.org.ai. Per the owner's amendment: "G1 is other standards bodies; G2 is our superset and new standards" — the capitalised term-of-art Standard stays reserved for externally governed G1 bodies; our authored G2 work may be called our new standards.

Pull requests

PR Property Worst thing it fixes
dot-org-ai/mdx.org.ai#2 mdx.org.ai "Every MDX document naturally contains these four distinct layers" — MDX defines no frontmatter at all. The page described MDXLD and called it MDX.
dot-org-ai/primitives.org.ai#46 primitives.org.ai mdxjs.com, foundation.org.ai, schema.org.ai and mdx.org.ai each appeared zero times repo-wide. MDXLD and MDXUI — two of the ratified eleven primitives — were absent from the site entirely.
ai-primitives/mdxld.org#3 mdxld.org The site was serving the unmodified docs-template under another property's identity, with a "MDXLD v1.0 Released" banner.

All three now: (1) state MDX is an open standard by the MDX community and link mdxjs.com; (2) state MDXLD is our superset of MDX with YAML-LD-superset frontmatter and $context = https://schema.org.ai; (3) carry a footer link The Org.AI Foundation → https://foundation.org.ai; (4) have exactly one role, with canonicals that agree.

Upstream issues (superset-and-engage)

Issue Where Ask
mdx-js/mdx#2690 MDX Docs: what is MDX's position on the meaning of frontmatter? Their docs say frontmatter isn't supported by default and comes from remark-frontmatter, but never state that MDX assigns it no semantics and delegates to the host — the one thing an extension author needs to cite. Narrow question attached: is there a recommended convention for extension authors defining frontmatter key vocabularies?
w3c/yaml-ld#238 YAML-LD The $-sigil convenience context is published (json-ld.org/contexts/dollar-convenience.jsonld, live, WG-endorsed) but became undocumented when their #72 removed the Best Practices section on 2026-02-22 and the promised migration to JSON-LD-BP never happened. Asks for an informative note, explicitly not a syntax change and explicitly off the CR path.

Both filed on the product.md#1 posture: conform on the shared core, name our extensions as proposals to converge on rather than deviations to erase, and be concrete enough that engagement is possible.

The finding that changed our own copy

Researching the upstream issues corrected us on two points, and all four PRs/commits reflect the correction:

  1. MDX is not a superset of Markdown, and never claims to be. The word "superset" appears nowhere in their docs; /docs/what-is-mdx/ lists the markdown features that don't work in MDX (indented code, autolinks, raw HTML). Our copy had asserted it. MDXLD's promise to MDX is strictly stronger than MDX's promise to Markdown — which is a better argument anyway, and is what the pages now say.
  2. $id and $type are not our invention and not a deviation. JSON-LD 1.1 §4.1.6 permits keyword aliasing via the context, and the JSON-LD community publishes exactly that alias set. We were claiming a sanctioned convention as ours. $context is the real deviation, because @context is the one keyword that cannot be aliased — which is why dollar-convenience.jsonld contains no $context entry. The mechanical cause (MDX compiles to ESM; @context is not a legal JS identifier) and the one-rename compatibility shim are now stated on every property.

Conceding the part that isn't ours is what makes the part that is ours credible.

Canonical arrangement — owner ruling wanted

The hierarchy names docs.org.ai/mdxld as MDXLD's canonical entry. I did not point anything at it: docs.org.ai does not serve. It resolves to 207.207.210.107 / .229 and fails the TLS handshake (SSLV3_ALERT_HANDSHAKE_FAILURE). Not merely unbuilt — unreachable. A rel=canonical to an origin that cannot complete a handshake asks search engines to drop the page that works in favour of one that does not resolve.

Implemented instead, and defensible on the ratified text rather than only as a fallback. §2 Door 4 · "The format" gives both mdx OWNS … MDXLD … PRIM MDXLD. Keystone and docs OWNS /mdxld — the format spec, the $ sigil rules, the reserved-key list. Under L1 those are two referents at two grains: mdx.org.ai owns the format; docs.org.ai/mdxld owns the specification document.

Property Role Canonical
mdx.org.ai MDXLD's documentation home self
mdxld.org serving surface front page → https://mdx.org.ai; deeper pages self
primitives.org.ai definitional index of the primitives self; its MDXLD card links out to mdx.org.ai rather than restating the format
docs.org.ai/mdxld the specification document when built, and when the host serves

Ruling wanted: confirm this, or say the canonical should wait for docs.org.ai to come up.

Also wanting a ruling

  1. mdxld.org's place in the hierarchy. Proposed by exact parallel to Amendment A1's ruling on product.md: a serving surface, outside the 144, the status md.org.ai and cdn.org.ai hold. .org.ai-layer work on a .org name, which the Layer rule permits. The count stays 144.
  2. primitives.org.ai states its primitive count four contradictory ways — 9 home cards, "seven core primitives" in llms.txt, 7 in the meta description, 22 in the sidebar — and none is the ratified eleven. The nav says Business where the list says Business-as-Code, Agent for Autonomous Agents, Human for Human-in-the-Loop, and files Digital Workers/Digital Tools under "Infrastructure". PR #46 removes the false "seven" and adds MDXLD/MDXUI but deliberately does not pick a number.
  3. ui.org.ai does not resolve, so MDXUI is named without a link. An honest blank beats a dead link, but MDXUI is one of the eleven and currently has no home.
  4. Should ai-primitives/mdxld.org move to dot-org-ai? It is the only one of the three outside the org.

Hazards found, not fixed

  • primitives.org.ai contains a self-referential submodule at ai/primitives/ — the repo mounted inside itself, pinned 387 commits behind (2026-01-13) — whose wrangler.jsonc is byte-identical to the live one: same worker name, same route. Running pnpm deploy from inside it overwrites production with the January snapshot.
  • mdx.org.ai's main is not Prettier-clean. prettier --write docs/**/*.mdx touches ~94 unrelated files. PR Align mdx.org.ai with the ratified MDX/MDXLD frame #2 reverted all of that; worth a formatting-only PR.
  • primitives.org.ai CI runs pnpm test:unit, which is undefined at the root, so the test step errors. main has no branch protection, so nothing gates merges.
  • AGENTS.md in both repos mandates direct git push to main, which contradicts primitives.org.ai's own CONTRIBUTING.md and is a poor fit for live-site copy carrying a canonical decision. All three changes went through PRs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions