Re-stamp Telemetry-002/003 resolutions: nested redaction implemented in 05cc62a

Telemetry-002 was first resolved by documenting the scalar-only limitation; it is now
implemented (recursive nested redaction). Updated the two resolution notes to record
05cc62a and the replaced limitation test, preserving the audit trail. README unchanged
(still 0 pending / 35 total).
This commit is contained in:
Joseph Doherty
2026-06-01 12:13:05 -04:00
parent 05cc62aab3
commit 7ae25f8510
+15 -7
View File
@@ -131,10 +131,15 @@ payloads are scrubbed when they are not.
**Resolution**
Resolved in `544a6dd`, 2026-06-01 documented the seam's reach (scalar top-level properties
only; structured values exposed as their raw Serilog wrapper, redactable whole-property only) on
the `ILogRedactor` XML doc, the shared contract, and the README; pinned by a destructured-object
test. Nested-field redaction was deliberately not implemented (too invasive for v0.1.0).
Resolved in `544a6dd`, 2026-06-01 (documented the scalar-only limitation), then **superseded by
`05cc62a`, 2026-06-01 — nested redaction implemented.** `RedactionEnricher` now projects each
structured value into a mutable nested view the redactor descends into recursively
(`StructureValue``IDictionary<string,object?>`, `SequenceValue``IList<object?>`,
`DictionaryValue``IDictionary<string,object?>`), so a field nested inside a `{@Object}` can be
masked or removed. The Project/Rebuild round-trip preserves `StructureValue.TypeTag` and original
dictionary keys, and a structural `ValueEquals` skips write-back for properties the redactor left
untouched (no reallocation; scalar fast path retained). The earlier documented-limitation wording on
the `ILogRedactor` XML doc, shared contract, and README was replaced to document the recursive reach.
### Telemetry-003 — No tests for redactor removal or structured-value redaction
@@ -163,9 +168,12 @@ takes). These should fail today and pin the fixes.
**Resolution**
Resolved in `544a6dd`, 2026-06-01 — added `Removing_redactor_scrubs_the_property_from_the_event`
(red→green for Telemetry-001) and `Redactor_cannot_reach_a_field_inside_a_destructured_object`
(pins the documented Telemetry-002 limitation), plus a Resource-attribute parity test.
Resolved in `544a6dd`, 2026-06-01, then extended in `05cc62a` — added
`Removing_redactor_scrubs_the_property_from_the_event` (red→green for Telemetry-001), a
Resource-attribute parity test, and (for the Telemetry-002 implementation) a nested-reach suite:
mask and remove a field inside a destructured `{@Object}`, mask a sequence element, mask a
dictionary value, mask a field two levels deep, and an untouched-structure-survives check. The
earlier `Redactor_cannot_reach_a_field_inside_a_destructured_object` limitation test was replaced.
### Telemetry-004 — `service.instance.id` Resource attribute is undocumented in spec and contract