** Log
Session: (vampiro
plugin boundary decision)
- Claimed and closed vampiro-0vb.2.1 — Plugin boundary decision gate
(HITL)
- Evaluated YAGNI: workspace-crate ABI only; no serialization, no
dynamic loading, no plugin boundary until ≥2 frontends exist
- Created
docs/decisions/plugin-boundary.md with
rationale, rejected alternatives, and trigger conditions
- Updated openspec tasks 0.1/0.2 to completed in
add-cir-plugin-platform
- Next: Start vampiro-0vb.2.2 — Deliver versioned CIR
and recursive effect round trips
Session: (vampiro CIR types
& fixtures)
- Claimed and closed vampiro-0vb.2.2 — CIR and recursive effect round
trips
- Created
crates/vampiro-cir/ with CirGraph, CirNode,
CirEdge, EffectChannel, EffectResolution, Shape, Provenance, SourceSpan,
StableId, DiscardSpan, UnwrapEvidence types
- Created 3 fixture JSON files under
tests/fixtures/add-cir-plugin-platform/1/
- Added 4 fixture round-trip integration tests
- All 66 workspace tests pass, format and clippy clean
openspec validate add-cir-plugin-platform --strict
passes
- Next: vampiro-0vb.2.3 — Category and filtration
validation
Session:
(vampiro category & filtration validation)
- Claimed and closed vampiro-0vb.2.3 — category and filtration
validation
- TDD: 8 tests (missing identity, non-closed composition, invalid wide
subcategory, non-nesting, arbitrary depth, filtration_level, valid
category, resource limit)
- Implemented
vampiro-cir::category module with
validate_category(), validate_filtration(),
filtration_level()
- Validation errors: MissingIdentity, NonClosedComposition,
NonAssociative, InvalidWideSubcategory, NonNesting,
ResourceLimitExceeded, UndefinedMorphism, UndefinedObject
- Constants: MAX_CLOSURE_SIZE=4096, MAX_FILTRATION_LEVELS=16
- All 93 workspace tests pass, format and clippy clean
openspec validate add-cir-plugin-platform --strict
passes
- Next: vampiro-0vb.2.4 — Plugin loading and
conformance gating