Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
293 commits
Select commit Hold shift + click to select a range
64357ef
feat(harness/core/job): fenced read-modify-write claim + stale-finish…
Grivn Jun 4, 2026
2c00317
feat(harness/core/job): atomic budget-as-resource reserve (S6 TOCTOU …
Grivn Jun 4, 2026
8dc10f4
feat(harness/core/job): provider idempotency + end-to-end eval lane t…
Grivn Jun 4, 2026
e69873e
fix(harness/core/job): reject negative reserve cost (close budget-lau…
Grivn Jun 4, 2026
6b2c9b2
fix(harness/core/server): close P3 adversarial findings — scope-enfor…
Grivn Jun 4, 2026
847c4b6
fix(harness/core): P3 adversarial round-2 — disjoint outbox id namesp…
Grivn Jun 4, 2026
8f883d3
fix(harness/core): P3 adversarial round-3 — reject empty external_id …
Grivn Jun 4, 2026
40aa0ee
fix(harness/core): P3 adversarial round-4 — job lane claims only job …
Grivn Jun 4, 2026
3c68e3c
fix(harness/core/server): recoverable decision side-effects via durab…
Grivn Jun 5, 2026
b7de3fe
feat(harness/core/replay): deterministic masked replay
Grivn Jun 5, 2026
d68635d
feat(harness/core/replay): shadow-mode candidate diff (no commit, no …
Grivn Jun 5, 2026
eb08d32
chore(harness/core/rule/wasm): pin wazero@v1.11.0 + a real prebuilt W…
Grivn Jun 5, 2026
ca8b874
feat(harness/core/rule/wasm): wazero backend (no WASI, mem+deadline b…
Grivn Jun 5, 2026
12872f3
feat(harness/core/rule): wasm promotion governance (hash + import-sec…
Grivn Jun 5, 2026
0dd5302
feat(harness/core): end-to-end control plane with a real WASM rule ba…
Grivn Jun 5, 2026
58e7afe
fix(harness/core/rule/wasm): commit the write-bearing rule module (ge…
Grivn Jun 5, 2026
e02c795
fix(harness/core/rule): close P5 adversarial findings — reject 2nd im…
Grivn Jun 5, 2026
898bb7c
fix(harness/core/rule): reject undercounted import section (parser mu…
Grivn Jun 5, 2026
6ceb74e
fix(harness/core/rule): overflow-safe name-length bound in wasm impor…
Grivn Jun 5, 2026
f1d4ef0
fix(harness/core/server): reject client-forged *.proposed/*.diagnosti…
Grivn Jun 5, 2026
03e5ed6
fix(harness/core/kernel): reject duplicate write refs in one op (clos…
Grivn Jun 5, 2026
5685e72
fix(harness/core/server): close two S7 silent-drop holes (propose-nil…
Grivn Jun 5, 2026
080cf55
fix(harness/core/server): key the job receipt by the disjoint outbox …
Grivn Jun 5, 2026
22d0c45
fix(harness/core/job): exact fence_until + seconds lane clock in demo…
Grivn Jun 5, 2026
5d7267a
fix(harness/core/replay): sound shadow diff — key by IngestSeq + comp…
Grivn Jun 5, 2026
9e85455
fix(harness/core/rule/wasm): fresh instance per call (enforce S12 pur…
Grivn Jun 5, 2026
f92efe4
fix(harness/core/config): scope a resolved rule's Handles to its boun…
Grivn Jun 5, 2026
73b0809
fix(harness/core): carry proposal origin + enforce emit-type, stop br…
Grivn Jun 5, 2026
f005ae0
fix(harness/core/replay): faithful Shadow — run candidate rules over …
Grivn Jun 5, 2026
2b4009d
fix(harness/core/replay): Shadow dispatch-time view timing + compare …
Grivn Jun 5, 2026
5fae242
fix(harness/core/replay): Shadow compares decision Reasons (close aud…
Grivn Jun 5, 2026
df384b5
fix(harness/core/replay): handle json.Marshal error in canonicalRuleR…
Grivn Jun 5, 2026
6da92be
test(daemonemit,harness/schema): parity-lock the two event-validation…
Grivn Jun 6, 2026
446fce6
refactor(harness/core): remove superseded dispatch engine + callback …
Grivn Jun 6, 2026
e29dc05
docs(harness/core): mark proof-only spec capabilities (no behavior ch…
Grivn Jun 6, 2026
6c34fc7
feat(harness/core/server): NewFromConfig — one boot front door over R…
Grivn Jun 6, 2026
c636256
refactor(harness/internal): rename projection->hostsurface (reserve '…
Grivn Jun 6, 2026
15054ea
docs(harness/lifecycle): stop calling the file event-ledger 'the kern…
Grivn Jun 6, 2026
8fe13b8
refactor(harness/lifecycle): one atomic-write trunk + named SecondTru…
Grivn Jun 6, 2026
0163815
refactor(harness/daemon): one canonical Job struct (drop Runtime/jobF…
Grivn Jun 6, 2026
4afc25d
feat(harness/cmd): group CLI verbs into spine vs advanced (help-only)
Grivn Jun 6, 2026
41759e5
docs(harness/ops): fold harness/eval notes into ops (disambiguate the…
Grivn Jun 6, 2026
0d72aed
test(harness/internal/ringguard): classify core (Ring 1) + RELEASE↛ha…
Grivn Jun 6, 2026
490827b
feat(harness/lifecycle/corebridge): schema.Event <-> contract.Observa…
Grivn Jun 6, 2026
cd0904c
feat(harness/lifecycle/coreengine): kernel-governed memory entry writ…
Grivn Jun 6, 2026
9311f96
style(harness/lifecycle/coreengine): gofmt test alignment
Grivn Jun 6, 2026
b68fcf6
feat(harness/app): lower the memory proposal apply through the kernel…
Grivn Jun 6, 2026
1fe44f8
refactor(harness/lifecycle/coreengine): generalize to AdmitCreate(kin…
Grivn Jun 6, 2026
e49272b
feat(harness/app): lower the eval promotion apply through the kernel …
Grivn Jun 6, 2026
521b2c7
feat(harness): lower the coordination apply through the kernel (P2.2,…
Grivn Jun 6, 2026
3509328
feat(harness): fold mnemon-control into mnemon-harness server/demo + …
Grivn Jun 6, 2026
5f7748d
docs(harness/control/contracts): point the glossary at canonical core…
Grivn Jun 6, 2026
83e5f57
fix(harness/app): close P2 adversarial findings — kernel-govern the C…
Grivn Jun 6, 2026
eb25338
fix(harness/profile): ResolveEntryID is a cleanID fixed point (P2 re-…
Grivn Jun 6, 2026
3501d25
feat(harness): channel productization — ChannelBinding + Authenticato…
Grivn Jun 6, 2026
3a575fb
feat(harness/channel): P0 pin the store-split gap — DefaultStorePath …
Grivn Jun 6, 2026
e834fd4
feat(harness/channel): P1.1 unify the canonical control store onto on…
Grivn Jun 6, 2026
7651685
feat(harness/channel): P1.2 server-owned Runtime; both surfaces lower…
Grivn Jun 6, 2026
0d850e2
test(harness/channel): P1.4 walking skeleton — one runtime, two surfaces
Grivn Jun 6, 2026
6332df7
feat(harness/channel): P1.3 ownership modes — single-writer + explici…
Grivn Jun 6, 2026
b560768
feat(harness/channel): P2.1 in-memory binding authorizer
Grivn Jun 6, 2026
0ab2f7a
feat(harness/channel): P2.2 one Tick driver — sync-tick after ingest …
Grivn Jun 6, 2026
dd959eb
feat(harness/channel): P2.3 status as real path evidence + P2 gate tests
Grivn Jun 6, 2026
c89e43f
fix(harness/channel): P2 adversarial — close store-split (CWD) + bind…
Grivn Jun 6, 2026
cd3eab9
feat(harness/channel): P3.1 channel binding-file loader
Grivn Jun 6, 2026
4216902
feat(harness/channel): P3.2 server boot from binding file + token-fil…
Grivn Jun 6, 2026
4507d2d
feat(harness/channel): P4 binding-file upsert/remove writer
Grivn Jun 6, 2026
b4f30b7
feat(harness/channel): P4 mnemon-harness setup — thin front door over…
Grivn Jun 6, 2026
55c551e
refactor: quarantine unsupported harness loops
Grivn Jun 6, 2026
89309c0
fix: hide internal setup vocabulary
Grivn Jun 6, 2026
66fae9b
feat: add Local Mnemon command
Grivn Jun 6, 2026
e9c2e46
feat: add local memory admission loop
Grivn Jun 6, 2026
59d3e08
feat: harden setup local integration
Grivn Jun 6, 2026
cd54f50
feat: record pending sync commits
Grivn Jun 6, 2026
4c3c13a
feat: add remote sync API
Grivn Jun 6, 2026
12862c9
feat: add sync push command
Grivn Jun 6, 2026
c1d4d14
feat: import remote memory commits
Grivn Jun 6, 2026
129c09f
feat: admit local skill declarations
Grivn Jun 6, 2026
d4764cf
test: pin append-only skill declarations
Grivn Jun 6, 2026
60c021d
fix: keep cli core access behind server
Grivn Jun 6, 2026
d0eb948
feat: simplify harness setup and local boot
Grivn Jun 6, 2026
517f561
fix: hide internal harness setup vocabulary
Grivn Jun 6, 2026
ea00d5b
feat: productize harness remote sync
Grivn Jun 6, 2026
35f9a1d
feat: define harness wasm plugin sdk contract
Grivn Jun 6, 2026
bedccd1
feat: run local memory admission through governed wasm
Grivn Jun 6, 2026
23fb1d2
feat: run local skill admission through governed wasm
Grivn Jun 6, 2026
67596c8
feat: add governed harness evolution proposals
Grivn Jun 6, 2026
0756040
fix: close harness evolution verification gaps
Grivn Jun 6, 2026
4df7a97
chore(harness): prune obsolete experimental assets
Grivn Jun 6, 2026
80c06f5
chore(harness): trim obsolete internal surfaces
Grivn Jun 6, 2026
f6185ae
chore: confine branch footprint to harness/ + whitelist
Grivn Jun 8, 2026
c4f7456
chore(harness): add footprint guard
Grivn Jun 8, 2026
cc8cb95
refactor(harness): collapse core/ into internal/ (compiler-enforced b…
Grivn Jun 8, 2026
33f36e2
refactor(harness): remove unwired evolution package (verb kept as seam)
Grivn Jun 8, 2026
d7e7cf3
refactor(harness): split store persistence out of kernel
Grivn Jun 8, 2026
1067f1e
refactor(harness): move ActorKind/ChannelStatus/Sync DTOs into contract
Grivn Jun 8, 2026
bc4c832
refactor(harness): extract channel (owns ServerAPI port)
Grivn Jun 8, 2026
f4baffa
refactor(harness): extract capability (pure leaf); glue stays in app …
Grivn Jun 8, 2026
0559a3d
refactor(harness): extract remotesync (pure store helpers); move mirr…
Grivn Jun 8, 2026
3aecc36
refactor(harness): dissolve server into runtime + app; remove server …
Grivn Jun 8, 2026
b50b336
refactor(harness): rename declaration to manifest
Grivn Jun 8, 2026
149a793
refactor(harness): embed assets; validator and projectors read embedd…
Grivn Jun 8, 2026
61fea14
docs(harness): cutover note (fresh-setup-only, no migrator)
Grivn Jun 8, 2026
28ca133
feat(harness): EventDraft intake — stamp + scope + size limits
Grivn Jun 8, 2026
1b00d54
feat(harness): converge observed event types to dotted phase with leg…
Grivn Jun 8, 2026
a95c3b7
feat(harness): managed-marker no-clobber projection + refresh entry
Grivn Jun 8, 2026
6e993ab
docs(harness): align loop manifest canonical-state to governed.db
Grivn Jun 8, 2026
fd08434
fix(harness): route all host hooks through the channel
Grivn Jun 8, 2026
d8a1d9f
feat(harness): config-driven assembly schema (4-layer File, fail-clos…
Grivn Jun 8, 2026
a11f702
feat(harness): generic capability kind; memory + skill become descrip…
Grivn Jun 8, 2026
4fb33e9
feat(harness): select-only Assemble + 3rd capability (note) via config
Grivn Jun 8, 2026
3845524
feat(harness): co-hosted background driver — out-of-band drain + re-p…
Grivn Jun 8, 2026
769b8e9
feat(harness): gate the job lane on RuntimeConfig.Runner (nil = lane …
Grivn Jun 8, 2026
273d417
test(harness): end-to-end system acceptance for codex + claude-code
Grivn Jun 8, 2026
1ef3cdf
fix(harness): background sync refuses cleanly while Local Mnemon hold…
Grivn Jun 9, 2026
1e8e46f
fix(harness): setup is additive + token idempotent
Grivn Jun 9, 2026
8936aa7
fix(harness): no-clobber on install + uninstall; skill system e2e
Grivn Jun 9, 2026
f8be8a4
fix(harness): clear token on --token=false; uninstall no-clobber for …
Grivn Jun 9, 2026
8a12f42
fix(harness): subagents are managed files — no-clobber on install + u…
Grivn Jun 9, 2026
dd79d17
fix(harness): per-principal authenticator (token + header coexist)
Grivn Jun 9, 2026
92281c0
fix(harness): sync probe hardening, additive env, claude skill-view c…
Grivn Jun 9, 2026
69a5288
fix(harness): honor managedMarkerVersion — fail safe on a future hash…
Grivn Jun 9, 2026
ede70fe
fix(harness): runtime-surface env.sh + memory mirror are managed (no-…
Grivn Jun 9, 2026
2590513
fix(harness): preserved-conflict files survive a later uninstall
Grivn Jun 9, 2026
6939730
fix(harness): claude settings hooks match by path; skill uninstall ke…
Grivn Jun 9, 2026
9d83f9c
fix(harness): accept --dry-run on the claude-code projector (no-write…
Grivn Jun 9, 2026
917c8a8
fix(harness): flock writer lock replaces PID-reap (closes crash-windo…
Grivn Jun 9, 2026
e5deb1a
refactor(harness): capability leaf drops config import; max_payload_b…
Grivn Jun 9, 2026
d7e3af6
refactor(harness): drop dead CapabilityConfig.Aliases (aliasing is co…
Grivn Jun 9, 2026
2d35b65
feat(harness): Assemble derives per-binding refs from subscription sc…
Grivn Jun 9, 2026
01f959a
feat(harness): boot through assembler.Assemble — capabilities stand u…
Grivn Jun 9, 2026
25047be
test(harness): note capability stands up via config alone (product-pa…
Grivn Jun 9, 2026
e83fe1f
refactor(harness): remove superseded config front door (NewFromConfig…
Grivn Jun 9, 2026
fb8cda2
refactor(harness): ResolvedBinding lives in runtime (config returns t…
Grivn Jun 9, 2026
bf2b481
refactor(harness): setup loop allowlist derived from Builtins ∩ host …
Grivn Jun 9, 2026
5f0799d
docs(harness): record the sync-import silent-drop at remoteImportEven…
Grivn Jun 9, 2026
e9d37be
feat(harness): DrainOutbox prunes the invalidation rows it acks
Grivn Jun 9, 2026
fadc497
feat(harness): co-hosted background driver wired into serve (closes d…
Grivn Jun 9, 2026
ac47fcf
refactor(harness): one scope clamp — ChannelBinding.ClampRefs for pul…
Grivn Jun 9, 2026
49dc029
refactor(harness): hoist host-identical projector methods onto projec…
Grivn Jun 9, 2026
f96db30
refactor(harness): classifier-driven dry-run for both hosts; delete t…
Grivn Jun 9, 2026
827e7a1
chore(harness): delete verified zero-caller exports; freeze the WASM …
Grivn Jun 9, 2026
b8783c3
fix(harness): local run listens where setup pointed the channel
Grivn Jun 10, 2026
b473ce9
fix(harness): ingest clamps explicit refs under an empty binding scope
Grivn Jun 10, 2026
7046332
fix(harness): Assemble requires the native: rule_ref namespace prefix
Grivn Jun 10, 2026
b06c587
docs(harness): e2e comment reflects the deliberate non-default claude…
Grivn Jun 10, 2026
3b19ab8
feat(harness): DrainOutbox returns the invalidated refs plus drained …
Grivn Jun 10, 2026
f132aeb
feat(harness): mirror_mode lands in localConfig (default prime-refresh)
Grivn Jun 10, 2026
4a29a4e
feat(harness): driver regenerates the memory mirror on invalidation
Grivn Jun 10, 2026
ffc1dd3
test(harness): e2e pins write-then-see (driver-regenerated mirror, no…
Grivn Jun 10, 2026
73f9d7b
fix(harness): per-writer temp files make the mirror write truly concu…
Grivn Jun 10, 2026
686d57a
test(harness): mirror concurrency test surfaces writer errors
Grivn Jun 10, 2026
8b4d467
feat(harness): capability spec v1 - closed validator/render catalogs …
Grivn Jun 10, 2026
2e00e19
test(harness): byte-level parity net + goldens for descriptor data-iz…
Grivn Jun 10, 2026
3074f01
feat(harness): Builtins compile from embedded capability specs; handw…
Grivn Jun 10, 2026
b40312f
feat(harness): 4th capability (decision) stands up from a spec file +…
Grivn Jun 10, 2026
e8a362d
docs(harness): freeze capability spec v1
Grivn Jun 10, 2026
62444bf
fix(harness): capability spec decoding rejects unknown JSON fields
Grivn Jun 10, 2026
796f455
fix(harness): capability spec decoding rejects trailing data
Grivn Jun 10, 2026
c0f6aea
fix(harness): one source of truth for default modes
Grivn Jun 10, 2026
abb5fef
test(harness): determinism gate - replay reproduces live decisions, t…
Grivn Jun 10, 2026
1d1343b
test(harness): promotion gate - Shadow clean on self, detects spec-le…
Grivn Jun 10, 2026
ab9b465
docs(harness): decision contract v1 (pipeline semantics, determinism …
Grivn Jun 10, 2026
091999a
feat(harness): T1 hardening - private dirs 0700, token rotate, loopba…
Grivn Jun 10, 2026
447e4b5
fix(harness): close two stage-4 review gaps - sync-first dir perms, I…
Grivn Jun 11, 2026
b6edfec
feat(harness): hook generator - 16/16 legacy shells reproduced byte-e…
Grivn Jun 11, 2026
2f2023e
feat(harness): hooks project from the generator; 16 legacy shells ret…
Grivn Jun 11, 2026
45a01fd
fix(harness): two recorded hook unifications - claude compact escapin…
Grivn Jun 11, 2026
b1aa3b2
feat(harness): loop validate renders every generated hook; freeze loo…
Grivn Jun 11, 2026
77ca3ca
feat(harness): SKILL payload mechanics generate from the capability spec
Grivn Jun 11, 2026
5d468e9
fix(harness): pre-merge review fixes - frozen sentences gain enforcem…
Grivn Jun 11, 2026
3a35fe9
feat(harness): external capability packages - a directory IS an event…
Grivn Jun 11, 2026
7cddd2a
fix(harness): stage-5 pre-merge review fixes - identifier surfaces, e…
Grivn Jun 11, 2026
b4bfa9c
fix(harness): frozen type grammar enforced - bootable-but-irreducible…
Grivn Jun 11, 2026
e51bed9
fix(harness): one name grammar across the external boundary
Grivn Jun 11, 2026
2adee31
feat(harness): mnemond - the remote coordination plane stands up (syn…
Grivn Jun 11, 2026
0e982e6
test(harness): dual-replica e2e - the sync-abi freeze condition
Grivn Jun 11, 2026
665d750
docs(harness): freeze sync-abi-v1 - the sixth frozen face
Grivn Jun 11, 2026
1ca2a81
fix(harness): sync surface security hardening - pre-merge review batch
Grivn Jun 11, 2026
3093946
docs(harness): fix stale loop asset links and sync wording
Grivn Jun 11, 2026
9ea2c7d
fix(harness): truthful remote-workspace status copy post-stage6
Grivn Jun 11, 2026
4550fe1
refactor(harness): drop VerbEvolutionPropose syntax placeholder
Grivn Jun 11, 2026
e0218e1
refactor(harness): delete legacy hook-prompts and dreaming assets
Grivn Jun 11, 2026
e623d3d
refactor(harness): single canonical observed-type pin
Grivn Jun 11, 2026
cb1e6a6
refactor(harness): strip dead manifest fields and the unshipped v2 bi…
Grivn Jun 11, 2026
560302e
refactor(harness): drop documentation-flow manifest fields control_mo…
Grivn Jun 11, 2026
f27ca8d
feat(harness): strict manifest decoding rejects unknown keys (G6)
Grivn Jun 11, 2026
8fb710e
refactor(harness)!: delete the job lane, fail-closed unknown verdicts…
Grivn Jun 11, 2026
aea8bfe
refactor(harness): demote note/decision builtins to external-package …
Grivn Jun 11, 2026
a9b2ecb
refactor(harness)!: rename remote hub to mnemon-hub, reserve mnemond …
Grivn Jun 12, 2026
9574f53
feat(harness): capability-spec v2 declared-and-validated grammar (G7)
Grivn Jun 12, 2026
001d01b
feat(harness): capability spec declares required header fields (PD2a)
Grivn Jun 12, 2026
d017304
refactor(harness): thread SchemaGuard through runtime, derive replay'…
Grivn Jun 12, 2026
2062c77
feat(harness): assembly-time declared kind set (PD2b-2, D3+G8)
Grivn Jun 12, 2026
b6f5dcf
feat(harness)!: loop-package v2 — external packages carry host assets…
Grivn Jun 12, 2026
d13e539
refactor(harness)!: drop the dead host_adapters loop-manifest field (…
Grivn Jun 12, 2026
9092736
refactor(harness): sink the native-store gate into a loop.json declar…
Grivn Jun 12, 2026
5500bf6
refactor(harness): sink loop state-dir scaffolding into declarations …
Grivn Jun 12, 2026
67e29e4
refactor(harness): sink the install-mirror gate into the declared run…
Grivn Jun 12, 2026
23c4e78
refactor(harness)!: sink per-loop env into declarations with an injec…
Grivn Jun 12, 2026
b03a400
refactor(harness): sink per-loop hook options into declarations (PD4)
Grivn Jun 12, 2026
76794ce
refactor(harness): generalize the claude install-summary mirror line …
Grivn Jun 12, 2026
14167a9
refactor(harness): route loop-asset reads through an overlay FS (PD4 …
Grivn Jun 12, 2026
21db6e5
feat(harness)!: external packages project to hosts via derived bindin…
Grivn Jun 12, 2026
fdd4e1f
feat(harness): screen external loop host assets at projection (PD4 ex…
Grivn Jun 12, 2026
6fd0a67
refactor(harness): replace the Builtins privileged map with EmbeddedC…
Grivn Jun 12, 2026
822a287
refactor(harness)!: DefaultSchemaGuard/KindCatalog carry only governa…
Grivn Jun 12, 2026
f6f2264
refactor(harness)!: descriptor-derived remote-import dispatch (PD6b)
Grivn Jun 12, 2026
da93a3f
refactor(harness)!: scope-driven hub accept, descriptor-derived sync …
Grivn Jun 12, 2026
34bb01e
test(harness): e2e foo/journal external-kind dual-replica sync (PD6c)
Grivn Jun 12, 2026
c959559
docs(harness): sync-abi v2 — descriptor-derived sync, grant-scope acc…
Grivn Jun 12, 2026
789699b
feat(harness): loop add — register an external capability package (PD7)
Grivn Jun 12, 2026
b677c34
feat(harness): loop capabilities / loop schema — catalog discoverabil…
Grivn Jun 12, 2026
725287b
refactor(harness)!: remove privileged --memory/--skills setup flags (…
Grivn Jun 12, 2026
e62fc46
feat(harness): mnemon-observe generic skill from the catalog (PD7)
Grivn Jun 12, 2026
58cfafd
feat(harness): mnemond daemon lifecycle — up/down/status/logs (PD8)
Grivn Jun 12, 2026
e0195e9
test(harness): e2e mnemond daemon lifecycle leg (PD8)
Grivn Jun 12, 2026
505588b
docs(harness): PD9 freeze review of the three P2 v2 face texts
Grivn Jun 12, 2026
93f4359
feat(harness): coordination kinds — project_intent/assignment/progres…
Grivn Jun 12, 2026
d3198d6
feat(harness)!: default-enable the coordination package (P3b)
Grivn Jun 12, 2026
7484ba9
feat(harness): risk-tier governance gate — mid-risk requires evidence…
Grivn Jun 12, 2026
a17c50f
feat(harness): status FIELD section — coordination counts (P3d)
Grivn Jun 12, 2026
6ec3bca
feat(harness): high-risk operator gate + control-agent admission (P3e-1)
Grivn Jun 12, 2026
bb125de
feat(harness): loopdef kind + capability-spec-draft validator (P3e-2)
Grivn Jun 12, 2026
db03e5f
feat(harness): loopdef materialize bridge — driver writes the managed…
Grivn Jun 12, 2026
ded75eb
feat(harness): mnemond reload + loopdef activation ledger (P3e-4)
Grivn Jun 12, 2026
c5f175d
feat(harness): D-loop end to end — governed event-model evolution (P3…
Grivn Jun 12, 2026
ee0b60e
feat(harness): generic item-dedup merge — coordination kinds sync (P3…
Grivn Jun 12, 2026
96207fe
feat(harness): BudgetTier closed-set context-budget axis (P4a)
Grivn Jun 12, 2026
c4bc922
feat(harness): local derived-mirror budget shaping (P4b)
Grivn Jun 12, 2026
ec9854d
feat(harness): binding declares its context-budget tier (P4c-1)
Grivn Jun 12, 2026
e8badbf
feat(harness): budget the derived mirror to the endpoint tier (P4c-2)
Grivn Jun 12, 2026
600472f
test(harness): budget bounds presentation, not authority (P4d / A4)
Grivn Jun 12, 2026
ca5dbc5
test(harness): e2e subscription-budget arm (P4f)
Grivn Jun 12, 2026
1ba5b78
feat(harness): read-only DecisionLedger for the Control Tower (P6a-1)
Grivn Jun 12, 2026
9674923
feat(harness): Tower facade — GOAL + LEDGER assembly (P6a-2)
Grivn Jun 12, 2026
64809d7
feat(harness): Tower facade — FIELD + INBOX assembly (P6a-3)
Grivn Jun 12, 2026
0aca4a4
feat(harness): Tower re-observe write action (P6b)
Grivn Jun 12, 2026
3520afe
feat(harness): TowerModel state machine + text render (P6d)
Grivn Jun 12, 2026
8bc9d9e
test(harness): Tower vocabulary lint in the gates (P6c)
Grivn Jun 12, 2026
342a40d
feat(harness): tower command + e2e smoke arm (P6e)
Grivn Jun 12, 2026
7735887
docs(harness): quickstart double-path (P8)
Grivn Jun 12, 2026
33b5ede
feat(harness): codex-team multi-Codex appserver demo with live Web UI
Grivn Jun 14, 2026
db79835
feat(harness): governed self-continuation loop (codex-team-loop)
Grivn Jun 14, 2026
c993f3e
feat(harness): real-Codex brain for the governed self-continuation loop
Grivn Jun 14, 2026
648454b
fix(harness): honor the actual sandbox in real-Codex worker instructions
Grivn Jun 14, 2026
cef027b
refactor(harness): extract the optional autopilot self-continuation e…
Grivn Jun 14, 2026
e99f941
refactor(harness): extract codexapp, drop the old codex-team demo
Grivn Jun 14, 2026
9a744d6
refactor(harness): unexport config.localConfig
Grivn Jun 14, 2026
3e6c6f3
test(harness): guard the collaboration-channel core stays generic
Grivn Jun 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Binary
/mnemon
/mnemon-harness
/mnemon-hub
/mnemond
/bin/

# Local dogfood / capability test sandboxes (per-test subdirs)
Expand Down
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ifeq ($(GOBIN),)
GOBIN := $(shell go env GOPATH)/bin
endif

.PHONY: deps build install uninstall test unit vet harness-validate harness-docs-check eval-router-check codex-app-eval codex-app-eval-suite codex-memory-deep-eval codex-skill-deep-eval codex-eval-smoke docker-build docker-run compose-up compose-down compose-dev release-snapshot clean help
.PHONY: deps build harness-build install uninstall test unit vet harness-validate harness-docs-check eval-router-check codex-app-eval codex-app-eval-suite codex-memory-deep-eval codex-skill-deep-eval codex-eval-smoke docker-build docker-run compose-up compose-down compose-dev release-snapshot clean help

.DEFAULT_GOAL := help

Expand All @@ -22,6 +22,11 @@ deps: ## Download Go dependencies
build: ## Build the mnemon binary
go build -ldflags "$(LDFLAGS)" -o $(BINARY) .

harness-build: ## Build the harness binaries (mnemon-harness local plane + mnemon-hub remote hub + mnemond local governance daemon)
go build -ldflags "$(LDFLAGS)" -o mnemon-harness ./harness/cmd/mnemon-harness
go build -ldflags "$(LDFLAGS)" -o mnemon-hub ./harness/cmd/mnemon-hub
go build -ldflags "$(LDFLAGS)" -o mnemond ./harness/cmd/mnemond

# ── Install / Uninstall ─────────────────────────────────────────────

install: build ## Build and install mnemon to $GOBIN
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ Different agents/processes can use different stores via the `MNEMON_STORE` envir

**How do I customize the behavior?**
Edit the generated guideline (`~/.mnemon/prompt/guide.md` in current setup
flows) or use the installable [memory loop GUIDE](harness/loops/memory/GUIDE.md)
flows) or use the installable [memory loop GUIDE](harness/internal/assets/loops/memory/GUIDE.md)
as the source. The skill file should stay focused on command syntax.

**What is sub-agent delegation?**
Expand Down Expand Up @@ -302,8 +302,8 @@ See [Development and Deployment](docs/DEPLOYMENT.md) for Docker, Compose, Ollama
## Documentation

- [Mnemon Harness Beta](harness/README.md) — experimental host-agent lifecycle state
- [Memory Loop Harness](harness/loops/memory/README.md) — installable memory loop assets
- [Skill Loop Harness](harness/loops/skill/README.md) — installable skill loop assets
- [Memory Loop Harness](harness/internal/assets/loops/memory/README.md) — installable memory loop assets
- [Skill Loop Harness](harness/internal/assets/loops/skill/README.md) — installable skill loop assets
- [Design & Architecture](docs/DESIGN.md) — current engine architecture, algorithms, integration design
- [Usage & Reference](docs/USAGE.md) — CLI commands, embedding support, architecture overview
- [Memory Import Guide](docs/IMPORT.md) — schema and LLM prompt for importing historical chats
Expand Down
111 changes: 111 additions & 0 deletions docs/harness/QUICKSTART.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# mnemon-harness — Quickstart

Two paths, each from nothing to something running and governed. Commands below
are the real CLI; substitute your own host (`codex`, `claude-code`) and ports.

> Status: experimental. This shows the governed-event loop working end to end;
> it does not claim production readiness.

---

## Path A — operator: from install to your first governed decision

Goal: stand up Local Mnemon, observe one candidate, and see it admitted as a
governed decision on the Control Tower.

```sh
# 1. install the integration for your host + a memory loop
mnemon-harness setup --host codex --loop memory \
--principal codex@project --control-url http://127.0.0.1:8801

# 2. start Local Mnemon (the local governance daemon)
mnemon-harness local run &

# 3. observe a candidate — Local Mnemon admits it through its rules (ticked=true)
mnemon-harness control observe \
--addr http://127.0.0.1:8801 --principal codex@project \
--token-file .mnemon/harness/channel/credentials/codex-project.token \
--type memory.write_candidate.observed --external-id q1 \
--payload '{"content":"my first governed memory","source":"user","confidence":"high"}'
# -> observed seq=1 dup=false ticked=true

# 4. stop the daemon, then read the Control Tower (it needs exclusive store access)
# (kill the `local run` above, then:)
mnemon-harness tower --dump
```

The Tower prints the four pages. The decision appears on **LEDGER**, attributed
to its proposer:

```
# LEDGER
dec_… by codex@project -> memory
```

That is the whole point: a candidate became a **governed, attributed decision**
— not a silent write.

---

## Path B — capability author: from an empty directory to your own kind governing

Goal: declare a new event kind as a loop package and watch it govern, with no
code — a capability is **data that SELECTS from a closed catalog** of validators
and renderers, never new behavior.

Start from a working install (Path A, or `setup --host codex --loop memory …`).

```sh
# 1. drop a loop package: .mnemon/loops/<name>/capability.json
mkdir -p .mnemon/loops/note
cat > .mnemon/loops/note/capability.json <<'JSON'
{
"schema_version": 1,
"name": "note",
"observed_type": "note.write_candidate.observed",
"proposed_type": "note.write.proposed",
"resource_kind": "note",
"items_field": "items",
"fields": [
{ "name": "text", "validators": [ {"id": "required", "params": {"missing_style": "empty"}}, {"id": "safety:unsafe"} ] }
],
"render": { "content": { "member": "bullet-list", "params": {"title": "# Notes", "field": "text"} } }
}
JSON

# 2. enable it. A package with host assets (a loop.json) is wired by
# `setup --loop <name>`. A governance-only kind like this (no host assets)
# is enabled by adding it to config.loops + the binding scope:
# .mnemon/harness/local/config.json -> "loops": [..., "note"]
# .mnemon/harness/channel/bindings.json -> the binding gains
# allowed_observed_types: "note.write_candidate.observed"
# subscription_scope: {"kind":"note","id":"project"}

# 3. run + observe your new kind — it governs through the SAME path as the built-ins
mnemon-harness local run &
mnemon-harness control observe \
--addr http://127.0.0.1:8803 --principal codex@project \
--token-file .mnemon/harness/channel/credentials/codex-project.token \
--type note.write_candidate.observed --external-id n1 \
--payload '{"text":"governed by a kind I declared"}'
# -> observed seq=1 dup=false ticked=true
```

Your `note` kind admits, renders, and (if you connect a Remote Workspace) syncs
— with no per-kind code. The full schema (validators, render members, risk
tiers, sync strategies) is in [`loop-package-v2.md`](loop-package-v2.md) and
[`capability-spec-v2.md`](capability-spec-v2.md).

---

## What you just used

| You ran | The protocol object |
|---|---|
| `control observe` | an Event admitted at the Channel boundary |
| `ticked=true` | the kernel decided it (a Decision) |
| `tower` LEDGER | the accepted Decision + its attribution |
| `capability.json` | a governed, versioned event-model declaration |

Next: connect a Remote Workspace (`sync`) to share one governed state across
machines, or read [`USAGE.md`](USAGE.md) for the full command surface.
93 changes: 28 additions & 65 deletions docs/harness/README.md
Original file line number Diff line number Diff line change
@@ -1,64 +1,40 @@
# Mnemon Harness Public Beta

`mnemon-harness` is an experimental beta layer for attaching host agents to
project-local governed state. It is source-build only and intentionally separate
from the stable `mnemon` CLI.
`mnemon-harness` is an experimental beta for installing host-agent integration
assets and connecting them to a local Mnemon service.

It is not production-ready and has no compatibility guarantee. Commands, file
layouts, schemas, projected surfaces, and behavior may change in breaking ways
before a stable release.
Stable Mnemon remains the memory CLI. The harness is source-build only, has no
compatibility guarantee, and is currently scoped to memory and skill
integration.

Stable Mnemon remains a memory and recall tool. The harness adds lifecycle
exchange, evidence, proposals, audit, coordination topology, and a review TUI
around host agents such as Codex and Claude Code.
## 1. Product Surface

## 1. What It Is
The user-facing command surface is intentionally small:

Mnemon Harness is a governed agent-state substrate.
- `setup`: install memory and skill Agent Integration assets.
- `local`: run or inspect Local Mnemon.
- `status`: show Agent Integration, Local Mnemon, and Remote Workspace state.
- `sync`: connect Local Mnemon to a Remote Workspace.

```text
host agent
<-> Lifecycle Exchange
context out: .codex/.claude projection files
signal in: .mnemon/events.jsonl
<-> governed project state
profile + goals + proposals + audit + coordination
```

The host directories are projection surfaces. Canonical state lives in the
append-only event log and governed records under `.mnemon/`.
Other implementation commands are internal and are not part of the beta product
contract.

## 2. Current Beta Surface
## 2. Current Scope

The public beta includes:
The beta supports Codex and Claude Code projections for the memory and skill
loops. Projected host directories such as `.codex/` and `.claude/` are generated
surfaces. Local state lives under `.mnemon/harness/`.

- lifecycle event append/status/daemon commands
- Codex and Claude Code projection surfaces
- projection envelope and readback verification
- profile projection into host context
- goal, eval, proposal, apply, and audit commands
- coordination topology and governed coordination apply
- TUI views for hosts, evidence, proposals, profile, coordination, and traces
- Codex runner checks behind explicit user action and cost gates

It does not promise production readiness, automatic apply, broad org/team scope
composition, or a full multi-agent runtime.
The current beta does not promise production readiness, automatic apply,
multi-agent governance, broad organization scope, or a general evaluation
runtime.

## 3. Separation From Stable Mnemon

`mnemon-harness` is built from `./harness/cmd/mnemon-harness`.

The stable `mnemon` binary does not import harness packages. It exposes only a
small default-off event seam so a project can write events that the harness may
later read.

```sh
MNEMON_HARNESS_EVENT_EMIT=1 mnemon remember "..." --cat note
mnemon event emit custom.observed --payload '{"ok":true}'
```

Without the opt-in environment variable or explicit `mnemon event` command,
stable Mnemon behavior is unchanged.
Stable `mnemon` behavior is unchanged unless a user explicitly opts into harness
event emission or runs `mnemon-harness` directly.

## 4. Try It

Expand All @@ -69,31 +45,18 @@ go build -o mnemon .
go build -o mnemon-harness ./harness/cmd/mnemon-harness
```

Run the no-model smoke path:
Install memory and skill integration for a project:

```sh
tmpdir="$(mktemp -d)"
./mnemon-harness lifecycle --root "$tmpdir" init
./mnemon-harness lifecycle --root "$tmpdir" event append --json '{
"schema_version": 1,
"id": "evt_harness_smoke_001",
"ts": "2026-05-31T00:00:00Z",
"type": "memory.hot_write_observed",
"loop": "memory",
"host": "codex",
"actor": "host-agent",
"source": "harness-smoke",
"correlation_id": "corr_harness_smoke",
"payload": {"reason": "smoke"}
}'
./mnemon-harness lifecycle --root "$tmpdir" status refresh
./mnemon-harness ui --root "$tmpdir"
./mnemon-harness setup --host codex --loop memory --loop skill --project-root .
./mnemon-harness local run
./mnemon-harness status
```

See [USAGE.md](USAGE.md) for command examples.

## 5. Release Boundary

This beta intentionally ships minimal public documentation. Internal planning,
internal validation artifacts, generated site HTML, and detailed future plans are
not part of this branch.
experimental command surfaces, generated site HTML, and future governance
experiments are not part of the product contract.
Loading
Loading