Log

Append-only. Format: ## [YYYY-MM-DD] <ingest|query|lint> | <title> followed by 1-3 bullets of what changed. See CLAUDE.md.

[2026-07-22] setup | Wiki initialized

  • Created raw/, wiki/ folder structure and CLAUDE.md schema.
  • Domain: digital euro / CBDC, dual purpose (learning + future implementation reference for the ECB Digital Euro Pilot PSP specifications).

[2026-07-22] ingest | ECB Digital Euro Pilot document set (batch, from _initial/library/doc-pilot)

  • Copied 12 PDFs, 7 OpenAPI YAML specs, 2 xlsx, 1 url shortcut into permanent raw/ecb-pilot/{docs,specs,data}/. Source: user-provided _initial/ folder (to be deleted after this ingest — everything needed is now under raw/).
  • Quality check found the call_annex_1/call_annex_2 pre-existing .md sidecars were mislabeled (swapped relative to their PDFs) — regenerated both correctly from the PDFs. All other 10 .md sidecars were good quality (minor cosmetic table-header/ page-break artifacts only) and reused as-is.
  • Annex 2 turned out to be a real, completed, ECB-RESTRICTED PSP application (Raiffeisen Bank International AG) rather than a blank template — confirmed with the user this is their own document and fine to include; flagged as confidential in its source page.
  • Created 7 entity pages, 11 concept pages, 7 spec pages (one per OpenAPI YAML), 12 source pages. Updated wiki/index.md.
  • Noted an open thread: src-participation-agreement-appendix-2f (v2.0, 12 May 2026) supersedes src-end-to-end-process-flows (5 Mar 2026 draft) once a PSP has signed — the two haven’t been line-by-line diffed yet.
  • Not yet ingested: the two xlsx data files (noted in index as raw-only) and the ECB press-release URL shortcut.

[2026-07-22] lint | wiki/ vs raw/ digestion-ratio check

  • Compared wiki/ byte size against raw/’s extracted-text sidecars (fairer than raw PDF bytes, which are inflated by fonts/images). Overall: wiki/ ≈ 6.8% of extracted text.
  • Found two source PDFs — src-end-to-end-process-flows and src-participation-agreement-appendix-2f — hold 72% of all raw extracted text combined but were digested at only 0.5–0.8% into their wiki/sources/ pages, the lowest ratio of any source. User confirmed both are high-priority and asked for a deeper pass.

[2026-07-22] ingest | Access Management domain — deep pass on end-to-end process flows + UX requirements/wireframes

  • Installed Poppler (winget install oschwartz10612.Poppler) to render PDF pages, since [[src-user-journeys-ux-requirements]]’s wireframes (screen mockups) carry information the text-extraction sidecar can’t capture.
  • Extracted pages 13–45 (the whole Access Management journeys section) of ecb.dep260305_digital_euro_pilot_user_journey_and_minimum_UX_requirements.en.pdf as PNG (200dpi) to raw/ecb-pilot/docs/img/user-journey-ux-requirements/am-page-NN.png — kept for later GUI-building reference per user request. Not part of the publish mirror (lives under raw/).
  • Sample-checked the existing end_to_end_process_flows .md sidecar against the PDF: extraction quality is good — step tables (step ID / actor / description) came through as clean markdown tables, not garbled. The low digestion ratio was a coverage gap, not an extraction-quality problem.
  • Created access-management-flows: full step-by-step detail (with step IDs, kept traceable to source) for the 10 Access Management user journeys that have a matching UX journey — onboarding (AM-1.1), offboarding (AM-3.1), and 5 lifecycle amendment sub-flows (AM-4.1.1, .2, .3, .6, .9) covering IBAN/alias linking-unlinking, account blocking/unblocking, liquidity and notification settings — each with wireframe reference and condensed minimum-UX-requirements.
  • Updated onboarding §2, authentication, alias, spec-accessmanagement with cross-links to the new page; updated wiki/index.md.
  • Not yet covered (flagged in the new page’s scope note for a follow-up pass): business end user onboarding, app-configuration onboarding, bulk DEAN request (§1.1.2–1.1.4), three more lifecycle sub-flows (AM-4.1.4, .7, .8), and all of §1.4 “Access management sub-flows” (the sAM-* subprocesses referenced throughout, e.g. sAM-17.1/.2 authentication, sAM-25 alias ownership check, sAM-26 onboarding part II).

[2026-07-22] ingest | Access Management domain — remaining sub-flows (§1.1.2–1.1.4, §1.2 rest, §1.3.2, §1.4)

  • Completed access-management-flows: added the 16 flows flagged as not-yet-covered in the previous entry — business end user onboarding (AM-1.2), digital euro app configuration onboarding (AM-1.3), bulk DEAN request (AM-1.4), three lifecycle amendment sub-flows (AM-4.1.4, .7, .8), business end user offboarding (AM-3.2), and all 9 “Access management sub-flows” from source §1.4 (sAM-13 account closure, sAM-14 coding request, sAM-15 disable coded user details, sAM-17.1/.2/.3/.4 authentication family, sAM-25 alias ownership check, sAM-26 onboarding part II). All of source §1 “Access management” is now covered.
  • None of these 16 have a matching UX journey/wireframe — confirmed src-user-journeys-ux-requirements only illustrates the 10 journeys already in the page’s quick-reference table; these are process-flow-only.
  • Found that some sAM-* IDs referenced throughout (sAM-18, sAM-21, sAM-22, sAM-28, sAM-29, sAM-30, sAM-31) are never themselves detailed as a flow anywhere in src-end-to-end-process-flows — only called by ID. Added a “likely mapping” section to spec-alias (sAM-28CreateDeansBulk, sAM-29createDean, sAM-30createAlias/createAliasDean, sAM-31deactivateDean) and spec-accessmanagement (sAM-21createUsers, sAM-22usersDeactivations) based on matching semantics — not confirmed against the raw OpenAPI YAML bodies, flagged as such on both pages.
  • No new wiki pages created this pass — all additions went into the existing access-management-flows page plus small cross-link updates to spec-alias and spec-accessmanagement.

[2026-07-22] ingest | Liquidity Management domain — full deep pass (funding/defunding flows + wireframe)

  • Extracted pages 71–75 (the whole Liquidity Management journeys section — just 1 UX journey, LM 1.A) of the UX requirements PDF as PNG (200dpi) to raw/ecb-pilot/docs/img/user-journey-ux-requirements/lm-page-NN.png.
  • Visually confirmed (not just from text) that LM 1.A’s “Liquidity settings” wireframe screen is the same screen as AM 4.A’s in access-management-flows — explains why the two journeys’ minimum-UX-requirements text partly overlaps; not an extraction artifact.
  • Created liquidity-management-flows: full step-by-step detail for all of source §2 “Liquidity management” — 3 funding flows (LM-1.1, .1.8, .1.9), 3 defunding flows (LM-2.1, .2.10, .2.11), and all 5 §2.3 sub-flows (sLM-32/.33/.34/.35 checks, sLM-24 the defunding dispatcher called from access-management-flows’s AM-3.1 offboarding flow). One shared UX journey (LM 1.A) covers all 6 funding/defunding flows generically.
  • Found LM-1.9/LM-2.11 are composite flows (funding-offline chains a defunding-online first; defunding-offline-to-own-online chains a funding-online after) — each calls two sTM-5x settlement subprocesses, not one.
  • Found the settlement subprocesses invoked from LM flows (sTM-56.59) are sTM-prefixed, i.e. filed under Transaction Management in the source’s own ID scheme even though they’re the core of liquidity management — flagged for when the TM domain pass happens, since settlement will already be partly covered by then.
  • Updated funding-and-defunding, spec-settlementpsp, spec-settlementdesp with cross-links (including an unconfirmed but semantically-plausible mapping of sTM-56/.57 to fundingsRequest/defundingsRequest, flagged as such); updated wiki/index.md.

[2026-07-22] ingest | Transaction Management domain — full deep pass (largest domain: P2P/e-commerce/POS/refund/balance flows)

  • Extracted pages 47–70 (all 8 Transaction Management UX journeys: TM 1.A, 2.A, 2.B, 2.C, 3.B, 3.C, 7.A, 8.A) of the UX requirements PDF as PNG (200dpi) to raw/ecb-pilot/docs/img/user-journey-ux-requirements/tm-page-NN.png. Visually sample-checked TM 1.A (SoftPOS) against its text description — matched closely.
  • Created transaction-management-flows: full step-by-step detail for all 10 main flows (§3.1–3.5: P2P NFC/alias/DEAN, e-commerce, m-commerce, SoftPOS, refund, balance enquiry online/offline, transaction history) and all 12 §3.6 sub-flows (sTM-14 online integrity check, sTM-42 offline settlement, sTM-31/.33 balance pre-checks, sTM-34 pre-settlement, sTM-50/.49/.51/.52/.53 pilot PSP processing variants, sTM-32 post-settlement waterfall, sTM-29 SoftPOS defunding).
  • Identified and documented the common online-payment backbone (pre-settlement → settlement → confirmations → post-settlement waterfall) shared by 6 of the 10 main flows, described once on the page instead of repeated per flow.
  • Found sTM-55 “Settlement” — the most-referenced subprocess in the whole domain, called from every online payment flow — is, like several sAM-*/sTM-56-59 IDs before it, never itself given a step-by-step flow in the source document.
  • Found two source inconsistencies, both flagged in the page rather than resolved: (1) the UX doc’s TM 8.A journey cites flow IDs TM-9.1/.9.2.2/.9.3 while the process-flows doc defines the identically-titled flows as TM-8.1/.8.2.2/.8.3 (versioning drift between documents); (2) sTM-32.10 tags “Settlement defunding online” as [sLM-31], while every other reference to that same-named subprocess elsewhere in the source is tagged [sTM-57].
  • Confirmed (not just inferred) that spec-sepi’s only extracted endpoint, cryptogramValidation, is exactly what sTM-50’s NFC cryptogram validation steps call via the “Secure Exchange of Payment Information (SEPI) Service” — the strongest spec-to-flow match found across all three domain passes so far.
  • Updated online-and-offline-payments, offline-payments, spec-sepi, spec-settlementpsp, spec-settlementdesp with cross-links; updated wiki/index.md.
  • This completes the full step-by-step digestion pass across all three end_to_end_process_flows domains (Access Management, Liquidity Management, Transaction Management) that motivated this whole thread of work — see the 2026-07-22 lint entry above for the original digestion-ratio finding that started it.

[2026-07-22] ingest | Generic UX requirements (last undigested piece of the UX requirements doc)

  • Read src-user-journeys-ux-requirements §2 (pages 7–12): the cross-domain UX chapter that applies to every journey, independent of the AM/LM/TM domain passes above.
  • Created generic-ux-requirements: 5 subsections (authentication, accessibility/ branding/controllability, error handling, feedback/information/positioning, transactions & end-user support), condensed but keeping all mandatory (“shall”) rules.
  • Cross-checked the source’s own domain/journey summary table (page 6) against the three domain pages created earlier today — all 19 journeys (10 AM + 8 TM + 1 LM) match, no journey was missed across the whole multi-session digestion effort.
  • Updated src-user-journeys-ux-requirements to mark the entire document fully digested — every journey, wireframe, and requirement in it now has a wiki home. Updated access-management-flows, liquidity-management-flows, transaction-management-flows, authentication with cross-links; updated wiki/index.md.
  • This closes out the whole wiki/ vs raw/ digestion-ratio effort — both under-digested source PDFs identified in the original lint pass are now fully covered.

[2026-07-22] fix | Wireframe images 404ing on published site

  • Root cause: access-management-flows, liquidity-management-flows, transaction-management-flows linked wireframe PNGs under raw/ecb-pilot/docs/img/ user-journey-ux-requirements/, which is intentionally excluded from the _euro-wiki-online publish mirror (mirror covers wiki/ only) — links worked in Obsidian, 404’d on the live site.
  • Fix: duplicated the 20 pages actually linked (11 AM + 8 TM + 1 LM) into new wiki/assets/img/user-journey-ux-requirements/, rewrote the links in the three flow pages to point there, updated their caveat notes and src-user-journeys-ux-requirements.
  • Documented the new wiki/assets/ convention in CLAUDE.md’s folder layout.