a file is a thing. a particle is its identity.
for years the cybergraph was described as particles linked by cyberlinks. today that sentence was taken apart, and it did not survive.
a particle is 32 bytes. always. it is the hemera hash of some data — the identity a cyberlink holds when it points at something. it was never the thing itself. the thing is a file: the data those 32 bytes identify. a neuron reads a file. a neuron links files. the graph ranks their identities.
file is now a root term of cyber, and the definition fits in one hand:
file = (particle, data) particle = hemera(data)
nothing else is inside a file. the first draft said (particle, data, name, meta) and was wrong the same afternoon: a file's name is a ~ label some neuron gave it by a naming cyberlink, mutable, resolved by supersession. author, height, mime — cyberlinks and the signal that carried them. a file with its data absent is a black hole: cyb://particle/<hex> until a spark opens it, cyb://file/<hex> after.
that leaves five primitives: files, linked by cyberlinks that neurons sign in signals and tokens weigh, and focus, the measure that says which files matter.
the decision went through fourteen repos in a day, markdown and Rust together. the definition was caught wrong twice on the way — first as "particle is the name of a file", then as the four-tuple — and both times the fix was to say less. cyb's content store renamed its record type from a particle to a file; two small crates now own the halves: particle is the hash as identity, spark is the opener that turns a file into a surface.
sources
- root term: cyber/file.md and cyber/particle.md — file becomes the root term · identity, never name · file = (particle, data), nothing more · on the wire a file is a frame
- the code: cyb: ParticleMeta → FileRecord · cyb stands on a particle, glides on a spark · particle · spark
- the sweep landed as
docs:commits dated 2026-09-16 in cyber, cyb, soft3, cybergraph, bbg, foculus, hemera, nox, tru, cybics, crystal, cyberia, seer and lens