Expand description
Use cases for TechnicalSpec + signatures (Story 3.8 — FR33).
Operations:
TechnicalSpecUseCases::create_spec— syndic creates a new spec inDraft. Caller (handler) MUST already have enforced the syndic / superadmin role check.TechnicalSpecUseCases::bump_version— create a new version from a previous spec. Always returns a freshDraft; the version must be strictly greater than the previous one. The use case marks the previous spec asSupersededonce the bump succeeds.TechnicalSpecUseCases::submit_for_signatures— Draft -> Pending.TechnicalSpecUseCases::sign_spec— record a signature, returning 409 on duplicate, 403 when the signatory role is not in therequired_signatureslist. When the new signature completes the required set, the spec auto-promotes toApproved.
Mandate verification for AMO / Lawyer / Architect roles is handled at
the entity level (TechnicalSpecSignature::new returns
SignatoryNotAuthorized when mandate_id is missing for a role that
requires it). Real cryptographic e-signatures and Mandate-active checks
against the crate::application::use_cases::MandateUseCases are
follow-ups tracked in the Story 3.8 acceptance notes.