Class QuarantineWriter
-
- All Implemented Interfaces:
public final class QuarantineWriterFailed-row quarantine with redaction (HEL-236 scenario 6). Rejected rows are written under
<prefix>/<runId>/so audit evidence stays traceable to the run that produced it, and the columns the caller declares sensitive are REDACTED before any byte leaves the process: the stored value issha256:<16 hex>— a stable fingerprint (equal values match across rows, supporting investigation) that cannot be reversed to the value.Security invariants: keys carry only runId + counters (never row data), the summary object carries counts + the caller's reason string (never values), and redaction is applied per WRITE — there is no unredacted code path.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public final classQuarantineWriter.Receipt
-
Constructor Summary
Constructors Constructor Description QuarantineWriter(ObjectStore store, String prefix, String runId, Set<String> redactColumns, RowPartFormat format, Clock clock)
-
Method Summary
Modifier and Type Method Description final StringgetRunId()final QuarantineWriter.Receiptwrite(Schema schema, List<Row> rows, String reason)Write one batch of rejected rows (redacted). final ObjectKeywriteSummary(String reason)Write the run summary (counts + reason — no row data). -
-
Constructor Detail
-
QuarantineWriter
QuarantineWriter(ObjectStore store, String prefix, String runId, Set<String> redactColumns, RowPartFormat format, Clock clock)
-
-
Method Detail
-
write
final QuarantineWriter.Receipt write(Schema schema, List<Row> rows, String reason)
Write one batch of rejected rows (redacted). Returns where they landed.
-
writeSummary
final ObjectKey writeSummary(String reason)
Write the run summary (counts + reason — no row data). Call once, last.
-
-
-
-