Skip to content

docs(xlsx): measure horizontal bar-chart category-count effect on baselines (#1621) - #1764

Merged
developer0hye merged 1 commit into
mainfrom
docs/issue-1621-category-count-probe
Sep 16, 2026
Merged

developer0hye merged 1 commit into
mainfrom
docs/issue-1621-category-count-probe

Conversation

@developer0hye

Copy link
Copy Markdown
Owner

Summary

  • Discovers and documents that a chart-XML-cache-only category-count patch is a complete no-op against native Excel: it re-derives the income chart's categories from xl/workbook.xml's defined-name array literal and its values from a live formula range, both outside the chart part, and overwrites the chart's own cache on open regardless of what the cache says. scripts/probe_harness.py patches exactly one part per variant, so this is a documented gap in the harness, not a new defect in shipped conversion code.
  • Adds build_category_count_probe.py, which patches both parts together (the workbook-level array literal and the chart's c:val range) to actually change category count in native Excel, and uses it to collect a new native measurement: the income chart widened from 5 to 6 categories, closely bracketing the expense chart's own row height from the other side.
  • Refines the working model from "round + chart-specific K" (the prior session's still-incomplete reading) to "floor, not round, plus a font-size-only K" — reproduces 18 of the 24 measured rows across three independent geometric configurations (income @ 5 categories x 3 sizes, expense @ 6 categories, income @ 6 categories), replacing the "K depends on which chart" framing with "K depends only on font size; only plot-rectangle edge rows deviate."
  • Falsifies one specific edge-row hypothesis: naively snapping the plot rectangle's own continuous top/bottom edges to whole sheet points does not close the remaining gap and introduces a new regression on a previously-exact interior row.
  • No runtime code changes — assets/validation/issue-1621/ only.

Related issue

Related: #1621

Testing

  • python3 assets/validation/issue-1621/verify_measurements.py exits 0, confirming all 5 documented claims (whole-sheet-point quantization across 24 rows, the floor/round split, the floor+size-only-K model's 18/24 reproduction with its exact 6-row exception set, and the edge-snap falsification).
  • python3 scripts/probe_harness.py assets/validation/issue-1621/category-count-cache-only-noop-probe.json --backend office2pdf vs --backend office reproduces the documented no-op finding directly (a real 15.78pt shift against our own converter, layout-identical against native Excel).
  • Documentation-freshness review completed across three passes before this commit (numeric drift in a hardcoded "15/17" claim that should have been "18/24" computed dynamically, an incomplete exception-set enumeration, an overclaimed "byte-for-byte" identity, and a docstring that only generalized the illustrative N=6 case — all fixed and re-verified).
  • No .rs/runtime config changes — tests skipped per project convention for non-runtime changes.

Visual impact

  • No rendered PDF change
  • Rendered PDF change or visual evidence added
  • Reason: Adds only assets/validation/issue-1621/ measurement data, a probe-building script, and a verification script; no chart rendering or codegen path is touched, so there is no rendered PDF change to audit.

Checklist

  • Commits include a Signed-off-by line
  • PR scope contains one root cause
  • Remaining converter or harness deviations each reference an open issue

🤖 Generated with Claude Code

…elines (#1621)

Extends the #1621 baseline-placement investigation with the category-count
probe the prior session (#1763) flagged as the needed next step.

- Discovers and documents that a chart-XML-cache-only category-count patch
  is a complete no-op against native Excel: it re-derives the income
  chart's categories from xl/workbook.xml's defined-name array literal and
  its values from a live formula range, both outside the chart part, and
  overwrites the chart's own cache on open regardless of what it says.
- Adds build_category_count_probe.py, which patches both parts together to
  actually change category count in native Excel, and uses it to collect a
  new native measurement: the income chart widened to 6 categories.
- Refines the working model from "round + chart-specific K" to "floor +
  font-size-only K", which now reproduces 18 of 24 measured rows across
  three independent geometric configurations, narrowing the open question
  to a specific plot-rectangle edge-row effect.
- Falsifies one specific edge-row hypothesis (independent whole-point
  snapping of the plot rectangle's own edges).

No runtime code changes -- assets/validation/issue-1621/ only.

Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
@developer0hye
developer0hye merged commit fa8448f into main Sep 16, 2026
18 checks passed
@developer0hye
developer0hye deleted the docs/issue-1621-category-count-probe branch September 16, 2026 19:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant