Live

Excel & Live Workbook

An IG-XL program lives in an open Excel workbook, so that is where ATE·IQ goes. A task pane reads the sheets as context. A local bridge streams the live VBProject — including unsaved edits. A 33-rule registry reviews the VBA. Everything runs against the workbook you actually have open, on your own machine.

01

Overview

One installed application serves two Excel surfaces: the task pane, an Office add-in sideloaded from manifest.xml and embedded in the workbook window, and the live agent panel, fed by the ATE·IQ add-in pushing the open workbook's sheets and VBA over a local bridge. Both talk to the same server and the same project store as the standalone IDE — a workbook read in Excel is context in the desktop chat five seconds later.

one machine — every service binds 127.0.0.1, nothing is reachable from the LAN EXCEL IG-XL workbook sheets · live VBProject ADD-IN pushes active sheet + module source BRIDGE /api/bridge/* — 7 routes sheet · workbook · write … ATE·IQ chat · quality rules project store in-process VBA X-Bridge-Secret localhost shared secret generated on first run, stored at ~/.ate-iq/bridge.secret .xlsm on disk fallback: zip → vbaProject.bin OLE → decompress (Office.js cannot read VBA)
Fig. 1 — Workbook to project. The live stream is the primary VBA path; disk extraction is the fallback. Both stay on 127.0.0.1.
02

What the workbook provides

The task pane reads every IG-XL sheet in the open workbook as context, but not naively. The TestInst sheet is the filter: it names the VBT procedure each test instance calls, so it decides which procedures count as active. Per query, TestInst goes in first, other sheets are scored against the question's domain vocabulary, and only the modules that implement active functions are included in full. A 40-module workbook does not become a 40-module prompt.

VBA needs a different path, because Office.js cannot read VBA — by design, permanently. ATE·IQ has two:

PathMechanismReads
Live stream (primary) The ATE·IQ add-in reads the VBProject in-process and pushes module source over the bridge, secret-gated. The open editor state, including unsaved edits.
Disk extraction (fallback) The task pane obtains the workbook path via getFilePropertiesAsync(); the server opens the .xlsm zip, reads the vbaProject.bin OLE stream, and decompresses the VBA source. OneDrive paths map to the local sync folder. The last saved copy. Paths are restricted to %USERPROFILE% and OneDrive roots — the server will not read arbitrary files.
03

How it works

  1. Open the workbook.

    The task pane loads from https://localhost:3000/taskpane; the add-in starts its push loop against the bridge. No cloud endpoint exists to configure.

  2. Ask a question.

    Per-query scoring assembles the workbook context — TestInst first, relevant sheets next, active modules in full — and sends it to the chat with the project's other knowledge.

  3. The workbook becomes a project artefact.

    When a read completes, ingestion persists the workbook into the current project: sheets as sheet/<Name> rows with their header tokens, modules as vba/<Name>.bas rows with their procedure names, replaced atomically per sync. The context curator scores these rows alongside git-repo files — the task pane and the desktop IDE share one context.

  4. Run the quality scan.

    The quality tab extracts the .bas modules and runs the rule registry. Findings carry file, line, rule id and severity.

04

VBA quality rules

Rules live in one registry — R01 through R33 — shared by the task pane and the ingested-program scanner, so both surfaces report the same finding for the same line. Each rule carries an id, name, description, severity (error or warning), profile membership and tunable parameters: R03's max procedure length and R08's magic-number threshold adjust in settings, not in code. Only standard .bas modules are analysed; Excel class modules (Sheet*, ThisWorkbook, UserForm*) are skipped.

ProfileDefault rule set
dev Bug-class rules only: missing Option Explicit, On Error Resume Next, GoTo flow, blocking timing calls, SendKeys, float equality, On Error GoTo 0, missing PassFail.
prod Everything in dev, plus style, maintainability, performance and debug-aid rules.

The profile is a per-user setting; individual rules can be overridden on top of it. Switching profile clears overrides — a deliberate semantic, so a profile always means what it says.

.bas modules standard modules only strip strings + comments per line registry R01–R33 profile + overrides findings file:line · error / warning stripping first, so a banned token inside a string literal or a trailing comment cannot raise a false finding
Fig. 2 — The quality pipeline. Rules run over comment- and string-blanked source; length is preserved so line and column numbers stay exact.
05

On the TMP126 demo

The generated TMP126 program is an ordinary IG-XL workbook, and this surface treats it as one. Open it in Excel: the TestInst sheet names the 34 VBT procedures the program runs, so a question about a specific test pulls that test's TestInst row, its Limits row and the implementing module — not the whole workbook. Reading the workbook persists the Flow, TestInst, Limits, Binning and Pin Levels sheets and the VBT module into the project, which is where the Code Map's 34/34 active-function coverage figure comes from. The quality tab then reviews the same module the tester will execute.

Honest boundary Cell writes and VBA edits travel different paths — cells through Office.js in the task pane, VBA through the add-in and the bridge — and the platform does not present them as one mechanism. The bridge binds to 127.0.0.1 and every call carries the shared secret; there is no remote mode. The disk-extraction fallback reads the last saved copy — the live stream is primary precisely because a saved file can trail the open editor.