writeonce/docs/examples/employee-list/wo.toml
shoney.arickathil 6a234c552a docs: employee-list sample -- program B's manifest pair (9c/9d target)
- docs/examples/employee-list: attaches to the running employee
  program; modes list / report (byte-identical to A's own) /
  staff <dept> / probe-write (registered read-only, insert must trap
  access-denied, exit 4, A unchanged)
- the manifests ARE the design, written as a pair: A's [share] gains
  listen = unix socket beside WO_DATA plus [[share.clients]] naming
  B's public-key fingerprint with rights = "read"; B's
  [connect.employee] carries A's ipc string, A's PINNED fingerprint,
  and project = ../employee for compile-time shapes -- the connect
  section's name is the code's namespace (employee.Employee)
- fingerprints are PASTE-HERE placeholders by design: keys generate
  into WO_DATA at first boot (9d), tomls carry fingerprints only,
  printed by --identity
- sample-first: compiles after 9/9b/9c/9d; README maps each mode to
  the acceptance line it exists for; 9c/9d stories now name this
  sample as their workload

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 12:34:19 +02:00

29 lines
1.4 KiB
TOML

name = "employee-list"
version = "0.1.0"
description = "Program B of the cross-program story: attaches read-only to the running employee program (A) over its IPC channel after keypair authentication, and lists/aggregates A's tables over the wire"
[runtime]
wo = ">= 0.1"
[build]
runtime = "../../../runtime/wovm"
# Iteration 9c/9d surface (target — compiles once those land).
# The section NAME is the namespace this program's code uses: [connect.employee]
# makes A's tables reachable as `employee.Department` / `employee.Employee`.
[connect.employee]
# A's IPC string (9c fork 1: unix socket, listening beside A's WO_DATA;
# A declares the same path in its [share] section).
ipc = "unix:../employee/target/data/employee.sock"
# A's PINNED public-key fingerprint (9d): B refuses to speak to anything on
# that socket path that cannot sign A's challenge with this key — the
# impostor-socket acceptance line. Printed by `employee --identity` after
# A's first boot; paste it here. Never a private key, never a secret.
public_key = "ed25519:PASTE-EMPLOYEE-FINGERPRINT-HERE"
# Where B's compiler reads A's table shapes at compile time (9c fork 2's
# milestone lean: project-directory reference). The runtime handshake
# re-verifies the shapes against A's live class table at attach — a stale
# checkout refuses the attachment with both shapes named.
project = "../employee"