Devin
5bd6a200c3
PR C: wire real NotaryRegistry contract on Chain 138 (arch step 4)
...
Code Quality / SonarQube Analysis (pull_request) Failing after 20s
Code Quality / Code Quality Checks (pull_request) Failing after 8s
Security Scan / Dependency Vulnerability Scan (pull_request) Failing after 3s
Security Scan / OWASP ZAP Scan (pull_request) Failing after 4s
- services/notaryChain.ts: new ethers-v6 adapter speaking to the
deployed NotaryRegistry.sol via CHAIN_138_RPC_URL +
NOTARY_REGISTRY_ADDRESS + ORCHESTRATOR_PRIVATE_KEY. Exposes
anchorPlan(plan) -> { mode, txHash, planHash, blockNumber } and
finalizeAnchor(planId, success) -> { mode, txHash, receiptHash }
with deterministic mock fallback when envs are absent.
- services/notary.ts: refactored to delegate to notaryChain; preserves
the prior signature and returns extra on-chain fields (mode, txHash,
blockNumber, contractAddress) when the anchor lands.
- config/env.ts: add CHAIN_138_RPC_URL, CHAIN_138_CHAIN_ID,
NOTARY_REGISTRY_ADDRESS, ORCHESTRATOR_PRIVATE_KEY (all optional,
validated via regex where applicable).
- package.json: add ethers@^6.11.0 dependency.
- tests/unit/notaryChain.test.ts: 6 tests covering deterministic
hashing helpers and the mock fallback path.
tsc clean. 51 tests pass (45 pre-existing + 6 new).
2026-04-22 16:33:06 +00:00
Devin
908c386dff
PR B: VALIDATING phase + unified ExceptionManager (arch steps 3, 7)
...
- services/exceptionManager.ts: single taxonomy (timing/data/control/
business/system) with §12 codes, deterministic route() table, and
handle() dispatch to retry/DLQ/escalate
- services/execution.ts: refactor executePlan to drive the full 12-state
machine (DRAFT -> INITIATED -> ... -> VALIDATING -> COMMITTED -> CLOSED)
via stateMachine.transition(), with a new validatePhase() that
reconciles DLT tx hash + bank message id + per-step amounts before
COMMIT; SoD-gated edges use distinct synthetic actors by default
- api/plans.ts + index.ts: GET /api/plans/:planId/state returning
current transaction_state + full audit trail of transitions
- tests/unit/exceptionManager.test.ts: 14 tests for classification +
routing matrix
59 tests pass. tsc clean.
2026-04-22 16:29:21 +00:00
Devin
b24a4df983
PR A: 12-state transaction machine + issueInstrument step + SoD matrix
...
Code Quality / SonarQube Analysis (pull_request) Failing after 23s
Code Quality / Code Quality Checks (pull_request) Failing after 11s
Security Scan / Dependency Vulnerability Scan (pull_request) Failing after 4s
Security Scan / OWASP ZAP Scan (pull_request) Failing after 5s
Architecture note steps 1, 2, 10 (data model).
- types/transactionState.ts: 12 states, allowed-transition table, SoD matrix
- types/plan.ts: add InstrumentTerms + 'issueInstrument' PlanStep type
- services/planValidation.ts: validate SBLC step (BIC, ISO-4217, sha256,
YYYY-MM-DD expiry, >0 amount)
- services/stateMachine.ts: transition() enforces legality + SoD + appends
to transaction_state_transitions
- db/migrations/002: plans.transaction_state (CHECK) +
transaction_state_transitions append-only table
- tests/unit: 13 + 8 unit tests (31 total, all pass)
No behaviour change yet: coordinator still uses legacy status field.
PRs B-G will migrate execution paths onto the new machine.
2026-04-22 16:21:36 +00:00