🚧 Early alpha — building the foundation. See the roadmap →
Open questions
Import behavior
Section titled “Import behavior”- Re-import strategy: When importing a file that was previously imported, should we overwrite, merge, or create new notes? What about user edits to generated notes?
- Column type inference: How aggressive should auto-detection be? Current heuristics may misclassify columns.
- Multi-file import: Should the wizard support importing multiple files in one session, with cross-linking between them?
Link metadata
Section titled “Link metadata”- Link syntax: Should typed links use inline Dataview fields (
type:: [[Target]] {json}) or a custom syntax? What’s most compatible with future Obsidian features? - Link direction: When two frameworks crosswalk, should links be injected in source notes, target notes, or both?
- Link updates: When a framework is re-imported, how do existing typed links get preserved?
Performance
Section titled “Performance”- Large frameworks: NIST 800-53 has ~1000+ controls. How does generation perform at scale? Need benchmarks.
- Streaming threshold: Is 5MB the right cutoff for streaming mode? Should it be row-count based instead?
User experience
Section titled “User experience”- Wizard flow: Is 4 steps the right number? Could steps 2 and 3 (configure + preview) be combined?
- Error recovery: What happens when generation fails mid-way? Should we support rollback?
- Mobile support: Obsidian mobile has limited file picker capabilities. How to handle?
Data model resilience
Section titled “Data model resilience”These are the hardest open questions. See data model resilience and ontology evolution for background research.
- Version-tagged vs. overwrite: Should re-import create a new version folder (SCD Type 2) or overwrite in place (Type 1)? Or let the user choose?
- User annotations: If a user adds custom content to a generated note and then re-imports, how do we preserve their additions while updating the generated parts?
- ID aliasing: When a framework renames an ID (e.g., ATT&CK sub-technique migration), how should old links resolve? Frontmatter aliases? Redirect notes?
- Crosswalk staleness: If Framework A updates but the A↔B crosswalk doesn’t, how do we detect and surface this? See OLIR maintenance model.
- Changelog ingestion: ATT&CK publishes machine-readable STIX changelogs. Should Crosswalker consume these to automate migration? What about frameworks without machine-readable changelogs?
- Bitemporal queries: Should
_crosswalkermetadata support both valid-time (when the framework version was published) and transaction-time (when we imported it)?
Ecosystem
Section titled “Ecosystem”- OSCAL output: What subset of OSCAL should we target? Full catalog or just control mappings?
- Community configs: How to distribute and discover shared import configurations?
- Pivot framework: Should Crosswalker support importing SCF’s STRM data as a meta-framework that enables automatic crosswalking between any frameworks mapped through it?