Skip to content

feat: F060 Threadmark JSON export#4

Merged
kahboom merged 2 commits intomainfrom
f060
Mar 1, 2026
Merged

feat: F060 Threadmark JSON export#4
kahboom merged 2 commits intomainfrom
f060

Conversation

@kahboom
Copy link
Copy Markdown
Contributor

@kahboom kahboom commented Feb 28, 2026

Summary

  • Add Threadmark JSON export module for packaging scan results into structured, shareable compliance bundles
  • buildThreadmarkBundle() maps ScanResult into versioned ThreadmarkBundle with scan metadata, fields, claims, evidence, and risk summary
  • serializeBundle() produces pretty-printed JSON; generateFilename() creates hostname+date filenames
  • 14 new unit tests (114 total passing), all checks green
  • This completes all MVP features (F005-F060)

Test plan

  • 14 unit tests cover: metadata, scan mapping, fields/claims/evidence passthrough, risk summary with/without breakdown, JSON round-trip, filename generation with edge cases
  • TypeScript typecheck passes
  • Prettier + ESLint clean
  • Vite build succeeds

🤖 Generated with Claude Code

kahboom and others added 2 commits February 28, 2026 21:18
…060)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract inline types ScanMetadata and RiskSummary from ThreadmarkBundle
for better reusability across future export formats. Make timestamp
injectable in buildThreadmarkBundle() to eliminate non-determinism
and enable cleaner unit tests without bundle mutation.

Changes:
- Add ScanMetadata interface for scan metadata shape
- Add RiskSummary interface for risk summary shape
- Accept optional exportedAt parameter in buildThreadmarkBundle()
- Update tests to inject timestamps instead of mutating bundles
- Add test for custom timestamp injection
- Export new types from types/index.ts

All 115 tests pass. Addresses feedback items #2, #3, #5, #6.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@kahboom kahboom merged commit fec9f56 into main Mar 1, 2026
5 checks passed
@kahboom kahboom deleted the f060 branch March 1, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant