Mycelium: per-operator log scoping + witness checkpoint stub (JFA §5)#142
Open
NetworkTheoryAppliedResearchInstitute wants to merge 3 commits into
Open
Conversation
…FA §5)
Mycelium is no longer a single global chain — each operator keeps its own
append-only log (P3-013 §5).
- migration 20260709: add operator_id to mycelium_log + mycelium_anchors;
existing single-backend history adopts this node's OPERATOR_ID.
- myceliumService: operator_id written on every transmission/anchor; the anchor
chain, its tail lock, and verifyChain are all scoped per operator; operator_id
is bound into the anchor hash so logs cannot be spliced.
- checkpoint(operatorId): returns a signed-monotonic-checkpoint BODY
{ operator_id, tree_size, head_hash } for witnessing (§5.1). Signing, witness
publication, and inclusion proofs remain intended-not-built.
- specs: §5.1 marked Implemented; §5.2 notes the checkpoint stub.
Verified: operator_id stored; verifyChain scoped per operator; tamper detected
and localized; checkpoint body returned (witnessed=false). Stacks on the economy
PR (#141); rebase onto agrinet-backend after it merges.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
csecrestjr
approved these changes
Jul 1, 2026
csecrestjr
approved these changes
Jul 1, 2026
Molded to Janus-Facing Architecture 2026-07-22 (standard check 7): the living open-questions document naming what remains unresolved, and a conformance self-description citing invariant IDs from the JFA conformance suite. Docs only; no code touched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes Mycelium a per-operator log instead of a single global chain (P3-013 §5). There is no global chain and no consensus; cross-operator non-equivocation is by witnessing (§5.1), which remains intended-not-built.
Changes
operator_idtomycelium_log+mycelium_anchors; existing single-backend history adopts this node'sOPERATOR_ID(env, defaultagrinet).operator_idwritten on every transmission/anchor; the anchor chain, its tail lock, andverifyChainare scoped per operator;operator_idis bound into the anchor hash so logs can't be spliced.checkpoint(operatorId)— returns a signed-monotonic-checkpoint body{ operator_id, tree_size, head_hash }for witnessing. Signing, witness publication, and inclusion proofs are not built (the highest-leverage federation step).Verification (in-container)
operator_idstored on log + anchor;verifyChainscoped per operator (other operators' chains independent); tamper detected and localized to the altered seq;checkpoint()returns a body withwitnessed:false.🤖 Generated with Claude Code