Skip to content

Releases: auspect/linexcel

linexcel 1.16.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 21:23
55b5bca

[1.16.0] — 2026-10-23

Added

  • Add an Excel presentation to the Data tab alongside Datasette filters and
    exports: extract direct styles, theme/indexed colors, row/column dimensions,
    hidden cells and merged ranges from the source OOXML. Browse bounded areas
    with common number/date formatting and keyboard-accessible source details.
  • Open the local application with serve --open; use --port 0 to select a
    free port and report its actual mounted URL.
  • Configure llama.cpp template thinking explicitly in serve and manual
    acceptance, separately from gateway thinking settings, and include it in
    documentation cache identity.
  • Propose seven source-grounded agent workflows for workbook audits, KPI
    explanations, version comparisons, SQL migration, reconciliation, handover
    documentation and calculation discrepancies.

Fixed

  • Match acceptance completions through exact prompt/content fingerprints and
    unique local receipt indices, retaining raw provider IDs when a runtime
    recycles them. Reject ambiguous or reused vision receipts.
  • Bound glibc allocation arenas in Linux worker subprocesses to reduce
    virtual-address pressure on hosts with many CPU cores, including repeated
    imports for external and quarantined workbooks. Honor explicit settings.
  • Validate serve ports before creating storage and provide a recovery hint for
    an occupied port. A failed browser launch leaves the copyable URL available.
  • Use exclusive Windows server sockets so an occupied local port receives the
    same recovery hint without reclassifying genuine permission errors.
  • Discard malformed AI table rows without losing the surrounding documentation
    or other valid tables.
  • Recognize structured AI fences only as complete Markdown blocks, preserving
    prose and formula proofs after inline mentions of table or claim blocks.
  • Reframe exported graphs after changing sheets, including equal-sized subsets
    and mobile layouts whose canvas resizes when the node reader closes. Keep
    labels readable in small filtered views of a larger workbook, and discard
    delayed frames after history or camera changes so Back restores its viewport.
  • Lay out the current visible nodes after applying graph filters, preventing
    overlapping cards when changing sheets, node types or calculation differences.
  • Describe input and named-reference values read through the engine as readings
    rather than recalculations in the exported viewer.
  • Scope calculation guidance to Nodes and Graph, support arrow/Home/End
    navigation between the main tabs, and provide a skip link to the workbook.
  • Keep formatted presentation separate from raw Datasette values and exports;
    distinguish missing caches, unsupported formats and canonical formula
    fallbacks. Bound XML, format codes and response size, reject entity
    declarations, and discard stale replies after project or sheet changes.

Documentation

  • Explain the presentation limits: approximate browser geometry, complex number
    formats, conditional formatting, number-format colors, charts, frozen panes
    and print layout do not establish an exact Excel rendering.

linexcel 1.15.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 21:59
e116326

[1.15.0] — 2026-10-16

Added

  • Browse imported worksheet data in serve with an embedded, read-only Datasette
    instance: Excel column letters, saved values, filtering, sorting and cell-level
    formula/source provenance, protected by the workspace's existing ownership.

  • Preserve original OOXML formula text, canonical engine formulas and
    decomposition separately, with file/part/cell fingerprints and shared-formula
    translation status. Expose these sources in exported and live viewers.

  • Add versioned factual-review instructions across all prompt languages and
    typed claim-to-evidence checks; distinguish these checks from semantic review.

  • Generate documentation through an initial draft and a bounded specialized
    review against the same exact source dossier. Retain both prompts, responses,
    checks and cumulative usage; a failed review cannot become a reviewed draft.

  • Journal received validation completions and their usage immediately, including
    rejected responses, so an interrupted language does not erase completed calls.

  • Supply explicit engine/cache readings, reference intersection and union
    facts, node/group identities, directed topology and omission scopes to the
    factual-review v5 rubric. Check explicitly bound scalar arithmetic claims
    without presenting these checks as certification of arbitrary prose.

  • Identify literal 3D references across worksheets without inventing their
    sheet or cell counts; keep opaque decomposition counters separate from
    established range geometry.

  • Measure XML/presentation spelling, literal cached strings and separate VBA
    full/graph/excerpt bounds; retain exact sent dossier JSON and its hash
    independently of the parsed evidence fingerprint.

  • Require explicit claim ledgers in new dossiers, flag missing, empty
    or multiple ledgers, and distinguish presentation formulas from stored XML
    in validation-report field roles.

  • Insert original, stored XML and canonical formula proofs deterministically
    from focal-node fields or an exact retained overview node ID, with separate
    insertion hashes and bounds,
    rather than asking the model to copy long source expressions.

  • Read .xlam and legacy .xla VBA through the public read_macros API and
    linexcel macros command. Include static add-in sources in serve; add-in
    reports explicitly omit worksheet calculation and context.

  • Add a pinned public Excel corpus downloader and --corpus-manifest acceptance
    replay. Verify source hashes before and after analysis and keep local source,
    image, model and review evidence separate.

  • Add a prioritized continuous-improvement plan, open-issue evidence gates,
    a Markdown cleanup inventory and a specialized factual-review methodology.
    Study Excelize as an optional formatted-value oracle before adopting a reader.

  • Allow manual acceptance to load an explicitly selected .env and use a
    separate vision endpoint. Authenticate gateway model discovery without
    forwarding gateway credentials to a separate loopback runtime.

  • Add explicit --reasoning-split acceptance configuration for compatible
    providers, keeping their reasoning blocks out of displayed documentation.

  • Add opt-in streamed text and vision responses with final token usage; require
    a complete stop finish and close interrupted streams. Expose --api-stream
    in manual acceptance without changing the default provider behavior.

  • Add explicit --api-thinking manual-validation configuration for providers
    supporting it and retain final response text in completion receipts,
    including rejected length-limited responses.

  • Expose response limits, streaming, reasoning split and thinking settings in
    serve; accept the generic gateway API key only for remote endpoints and
    invalidate completed documentation caches when response settings change.

Changed

  • Refresh the locked environment with Dependabot's Formualizer 0.11.1,
    python-calamine 0.8.3, OpenAI SDK 3.28.0, Playwright 1.63.0, Ruff 0.17.0
    and ty 0.0.86 updates, retaining the declared minimum versions.
  • Cover the engine update with versioned native and integration contracts for
    literal criteria, power associativity, logical error propagation and
    AGGREGATE's error-handling options; retain the lazy metadata guards.
  • Update pinned GitHub Actions to setup-uv 10.3.0, upload-artifact 7.0.2 and
    download-artifact 8.0.2 while preserving the expanded browser test coverage.

Fixed

  • Use the current generator annotation for progress context managers so the
    updated type checker accepts them without changing progress reporting.

  • Keep a stable lazy graph canvas, common-node positions and camera while
    selecting nodes, polling calculations or returning from another tab; restore
    bounded navigation snapshots on Back instead of rebuilding the whole view.

  • Calculate each visited formula cell immediately in its own targeted worker,
    including the first graph selection. Old manual-mode preferences no longer
    suppress calculation; source inputs and static VBA remain read-only.

  • Keep result-loading and calculation failures local to their node; a delayed
    stored result cannot interrupt a newer selection or prevent recalculation.

  • Retry refused or failed calculations without falling back to an older result,
    share active work only before cancellation, and publish terminal task status
    atomically with its metadata.

  • Show source formulas once in the graph reader, move canonical/XML proofs into
    an expandable section, and shorten graph controls and help text.

  • Keep primary graph navigation compact on mobile and move secondary controls
    into accessible options; make local exploration available from dense views.

  • Synchronize the canvas hit-test geometry after readability notices move it,
    preserving native card clicks, camera and positions at desktop/mobile sizes.

  • Reset a newly selected source reader to its heading and restore its scroll
    on Back; clear graph hover highlights when the pointer leaves the canvas.

  • Distinguish active cell, source input and static VBA guidance instead of
    referring to the removed recalculation-mode switch; scope dense-view and
    empty-graph guidance to static procedures when inspecting add-ins.

  • Keep the graph sheet picker complete, in workbook order and mounted during
    refreshes; report selection progress and explain cells without relationships.

  • Explore graph neighborhoods from 1 to 20 levels with accessible increment
    controls, mixed-direction paths and truthful node-budget/loading notices.

  • Open the Captures tab immediately, show loading and retry errors locally,
    and recover older saved images when recent capture results are empty.

  • Keep lazy graph counts and edges within the actual loaded neighborhood;
    prevent range memberships outside that neighborhood from crashing the canvas.

  • Preserve native renderer exit codes in capture failures and start with an
    explicit 1024 MiB budget, bounded by server limits. Retain requested lower
    budgets, worker memory isolation and the macro-disabled rendering profile.

  • Preserve literal string differences in the viewer's separator-heuristic label;
    the label no longer claims numerical or textual equality.

  • Inspect large sheet images through complete, native-size evidence crops with
    image hashes and coordinates; bound observations to the regions actually sent.

  • Isolate each native vision crop in its own request so a neighboring image
    cannot supply its quotations.

  • Retry invalid vision JSON once with a complete new response; retain both
    attempts, crop identity, receipts and token usage, without trimming output.

  • Preserve apostrophes and literal HTML entities in visual quotations in the
    live and exported viewers.

  • Keep a searchable, paginated source reader available when the exported
    viewer's graph library fails to load, with explicit bounds on relation lists.

  • Resolve misplaced focal formula tokens in workbook overviews to explicit
    missing evidence, without borrowing source text from a sampled node.

  • Remove code wrappers around formula placeholders before inserting standalone
    source blocks, preserving readable proof fences and the unchanged raw response.

  • Resolve exactly uniform or fully transparent image regions from their actual
    decoded pixels. Record local evidence with zero model requests, reject text
    claims on those regions and retain real vision requests for nonuniform crops.

  • Bind overview formula proofs to an explicitly selected retained node rather
    than an unavailable focal field or a neighboring example.

  • Bound workbook overview examples with explicit omission counts while keeping
    each retained formula's source evidence intact; preserve static VBA relation
    types and uncertainty in the lazy index and compatibility export.

  • Keep sheetless VBA nodes in reproducible acceptance samples; expose explicit
    API retry configuration and sanitized failure-stage evidence.

  • Use disposable LibreOffice profiles with no trusted macro locations when
    rendering or recalculating validation workbooks; never execute imported VBA.

  • Keep expanded operation and AI settings inside the serve sidebar. Preserve
    all-sheet navigation, open input cells before internal names on data-only
    sheets, handle empty sheets and ignore stale selection replies.
    Fit the workbook graph and allow its reader to be hidden for an overview.

  • Remove the unintended self-cycle from the broken-reference stress scenario;
    record formula count, grouping, engine version and value provenance so its
    timing cannot be confused with recovery or large-workbook acceptance.

Documentation

  • Archive eleven superseded task mandates and scoped reviews with their original
    bodies, dated scope banners and search exclusion. Keep current policy,
    acceptance requirements and surviving evidence gates in the active guides.
  • Document remaining uncertainty in AI prose and vision after specialized
    review; source integrity and successf...
Read more

linexcel 1.14.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 14:02

[1.14.0] — 2026-10-08

Added

  • Expose OpenAICompatProvider for reusable OpenAI/HTTPX clients, model URL
    templates, explicit proxies, transport options, SDK options and chat request
    parameters. Support caller-owned HTTP or SDK clients and context-managed
    cleanup of owned connections. Declare HTTPX in the optional AI extras and
    require OpenAI 1.55.3 or later for the configured transport API.
  • Add sourced package recommendations and a Power Query audit with integration
    costs, coverage limits and benchmark plans.

Fixed

  • Keep Power Query identifiers case-sensitive, exclude comments and text from
    source detection, and bound decompression of the embedded M section.
  • Clarify static Power Query extraction, isolated execution limits and the
    scope of AI quotation checks in the documentation.
  • Report HTTP status codes without quoting gateway payloads in provider API
    error messages; avoid attributing all vision failures to a text-only model.

linexcel 1.13.1

Choose a tag to compare

@github-actions github-actions released this 07 Oct 12:53

[1.13.1] — 2026-10-07

Changed

  • Require formualizer 0.10.1 and adopt native missing-sheet #REF! results,
    error guards and nested-guard values with engine provenance. Keep recovery
    paths covered through injected evaluation failures.
  • Detect long targeted formula chains from the bounded dependency trace;
    compressed native evaluation plans no longer provide a reliable depth count.

Fixed

  • Avoid legacy normal-distribution alias registration conflicts with formualizer
    0.11.0 while preserving Excel argument validation and support for 0.10.1.
  • Quarantine formulas rejected by native parser complexity limits before workbook
    import, preserving cached values and evaluation of unrelated formulas.

Added

  • Add a weekly and manually triggered compatibility matrix for the declared
    minimum, locked and latest stable formualizer versions, with calculation
    contracts and JUnit artifacts. Run the same matrix on pull requests.
  • Document the upgrade audit and a release review plan covering native
    capabilities, Python compatibility adaptations and measured performance.

linexcel 1.13.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 20:39

[1.13.0] — 2026-10-02

Added

  • Build and save a whole-workbook graph hierarchy in a resource-isolated server
    task, independently of formula evaluation. Each browser view has at most 32
    groups/cells plus the rest of the workbook, with server-provided positions,
    weighted dependencies, internal counts, breadcrumbs and direct cell lookup.
    Retain cross-group links and grouped ranges without accumulating the entire
    graph in browser memory. Support cancellation, task recovery and cache
    invalidation after structural reimport.
  • Separate import/graph time budgets (600 seconds by default) from targeted
    recalculation (120 seconds), and resolve exact cell searches through the SQLite
    node index instead of a workbook-wide substring scan.
  • Add a persistent Manual recalculation (lazy) checkbox. By default, selecting
    a formula still requests its targeted calculation; manual mode only reads saved
    evidence until Recalculate is pressed. Neither mode recalculates the whole
    workbook or automatically requests AI documentation.

Changed

  • Refresh the English application screenshots for the server-backed graph and
    manual recalculation controls.

Fixed

  • Preserve the case of graph searches sent to the backend so exact cell references
    use the indexed lookup and exclude cells with longer, matching prefixes.

linexcel 1.12.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 13:03
6a7c47e

[1.12.0] — 2026-10-01

Added

  • Stream resumable, owner-scoped uploads in 8 MiB chunks, defaulting to 256 MiB
    for the workbook and references. Support direct local-path imports in the
    loopback launcher, with immutable source copies and an opt-out flag. Bound
    pending storage, clean up interrupted chunks and restore acknowledged offsets
    after a server restart.
  • Index the interactive application's sparse OOXML data on disk with SQLite and
    native ZIP/XML parsing. Avoid whole-workbook openpyxl loading, retain shared
    strings on disk, skip formatting-only cells and resolve requested dependencies
    from the existing index. Keep failed-sheet diagnostics and refuse calculations
    whose inputs are incomplete.
  • Stream literal inputs from large dependency ranges into the Rust engine through
    a disk-backed, deduplicated selection. Compute complete supported ranges while
    keeping dependency cards sampled and coverage counts exact.

Changed

  • Serve paginated node searches and bounded graph neighborhoods instead of
    transferring the whole graph. Keep workbook/sheet counts exact and distinguish
    incomplete imports and omitted display data. Preserve the last published index
    when a refresh fails.
  • Keep task results on disk and load them on demand, with bounded dependency
    previews and streamed JSON downloads. Stream complete project exports without
    loading all indexed nodes, edges or saved task results into memory.
    Serve captures and thumbnails separately;
    read only the selected image for AI documentation. Screenshot metadata no longer
    loads workbook cells or shared strings through openpyxl.
  • Cache source revision hashes while file metadata is unchanged, avoiding a full
    source reread for every requested calculation. Preserve Windows long-path support
    for both SQLite indexes and uploaded project directories.
  • Refresh the English application screenshots and capture tooling for paginated
    projects, deferred results and separately served captures.

linexcel 1.11.1

Choose a tag to compare

@github-actions github-actions released this 26 Sep 20:25
2c87ae5

[1.11.1] — 2026-09-26

Changed

  • Give the graph a wide, adjustable reader with Linexcel calculation first
    and AI documentation in its own tab. Keep long documents inside a bounded
    scrolling panel and preserve reading position, keyboard focus and graph view
    when calculation results update. Stack the reader below the graph on narrow
    screens.
  • Show saved-file values, targeted calculation results and dependency-cell
    intermediates together. Keep unavailable and volatile results explicit; these
    snapshots are not a trace of executed branches or subexpression evaluations.
    Put deterministic evidence before optional AI documentation in the full card.
  • Refresh the English application screenshots to show both graph reader tabs.
  • Preserve intermediate text values verbatim when changing the interface
    language; only their surrounding labels are translated.

linexcel 1.11.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 17:28
c1048ee

[1.11.0] — 2026-09-26

Added

  • Show and generate node AI documentation beside the interactive graph, sharing
    the same result with the detail card. Report input, output and total tokens
    separately, including when accounting is estimated or unavailable.

  • Add English and French application interfaces, independently of the AI
    documentation language, and reproducible English application screenshots.

  • Add explicit AI documentation tasks for individual nodes, workbook overviews
    and selected captures in the web application, with server-owned provider
    settings, operation budgets, persistent results and source provenance.

  • Detect copied formula patterns structurally in the lazy application, preserving
    relative/absolute reference semantics and individual cell results. Expose
    group membership and let existing projects refresh their structure.

  • Add a reproducible local corpus probe for the lazy application, sampling
    OOXML workbooks across datasets and file sizes and formula targets across
    sheets/signatures. Preserve selection hashes, isolated task outcomes and
    saved-value comparisons under ignored validation storage.

  • Add a first deterministic lazy web application (linexcel serve) and a
    mountable WSGI factory with host authentication integration. Import the main
    workbook and references through the interface; build a structural graph
    without recalculation, then evaluate complete supported target dependencies
    in an isolated process. Keep ranges compact and unsupported dependencies
    explicit. Add per-operation budgets/cancellation, persistent task history,
    revision/version-aware caching, forced recalculation, cache comparisons,
    deterministic captures and JSON export. Separate user storage, coordinate
    worker/memory admission and preserve prior results on failure. External
    references currently support simple literal inputs; see README for calculation
    and server deployment limits. AI remains optional and explicitly requested.

  • After confirmed isolated-worker memory exhaustion, recover a bounded source
    inventory in up to two fresh workers under the original time/memory budgets.
    Stored-cell quotas are divided across worksheets and reduced fourfold on a
    further memory failure. Recovery never recalculates truncated inputs, builds
    dependency edges or claims completion; missing caches stay unknown and dates
    may remain raw serial numbers. Preserve the initial failure and all attempts.
    Disable with --memory-retries 0 / ExecutionPolicy(memory_retries=0);
    targeted analysis, cancellation, timeout and unknown crashes do not trigger it.

Changed

  • Present sheet captures as a thumbnail gallery with a selected-image view,
    replace native file controls with accessible styled upload buttons, and
    highlight bounded JSON previews while omitting image payloads from operation
    details. Keep complete results available through explicit downloads.

  • Move the graph center to the selected sheet and keep sheet selection consistent
    during cross-sheet navigation; avoid oversized initial zoom for isolated nodes.

  • Restore an interactive directed graph in the lazy application with the
    bundled offline Cytoscape library, pan/zoom, framing, sheet navigation,
    selection details and an accessible list alternative. Keep compact-range
    membership distinct from formula dependencies and bound only the display.

  • Expose formula dependency results from the same targeted engine operation,
    separately from saved caches and literal inputs. Report unavailable results
    and calculation coverage explicitly; reading dependency values does not
    trigger additional volatile recalculations or claim a branch execution trace.

  • Organize the lazy graph around sources, the selected node and its usages,
    with search, back navigation and explicit compact-range membership. Restore
    dedicated deterministic node cards with formula highlighting, source/cache
    provenance, nearby source labels and readable dependency decomposition.

  • Separate main-workbook and reference upload areas, support drag and drop,
    show removable file selections and transfer/import progress, and preserve
    valid selections when an upload needs correction.

  • Poll active operations individually instead of repeatedly transferring the
    whole graph and result history; idle workspaces use a lightweight connection
    check. Make empty-string results and volatile calculations explicit.

Fixed

  • Reuse the newest matching calculation after server restart, independently of
    filesystem enumeration order. Exclude obsolete implementation results from
    new AI dossiers and preserve value types in both node and workbook evidence.

  • Correct typed SUMPRODUCT array handling, error propagation through text
    concatenation and mixed-type comparisons inside the calculation graph, so
    dependent formulas use corrected results rather than patched final values.
    Preserve source formulas and distinguish Excel errors from matching text.

  • Resolve constant defined names and sheet-local bindings, preserve stored
    empty strings, and keep literal reads independent of the calculation engine.
    Reject excessive formula depth before native parsing in targeted calculations.

  • Preserve exact stored date serials and numeric calculation output, including
    Excel's fictitious 29 February 1900, instead of round-tripping through Python
    calendar dates. Keep source date formatting separate from numerical results.

  • Distinguish Boolean values from numeric values and compare date values using
    the workbook's date system when checking a targeted recalculation against the
    saved Excel cache. Preserve readable date values in the detail card.

  • Preserve external-link advice and reference-folder read warnings when analysis
    stops before the native engine finishes. Interrupted reports label those
    links as declarations which may be obsolete, without claiming active usage.
    Recommend --refs-dir DIR in report warnings even when external values are
    cached, without repeating the CLI hint.

linexcel 1.10.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 20:05
1f92623

[1.10.1] — 2026-09-24

Fixed

  • Recognize native Rust allocation failures as memory failures instead of generic
    analysis crashes. Preserve the engine operation, interpreted exit code, runtime
    versions and bounded native diagnostics, with Python fault handling and Rust
    backtraces enabled in the isolated worker. Unknown exits remain unexplained;
    an abort or SIGKILL alone is not treated as evidence of memory exhaustion.

Added

  • linexcel analyze --diagnostics FILE writes execution evidence without the
    workbook graph. Native stderr can still contain private data and paths.
  • validate_manual.py --no-screenshots supports deterministic investigations
    without rendering; these runs remain explicitly incomplete acceptance runs.

Documentation

  • Surface worksheet filtering in the HTML report and explain its cross-sheet
    context and display-only scope.
  • Add CLI and Python recipes for targeted output analysis, node exploration
    and downstream impact review, with large-workbook limitations.

linexcel 1.10.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 15:24
48cdc7f

[1.10.0] — 2026-09-20

Added

  • Grounded AI documentation safeguards (DEF-101-1..4 and DEF-VISION) in src/linexcel/aidoc.py
    and localized prompts across all nine languages (en, fr, de, es, it, pt, nl,
    ja, zh), enforcing verbatim backticks, preserving explicit non-zero formula lower bounds,
    and requiring unopened external workbooks ([Old.xlsx], [Budget FY26.xlsx]) to be identified
    as author file cache snapshots rather than disk-read values.
  • Empirical performance and scalability benchmark suites for Issue #65:
    • Dense workbook memory reading RSS comparing Calamine and Openpyxl across 1M to 19M cells,
      empirically justifying the MAX_DENSE_CELLS = 20M threshold.
    • Broken reference recovery costs across six pathological variants up to 80,200 edges, proving
      sub-second traversal (<0.96s) and bounded memory (<85 MB RSS).
    • Standalone HTML viewer scaling benchmarks on Desktop (1440×900) and Mobile (390×844) from
      500 to 10,000+ nodes, identifying Cytoscape's in-browser Dagre layout complexity as the
      operational threshold beyond 2,500 nodes.
  • Comprehensive numerical oracle qualification replaying the 40 diagnostic and 42 extension
    observations with LibreOffice 26.2.4.2 across 1900 and 1904 epochs (Issues #29, #32, #55, #64, #73),
    root-causing SUMPRODUCT string coercion (Lookups!B8) and range intersection NImpl (Lookups!B12).
  • Architectural evaluation for Issue #37 formally rejecting formulas as a mandatory core dependency
    due to heavy binary dependencies (SciPy/NumPy >150 MB) in favor of lean native pure-Python fallbacks.
  • Documentation dossiers distinguish represented group membership from sampled
    values, range dimensions from cell counts, and engine input reads from formula
    results. Bounded directed connections ground workbook calculation-flow prose.
  • Bounded checks of formula quotations in AI documentation against the exact
    source dossier. Unsupported quotations receive a visible qualification;
    optional API evidence retains the original response and individual checks.
  • Manual validation artifacts retain these quotation checks independently of
    generation success and factual review.
  • Isolated analysis with a configurable 120-second default budget, memory
    limits, cancellation and descendant cleanup. Structured execution and coverage
    evidence distinguish completed pipelines from complete or verified workbooks.
  • Reproducible native capability probes preserve type-level discrepancies and
    mark potentially affected formulas and represented dependents as unverified.
  • Keyboard-navigable search results, explicit search scope, cell/sheet return
    navigation, history, exact copying, selection links and view export. Dense
    neighborhoods expand progressively and coverage categories open their nodes.

Changed

  • Isolated API results no longer expose a live native engine. Use
    ExecutionPolicy(isolated=False) explicitly for that legacy behavior, without
    hard resource guarantees. HTML and AI documentation use the retained graph.
  • Removed heuristic duration announcements. estimatedSeconds now returns
    null; the CLI reports actual phases and configured budgets.
  • AI HTTP requests use a separate configurable timeout and no automatic retries.

Fixed

  • Render AI quotation notices as escaped quote blocks instead of exposing their
    Markdown markers, and use singular wording for one exploration step.
  • Documentation omissions explicitly concern the supplied dossier; missing step
    values no longer imply that evaluation was never attempted.
  • Reject dangerous formula structures before native import/AST conversion while
    retaining source formulas and stored values. Flat functions remain admissible.
  • Check targeted cell budgets before evaluation, preserve XML-escaped sheet
    identities and avoid unnecessary error-overlay scans on clean sheets.
  • Interrupted analyses retain unknown counts and do not launch optional AI or
    rendering. Group disagreements and range samples retain honest coverage.
  • Workbook AI dossiers distinguish actual recalculation from live API engine
    availability and explicitly label formula-scoped name evidence as a filtered
    selection. Prompts distinguish conservative risk warnings from causal evidence.
  • Larger graph labels and a vertical initial layout for small mobile graphs
    improve legibility without hiding their nodes or connections.

Validation

  • Completed both generated-workbook runs with Qwen3.8: 75 node cards, three
    overviews and 15 sheet-image descriptions, plus desktop/mobile browser checks.
    Independent review observed corrected group/topology/provenance explanations
    but retained false external-cache and visual claims. Generation and response
    integrity are not factual certification.
  • Compared 71 documentation dossiers before and after at the same 6,000-character
    node budget: no additional formula, decomposition, neighbor or sample omissions
    in that corpus. This is a retention measurement, not a runtime speedup.
  • Repeated complete local Qwen3.8 documentation and vision generation for the
    quotation-checking changes. Raw responses and source checks remain separate
    from factual review: conceptual formula shorthand can trigger notices, and
    topology, provenance and image-description errors remain documented limits.
  • Recorded two separately compiled native prototypes for scoped constants and
    number/text comparisons, plus an isolated performance baseline. The installed
    engine is unchanged; these experiments are not shipped numerical fixes.
  • Completed both generated-workbook runs with local Qwen3.8, including all
    expected language runs, node documentation, overviews, sheet captures and
    vision. Desktop/mobile investigation and an independent reviewer checked
    the final artifacts. The acceptance guide records known native discrepancies,
    remaining AI factual errors and the limited scope of performance measurements.