Skip to content

Add versioned output schemas - #885

Open
besendorf wants to merge 2 commits into
mainfrom
feat/output-schemas
Open

besendorf wants to merge 2 commits into
mainfrom
feat/output-schemas

Conversation

@besendorf

Copy link
Copy Markdown
Collaborator

Summary

  • add a versioned public Pydantic schema package for module results, alerts, URLs, run metadata, hashes, and timeline records
  • validate JSON output at module save/load and command aggregation boundaries
  • register output shapes for every built-in Android and iOS module, including the detailed tombstone model
  • expose Draft 2020-12 schemas through the Python API and new mvt-ios schemas / mvt-android schemas commands
  • document schema versioning and custom-module output_model declarations

Compatibility

Existing module JSON root shapes remain unchanged. Mapping-based modules retain object roots, record-based modules retain array roots, and custom modules without an explicit model use a warned compatibility schema.

@github-actions

github-actions Bot commented Aug 23, 2026 •

Copy link
Copy Markdown
Contributor

Coverage

Coverage Report •
FileStmtsMissCoverMissing
src/mvt/android
   cli.py1761591%75–76, 290–291, 371–372, 437, 454–456, 500–501, 513–516
src/mvt/android/artifacts
   tombstone_crashes.py1651492%108–111, 114–120, 147, 179, 194–195, 273–274, 312
src/mvt/android/modules/androidqf
   aqf_settings.py15193%25
   base.py46296%77–78
src/mvt/android/modules/backup
   base.py40490%67–69, 73
src/mvt/android/modules/bugreport
   base.py1012080%75–80, 87, 94, 110–121, 157–159, 173
   dumpsys_receivers.py19289%44–48
src/mvt/android/modules/intrusion_logs
   base.py1487549%16–17, 80, 116–124, 129–130, 137–142, 145–158, 202, 211–212, 215–225, 233, 283–284, 294–327, 343, 373–384, 398
src/mvt/common
   command.py3852195%111–115, 212, 222–223, 229–233, 447, 450, 558, 694, 746, 774, 778–779, 783–788
   module.py1511491%221, 230, 232, 237, 246–253, 266–267, 281–282, 292–293
src/mvt/ios
   cli.py2035473%87–88, 178–224, 243–268, 403–405, 475–476, 524–525, 537–540
src/mvt/ios/modules
   base.py1682088%85, 97, 108, 116–117, 143–145, 161, 164, 174, 197–198, 209, 235, 247, 273, 277, 315–316
src/mvt/ios/modules/backup
   backup_info.py34391%46, 49, 85
src/mvt/ios/modules/fs
   cache_files.py523042%43–54, 58, 73–101, 104–115
src/mvt/ios/modules/mixed
   webkit_session_resource_log.py976830%60–70, 74, 79–103, 108–133, 140–186, 193–212
src/mvt/schemas
   registry.py591083%55, 78, 82–94
   serialization.py14379%33–35
TOTAL10002231177% 

Tests Skipped Failures Errors Time
538 1 💤 0 ❌ 0 🔥 21.949s ⏱️

This branch has not been deployed

No deployments
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