docs/convergence-io/DCF.md

DCF — Data Classification Format

Module: src/convergence_io/dcf.py · Principle: P1 (Data Classification) · Gates: CCF Status: Implemented + unit-tested. Python reference contract; the production JS chat path does not import it directly (see README).

What it is

Every datum the system touches carries a class label, and labels propagate through transformationsa summary of a FERPA record is still a FERPA record. DCF is the bookkeeping that makes that propagation explicit, so downstream gates (CCF, NAP) can decide what may be done with a piece of data without re-inspecting its contents.

For the Dream Journal product the primary classes are:

Label Meaning
dream_content user dreams — personal, not medical
user_identity dreamer name, email
symbolic_data symbols, lore, characters — user-created world-building
system_metadata timestamps, agent selections, session state

Core types / API

  • ClassificationLabel — a label definition: name + sensitivity + retention policy.

to_dict() for serialization.

  • DataClassification — the label set attached to one datum:
    • add_label(label) / has_label(label)
    • has_any_sensitive(sensitive_labels=None) — does this datum carry any sensitive class?
    • is_retained(label_definitions=None) — is it inside its retention window?
    • derive(new_datum_id, propagating_labels=None)the propagation primitive: produce

the classification of a derived datum, carrying forward the labels that must propagate.

  • to_dict().

How it composes

DCF is the input gate of the stack: CCF (CCF.md) checks an agent's capability against the class of the data it wants to act on, and NAP (NAP.md) can deny actions on a data_class. Classify first, then gate.

Status & gaps

  • Implemented with a clean dataclass contract; covered by the convergence-io suite

(tests/test_convergence_io.py).

  • Label definitions (sensitivity + retention) are caller-supplied — there's no shipped

central registry of label policy yet; is_retained / derive accept the definitions per call.