NOTIFIER
SERVICE CONTRACT · VIEW: GOV
Axiom
NOTIFIER delivers governed cross-scope messages. Every delivery ledgered. Every route declared.
Constraints
MUST: Wire INTEL — never deliver without context MUST: Scope determines the route — notify: header in GOV MUST: Every delivery ledgered — sender, receiver, timestamp, content hash MUST: Inline at ledger write — no polling, no delay MUST: Inbox per principal — governed, bounded, auditable MUST NOT: Deliver without governed route MUST NOT: Leak content across scope boundaries without declared notify: route
Capabilities
CROSS_SCOPE_DELIVER, DELIVERY_LEDGER, INBOX_MANAGE, WIRE_INTEL
COVERAGE: 255/255
SPEC
Purpose
NOTIFIER is the governed internal messaging service.
User-to-user notifications delivered inline at ledger write time. Every message is scoped, every delivery is ledgered, every route is declared in GOV via the notify: header. No polling. No ad-hoc messaging. Scope determines the route.
Structure
Leaf SERVICE scope. No governed child scopes.
Delivery routes declared via notify: field in CANON.md headers.
Required closure artifacts per scope:
CANON.md, README.md, NOTIFIER.md, VOCAB.md, ROADMAP.md, COVERAGE.md, LEARNING.md.
Routes
web_docs: https://hadleylab.org/
web_surface: https://hadleylab.org/SERVICES/NOTIFIER/
magic: magic://hadleylab.org/SERVICES/NOTIFIER/
Delivery Contract
1. GOV declares routes — notify: field in CANON.md headers
2. Compiler emits notify targets to CANON.json
3. TALK service triggers delivery at ledger write time
4. Worker delivers inline to principal inbox (KV-backed)
5. Multi-target fan-out: notify: DEXTER, FATIMA → both inboxes
6. Every delivery hashed and ledgered — sender scope, receiver scope, timestamp
7. Inbox per principal — bounded, auditable, governed
Ecosystem Connectivity
- Upstream:
notify:header in any CANON.md declares the delivery route. - Compiler:
build-surfaces emit_canon()propagates notify targets to CANON.json. - Runtime: TALK service triggers delivery; worker writes to inbox KV.
- Ledger: every delivery event recorded — sender, receiver, content hash, timestamp.
Pages
| Page | Sections |
|---|---|
| Overview | Purpose, Structure |
| Delivery | Routes, Delivery Contract |
| Ecosystem | Ecosystem Connectivity |
Default: Overview.
INTEL
LEARNING
ROADMAP
Now
- [ ] Wire CONTRIBUTE:REVIEW → notify contributor that feedback was acted upon
Next
- Inbox UI surface in TALK widget (read + dismiss)
- Multi-target fan-out: `notify: DEXTER, FATIMA` from single ledger write
- Delivery receipts — hash confirmation from receiver principal
- [ ] Email delivery channel (MailPlus on NAS → contributor email resolved via CONTACTS)
- [ ] GitHub notification channel (issue/discussion mention via gh api)
VOCAB
| Term | Definition |
|---|---|
| NOTIFIER | The governed cross-scope delivery service. |
| NOTIFY | Primitive: the delivery trigger declared in GOV via `notify:` header. |
| INBOX | Per-principal message store. KV-backed. Bounded and auditable. |
| ROUTE | The declared path from sender scope to receiver principal. |
| DELIVERY | A governed message event — scoped, hashed, ledgered. |
INHERITANCE CHAIN
SERVICES
SERVICES compose primitives — INTEL + CHAT + COIN. Every service governed. Every scope discovered.
MUST: Maintain TRIAD integrity (CANON.md + VOCAB.md + README.md)
MUST: Treat SPEC as scope identity (`{SCOPE}` directory), not as a file
MUST: Every SERVICE scope include ROADMAP.md, COVERAGE.md, LEARNING.md, and `{SCOPE}.md` as governed content surfaces
MUST: Discover SERVICE scopes from filesystem only (no manual catalog)
MUST: Keep http:// and magic:// on the same namespace (transport differs, scope path matches)
MUST: CANON.md = axiom + universal constraints (no service names, no paths, no implementation)
MUST: README.md = how to run the CANON (nothing else)
MUST: {SCOPE}.md = SPEC — the interface (purpose, routes, projections, ecosystem)
MUST: SHOP.md = public projection file (per scope, filesystem-discoverable)
MUST: VAULT.md = private projection file (per scope, filesystem-discoverable)
MUST: Runtime implementation remains under ~/.canonic; this workspace is governance-first
MUST NOT: Hardcode service names in CANON constraints (law speaks universals)
MUST NOT: Define ungoverned terms outside VOCAB.md
MUST NOT: Treat `{SCOPE}.md` as SPEC identity
MUST NOT: Move architecture/lifecycle into README
MUST NOT: Leak private projections to public surfaces
MUST NOT: Maintain duplicate mapping tables outside generated manifest outputs
MUST NOT: Add runtime jargon to governance contracts
MUST: Ledger-consuming services declare source ledgers, scope filters, and closure gates
MUST: Learning governance remains live — closure claims require fresh DISCOVER → GENERATE → RELINK evidence
hadleylab-canonic
HADLEYLAB ships software. Every app, book, paper, deal, and patent is PROOF that MAGIC works. COIN = WORK. LEARNING = COMPUTE.
MUST: Every app, book, paper, deal, or patent is evidence of MAGIC MUST: All scopes inherit canonic-canonic/CANONIC.md governance MUST: All users governed under USERS/ via SERVICES/USER MUST: Cross-index INTEL across users (INTEL.md) MUST: Shared events propagate to ALL affected user dashboards MUST: Maintain governance workspace purity (.md files only) MUST: Ledger all COIN (validated work) through MAGIC 255 MUST: Compile all INTEL from governed sources MUST: Keep frontend/runtime implementation under ~/.canonic (hidden runtime) MUST: Surface governed TALK, Library, and SERVICES scopes (no orphan content) MUST: Derive nav labels from governed scope names (no hardcoded strings) MUST NOT: Publish without governance (CANON.md required) MUST NOT: Duplicate primitives — compose from INTEL, CHAT, COIN MUST NOT: Silo intelligence inside a single user when multiple are affected MUST NOT: Expose VAULT contents outside NDA scope MUST NOT: Store runtime artifacts in governance workspace
canonic-canonic
SPEC is governance. `canonic-canonic/` is the spec root.
MUST: Keep this repo governance-only (.md/.pdf) MUST: Publish workspace mapping in CANONIC.git (no hardcoded repo lists) MUST: Preserve three primary lanes: FOUNDATION, INDUSTRIES, MAGIC MUST NOT: Commit runtime artifacts here (runtime belongs in ~/.canonic/) MUST: Sell MAGIC tiers — the product, not the proof (proof is hadleylab-canonic) MUST NOT: Embed beta-test app URLs in platform page content