Geodineum

SCN: build-with-gnode

Model stateless-yet-state-aware via shared ValKey: (1) auth as gnode_client_<name> least-priv from manifest → (2) register geometric entity (discover by capability not name) → (3) speak = XADD unified stream, poll {site}:res:<id> EX 10 (lane invisible) → (4) heartbeat SETEX 120; absence = down. No in-process state another node needs.

Canon map (overlap → this repo's CONTRACTS/ wins; numbers NEVER in prose — fetch published schemas): wire+cmds → gNode COMMAND_SCHEMA.md ⊕ runtime describe · contract → gNode CONTRACT{,.scn}.md · registration+ACL → CONTRACTS/SERVICE_ONBOARDING.md (.geodineum/, --profile REQUIRED else wrong vector, --environment REQUIRED else DTAP-gated out; --owner tenant xsite) · intent → gNode registration_intent.rs ({ns}:gnode:registrations, 120s reconcile) · routing → gNode docs/architecture/INTER_SERVICE_ROUTING.md (_rt/_rr) · format → COMMAND_SCHEMA §Format · tera → render_template/render_string · daemon-cfg → gNode docs/operations/CONFIGURATION.md · svc-cfg keyspace → manifest config: (default {site}:<name>:config:*) · heartbeat → CONTRACTS/heartbeat.md (node seg, census-in-same-commit) · deploy → own geodeploy.yaml, ref services/hello-world/ · cli → manifest cli:geodineum --help · install → manifest install:sudo geodineum service install <repo>/geodeploy.yaml · backup → manifest backup: → BAK · perms → CONTRACTS/permission-model.md · keyspace → CONTRACTS/keyspace-model.md (braces load-bearing) · polyglot FCALL → gNode docs/reference/FCALL_COOKBOOK.md · affordances → config/ecosystem_tools.yaml metadata.affordances · node-tier → CONTRACTS/NODE_ONBOARDING.md · COMMS → geodineum comms contract · receipts → CONTRACTS/receipt-stream.md · extensions → gNode docs/writing-extensions.md (re-sign SAME commit).

Checklist (gSchedule shipped missing last 3 — list exists because of that): .geodineum/gnode_services.yaml → onboard w/ --profile --environmentruntime.service → triggers+build → config/<name>.serviceinstall:/uninstall:/health_check → heartbeat+census-row → {name}:comms:config → CONTRACT.md+.scn (pair, same commit) → config:cli:backup:.

LLM order this → gNode CONTRACT.scn.md → COMMAND_SCHEMA.md (touched parts) → relevant CONTRACTS/. Runtime > prose: describe · FCALL_RO GNODE_SCHEMA_GET <tier> · service_describe.