Coordinate at Content, Not at Git

Heart

Two Deep Context graphs that share a meta-layer (Form Contracts, Predicates, Skills) cannot stay in sync by becoming the same git repository — each graph has its own did:repo:<sha1> cryptographic identity and its own first-steward stewardship. They cannot stay in sync by one becoming the other's fork — git-fork shares the parent's root commit and therefore shares the DID, collapsing the identity sovereignty each graph needs. They stay in sync by content-level coordination: per-node grafts that record per-node provenance, external wikilinks that let nodes cite each other without copying, and periodic refresh passes that pull current donor state into recipient grafts. Neither graph claims canonical ownership of the shared meta-layer; changes flow either direction at the content layer; the relationship is peer coordination, not upstream propagation.

Problem

Two graphs share a non-trivial meta-layer they both need to evolve. Each is a sovereign self-publishing graph with its own DID, its own pipeline, its own first steward. Neither wants to be the canonical owner of the shared structure — both want their own evolution. But the shared meta-layer is real: a Form Contract or Predicate that drifts between the two graphs creates incoherence at the citation layer (each graph's nodes claim conformance to slightly-different specifications). How do the two graphs stay legibly aligned without one of them becoming the source of truth?

The git-shape options collapse: - Same repository. Defeats per-graph sovereignty and per-graph DIDs. - Git-fork (one repo, two URLs). Shares the root commit and therefore shares the DID; identity collision. - Cherry-pick across forks. Treats one graph as upstream and the other as downstream, baking in a hierarchy neither graph claims. - Manual file-copy with git unaware. Loses provenance entirely; readers cannot trace what came from where.

Forces

Solution

Coordinate at the content layer using three composable mechanisms:

Per-node grafts. When recipient graph R wants donor graph D's specific node N, R copies N's content into its own nodes/<Tax>/<N>.md and adds a grafted_from::[[<D's Reference proxy>]] edge in N's identity block. The graft records per-node provenance without claiming graph-level lineage — most graphs are not scions, just recipients with grafts. The donor's DID and URL live in a local Reference node in R that proxies D, so the graft target resolves locally while the lineage stays explicit.

External wikilinks for shared concepts neither graph wants to own. When R's prose references a concept that D's graph defines, R uses [[Taxonomy/Target]]↗ external-wikilink syntax. The build pipeline resolves the target against the donor Reference's URL, producing a clickable link to D's published version. R does not graft the node, does not duplicate D's content, and stays current with D's evolution automatically.

Periodic refresh passes. R's first steward periodically pulls current state from D for the grafted nodes — a manual pass, not an automated sync. The pass overwrites grafted node content with D's current version (preserving R-specific edits where present), refreshes the donor Reference body to reflect any new D additions, and runs the audit to catch drift the refresh introduces. The cadence is per-relationship; tagged-release on D plus periodic refresh on R is one workable pattern.

Either graph may lead a change. A change to a Form Contract, Predicate, or Skill can originate in either graph. The graph where the change first lands carries it; the other graph picks it up on the next refresh. Neither graph is canonical; the move that benefits both gets adopted both ways.

Consequences

Bidirectional flow becomes natural. Changes to the shared meta-layer can originate in either graph. The donor graph isn't locked into its role — a recipient that surfaces a useful refinement can offer it back, and the donor adopts it on the next cycle in either direction.

Selective adoption is structural. A recipient graph can adopt some changes from the donor without taking all of them; a donor can adopt some refinements from a recipient without imposing them on every recipient. Each graph's first steward decides what fits.

Some drift between refresh cycles. Between refresh passes, the recipient's grafted nodes may lag the donor's current state. The drift is bounded by the refresh cadence and made visible by the audit — not eliminated, but legible. Readers encountering a grafted node know it was copied at a specific point in time and can check the donor for current state.

No canonical owner of the shared meta-layer. This is the load-bearing consequence. The practice does not have a "main upstream" for Form Contracts and Predicates; it has graphs that share conventions and coordinate at content scope. New scions of the practice should expect this shape, not a single canonical source they pull from.

The audit becomes a coordination tool. Per-graph audits surface drift between donor and recipient. The audit is what keeps the coordination honest — without it, drift accumulates silently until a contributor encounters two slightly-different Form Contracts in two graphs and has to figure out which to follow.

Instances

Also Known As

Relations