# Disassembly Abstractions Charter ## Mission Define the platform-agnostic disassembly interfaces and models for binary analysis. Enable multiple disassembly backends (Iced, B2R2) to be plugged in without changing consuming code. ## Responsibilities - Maintain `IDisassemblyPlugin` interface defining disassembly capabilities - Define `IDisassemblyService` for coordinated plugin selection and fallback - Provide format-neutral models: `DisassembledInstruction`, `BinaryInfo`, `SymbolInfo`, `CodeRegion` - Keep interfaces stable to minimize breaking changes for plugin implementations - Ensure deterministic output contracts ## Key Paths - `IDisassemblyPlugin.cs` - Plugin contract with capability reporting - `IDisassemblyService.cs` - Service coordinating multiple plugins - `Models/BinaryInfo.cs` - Binary metadata (format, architecture, ABI) - `Models/DisassembledInstruction.cs` - Decoded instruction with operands - `Models/SymbolInfo.cs` - Function/symbol metadata - `Models/CpuArchitecture.cs` - Supported architecture enum ## Coordination - Disassembly plugin implementers (Iced, B2R2) - Normalization pipeline consumers - Scanner team for binary vulnerability analysis ## Required Reading - `docs/modules/binaryindex/architecture.md` - `docs/implplan/SPRINT_20260102_001_BE_binary_delta_signatures.md` ## Working Agreement 1. Update task status to `DOING`/`DONE` in sprint file when starting/finishing work. 2. Review this charter and Required Reading before coding. 3. Keep models immutable and serialization-friendly. 4. Add capability flags to `IDisassemblyPlugin` rather than extending interface. 5. Document all public types with XML doc comments.