Skip to content

feat(reports): attestation kind selector + kind-aware CSV download (B1b)#642

Merged
remyluslosius merged 1 commit into
mainfrom
feat/reports-b1b-attestation-ui
Jun 22, 2026
Merged

feat(reports): attestation kind selector + kind-aware CSV download (B1b)#642
remyluslosius merged 1 commit into
mainfrom
feat/reports-b1b-attestation-ui

Conversation

@remyluslosius

Copy link
Copy Markdown
Contributor

Summary

Phase B1b wires the Framework Attestation kind (B1a backend, #641) into the /reports UI, completing the operator-facing path to the auditor/GRC CSV evidence bundle.

  • Kind selector in the page header (Executive / Attestation), a host:write affordance beside the existing group + framework scope pickers. The generate body includes kind only when attestation is chosen; executive remains the implicit default, so an unscoped executive still posts {}.
  • Kind-aware primary download on the report detail: an executive report offers Download PDF; an attestation report offers Download CSV (the per-host, per-rule evidence face from B1a). JSON (the signed canonical face) is offered for both, switching on the resolved report's kind.
  • downloadReportFace accepts the csv format; kindLabel maps attestation to "Attestation" for the Library type chip.
  • Widen the Report.kind wire enum to [executive, attestation] and regenerate server.gen.go + schema.d.ts (the bulk of the server.gen.go diff is the re-compressed embedded OpenAPI blob).

Spec / tests

  • frontend-reports v1.6.0: new C-09 constraint + AC-10 acceptance criterion (source-inspection test). AC-07's assertion updated for the now kind-aware primary control.
  • npx tsc --noEmit, eslint, prettier --check, and vitest run tests/pages/reports.test.ts (10/10) all green; gofmt silent, go build ./... clean; specter check 111 specs structural, specter check --test 0 errors.

Validation

  • tsc / eslint / prettier
  • vitest reports suite (10 passed)
  • gofmt + go build
  • specter check (structural + annotation hygiene)

Wire the Framework Attestation kind (B1a backend) into the Reports UI:

- Header gains a report-kind selector (Executive / Attestation), a
  host:write affordance beside the scope pickers. The generate body
  sends kind only when attestation is chosen; executive stays the
  implicit default.
- The detail header's primary download is now kind-aware: an executive
  report offers Download PDF, an attestation report offers Download CSV
  (the per-host, per-rule evidence face). JSON (the signed canonical
  face) is offered for both. downloadReportFace accepts the csv format.
- kindLabel maps attestation to "Attestation" for the Library type chip.
- Widen the Report.kind wire enum to [executive, attestation] and
  regenerate server.gen.go + schema.d.ts.

Spec frontend-reports v1.6.0: C-09 + AC-10 (source-inspection test).
AC-07 assertion updated for the kind-aware primary control.
@remyluslosius remyluslosius merged commit 3c55fcf into main Jun 22, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant