본문으로 건너뛰기

Conformance dashboard

Generated 2026-05-28T02:21:05.801Z by conformance/scripts/dashboard.mjs. Do not hand-edit; regenerate with node conformance/scripts/dashboard.mjs.

Reference implementation

xl3-js 0.1.0-alpha.0 — 154/154 pass (100.0%); 0 fail, 0 error, 0 skip

External implementations

  • xl3-py 0.1.0a3 — 133/133 pass (100.0%); 0 fail, 0 error, 6 skip
  • xl3-wasm 0.1.0 — 119/154 pass (77.3%); 29 fail, 0 error, 6 skip

Breakdown by ADR (reference impl)

ADRFixturesPassFailSkipError
ADR-000111000
ADR-000222000
ADR-000333000
ADR-000511000
ADR-000655000
ADR-000766000
ADR-000844000
ADR-000988000
ADR-001055000
ADR-001122000
ADR-001277000
ADR-001355000
ADR-001444000
ADR-001644000
ADR-001744000
ADR-001911000
ADR-002122000
ADR-002322000
ADR-002422000
ADR-002511000
ADR-002622000
ADR-002733000
ADR-002822000
ADR-002944000
ADR-003011000
ADR-003111000
ADR-003211000
ADR-003322000
ADR-003511000
ADR-003611000
ADR-003877000
ADR-003911000
ADR-004111000
ADR-004322000
ADR-004411000
ADR-004611000
ADR-004711000
ADR-005033000
ADR-006666000
ADR-006744000
ADR-006844000
ADR-006944000
(no ADR)4141000

Per-fixture status

Fixturexl3-jsxl3-pyxl3-wasm
001-bracket-substitutionpasspasspass
002-if-functionpasspasspass
003-list-sheet-filterpasspasspass
004-repeat-right-defaultpasspasspass
005-round-half-away-from-zeropasspasspass
006-filename-forbidden-charspasspasspass
007-filename-reserved-namepasspassfail
008-numfmt-numeric-string-coercionpasspasspass
009-numfmt-date-string-coercionpasspasspass
010-numfmt-text-format-coercionpasspasspass
011-text-date-formatpasspasspass
012-text-number-formatpasspasspass
013-rich-text-template-expressionpasspasspass
014-source-formula-cached-resultpasspasspass
015-source-sheet-prefix-first-matchpasspasspass
016-text-number-negative-roundingpasspasspass
017-source-sheet-prefix-no-match-errorpasspasspass
018-source-formula-missing-cached-result-errorpasspassfail
019-filename-empty-basename-errorpasspassfail
020-filename-length-overflow-errorpasspassfail
021-numfmt-number-coercion-errorpasspassfail
022-numfmt-date-coercion-errorpasspassfail
023-today-utc-dynamicpasspassfail
024-stage2-merge-preservationpassskipskip
025-stage2-style-numfmt-preservationpassskipskip
026-stage2-splice-merge-style-preservationpassskipskip
027-stage2-cross-writer-canonicalizationpassskipskip
028-source-table-row-shorthandpasspasspass
029-source-table-open-rangepasspasspass
030-source-table-finite-rangepasspasspass
031-source-table-zero-data-rangepasspassfail
032-source-table-empty-column-name-errorpasspassfail
033-source-table-duplicate-column-name-errorpasspassfail
034-source-table-invalid-selector-errorpasspassfail
035-source-table-rich-text-headerpasspasspass
036-source-table-formula-headerpasspasspass
037-source-table-formula-header-missing-cache-errorpasspassfail
038-source-sheet-exact-match-beats-prefixpasspasspass
039-source-sheet-default-first-worksheetpasspasspass
040-list-sheet-hidden-states-removedpasspasspass
041-row-function-inside-repeat-blockpasspasspass
042-row-function-outside-repeat-block-errorpasspassfail
043-ifempty-functionpasspasspass
044-sort-and-top-orderpasspasspass
045-list-sheet-not-in-filterpasspasspass
046-count-field-non-emptypasspasspass
047-aggregate-functionspasspasspass
048-if-and-comparison-boundariespasspasspass
049-filename-sanitization-warningpasspasspass
050-empty-ifempty-whitespace-onlypasspasspass
051-empty-ifempty-zero-not-emptypasspasspass
052-empty-count-field-whitespace-zero-falsepasspasspass
053-empty-row-skip-whitespace-onlypasspasspass
054-empty-list-membershippasspasspass
055-if-truthy-zero-and-emptypasspasspass
056-if-truthy-string-zero-not-specialpasspasspass
057-if-truthy-booleanpasspasspass
058-if-comparison-resultpasspasspass
059-compare-numeric-string-vs-numberpasspasspass
060-compare-string-codepoint-orderpasspasspass
061-concat-canonical-formpasspasspass
062-concat-empty-stringifies-to-emptypasspasspass
063-compare-empty-vs-valuepasspassfail
064-compare-unicode-minus-not-numericpasspasspass
065-input-text-default-appliedpasspasspass
066-input-text-host-suppliedpasspasspass
067-input-missing-required-errorpasspassfail
068-input-select-host-suppliedpasspasspass
069-source-multi-declarationpasspasspass
070-source-aggregate-cross-sourcepasspasspass
071-source-directive-activepasspasspass
072-source-undeclared-errorpasspasspass
073-source-row-cross-errorpasspassfail
074-xlookup-basicpasspasspass
075-xlookup-fallbackpasspasspass
076-xlookup-no-match-errorpasspassfail
077-xlookup-source-mismatch-errorpasspasspass
078-xlookup-bare-bracket-errorpasspasspass
079-join-basic-innerpasspasspass
080-join-no-match-droppedpasspasspass
081-join-undeclared-source-errorpasspasspass
082-join-bad-on-clause-errorpasspasspass
083-sort-stable-equal-keyspasspasspass
084-sort-multi-stable-prioritypasspasspass
085-file-group-first-seen-orderpasspasspass
086-sheet-group-first-seen-orderpasspasspass
087-date-canonical-string-concatpasspasspass
088-date-comparison-equalitypasspasspass
089-error-sentinel-emptypasspasspass
090-percentage-numeric-flowpasspasspass
091-source-unknown-column-errorpasspassfail
092-composed-multi-source-join-filter-sortpasspasspass
093-stage2-excel-authored-expectedpassskipskip
094-reserved-sheet-name-errorpasspasspass
095-empty-fefff-not-whitespacepasspasspass
096-canonical-number-scientific-boundarypasspasspass
097-native-formula-static-cell-preservedpasspasspass
099-empty-template-block-errorpasspassfail
100-arithmetic-string-coerces-to-numberpasspasspass
101-arithmetic-non-numeric-string-errorpasspassfail
102-function-arity-round-missing-argpasspasspass
103-function-arity-xlookup-too-few-argspasspasspass
104-multiple-filter-directives-andpasspasspass
105-template-block-whitespace-insignificantpasspasspass
106-division-by-zero-produces-error-cellpasspassfail
107-group-key-empty-blank-placeholder-filepasspassfail
108-group-key-empty-blank-placeholder-sheetpasspasspass
109-source-column-reserved-name-errorpasspassfail
110-directive-empty-filter-errorpasspasspass
111-directive-empty-source-errorpasspasspass
112-literal-signed-numberpasspasspass
113-unsupported-unary-on-column-ref-errorpasspassfail
114-duplicate-source-directive-errorpasspasspass
115-self-join-errorpasspasspass
116-function-name-case-insensitivepasspasspass
117-hidden-source-rows-includedpasspasspass
118-unicode-normalization-not-appliedpasspasspass
119-output-filename-collision-errorpasspassfail
120-workbook-properties-preservedpassskipskip
121-source-merged-headerpasspasspass
122-source-data-row-merge-broadcastpasspasspass
123-feature-preservationpasspasspass
124-source-2d-merge-headerpasspasspass
125-hyperlink-functionpasspassfail
126-date-arithmetic-functionspasspassfail
127-multiline-cell-textpasspasspass
128-function-batch-0044passpasspass
129-cell-formula-preservationpasspasspass
130-isblank-functionpasspasspass
131-inputs-with-xtl-defaultpasspasspass
132-group-single-level-subtotalpasspasspass
133-group-two-level-nested-subtotalpasspasspass
134-group-grand-total-via-outermost-subtotalpasspasspass
135-group-filter-compositionpasspasspass
136-group-missing-keypasspasspass
137-subtotal-outside-grouppasspassfail
138-subtotal-bad-aggregatepasspasspass
139-inputs-forward-referencepasspasspass
140-inputs-runtime-only-fnpasspasspass
141-block-column-scoped-side-cellspasspass
142-block-column-scoped-side-formulaspasspass
143-block-shared-formula-side-cellspassfail
144-block-side-cells-after-blockpasspass
145-block-bracket-outside-errorpasspass
146-multi-block-explicit-two-tablespasspass
147-multi-block-different-sourcespasspass
148-multi-block-different-start-rowspasspass
149-block-col-range-explicitpasspass
150-block-full-rect-explicitpasspass
151-block-overlap-errorpasspass
152-block-empty-table-errorpasspass
153-directive-orphan-errorpasspass
154-multi-block-per-block-filterpasspass
155-multi-block-row-function-scopepasspass

How to add a port

  1. Make your port emit a JSON report in the format documented in conformance/runner-protocol.md "JSON report format".
  2. Save it under conformance/reports/<impl>-<version>.json.
  3. Run node conformance/scripts/dashboard.mjs from the repo root to regenerate this file.