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.

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

    P2Priority 2 — soonenhancementNew feature or requestquestionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions