Repository navigation
Releases: auspect/linexcel
Release list
linexcel 1.16.0
[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 0to select a
free port and report its actual mounted URL. - Configure llama.cpp template thinking explicitly in
serveand 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
[1.15.0] — 2026-10-16
Added
-
Browse imported worksheet data in
servewith 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
.xlamand legacy.xlaVBA through the publicread_macrosAPI and
linexcel macroscommand. Include static add-in sources inserve; add-in
reports explicitly omit worksheet calculation and context. -
Add a pinned public Excel corpus downloader and
--corpus-manifestacceptance
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
.envand use a
separate vision endpoint. Authenticate gateway model discovery without
forwarding gateway credentials to a separate loopback runtime. -
Add explicit
--reasoning-splitacceptance 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 completestopfinish and close interrupted streams. Expose--api-stream
in manual acceptance without changing the default provider behavior. -
Add explicit
--api-thinkingmanual-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
servesidebar. 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...
linexcel 1.14.0
[1.14.0] — 2026-10-08
Added
- Expose
OpenAICompatProviderfor 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
[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
[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
[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
[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
[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
SUMPRODUCTarray 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 DIRin report warnings even when external values are
cached, without repeating the CLI hint.
linexcel 1.10.1
[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 FILEwrites execution evidence without the
workbook graph. Native stderr can still contain private data and paths.validate_manual.py --no-screenshotssupports 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
[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 theMAX_DENSE_CELLS = 20Mthreshold. - 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.
- Dense workbook memory reading RSS comparing Calamine and Openpyxl across 1M to 19M cells,
- 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 intersectionNImpl(Lookups!B12). - Architectural evaluation for Issue #37 formally rejecting
formulasas 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.
estimatedSecondsnow 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.