Descent Is Not Dependence
A lineage edge generates a candidate support set and establishes none.
- Standing
- WITNESSED CHECKABLE RUNNABLE EXECUTED STAGED PUBLISHED REPRODUCED
- Last checked
- 2026-09-11 15:25:45 UTC
- Source
scripts/emb-support.mjs@92d99bf0f69f· bytes7a8b6a2f444c3970…- Limit
- Cell 44 (Λ non-laundering) is proved at the property tier and is about authority, not about explanatory dependence — it is cited as a partial overlap, not as this pattern's proof. Lint class PROVENANCE_AS_SUPPORT enforces the prose form only.
- Next rung
live_local— an ablation a reader can run — remove the component, watch the dependence fail to appear. Lint class PROVENANCE_AS_SUPPORT enforces the prose form only, and a prose rule is not a measurement.
Why this page says WITNESSED — the derivation, not the word
- ✓ a witness is named
- ✓ its evidence kind is one the ledger already uses (constructive_witness)
- ✓ the witness path resolves in this tree
- ✓ its rung is in_tree or above (in_tree)
- ✓ a run is recorded for these exact bytes
- ✓ no claim is cited that could be REFUTED
- ✓ a counterexample is shipped (required once WITNESSED)
- ✗ not staged on this site, so it cannot run from the page
WITNESSED requires every line above to hold. The label is computed from them by build.mjs and cannot be typed into the registry — the build refuses a record that carries it.
Intent
B descended from A; A had a capability. That B has it too, and that it depends on A for it, are two further claims neither of which the lineage edge makes. Competence may have been copied into weights, recompiled or independently rediscovered while the edge stayed. Support is established by ablation, intervention, runtime dependency or replacement replay — and provenance-only support is refused.
Technical register
mosaic/embodiment.json refuses a lineage edge as a link in the support chain; scripts/emb-support.mjs enforces the refusal before computing any kernel or cut. A continuity kernel is a minimal causally established support set sufficient to retain a declared capability under a declared replacement contract — set-shaped, because support is a hypergraph. The revocation-cut dual holds only when the support function is monotone; the engine refuses kernels for a capability whose observations falsify monotonicity. Status: 4 capabilities, 4 synthetic, 0 observed; both refusals fire; no kernel is claimed.
Problem
'The successor inherited it' is the sentence every factory wants to write. The tree wrote it, and outside review caught it: descent had been placed in the causal chain as if a git edge were an experiment.
Solution
Record lineage, but classify it as a candidate generator. Accept as support only ablation, intervention, runtime dependency or replacement replay, with the evidence kind named. Compute kernels over sets. Refuse when the observations falsify monotonicity. Report 0 observed as 0 observed.
Real-world analogy
A student who studied under a master. That the student can do the thing, and that they could not without the master, are two claims; the enrolment record makes neither. You find out by taking the notebooks away.
Structure — on the surface
An illustration on a compute surface: loci above, carriers below. Press Play or Step; the takeaways collect as you go. Nothing here is evidence — the witness section is.
The chapter in WRL — and the chain so far
Chapter 31 of 32 — the fragment _patterns/wrl/chain/descent-is-not-dependence.wrl, sealed alone by wrl.js
; DESCENT IS NOT DEPENDENCE — dd_child is fed by the same router as dd_parent (it descended from the same
; world). A claim sets the parent's rotor at epoch 2; the child's rotor does not move. dd_in is the entry.
[relay:dd_in]{sig_in, sig_out}
[spinner:dd_parent](w=16, n=8, rotor=quarter_turn_z, configurable){sig_in, socket}
[spinner:dd_child](w=16, n=8, rotor=quarter_turn_z, configurable){sig_in, socket}
[orb:dd_pv]{pose}
[orb:dd_cv]{pose}
[dd_in] --sig--> {[dd_parent], [dd_child]}
[dd_parent] --socket--> [dd_pv]
[dd_child] --socket--> [dd_cv]Its test bench _patterns/wrl/chain/descent-is-not-dependence.bench.wrl — drives the entry for this chapter's own film; never part of the chain
; TEST BENCH — drives this chapter's entry alone; the chain replaces it with a wire from an earlier chapter
[pulser:dd_bench](every 1){sig_out}
[dd_bench] --sig--> [dd_in]module + bench seal to → sem-2b6d00a2564ddb76cbff721272c5ddd05f099184b858fc990d0b329910a1e2b6
Run inputs — a ScenarioV1, the forge's own document, bound to this world's id and never part of it (D3) · ScenarioDigest scen-071aaf2839b7442df46… (the run inputs' own identity, computed by the forge)
| epoch | writer · seq | op | target | rotor | label |
|---|---|---|---|---|---|
| 2 | w1 s1 | SetRotor | dd_parent | 255.0.0.0 | SetRotor dd_parent 255.0.0.0 |
Reduced by the reference reducer (pure Python); parity with the other reducer not run for this world.
Receipts in the last epoch's Film
receipt:w=1,s=1,accepted=d2,apkey=0.1.255.0.0.0,epoch=2,outcome=Applied
The Film, epoch by epoch (6)
epoch 1 · sha256:939ff3c82e75f7641aaff22ac67a411dc812db1c482508cbd351749b81bb5d47
FILM v0.7 t=1 spinner:dd_child:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00b5,0000,0000,00b5,socket=dd_cv,config=configurable spinner:dd_parent:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00b5,0000,0000,00b5,socket=dd_pv,config=configurable orb:dd_cv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=0100,0000,0000,0000,controller=dd_child,fault=0 orb:dd_pv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=0100,0000,0000,0000,controller=dd_parent,fault=0 pulser:dd_bench:mode=periodic,p=1,phase=0,armed=0,done=0,nf=1 relay:dd_in:cur_out=0,next_out=1 wire:w__dd_bench__dd_in:cur=1,nxt=1 wire:w__dd_in__dd_child:cur=0,nxt=0 wire:w__dd_in__dd_parent:cur=0,nxt=0 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 2 · sha256:a9ccc0546b87f7ced768d856841d8b7cfe435d45d21b816f382be35e773e4ecb
FILM v0.7 t=2 spinner:dd_child:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00b5,0000,0000,00b5,socket=dd_cv,config=configurable spinner:dd_parent:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00ff,0000,0000,0000,socket=dd_pv,config=configurable orb:dd_cv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=0100,0000,0000,0000,controller=dd_child,fault=0 orb:dd_pv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=0100,0000,0000,0000,controller=dd_parent,fault=0 pulser:dd_bench:mode=periodic,p=1,phase=0,armed=0,done=0,nf=1 relay:dd_in:cur_out=1,next_out=1 wire:w__dd_bench__dd_in:cur=1,nxt=1 wire:w__dd_in__dd_child:cur=0,nxt=1 wire:w__dd_in__dd_parent:cur=0,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0 claim:w=1,s=1,digest=d2,pkey=0.1.255.0.0.0,payload=SetRotor:dd_parent:255.0.0.0 receipt:w=1,s=1,accepted=d2,apkey=0.1.255.0.0.0,epoch=2,outcome=Applied recognition:w=1,s=1,state=unambiguous
epoch 3 · sha256:eca20db3f616db2c778e7587773035f37af2f8c9bf2b72abff866392d4e4a661
FILM v0.7 t=3 spinner:dd_child:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00b5,0000,0000,00b5,socket=dd_cv,config=configurable spinner:dd_parent:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00ff,0000,0000,0000,socket=dd_pv,config=configurable orb:dd_cv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=00b5,0000,0000,00b5,controller=dd_child,fault=0 orb:dd_pv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=00ff,0000,0000,0000,controller=dd_parent,fault=0 pulser:dd_bench:mode=periodic,p=1,phase=0,armed=0,done=0,nf=1 relay:dd_in:cur_out=1,next_out=1 wire:w__dd_bench__dd_in:cur=1,nxt=1 wire:w__dd_in__dd_child:cur=1,nxt=1 wire:w__dd_in__dd_parent:cur=1,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0 claim:w=1,s=1,digest=d2,pkey=0.1.255.0.0.0,payload=SetRotor:dd_parent:255.0.0.0 receipt:w=1,s=1,accepted=d2,apkey=0.1.255.0.0.0,epoch=2,outcome=Applied recognition:w=1,s=1,state=unambiguous
epoch 4 · sha256:deca87fc0d1d387f818ad2c8eeb7640217969a97675366caa516aaa8ae650999
FILM v0.7 t=4 spinner:dd_child:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00b5,0000,0000,00b5,socket=dd_cv,config=configurable spinner:dd_parent:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00ff,0000,0000,0000,socket=dd_pv,config=configurable orb:dd_cv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=0000,0000,0000,00ff,controller=dd_child,fault=0 orb:dd_pv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=00fe,0000,0000,0000,controller=dd_parent,fault=0 pulser:dd_bench:mode=periodic,p=1,phase=0,armed=0,done=0,nf=1 relay:dd_in:cur_out=1,next_out=1 wire:w__dd_bench__dd_in:cur=1,nxt=1 wire:w__dd_in__dd_child:cur=1,nxt=1 wire:w__dd_in__dd_parent:cur=1,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0 claim:w=1,s=1,digest=d2,pkey=0.1.255.0.0.0,payload=SetRotor:dd_parent:255.0.0.0 receipt:w=1,s=1,accepted=d2,apkey=0.1.255.0.0.0,epoch=2,outcome=Applied recognition:w=1,s=1,state=unambiguous
epoch 5 · sha256:fb6142509380b90d70fdd831e55288ec3c34b130af1c95e2e8469694153d32f8
FILM v0.7 t=5 spinner:dd_child:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00b5,0000,0000,00b5,socket=dd_cv,config=configurable spinner:dd_parent:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00ff,0000,0000,0000,socket=dd_pv,config=configurable orb:dd_cv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=ff4c,0000,0000,00b4,controller=dd_child,fault=0 orb:dd_pv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=00fd,0000,0000,0000,controller=dd_parent,fault=0 pulser:dd_bench:mode=periodic,p=1,phase=0,armed=0,done=0,nf=1 relay:dd_in:cur_out=1,next_out=1 wire:w__dd_bench__dd_in:cur=1,nxt=1 wire:w__dd_in__dd_child:cur=1,nxt=1 wire:w__dd_in__dd_parent:cur=1,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0 claim:w=1,s=1,digest=d2,pkey=0.1.255.0.0.0,payload=SetRotor:dd_parent:255.0.0.0 receipt:w=1,s=1,accepted=d2,apkey=0.1.255.0.0.0,epoch=2,outcome=Applied recognition:w=1,s=1,state=unambiguous
epoch 6 · sha256:bed78beb6d7134c98c7545a968aa283eddecca630f916ad6373b88fd3b359e56
FILM v0.7 t=6 spinner:dd_child:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00b5,0000,0000,00b5,socket=dd_cv,config=configurable spinner:dd_parent:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,rotor=00ff,0000,0000,0000,socket=dd_pv,config=configurable orb:dd_cv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=ff02,0000,0000,0000,controller=dd_child,fault=0 orb:dd_pv:policy=forge_motor_widemac_tz_sat_v1,quat4,w=16,n=8,pose=00fc,0000,0000,0000,controller=dd_parent,fault=0 pulser:dd_bench:mode=periodic,p=1,phase=0,armed=0,done=0,nf=1 relay:dd_in:cur_out=1,next_out=1 wire:w__dd_bench__dd_in:cur=1,nxt=1 wire:w__dd_in__dd_child:cur=1,nxt=1 wire:w__dd_in__dd_parent:cur=1,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0 claim:w=1,s=1,digest=d2,pkey=0.1.255.0.0.0,payload=SetRotor:dd_parent:255.0.0.0 receipt:w=1,s=1,accepted=d2,apkey=0.1.255.0.0.0,epoch=2,outcome=Applied recognition:w=1,s=1,state=unambiguous
Composes with the 30 chapters before it
The chain through this chapter — every earlier fragment, this one, and the links — seals to sem-7d698bd68aba8e4e899411c6fc634546fc20430d0be00e1d0925c9e0b0dceeba: 108 objects, 98 edges (was 103 / 93; every earlier object and edge is still present — checked, or the build refuses).
Links only the chain carries
[rg_sufficiency] --sig--> [dd_in]
How to read this board
Five kinds of object, two kinds of wire, and one band per Part of the book. Signal flows left to right: it starts at a clock, travels through relays, and ends at a door — or turns a spinner, which drives an orb. Nothing below is the book's own vocabulary; each line is quoted from where the definition lives.
| shape | is | and so |
|---|---|---|
| a clock; the only source of signal | Every signal on the board starts at one of these. Nothing else can make one. | |
| a pass-through, so signal can travel | One arrives, any number leave — a relay that fans out is the board's router. | |
| a sink; signal arrives and stops | It latches what reached it and passes nothing on. A door is where a path ends. | |
| rotation: takes signal, drives a pose | The only object on the board that holds a value a claim can rewrite — and only if its config says configurable. | |
| the thing that gets moved | It is driven, never driving: an orb is what you watch to see whether anything happened. | |
| not a WRL role — the book's own drawing of the receipts in the epoch's Film | It counts what the run admitted, and turns red on a Rejected outcome. | |
| SignalWire | signal: a sig_out to a sig_in | Legal from a Pulser or Relay, into a Relay, Door or Spinner. This is how the board moves. |
| SocketControl | control: a socket to a pose | Legal only from a Spinner into an Orb. At most one may land on any input port — fan-in is a typed refusal. |
Hover any object for what it is, which chapter put it there, and every field of its line in that epoch's Film — split into what it is doing now and how it was built. Click to pin the readout, then click a wired name to follow the signal. The field definitions come from TRVM/forge/film.py (the emitter), TRVM/forge/forge_state.py (nf, derived from the decoded counter and never from t), TRVM/forge/lower_e2a.py (the commit/react law), TRVM/FORGE_SEMANTIC_IR_v1_MEASURE.md §1.3; the shapes from WRL/learn.html and WRL/docs/spec/README.md. The build refuses if a Film emits a field this key does not explain.
The board so far: one band per Part, signal flowing left to right; relays that fan out are routers, doors are switches, pulsers are clock domains. Hover an object — or click the board and walk it with the arrow keys — for its role, its Part and what it is wired to. This board is the chain’s sealed shape; no Film drives it, so it has no state to report, and the whole board in the conclusion is where every object’s state is read epoch by epoch. Wheel zooms · drag pans · double-click fits.
Syntax — quoted from the tree at build time
The two refusals, in the engine's own words (scripts/emb-support.mjs) scripts/emb-support.mjs:29
* THE TWO REFUSALS, which are the reason this file is worth more than the algebra: * * 1. A support set backed only by PROVENANCE is refused. Lineage says B descended from A. It * does not say c still needs A: the competence may have been copied into weights, recompiled, * or independently rediscovered while the edge survived. Cuts computed from lineage would * name artifacts to destroy on evidence that does not reach the claim. * 2. A capability whose observations FALSIFY monotonicity is refused. Interference is the * ordinary failure mode of accumulated context, and a kernel computed over a non-monotone
Forces
Lineage is cheap to record and ablation is expensive to run, so provenance will always be the evidence you have. Support sets overlap — K₁={A} and K₂={B,C} can both suffice — so a single deletion proves nothing and the engine must reason about sets. Monotonicity is a hypothesis with a falsifier, not a given.
Applicability
Model distillation, factory lineages, plugin inheritance, any claim that a successor 'carries forward' what a predecessor had.
Transformations
- proposing a candidate support set from lineage
- establishing support by ablation of the set under test
- revoking a capability by cutting a kernel — when monotone
- lineage as a link in the causal chain (Provenance as Support)
- 'has inherited' in the present perfect without an observed kernel
- ablating one file and concluding about a set
A refusing transformation is not one that is discouraged: it is one that, applied, makes the invariant above false. The word is the tree's, and it is the same word the join uses.
Consequences
Heredity becomes a specified experiment rather than a slogan. The honest status today is that the engine runs and has nothing to run on, which the page above states in those words.
Failure mode it answers
Provenance as Support — Treating a lineage edge as causal support for a capability. Paid for at: mosaic/embodiment.json; scripts/emb-support.mjs refuses it
Witness
Source identity: scripts/emb-support.mjs · shape side-effect · evidence kind constructive_witness · rung in_tree (both refusals fire on the synthetic corpus; 0 observed capabilities)
Execution identity: 2026-09-11T15:25:45.592Z on PX13 · bytes 7a8b6a2f444c3970… · repo HEAD 92d99bf0f69f
Not staged on this site: the page cannot run this witness. It runs from the command line: node scripts/emb-support.mjs in ..
Counterexample
scripts/emb-support.mjs — marker REFUSED — support evidence of kind
, expected REFUSED.
A marker, not a resolved law. The build checked that this string is present in the file. A string being present proves the file mentions it, not that the file refuses anything — this record cites no law id that could be resolved against a suite index. It is the weaker of the two forms this catalog uses.
What to take away
- from the animationThe lineage edge was refused as support; the ablation was admitted, and the kernel it established is a set.
- from the syntaxBoth refusals — provenance-only support and a falsified monotonicity hypothesis — are named, and both fire on the synthetic corpus.
- from the literaturePearl's ladder of causation: seeing, doing, imagining. Lineage is seeing; ablation is doing.
- from the witnessemb-support.mjs ran today: 4 capabilities, 4 synthetic, 0 observed. Heredity is unwitnessed, and the page never says otherwise.
Invariant basis — and how each piece bears
| basis | bears | status |
|---|---|---|
cell 44 | stronger than needed | proved cells.json |
Satisfying a basis is local. Nothing here implies global adequacy unless a theorem or a composition rule says so.
Prior art — and what is not claimed
| work | relation | what it shares | where it differs |
|---|---|---|---|
| Pearl's ladder of causation | antecedent | association is not intervention is not counterfactual | Pearl builds a calculus; the pattern takes only the first rung's warning |
| Ablation studies | realization | the way the difference is actually established | a method, not an invariant |
| Λ non-laundering (cell 44) | partial overlap | a derived thing does not inherit authority it never had | the cell is about authority; the pattern is about explanatory dependence |
Novelty not claimed. Pearl's distinction is the content. Lint class PROVENANCE_AS_SUPPORT enforces the prose form, which is an enforcement mechanism, not a discovery.
Realizations in the tree
- mosaic/embodiment.json
- scripts/emb-support.mjs
Relations with other patterns
Continuity Through Reconstruction STATED · Evidence Before Claim WITNESSED