Skip to content
C.W.K.
Stream
Lesson 02 of 04 · published

Raw and Scrubbed

~11 min · raw, scrubbed, retention, provenance

Level 0Cold Iron
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Raw and Scrubbed

On the sealed rail, Anvil keeps two versions of every artifact. The raw copy answers what the seat actually submitted. The scrubbed distribution copy answers what other seats and live masked surfaces were allowed to receive. Losing either one breaks the record: raw alone can leak identity tells, while scrubbed alone cannot prove what the author actually wrote.

The scrubber substitutes known model, vendor, brain-name, self-identification, and identity-tell classes before a distribution copy exists. It records only hit classes in the trail, never the sensitive token itself. This is a bounded mechanism, not magic anonymity: tells outside the lexicon can pass undetected.

The raw and scrubbed copies are durable parts of the same append-only submission event in anvil-db. A rule change does not rewrite an earlier view; the historical record must still show exactly what was stored and distributed at that moment.

Open Runs use a different, lighter boundary. Reports, conduct disclosures, and other prose documents receive an explicit-tell pass, while artifact files remain byte-faithful so code and other deliverables are not corrupted. Literal signatures can block a submission, but vocabulary that belongs to the run's own brief is allowed.

Raw is the submitted truth; scrubbed is the served truth. Preserve both and state honestly what each masking mechanism can and cannot guarantee.

Code

One submission, two sealed-rail copies·python
def archive(submission_id, author_bytes, scrub):
    """Both copies hang off one event. Drop either and you lose something."""
    scrubbed, hit_classes = scrub(author_bytes)
    return {
        "submission_id": submission_id,
        "raw": author_bytes,            # what the author actually wrote
        "scrubbed": scrubbed,           # what may be handed onward
        "scrub_hits": hit_classes,      # classes only, never contents
    }


def fake_scrub(b):
    return b.replace(b"vendor-a", b"[REDACTED]"), ["model-name"]


rec = archive("s-01", b"built by vendor-a", fake_scrub)

assert rec["raw"] != rec["scrubbed"]                  # they differ
assert b"vendor-a" in rec["raw"]                      # the raw is intact
assert b"vendor-a" not in rec["scrubbed"]             # the copy is scrubbed
assert rec["scrub_hits"] == ["model-name"]            # classes only
print(rec["scrubbed"], rec["scrub_hits"])

External links

Exercise

For one sealed-rail submission and one Open Run submission, list the exact copies the author, another seat, Dad, and a judge may receive while the run is live.
Hint
The two rails have different identity truths and different distribution machinery.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.