Skip to content

Propose: an additive client-side notation module (ckn) over the shipped verb surface #7

Description

@styk-tv

Summary

conceptkernel.org describes cklib as a notation-ready dispatch client, and Concept Kernel Notation — the nine strands χ · ρ · σ · α · γ · π · δ · φ ⟫ε — is published there as the canonical way to say what a kernel is and what to lay down in it. This proposes an additive module (working name ckn) that takes a CKN expression and assembles a construct on a live kernel by compiling it to the verbs that already ship in ck.js. Notation in, sealed construct out — no new transport, no new authority.

Motivation

Today an app or agent builds a multi-step construct by hand: a threaded sequence of create / link / transition / verify calls. A notation expression captures that same intent declaratively, in one form. A thin compiler closes the gap between the two without changing the surface beneath it — and gives every client (browser and Node) the same "one expression → one construct" surface.

Design sketch — grounded in the shipped surface

The module sits above ConceptKernel and composes only what ck.js already exposes:

Strand Compiles to (existing method)
χ / ρ — instances + properties k.create(type, body)
edges k.link(source, predicate, target)
τ — transitions k.transition(id, toState) (sealed-map gated server-side)
π — attestation k.verify(id) / k.provenance(id)
genome-plane declaration (new χ/ρ/σ/α/γ) k.propose(op, detail)k.vote(iri, value)k.apply(iri)

Declaring a new capability is a consented, multi-party act (propose ▸ vote ▸ apply), never a direct write — so the genome plane compiles to governance, and degrades honestly to gov_plane_unavailable where that plane isn't reachable, exactly like the existing _gov path.

The compiler's output is an ordered dispatch plan — a list of {verb, typed-payload} steps — not a graph. This preserves the invariant ck.js states in its own header: there is no RDF, quad store, or query engine on the client. The module adds notation sugar; it emits no query language and holds no authority of its own (pgCK remains the only authorization boundary — the handle is not).

Scope for a first slice

  • Instance plane first — buildable entirely on today's shipped verbs.
  • Genome plane gated — compiles to propose/vote/apply; honest degrade until reachable.
  • No client RDF — the AST is a dispatch plan, so the L1 store-not-graph invariant holds.

What I'm asking

  1. Does a notation compiler belong in cklib as an additive module — e.g. a notation subpath export beside the current . / ./client exports — keeping ck.js unchanged?
  2. Preferred module boundary and naming.
  3. Grammar scope for the first instance-plane slice.

I have a working reference implementation of this pipeline (parse → plan → assemble) validated end-to-end against a live kernel — an instance sealed with a real proof digest, sealed-map transitions, and re-verification — and I'm glad to contribute it or adapt it to whatever boundary the maintainers prefer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Priority 1 — this releaseenhancementNew feature or requestquestionFurther information is requested

    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