test: clarify M1-F-D-defer status + add LIVECBOR_DEBUG env

While checking whether last night's localUPLCEval: false fix unblocks
the 5 tx-submit-live tests skipped under TODO(M1-F-D-defer), found
that those tests still crash — but at a DIFFERENT spot than before.

Original UPLC issue (now fixed in production via 7ea7328 + fd24598):
- lucid's CML WASM UPLC interpreter falsely rejected our Plutus V3
  Submit/Claim/Accept txs. End-to-end chat + TTS lifecycle now works
  on Vector testnet by routing eval to Ogmios.

New / remaining test-side issue:
- Even with a proper evaluateTransaction mock response, lucid's
  applyUPLCEvalProvider → CML TransactionBuilder.set_exunits still
  panics with wasm "unreachable" inside the test fixture. The
  production path doesn't hit this (real Ogmios + real wallet UTxOs).
  Whatever the test-mock + CML interaction trips, it's separate from
  the original UPLC bug.

Refinements landed
- liveCbor.ts: opt-in LIVECBOR_DEBUG=1 env that prints the full inner
  err + WASM stack from rethrowAsTxError, so the next investigation
  doesn't need to re-add this scaffolding.
- tx-submit-live.test.ts:
  - setupSubmitHappyPath() now mocks "evaluateTransaction" with a
    proper EvalRedeemer-shaped response (useful baseline for any
    future un-skip attempt; not enough on its own to make the tests
    pass).
  - The first skipped test's TODO comment updated to record what's
    fixed in production vs. what remains as a test-infra bug.

Test counts unchanged (3 pass, 5 still skipped); production path
still verified end-to-end on testnet. Task M1-F-D-defer stays pending
but the original UPLC-interpreter blocker is gone.
This commit is contained in:
jelisaveta-talbot
2026-05-11 09:09:49 +02:00
parent 1f1a7d5a59
commit 0b93aee1ec
2 changed files with 39 additions and 4 deletions

View File

@@ -180,9 +180,25 @@ function chainUtxoToLucidScriptInput(
}
/** TxConstructionError wrapping arbitrary lucid failures, surfacing
* collateral mismatches with a stable substring so tests can assert. */
* collateral mismatches with a stable substring so tests can assert.
*
* Set LIVECBOR_DEBUG=1 to see the full inner error + WASM stack — useful
* for diagnosing lucid 0.4.30 / CML edge cases (e.g. the set_exunits
* panic that affects test fixtures but not production). */
function rethrowAsTxError(err: unknown, fallback: string): never {
const msg = err instanceof Error ? err.message : String(err);
if (process.env.LIVECBOR_DEBUG) {
// eslint-disable-next-line no-console
console.error("[liveCbor] inner error:", err);
if (err instanceof Error && err.stack) {
// eslint-disable-next-line no-console
console.error("[liveCbor] stack:", err.stack);
}
if (err instanceof Error && "cause" in err) {
// eslint-disable-next-line no-console
console.error("[liveCbor] cause:", (err as Error & { cause?: unknown }).cause);
}
}
const lower = msg.toLowerCase();
if (
lower.includes("collateral") ||