Menu ▾ ▴

#28 [Design] Two =EPM() client implementations (Office.js + VBA) risk protocol drift

closed
nobody
None
2026-06-13
2026-06-12
Anonymous
No

Originally created by: pyy3

Type: design / tech-debt (architecture)

Summary

The =EPM() worksheet protocol is implemented twice and independently — once in the Office.js task-pane add-in (excel-addin/src/taskpane.js, also vendored in konsol public/excel-addin/) and once in VBA (excel/OpenEPM.bas). Both call the same batch/query API. There is no shared contract, so the two clients can drift in request shape, batching limits, error handling, and measure/scenario defaults.

Why it matters

A change to the API contract (e.g. MAX_BATCH_SIZE, parameter names, scenario handling) must be mirrored in two languages by hand. Silent drift produces "works in web Excel, broken in desktop VBA" bugs that are hard to diagnose in a finance setting.

Suggested directions

  • Define the request/response contract once (JSON schema or a short spec doc) and add a contract test that exercises both the documented payloads.
  • Or generate one client's payload-building from the other / from a shared definition.
  • At minimum, a single source-of-truth doc enumerating the wire protocol both clients must honor.

Related

Tickets: #34
Tickets: #35

Discussion

  • Anonymous

    Anonymous - 2026-06-13

    Originally posted by: pyy3

    Fixed in [#35] (merged to main). Note: the Office.js client change still warrants an in-Excel smoke-test.

     

    Related

    Tickets: #35

  • Anonymous

    Anonymous - 2026-06-13

    Ticket changed by: pyy3

    • status: open --> closed
     

Log in to post a comment.