01 . The pipeline
A decision arrives, a validated file leaves.
Two sequences sit under this heading and they are not the same sequence. The chain, C1 to C7, is the tool: how a decision becomes a validated file, with the two links that are not built drawn as not built rather than left out. The eleven stages, S1 to S11, are the method, each naming its gate and the way it fails.
The chain, and where it breaks today
a dashed link is not built
The run of dashed spine is the break, and its length is the answer: the desk collects and prints, and cannot yet open a read. The figure is authored rather than generated. Unlike the stamped blocks elsewhere in the house, no run verifies that these two links and only these two are missing.
The eleven stages, their gates and their failure modes
| Stage | Gate | Fails as |
|---|---|---|
| S1 intake | a metric files only with name, value, date and source | a filed number reads as an observed one. The reported rung prevents it |
| S2 anchor set | anchors are proposed by machine, ratified by a person; the schema fails status='ratified' without ratified_by | reading the audience list for anchor names sweeps private people into a roster |
| S3 propagation | co-presence across two or more anchors is the edge | no follower graph exists, so this stays public-adjacency inference and is labeled as such |
| S4 segment registry | a machine cannot promote a segment to active, ratify its own anchor, or file a segment under a demographic kind | a proposed room that does not exist. Verification is a separate stage for that reason |
| S5 harvest | room existence verified over RSS at about one request per minute per IP | at speed every answer is 429, and a 429 is indistinguishable from a missing room |
| S6 corpus health | four floors, section 04 | a number that looks like a finding turns out to be a property of the instrument |
| S7 the six layers | each layer needs a control; without one it abstains and says what was missing | a read that drops the layers it could not do renders as a complete read |
| S8 crowd synthesis | a crowd is a rule set with sources: no source, no rule; no anchor, no crowd | a crowd no anchor reaches is a hypothesis, not a finding, and prints as one |
| S9 quantification | every parameter carries a named observable proxy and an update path | a parameter with no evidence hook is a liability, not a feature |
| S10 scoring | deterministic string and stem match, computed in the page, no model | the score is read as a forecast. Section 06 states the claim it supports |
| S11 calibration | graduation only after a held-out episode the parameters were not tuned on | many parameter sets reproduce one past, so fitting one is necessary and not sufficient |
02 . The unit of analysis, and what the schema blocks
A crowd is a rule set with sources, never a demographic.
Membership is not exclusive: a person holds several rule sets at once. Shares are soft, need not sum to 100, and are never a partition or panel data.
- status per crowd is held, prospect or split, and the report states which ledger the decision weighs.
- Observed field demographics may be carried as evidence. They never gate membership, they carry their own confidence, and they do not graduate past inference without a measured source.
- Provenance is printed: which anchors surfaced the crowd, and by which route.
- Three refusals are enforced in the schema rather than by convention: a machine cannot promote a segment to active, cannot ratify its own anchor, and cannot file a segment under a demographic kind. All three were tested live against a rolled-back transaction.
03 . What may leave
Three tiers, and no export from the middle one.
Tiers
| Tier | Holds | May it leave |
|---|---|---|
| 0 raw | posts as the platform served them, with the platform's identifiers | never |
| 1 pseudonymous | per-account counts of public acts and co-presence edges, handle replaced by a salted hash | never |
| 2 egress | segment-level aggregates under the five floors | yes |
Everything that reaches a stamped file, a page, a client, an email, a model prompt or the repository is tier 2. There is no tier 1 export, including into a prompt.
The five floors on tier 2
| # | Floor |
|---|---|
| 1 | k >= 20 distinct accounts behind every published cell. Below it the cell abstains and the artifact prints that it abstained. Applied at the source rather than at publication, so nothing under the floor is computed on |
| 2 | No verbatim searchable back to its author. A term, a construction, a pattern, a frequency, not a sentence somebody wrote |
| 3 | No inferred attribute at person level at any tier. Tier 1 records what an account publicly did, never what an account is |
| 4 | No cross-platform identity join. The salt is per platform and per window |
| 5 | No re-identification by intersecting cells. Coarsen before egress |
Collection is scoped by a public self-selected stream: open without a credential, the person placed their own post into it, and it is not defined by a person. A subreddit, a hashtag, an instance timeline, a Lemmy community and a public feed generator qualify. A profile, a follower list and a posting history do not.
04 . Preconditions, checked before a room is read
Each column exists because getting it wrong produced a wrong answer.
Corpus health
| Column | Floor | What it decides |
|---|---|---|
| has_comments | > 1.00 | mean accounts per thread. Exactly 1.00 means posts only: no co-presence, no reply structure, no repair. Canon and boundaries are then unavailable by construction, and the read states which of the two it is |
| flair_share | low | fraction of titles carrying a bracketed flair prefix. High means the lexicon layer is reading a taxonomy, and its terms need the venue-flair classifier before any is called sociolect |
| windows | >= 8 | weekly windows observed. Under eight there is no slope to fit and trajectory cannot open |
| accounts | >= 20 | distinct accounts. Under the k floor nothing leaves at all |
Three errors this check was built from, each one real: plurals read as coinages, because the general-English control was lemma-only. Moderator flair read as vocabulary, because titles carry a bracketed prefix from a dropdown. A schema property read as absence, because items.url is the item's own permalink and a shared-URL test cannot return a hit.
05 . The six layers
Each layer states what it needs, against what control, and when it stops.
Requirement, control, abstention
| # | Layer | Requires | Abstains when |
|---|---|---|---|
| 1 | lexicon | terms dense here and absent from an explicit elsewhere, at k >= 20, against a control set of other rooms | no control set, or under the floor |
| 2 | canon | shared references: links two or more accounts both point at, or works named repeatedly | no comments harvested, which makes it unavailable by construction |
| 3 | values and status | stance detection over a corpus | stance has run once ever, over one corpus, so this abstains everywhere |
| 4 | platforms | two or more venues | the segment appears on one venue only, so there is nothing to compare across |
| 5 | boundaries | in-group and out-group marking | the method is not built |
| 6 | trajectory | enough windows to fit a slope | fewer than eight weekly windows |
Composition into the map: lexicon, canon and boundaries produce the rule sets and the outsider tells; values and status produce rule sets and tensions; platforms produce the footprint; trajectory produces the pull.
The abstention convention
The masthead of a read carries N of 6 layers abstained, and every abstained layer states what it was missing. A read that drops the layers it could not do renders as a complete read, which is the outcome the convention exists to prevent.
Current state, stamped: of 105 registered rooms, one supports a six-layer read. The first end-to-end run abstained on five of six layers.
Layer 1 . the sociolect criterion, all three required
| # | Condition |
|---|---|
| 1 | home_acc >= 20 distinct accounts in the term's top room, in at least one week |
| 2 | the term appears in exactly one community, or its home room has at least 4x the accounts of the next-best room |
| 3 | nothing else. No relevance weighting in this pass |
Every candidate is then classified, because the raw output of a collision test over a general-interest corpus is mostly not sociolect: venue-ritual (hand-listed format and verdict acronyms), venue-named (a substring of the room's own slug), general-english (present in a 235,976 entry system dictionary, which is blunt: it holds proper nouns and misses inflections), and not-in-general-english, the residue. The residue is the only class worth a person's time and it is still not a finding on its own.
06 . The arithmetic
Printed, not described.
Message scoring is deterministic: the phrase is normalised, markers are matched per rule, and the arithmetic runs in the page. No model is involved.
+/-2 = an explicit rule the phrase honours or breaks
+/-1 = a weaker cue
MCS_p = 100 x sum( w_i x a_i ) / ( 2 x sum( w_i ) ) range -100 .. +100, w_i in 1..5
bands LANDS >= +30 . INERT -30 .. +30 . CLOCKED <= -30
credible reach = sum( share_p ) where MCS_p >= +30
backlash risk = |MCS| / 100 x backlash_amplification x exposure (clocked crowds)
whitespace W = 100 x intensity x reach x pull
intensity = edge score / 100 . reach = normalised combined share . pull = normalised average momentum
Why the scale reads -2 to +2, ruled 2026-08-27
With a_i in { -1, 0, +1 } the formula tops out at plus or minus 50, so it cannot reach the LANDS band without nearly every rule firing positive at once, and cannot reach 100 at all. Either the scale widens or the 2 leaves the denominator. The scale widened.
What the number supports
The claim it carries: this phrase breaks a rule we recorded, and here is the rule and its source. The claim it does not carry: this campaign will work. It is a directional reading and it prints as one, at the same size as the result.
07 . The measurement ladder
Two axes, never collapsed into one.
Axis 1 . the measurement status of a number, per value
| Rung | Definition | Assigned by |
|---|---|---|
| directional | a shape, with no number you would defend. Analyst estimate or synthesis; no live feed computes it | author |
| thin | a number over too little. Computed from a live feed, baseline under 14 days | automatic |
| measured | a number with a stated method and a control. Baseline 14 days or more | automatic |
| calibrated | measured, and scored against a holdout episode it was not tuned on | backtest protocol |
| abstained | the precondition failed. Prints what was missing | the read |
| reported | filed by the business, dated, and not checked by us | intake |
| open | defined and not yet run: the falsification row | intake |
Nothing in the house has reached calibrated. Axis 2 is the interpretive confidence of a claim, low, med or high, which is analyst judgment on rule sets and tensions. No feed reaches that axis, so it never graduates on its own.
Rendering follows the rung rather than a footnote: solid is measured, dashed is directional, red is a gap or an abstention. No bare integers anywhere; every number carries its label.
08 . The contract, and the gate
One template, one data file per engagement, one validator.
The template is never edited for a client. A new engagement copies a data file, replaces every value, validates and mounts. A client need the contract cannot express is a template change request, which bumps the version and updates the validator in the same commit.
Enforced by the validator
| Errors, exit non-zero | Warnings, defend or fix |
|---|---|
|
template outside decode-fieldnote-3d/{1.0, 1.1, 1.2} crowds outside 2 to 9 center not [x, z] formation or status outside vocabulary foot not exactly 6 keys, or a key outside the 14 basis outside m, d, g, a momentum outside -100..100, stage outside 0..100 a weight without a source a ladder label outside the seven rungs a verdict outside lands, inert, clocked, na engagement.read not equal to the last ledger row a move item naming an unknown crowd |
more than six crowds: past six, colour stops separating them under red-green colour
blindness, and identity falls to position, formation and the label a crowd with no weights[]: it validates, and the tester cannot score it a share sum far from 100, which is informational because shares are soft by design |
Ship gate, in order: the validator exits 0 and every warning is defended; every crowd has an open falsification metric or a printed abstention; the field, the report, the codebook, both themes and both exports open; the ledger's last row matches engagement.read and describes what changed.
Two invariants worth stating on their own
| Invariant | Why it is the invariant |
|---|---|
| a read selects exactly six of fourteen surfaces | the count is fixed, the membership is not, so surfaces are not improvised per client while a read can still pick the six its audience uses. Mastodon and Bluesky entered the vocabulary because they are the two lanes recorded live and keyless, which is the reason and also the cost: two platforms are in it because they are legible to us |
| no source, no rule | every rule carries its source and every weight carries one too. A rule without a source does not enter the file, so it cannot enter a score |
09 . Abstention and refusal, collected
Every place the instrument stops, and what it prints instead.
Trigger and behaviour
| Trigger | Behaviour |
|---|---|
| a cell under k >= 20 | abstain, and print the abstention |
| a room with mean accounts per thread of exactly 1.00 | canon and boundaries unavailable by construction, and the read says which of the two it is |
| fewer than eight weekly windows | trajectory does not open |
| one venue only | the platforms layer abstains |
| no keyless public endpoint for a surface | the handle prints unverified, taken as filed |
| the page cannot make the call | not reachable from here, which is a property of where the page is served and not of the handle |
| a metric without a date or a source | not filed, naming what it needs |
| a machine proposing an anchor | candidate only; ratification requires a named person |
| a degenerate measure, such as a mean of exactly 1.00 | says so, rather than reporting |
10 . Constants
Every number this page uses, with the rule or stage that owns it.
Thresholds
| Constant | Value | Owner |
|---|---|---|
| k-anonymity floor | 20 distinct accounts | the boundary rule, enforced in both stampers |
| minimum windows for a slope | 8 | the corpus-health run |
| sociolect dominance ratio | 4x the next-best room | the sociolect run |
| baseline, thin to measured | 14 days | the aggregation step |
| crowds per read | 2 to 9, warn above 6 | the validator |
| surfaces per read | exactly 6 of 14 | the validator |
| MCS band edges | +30 and -30 | the decode specification |
| a_i range | -2 to +2 | ruled 2026-08-27 |
| w_i range | 1 to 5 | the data contract |
| intake file limit | 20 MB a file | the intake desk |
| anonymous room checks | ~1 request per minute per IP | the room verifier |
| anchors per domain | 5, ratified by a person | the anchor rule |
11 . Gaps, and what each one blocks
Printed here for the same reason the abstentions are.
Not built, and the consequence
| Gap | Blocks |
|---|---|
| the intake store and the compiler | the desk cannot open a read; a submission stays in the tab |
| follower-graph ingestion | anchor propagation stays public-adjacency inference |
| stance detection as a standing pass | layer 3, values and status, abstains everywhere |
| in-group and out-group marking | layer 5, boundaries, abstains everywhere |
| comments in most harvested rooms | layer 2, canon, abstains by construction |
| the message tester surface | weights are carried and unscored |
| held-out episode scoring | nothing reaches the calibrated rung |
Change control: any change to structure, invariants or the data contract bumps the template version, adds a row to the change log, and updates the validator in the same commit. The contract CI job stays green.
The premise, the limits and what this instrument does not claim: /decode/. A read rendered from the contract above: /decode/field/. in the gossip repository, which is normative where this page disagrees with it. Written 2026-08-28.