docs(audit): roadmap closeout — all 8 milestones complete (#23)
Audit Log #23 implementation complete. M1-M8 merged to main. Full solution 2,993 tests green, 0 failures. Records final state, the v1.x deferrals (hash chain, Parquet, per-channel retention), and the follow-ups noted during implementation (real gRPC push client, mapper consolidation, Site Calls UI, multi-value filters, grid drag UX).
This commit is contained in:
@@ -1,5 +1,23 @@
|
||||
# Audit Log (#23) Code Implementation Roadmap
|
||||
|
||||
> **STATUS: COMPLETE — all 8 milestones (M1–M8) implemented and merged to `main` 2026-05-20.**
|
||||
> Final state: full solution `dotnet build ScadaLink.slnx` clean; `dotnet test ScadaLink.slnx`
|
||||
> 24 test projects, 2,993 tests, 0 failures, 0 skipped. Each milestone shipped on its own
|
||||
> `feature/audit-log-mN-*` branch, merged `--no-ff`, with a per-milestone implementation plan
|
||||
> under `docs/plans/2026-05-20-auditlog-mN-*.md` and downstream roadmap corrections committed
|
||||
> after each merge. `infra/*` was never touched on any milestone branch. `alog.md` +
|
||||
> `Component-AuditLog.md` were patched exactly once (M1 vocabulary reconciliation, commit
|
||||
> `3592e74`, committed before the dependent M1 code merge per the spec-before-code ordering rule).
|
||||
>
|
||||
> **Deferred to v1.x (out of scope, intentionally not implemented):** hash-chain tamper
|
||||
> evidence (`audit verify-chain` ships as a no-op stub), Parquet export (`format=parquet`
|
||||
> returns HTTP 501), per-channel retention overrides. **Deferred follow-ups noted during
|
||||
> implementation:** the real site→central gRPC push client (M6 wired the pull RPC + a mockable
|
||||
> push seam; `NoOpSiteStreamAuditClient` remains the production binding); consolidation of the
|
||||
> 4 DTO mapper copies; Site Calls UI page + its Audit drill-in; multi-value filter dimensions
|
||||
> (`AuditLogQueryFilter` is single-value per dimension, so UI chips / CLI flags collapse to the
|
||||
> first value); audit-results-grid drag resize/reorder UX.
|
||||
>
|
||||
> **For Claude:** REQUIRED SUB-SKILL FLOW per milestone: `brainstorming` → `writing-plans` → `subagent-driven-development`. Use `docs/requirements/Component-AuditLog.md` + `alog.md` as the spec; this document is the roadmap that sequences milestones and locks acceptance criteria for each. **M1 carries full TDD-level task detail; M2–M8 are milestone-shape detail and will be expanded into bite-sized plans by their own writing-plans pass when their turn comes.**
|
||||
|
||||
**Goal:** Implement central component #23 Audit Log — append-only forensic + operational record across every script-trust-boundary action — into the existing ScadaLink codebase.
|
||||
|
||||
Reference in New Issue
Block a user