# Engineering Ticket Breakdown ## Overview This document converts all specifications into PR-ready engineering tickets with acceptance criteria, organized by component (Frontend, Backend, Smart Contracts, Integration, Testing). --- ## Frontend Tickets ### FE-001: Builder UI - Drag & Drop Canvas **Priority**: P0 **Estimate**: 8 story points **Component**: `webapp/src/components/builder/Canvas.tsx` **Description**: Implement drag-and-drop canvas for building financial workflows. Users can drag adapters from palette to canvas, reorder steps, and configure step parameters. **Acceptance Criteria**: - ✅ Users can drag adapters from palette to canvas - ✅ Steps can be reordered by dragging - ✅ Step cards display step number, icon, type, and summary - ✅ Drop zone highlights when dragging over it - ✅ Visual feedback during drag operations - ✅ Steps can be edited and removed - ✅ Canvas is responsive (mobile/tablet/desktop) **Technical Requirements**: - Use `@dnd-kit/core` and `@dnd-kit/sortable` - Support both DeFi and Fiat/DTL adapters - Real-time step dependency visualization **Dependencies**: None **Related**: FE-002, FE-003 --- ### FE-002: Builder UI - Adapter Palette **Priority**: P0 **Estimate**: 5 story points **Component**: `webapp/src/components/builder/StepPalette.tsx` **Description**: Implement adapter palette sidebar with filtering capabilities. Show DeFi protocols and Fiat/DTL rails separately, with whitelist filtering option. **Acceptance Criteria**: - ✅ Adapters grouped by type (DeFi, Fiat/DTL) - ✅ Filter options: All, DeFi, Fiat/DTL, Whitelisted Only - ✅ Search functionality for adapters - ✅ Adapters show name, icon, and status (Approved, Deprecated, Restricted) - ✅ Draggable adapters with visual feedback - ✅ Compliance badge section visible **Technical Requirements**: - Fetch adapters from `/api/adapters` endpoint - Filter based on user selection and whitelist status - Support drag-and-drop to canvas **Dependencies**: BE-005 (Adapter Registry API) **Related**: FE-001 --- ### FE-003: Builder UI - Step Configuration Drawer **Priority**: P0 **Estimate**: 6 story points **Component**: `webapp/src/components/builder/StepConfigDrawer.tsx` **Description**: Implement step configuration drawer that opens when user clicks "Edit" on a step. Show step-specific fields and compliance requirements. **Acceptance Criteria**: - ✅ Drawer slides up from bottom (mobile) or from side (desktop) - ✅ Step-specific fields (token, amount, beneficiary, etc.) - ✅ Compliance fields auto-populated from user session - ✅ Real-time validation (balance checks, IBAN format, etc.) - ✅ Dependency visualization (shows which previous steps feed this step) - ✅ Save/Cancel buttons **Technical Requirements**: - Support all step types: borrow, swap, repay, pay - Validate inputs before saving - Show error messages for invalid inputs **Dependencies**: FE-001, BE-004 (Compliance API) **Related**: FE-001 --- ### FE-004: Builder UI - Compliance Status Dashboard **Priority**: P0 **Estimate**: 4 story points **Component**: `webapp/src/components/compliance/ComplianceDashboard.tsx` **Description**: Implement compliance status dashboard overlay showing LEI, DID, KYC, AML status. Always visible badge in header, expandable to full details. **Acceptance Criteria**: - ✅ Compliance badge in header (✓ LEI, ✓ KYC, ✓ AML, ✓ DID) - ✅ Expandable overlay with full compliance details - ✅ Workflow-specific compliance validation - ✅ Expiration warnings (if KYC/AML expiring soon) - ✅ Quick links to update identity or run new checks - ✅ Real-time status updates **Technical Requirements**: - Fetch compliance status from `/api/compliance/status` - Validate compliance for current workflow - Show warnings for missing requirements **Dependencies**: BE-004 (Compliance API) **Related**: FE-001 --- ### FE-005: Builder UI - Optional Simulation Panel **Priority**: P1 **Estimate**: 6 story points **Component**: `webapp/src/components/simulation/SimulationPanel.tsx` **Description**: Implement optional simulation panel for advanced users. Toggleable simulation feature that shows gas estimates, slippage analysis, liquidity checks, and failure predictions. **Acceptance Criteria**: - ✅ Simulation toggle in summary panel (optional for advanced users) - ✅ "Simulate" button appears when toggle enabled - ✅ Simulation results panel shows: - Step-by-step results (success/failure) - Gas estimate and cost - Slippage analysis - Liquidity checks - Compliance status - Warnings and errors - ✅ "Run Simulation Again" and "Proceed to Sign" buttons - ✅ Results panel closes/closes on click outside **Technical Requirements**: - Call `/api/plans/{planId}/simulate` endpoint - Parse and display simulation results - Show warnings/errors clearly **Dependencies**: BE-003 (Simulation Engine) **Related**: FE-001 --- ### FE-006: Preview Page - Plan Summary & Signing **Priority**: P0 **Estimate**: 5 story points **Component**: `webapp/src/app/builder/preview/page.tsx` **Description**: Enhance preview page to show plan summary, compliance status, and signature panel. Allow users to sign plan with wallet before execution. **Acceptance Criteria**: - ✅ Display complete plan summary (steps, amounts, fees) - ✅ Show compliance status for all steps - ✅ Signature panel with hash computation and wallet signing - ✅ "Create Plan" button (calls API) - ✅ "Execute" button (after plan created and signed) - ✅ Error banners for API failures **Technical Requirements**: - Use `useBuilderStore` for plan data - Integrate `SignaturePanel` component - Use `useMutation` for API calls **Dependencies**: FE-001, BE-001 (Plan API) **Related**: FE-007 --- ### FE-007: Execution Timeline - Real-Time Updates **Priority**: P0 **Estimate**: 6 story points **Component**: `webapp/src/components/plan/ExecutionTimeline.tsx` **Description**: Enhance execution timeline to show real-time status updates via SSE or polling. Display phases (Prepare, Execute DLT, Bank Instruction, Commit) with status indicators. **Acceptance Criteria**: - ✅ Real-time status updates via SSE (when enabled) or polling - ✅ Phase progression visualization (Prepare → Execute DLT → Bank Instruction → Commit) - ✅ Status indicators (pending, in_progress, complete, failed) - ✅ Terminal states handled correctly (complete, failed, aborted) - ✅ DLT transaction hash and ISO message ID displayed - ✅ Error messages shown for failed phases **Technical Requirements**: - Use `createPlanStatusStream` for SSE - Fallback to polling if SSE disabled - Handle terminal states correctly (fix Bug 1) **Dependencies**: BE-002 (Execution Status API), BE-006 (SSE) **Related**: FE-006 --- ## Backend Tickets ### BE-001: Orchestrator API - Plan Management **Priority**: P0 **Estimate**: 8 story points **Component**: `orchestrator/src/api/plans.ts` **Description**: Implement plan management endpoints: create plan, get plan, add signature, validate plan. **Acceptance Criteria**: - ✅ `POST /api/plans` - Create execution plan - ✅ `GET /api/plans/{planId}` - Get plan details - ✅ `POST /api/plans/{planId}/signature` - Add user signature - ✅ Plan validation (recursion depth, LTV, step dependencies) - ✅ Error responses with clear messages - ✅ OpenAPI spec documented **Technical Requirements**: - Validate plan structure - Check step dependencies - Store plan in database - Return plan with computed hash **Dependencies**: DB-001 (Plan Schema) **Related**: FE-006 --- ### BE-002: Orchestrator API - Execution Coordination **Priority**: P0 **Estimate**: 10 story points **Component**: `orchestrator/src/services/execution.ts` **Description**: Implement execution coordination service that manages 2PC (two-phase commit) across DLT and banking rails. **Acceptance Criteria**: - ✅ `POST /api/plans/{planId}/execute` - Initiate execution - ✅ `GET /api/plans/{planId}/status` - Get execution status - ✅ `POST /api/plans/{planId}/abort` - Abort execution - ✅ 2PC pattern implementation (prepare, commit, abort) - ✅ Real-time status updates via SSE - ✅ Error handling and rollback on failures **Technical Requirements**: - Coordinate DLT and bank steps - Implement prepare/commit/abort phases - Handle failure modes (DLT fail, bank fail, liquidity denial) - Emit status events for SSE **Dependencies**: BE-001, BE-007 (DLT Handler), BE-008 (Bank Connector) **Related**: FE-007 --- ### BE-003: Simulation Engine API **Priority**: P1 **Estimate**: 8 story points **Component**: `orchestrator/src/services/simulation.ts` **Description**: Implement optional simulation engine that provides dry-run execution, gas estimation, slippage calculation, and liquidity checks. **Acceptance Criteria**: - ✅ `POST /api/plans/{planId}/simulate` - Run simulation - ✅ Gas estimation for all steps - ✅ Slippage calculation for swaps - ✅ Liquidity checks for trades - ✅ Failure prediction - ✅ Step-by-step results - ✅ Response time < 5 seconds **Technical Requirements**: - Integrate with price oracles - Calculate gas estimates - Check liquidity pools - Predict failures **Dependencies**: BE-001, External (Price Oracles) **Related**: FE-005 --- ### BE-004: Compliance Engine API **Priority**: P0 **Estimate**: 6 story points **Component**: `orchestrator/src/services/compliance.ts` **Description**: Implement compliance engine that validates LEI, DID, KYC, AML requirements and injects compliance data into ISO messages. **Acceptance Criteria**: - ✅ `GET /api/compliance/status` - Get user compliance status - ✅ `POST /api/compliance/check` - Validate workflow compliance - ✅ LEI/DID/KYC/AML validation - ✅ Compliance data injection into ISO messages - ✅ Real-time status checks - ✅ Expiration warnings **Technical Requirements**: - Integrate with KYC/AML providers (Onfido, Chainalysis) - Validate LEI format - Generate compliance assertions - Inject into ISO message supplementary data **Dependencies**: External (KYC/AML Providers) **Related**: FE-004, BE-009 (ISO Message Generation) --- ### BE-005: Adapter Registry API **Priority**: P0 **Estimate**: 5 story points **Component**: `orchestrator/src/api/adapters.ts` **Description**: Implement adapter registry API that lists available adapters (DeFi + Fiat/DTL) with filtering and whitelist support. **Acceptance Criteria**: - ✅ `GET /api/adapters` - List adapters with filtering - ✅ `GET /api/adapters/{adapterId}` - Get adapter details - ✅ Filter by type (DeFi, Fiat/DTL, All) - ✅ Filter by whitelist status - ✅ Search functionality - ✅ Adapter metadata (name, version, status, chainIds) **Technical Requirements**: - Fetch from adapter registry contract (on-chain) - Cache adapter list - Support filtering and search **Dependencies**: SC-003 (Adapter Registry Contract) **Related**: FE-002 --- ### BE-006: Server-Sent Events (SSE) for Real-Time Updates **Priority**: P1 **Estimate**: 4 story points **Component**: `orchestrator/src/api/sse.ts` **Description**: Implement SSE endpoint for real-time execution status updates. Feature flag controlled. **Acceptance Criteria**: - ✅ `GET /api/plans/{planId}/status/stream` - SSE endpoint - ✅ Real-time status events - ✅ Phase progression updates - ✅ Error events - ✅ Graceful connection handling - ✅ Feature flag controlled **Technical Requirements**: - Use EventSource-compatible endpoint - Emit events on status changes - Handle disconnections gracefully **Dependencies**: BE-002 **Related**: FE-007 --- ### BE-007: DLT Handler Service **Priority**: P0 **Estimate**: 10 story points **Component**: `orchestrator/src/services/dlt.ts` **Description**: Implement DLT handler service that interacts with handler smart contract for atomic execution of DLT steps. **Acceptance Criteria**: - ✅ Execute DLT steps via handler contract - ✅ Support 2PC prepare/commit/abort - ✅ Gas estimation - ✅ Transaction monitoring - ✅ Rollback on failure - ✅ Error handling **Technical Requirements**: - Integrate with handler contract (SC-001) - Use Web3/Ethers.js - Monitor transaction status - Handle reentrancy protection **Dependencies**: SC-001 (Handler Contract) **Related**: BE-002 --- ### BE-008: Bank Connector Service **Priority**: P0 **Estimate**: 10 story points **Component**: `orchestrator/src/services/bank.ts` **Description**: Implement bank connector service that generates ISO-20022 messages and sends them to banking rails (SWIFT, SEPA, FedNow, etc.). **Acceptance Criteria**: - ✅ Generate ISO-20022 pacs.008 messages - ✅ Inject compliance data (LEI, DID, KYC, AML) - ✅ Inject plan metadata and digital signature - ✅ Support 2PC prepare phase (provisional messages) - ✅ Send to banking rails - ✅ Monitor settlement status - ✅ Generate camt.056 for cancellation **Technical Requirements**: - ISO-20022 message generation - Bank API integration - Compliance data injection - Error handling **Dependencies**: BE-004, BE-009 (ISO Message Generation) **Related**: BE-002 --- ### BE-009: ISO-20022 Message Generation **Priority**: P0 **Estimate**: 6 story points **Component**: `orchestrator/src/services/iso20022.ts` **Description**: Implement ISO-20022 message generation service that creates pacs.008, camt.052/053, camt.056 messages with plan metadata and compliance data. **Acceptance Criteria**: - ✅ Generate pacs.008 (payment instruction) - ✅ Generate camt.052/053 (bank statements) - ✅ Generate camt.056 (cancellation request) - ✅ Inject plan ID, digital signature, compliance data - ✅ Inject DLT transaction reference - ✅ Inject notary proof - ✅ Validate XML structure **Technical Requirements**: - Use ISO-20022 XML schemas - Template-based generation - Compliance data injection - XML validation **Dependencies**: BE-004, BE-010 (Notary Service) **Related**: BE-008 --- ### BE-010: Notary Service Integration **Priority**: P0 **Estimate**: 5 story points **Component**: `orchestrator/src/services/notary.ts` **Description**: Implement notary service integration that registers plans, finalizes executions, and provides audit proofs. **Acceptance Criteria**: - ✅ `POST /api/notary/register` - Register plan - ✅ `GET /api/notary/proof/{planId}` - Get notary proof - ✅ Register plan with notary contract - ✅ Finalize plan (success or failure) - ✅ Retrieve notary proof for audit **Technical Requirements**: - Integrate with notary registry contract (SC-002) - Register plan hashes - Finalize executions - Provide audit trail **Dependencies**: SC-002 (Notary Registry Contract) **Related**: BE-001, BE-002 --- ### BE-011: Receipt Generation Service **Priority**: P0 **Estimate**: 4 story points **Component**: `orchestrator/src/services/receipts.ts` **Description**: Implement receipt generation service that aggregates DLT transactions, ISO messages, and notary proofs for audit trail. **Acceptance Criteria**: - ✅ `GET /api/receipts/{planId}` - Get execution receipts - ✅ Aggregate DLT transaction receipts - ✅ Aggregate ISO message receipts - ✅ Aggregate notary proofs - ✅ Generate audit trail report **Technical Requirements**: - Query DLT transactions - Query ISO messages - Query notary proofs - Aggregate into receipt structure **Dependencies**: BE-002, BE-009, BE-010 **Related**: FE-008 --- ## Smart Contract Tickets ### SC-001: Handler/Aggregator Contract **Priority**: P0 **Estimate**: 13 story points **Component**: `contracts/ComboHandler.sol` **Description**: Implement handler/aggregator contract that executes multi-step combos atomically, supports 2PC, and integrates with adapter registry. **Acceptance Criteria**: - ✅ Execute multi-step combos atomically - ✅ Support 2PC (prepare, commit, abort) - ✅ Validate adapter whitelist - ✅ Reentrancy protection - ✅ Gas optimization - ✅ Event emission for off-chain tracking - ✅ Security audit passed **Technical Requirements**: - Use OpenZeppelin contracts (Ownable, ReentrancyGuard) - Integrate with adapter registry - Support step execution with error handling - Emit events for all state changes **Dependencies**: SC-003 (Adapter Registry) **Related**: BE-007 --- ### SC-002: Notary Registry Contract **Priority**: P0 **Estimate**: 8 story points **Component**: `contracts/NotaryRegistry.sol` **Description**: Implement notary registry contract that stores plan hashes, codehashes, and provides immutable audit trail. **Acceptance Criteria**: - ✅ Register execution plans - ✅ Finalize plan executions (success/failure) - ✅ Register adapter codehashes - ✅ Verify codehash matches - ✅ Query plans by creator - ✅ Immutable audit trail **Technical Requirements**: - Store plan proofs - Store codehashes - Provide query functions - Emit events for all registrations **Dependencies**: None **Related**: BE-010 --- ### SC-003: Adapter Registry Contract **Priority**: P0 **Estimate**: 6 story points **Component**: `contracts/AdapterRegistry.sol` **Description**: Implement adapter registry contract that manages whitelist/blacklist of adapters, tracks versions, and enforces upgrade controls. **Acceptance Criteria**: - ✅ Register adapters (DeFi + Fiat/DTL) - ✅ Whitelist/blacklist adapters - ✅ Check whitelist status - ✅ List adapters by type - ✅ Multi-sig for admin functions - ✅ Timelock for critical operations **Technical Requirements**: - Use OpenZeppelin AccessControl - Support adapter metadata - Provide query functions - Emit events for all changes **Dependencies**: None **Related**: BE-005, SC-001 --- ### SC-004: Adapter Interface & Example Adapters **Priority**: P0 **Estimate**: 10 story points **Component**: `contracts/adapters/` **Description**: Implement IAdapter interface and example adapters (Uniswap V3, Aave, ISO-20022 Pay) to demonstrate integration pattern. **Acceptance Criteria**: - ✅ IAdapter interface defined - ✅ Uniswap V3 adapter implemented - ✅ Aave adapter implemented - ✅ ISO-20022 Pay adapter implemented - ✅ All adapters pass tests - ✅ Documentation for adding new adapters **Technical Requirements**: - Follow IAdapter interface - Support executeStep function - Support prepareStep (if applicable) - Emit events for off-chain tracking **Dependencies**: SC-003 **Related**: INT-001 --- ## Integration Tickets ### INT-001: Bank Connector Integration **Priority**: P0 **Estimate**: 8 story points **Component**: `orchestrator/src/integrations/bank/` **Description**: Implement bank connector adapters for different banking rails (SWIFT, SEPA, FedNow, ISO-20022). **Acceptance Criteria**: - ✅ SWIFT MT connector - ✅ SEPA connector - ✅ FedNow connector - ✅ ISO-20022 generic connector - ✅ Support 2PC prepare phase - ✅ Error handling and retry logic **Technical Requirements**: - Bank API integration - ISO-20022 message generation - Error handling - Retry logic **Dependencies**: BE-009 **Related**: BE-008 --- ### INT-002: Compliance Provider Integration **Priority**: P0 **Estimate**: 6 story points **Component**: `orchestrator/src/integrations/compliance/` **Description**: Integrate with KYC/AML providers (Onfido, Chainalysis) and Entra Verified ID for compliance verification. **Acceptance Criteria**: - ✅ Onfido KYC integration - ✅ Chainalysis AML integration - ✅ Entra Verified ID integration - ✅ LEI validation - ✅ DID verification - ✅ Error handling **Technical Requirements**: - Provider API integration - Credential verification - Status caching - Error handling **Dependencies**: External (KYC/AML Providers) **Related**: BE-004 --- ## Testing Tickets ### TEST-001: E2E Tests - Builder Flow **Priority**: P0 **Estimate**: 8 story points **Component**: `tests/e2e/builder.spec.ts` **Description**: Implement end-to-end tests for builder flow: drag-drop, configure steps, create plan, sign, execute. **Acceptance Criteria**: - ✅ Test drag-and-drop from palette to canvas - ✅ Test step reordering - ✅ Test step configuration - ✅ Test plan creation - ✅ Test plan signing - ✅ Test plan execution - ✅ Test error scenarios **Technical Requirements**: - Use Playwright - Test all user flows - Test error cases - CI/CD integration **Dependencies**: FE-001, FE-002, FE-003, BE-001, BE-002 **Related**: All Frontend/Backend tickets --- ### TEST-002: E2E Tests - Failure Scenarios **Priority**: P0 **Estimate**: 6 story points **Component**: `tests/e2e/failures.spec.ts` **Description**: Implement end-to-end tests for failure scenarios: DLT failure, bank failure, liquidity denial, rollback. **Acceptance Criteria**: - ✅ Test DLT failure after bank prepare - ✅ Test bank failure after DLT commit - ✅ Test liquidity denial - ✅ Test rollback mechanisms - ✅ Test audit trail generation **Technical Requirements**: - Mock failure scenarios - Test recovery mechanisms - Verify audit logs **Dependencies**: BE-002, BE-011 **Related**: BE-002 --- ### TEST-003: Smart Contract Tests **Priority**: P0 **Estimate**: 10 story points **Component**: `contracts/test/` **Description**: Implement comprehensive smart contract tests for handler, notary, and adapter registry contracts. **Acceptance Criteria**: - ✅ Unit tests for all contracts - ✅ Integration tests - ✅ Fuzz tests for edge cases - ✅ Gas optimization tests - ✅ Security tests (reentrancy, access control) **Technical Requirements**: - Use Hardhat/Foundry - High test coverage (>90%) - Security audit ready **Dependencies**: SC-001, SC-002, SC-003 **Related**: All Smart Contract tickets --- ## Summary ### Total Tickets: 28 - **Frontend**: 7 tickets - **Backend**: 11 tickets - **Smart Contracts**: 4 tickets - **Integration**: 2 tickets - **Testing**: 3 tickets - **Documentation**: 1 ticket (already completed) ### Priority Breakdown - **P0 (Critical)**: 24 tickets - **P1 (High)**: 2 tickets (Simulation, SSE - optional features) ### Estimated Story Points - **Total**: ~180 story points - **Frontend**: ~40 story points - **Backend**: ~80 story points - **Smart Contracts**: ~37 story points - **Integration**: ~14 story points - **Testing**: ~24 story points --- **Document Version**: 1.0 **Last Updated**: 2025-01-15 **Author**: Engineering Team