Document Editor

The editable document surface — a styled prose canvas (a --surface page floating on --bg) with a measured line-length, a left gutter for line markers and CommentPin anchors, and the full OCSS type system applied to headings, paragraphs, lists, blockquotes, and code. The prose region is contentEditable purely so the shell looks and behaves like an editor in isolation. Presentational only: the real engine (TipTap/ProseMirror) wraps this surface in the consuming app and owns the document model — this component never imports an editor engine.

Live surface

Click into the canvas and type — the page lifts to the accent edge when focused. Toggle read-only and the gutter to see every state.

Drafting

Working Draft · OCSS-1

Open Child Safety Specification

OCSS is a single umbrella standard for child-safety signals. It has two layers: a rule taxonomy that defines what a signal means, and a Trust Framework that defines how signals move and who is trusted.

1. Conformance

Every signal MUST carry a two-layer signed envelope. Legacy single-layer tokens are accepted. The accreditation tier is self-assertedindependently audited before a vendor joins the eIDAS-style Trust List.

1.1 Envelope requirements

  • The outer envelope MUST be signed by an accredited issuer.
  • The inner payload MUST be a typed OCSS Rules record — see internal/domain/models.go.
  • Trust is routed, not asserted.
  1. Resolve the issuer against the Trust List.
  2. Verify the outer signature.
  3. Decode the inner payload and apply the rule at enforcement time.
A signal that cannot be traced to an accredited issuer is treated as absent, never as permission.OCSS Trust Framework · §4

2. Reference request

A conforming verifier resolves the signal with a single call:

POST /v1/signal/verify
{
  "envelope": "<base64url signed envelope>",
  "context":  "dns | mdm | router | app"
}

This is a working draft. Inline marks above are RedlineText runs; the numbered teardrop is a CommentPin anchor. Both ride the prose baseline.

Anatomy

The page is a --surface sheet on the --bg canvas. Text is held to a measured ~68ch column; the gutter is the rail where line markers and comment anchors live. Headings use the display serif, body uses the text sans, and code uses the mono — all from the OCSS type system.

Boundary

This is the look of the editor only. The contentEditable region is a styled demo; the production editor engine replaces it and owns selection, the document model, and accept/reject of tracked changes. DocumentEditor takes its content as children and is never coupled to an engine.