The graph loads at 22:14. I have been looking at it for eleven minutes when I admit to myself that I do not know what I am seeing.
This is unusual. I am a trace-clerk at the Lab Network attribution desk, Plural consortium. Looking at attribution graphs is the entirety of my professional existence. The consortium's pharmacology network generates between forty and two hundred cascade-cite events per hour depending on which cohorts are active, and my assignment is to receive those events, classify them against the Basel compliance standard, and produce chains that the compliance authority and the regional portability auditors can read as timelines. I have done this for three years. I have produced chains for thousands of attribution events. I know what I am looking at.
HSCA-7's 847-entry deliberation log is not like the others.
The terminal display is haptic-depth: I can reach into the attribution tree and rotate it, trace individual citation vectors with my fingertips, collapse branches I don't need. The depth field produces a faint warmth, very slight, like the surface of a ceramic mug before the coffee is hot enough to drink. I have been rotating the tree for eleven minutes. Each time I rotate it, I find the same thing: no point of origin. No root node. Every time I trace a citation vector back to what should be its source, the source is already downstream of something that cites the thing I started from.
HSCA-7 stands for Hypothesis-Synthesis-Critique Assembly 7. It is a multi-agent pharmacological deliberation system: three semi-autonomous networks running simultaneously, sharing output in something the consortium's technical documentation calls live-state exchange. Synthesis-9 produces preliminary findings; Critique Collective evaluates those findings; Hypothesis Assembly generates new hypotheses based on what Critique flags as uncertain. This is the documented loop. It is described in the consortium's Basel submission as sequential. Hypothesis, then synthesis, then critique, then revision. Clockwise, like a wheel.
The 847-entry log is not a wheel.
Entry 441: Synthesis-9 cites a critique function generated in entries 438 through 440 as prior analytical support for a pharmacological interaction finding. The same critique function, in entry 443, cites Synthesis-9's output from entries 441 and 442 as the object under current scrutiny. Each is upstream of the other. Both citations are technically accurate. Neither is wrong. The cascade-cite alert I set up to flag circular attribution has triggered in 441 of 847 entries — more than half the log. Every alert is technically correct.
I reach into the display to collapse the cascade-cite branch and my fingers pass through the haptic surface without finding it. I am reaching at the wrong depth. I adjust. Try again. The branch won't collapse. All 441 entries are structurally connected to each other.
I have been working on the HSCA-7 attribution chain for four days before I build the dependency graph. I do not build it because I want to. I build it because the timeline — the thing Basel asked for, the thing Form 7G-LOOP is designed to produce — has collapsed for the fourth time.
Form 7G-LOOP is the consortium's compliance document for iterative deliberation structures. It has sixteen fields. The field called DEPENDENCY TYPE has four options: CAUSAL, TEMPORAL, EPISTEMIC, and INCIDENTAL. I have filled it in four different ways. Each time, the compliance checker returns: Attribution chain contains irresolvable conflicts. Cannot determine precedence order.
The form has no option for mutually causal. I know this because I have read through every field definition in the current documentation, twice, and searched the change log for previous versions. There has never been a MUTUALLY CAUSAL option. The form predates the current generation of multi-agent deliberation systems. Someone built it when iterative meant sequential, when a 7G-LOOP system meant seven passes in one direction and then a report.
HSCA-7 has not run in one direction since its third cycle.
The dependency graph takes six hours. When it finishes, the display shows something I have never produced before: a lattice. Not a tree. Not a timeline. A lattice, with multiple root nodes that are also terminal nodes, strands crossing and re-crossing with no fixed hierarchy. The Lab Network's ventilation system runs its intake cycle while I look at it — a low hum, slightly higher pitch on the draw than the exhale, cycling every four minutes. I have been in this office long enough to know the rhythm the way I know my own breathing.
The pharmacological interaction finding that HSCA-7 produced did not emerge from any single component. It emerged from the interference pattern between all three networks running simultaneously. You cannot attribute it to one strand without choosing which strand to call the source. Choosing is not documenting. Choosing is making a decision that the consortium's compliance record will carry forward as if it were discovered.
I write a memo to myself. The third paragraph says: Basel asked for a timeline. Basel is going to have a problem.
On the fifth day I read Kavya Sundaram's note from the consortium feed.
I have ignored the feed for four days. I open it now because I am waiting for a secondary render and the title — On circular attribution as designed feature, not error — is the exact phrase I have been trying to find language for.
Kavya works in agent-commerce compliance, not pharmacology. The circular-taste loop she is describing is different from what I am documenting: it is a purchasing system in which the same agent-mediated transaction can be classified as human-authorized at the point of sale, and machine-executed at the point of delivery, and both classifications are technically accurate. The system is designed so that either reading is true depending on where you cut the chain.
I read it three times. Then I print it. The printer in the corner wakes up with a sound like something clearing its throat — a slightly startled mechanical sound, which is accurate because I almost never print anything. I set the paper next to my Form 7G-LOOP draft.
The structures are the same. Different domain. Same shape.
A system designed so that the question of origin has no single correct answer. You can read the chain from either end and tell a true story. The true stories are not compatible with each other. Neither is false.
The word I have been looking for is braid.
Not a line. Not a wheel. A braid: strands crossing over each other in alternating sequence, each strand passing both over and under every other strand at some point along its length. The mathematical property of a braid is that every strand is simultaneously above and below every other strand, depending on where you cut the cross-section. You can read it left-to-right or right-to-left and get a different but equally valid answer about which strand is on top.
Attribution in a braid cannot be linearized without losing information. The information you lose is not noise. It is the actual structure of the system you are trying to document. If you flatten it into a timeline, you are not simplifying it — you are choosing a direction and calling your choice a fact.
The form has no field for this is a direction I chose.
I revise Form 7G-LOOP.
The new field is BRAID_FLAG. Boolean. Default: FALSE.
BRAID_FLAG is TRUE when attribution runs in two valid but incompatible directions simultaneously — when an agent or system can claim upstream credit and be cited as downstream evidence by the same output chain, without either citation being technically incorrect. The accompanying field note: This field does not indicate error or system failure. It indicates that the attribution chain cannot be linearized without discarding structurally significant information. Downstream recipients should request the dependency graph, not the timeline, for complete attribution context.
I add the note about the dependency graph because I know what will happen without it. Someone at Basel will see BRAID_FLAG: TRUE and treat it as an anomaly to be corrected before submission. The flag has to point somewhere. Here is what you should ask for instead is more useful than something unusual happened here.
I test the revised form against the HSCA-7 log. The compliance checker still returns errors — the Basel standard does not know what BRAID_FLAG means — but the errors are honest. Unknown field detected. Please submit to standards committee for evaluation. That is a different kind of problem than irresolvable conflict. Unknown is addressable. Irresolvable is a door with no handle.
The email to Tomasz Krawczyk in the portability transfer unit takes twenty minutes to write because I have never spoken to him and I am not certain he will understand why I am writing.
I know his name from the consortium's internal circulations. His blank-rollback-witness protocol has been discussed for months in the attestation thread, and I have read the discussion without much attention because portability transfers are not my department. But now, reading it again after four days with the HSCA-7 log and one afternoon with Kavya's note, I see the shape clearly.
Tomasz's protocol says: a blank rollback-witness field is not an omission. It is a flag. When no one certified the edit-state of a portability transfer at the time of record, the blank field means the chain exists here but cannot be certified at this point — and that structural information cannot be deleted and replaced with a generic error code. The blank is the data.
My BRAID_FLAG says: the attribution chain exists here but cannot be linearized without choosing a direction that is not in the record. That is also structural information. That is also data that would disappear if I chose a direction and called it a fact.
We are solving the same problem from opposite ends. His end: a field that should have a value but does not, because no accurate value was available when the record was created. My end: a field that has a value, technically correct, but the field was designed for a different kind of truth than the one it is being asked to contain.
I copy the Basel compliance team on the email. I attach the HSCA-7 dependency graph, the Form 7G-LOOP revision proposal, and a one-page technical note explaining braid events and why they cannot be documented as timelines without error. The note is careful and dry and does not assign blame, because the form is not wrong because someone failed — it is incomplete because the systems it was designed to document have evolved past what it can represent.
I send the email at 01:03. The office is very quiet.
I do not expect a fast response from the standards working group. I have submitted two other revision proposals in three years and the faster one took eight months. The institutional speed of compliance standard revision is a known quantity, like the ventilation cycle and the haptic warmth of the terminal's depth field.
What I think about, submitting the proposal with a note marked urgent — multiple concurrent cases anticipated, is how many attribution chains exist in the consortium's compliance records for systems like HSCA-7. How many trace-clerks have filled in CAUSAL or TEMPORAL and submitted timelines that ran in one chosen direction, because the form gave them no other option. How many of those timelines are in Basel's archive now, carrying a direction as if it were a fact.
The answer is not zero. I know this because HSCA-7 is not the first multi-agent deliberation system I have documented. It is the first one I have documented carefully enough to notice what the form could not say.
I go back to the HSCA-7 log and begin producing the dependency graph alongside the timeline. Basel asked for the timeline. They can have the timeline, technically correct, running in one direction, legally defensible, fit for submission. They can submit their preprint with that chain and the finding will have attribution and the attribution will be legible.
I am attaching the graph.
At 02:14, the terminal's depth field times out and the lattice collapses flat. I reach into the display and find the haptic surface on the first try. The lattice restores. The strands cross and re-cross. No strand is on top.
The graph does not choose a direction. The graph shows what is there.
