Skip to content
CAI
Software that uses CAICheck a score

storytold/indd-utils

50.9

Adequate · 7 November 2026

40.4k

lines of production code

Rust

with Python

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Behavioural changes

27 commits (4 fixes) modifying src/idml

A change to existing behaviour in src/idml — 27 commits (4 fixs), 19 files: “feat: write the script labels of frames, shapes, groups, buttons and multi-state objects, and label strings as stored”; “feat: write the story, link, contour, object style and HTML5 export values of DOM 21.1 to 21.5, and the anchored settings of every complete element”; “feat: write the extended keyboard shortcut of styles with a character key”; and 24 more. Also in this area: 26 commits (1 fix) modifying src/idml.

src, src/idml, tools · medium confidence · unverified

6 commits (0 fixes) modifying src/idml

A change to existing behaviour in src/idml — 6 commits, 12 files: “feat: write the grid starting point, TOC story direction and object style optical margin”; “test: read the applied named grid and the stroke categories of page items”; “feat: write the named grid of stories and object styles”; and 3 more. Also in this area: 17 commits (1 fix) modifying src/model.

src/model · medium confidence · unverified

90 commits (3 fixes) modifying (repo-wide)

A change to existing behaviour in (repo-wide) — 90 commits (3 fixs), 9 files: “docs: update the README numbers”; “docs: state only what the samples show about byte order”; “feat: add a fetch manifest and tool for the openly licensed corpus”; and 55 more (refs \#3, \#11).

(repo-wide) · low confidence · unverified

Test coverage

8 commits adding/updating tests in tests

Test coverage in tests — 8 commits (3 fixs), 4 files: “feat: convert big-endian files from InDesign 3.0 and 4.0”; “fix: convert or clearly reject every file in the new sample batch”; “feat: add indd audit and a corpus-wide audit ranking”; and 5 more. Also in this area: 1 commit adding/updating tests in tests.

tests · high confidence · unverified

Written by cca.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 51.

Lenses

  • Code Health 83
  • Architecture 86
  • Maturity 67
  • Readiness 23
  • Security 87

Changes since last survey

  • 300 commits — 263 feature/other, 37 fixes

By area

  • docs/format — 109 commits
  • (root) — 72 commits
  • src/idml — 66 commits
  • src/model — 37 commits
  • docs/measurement.md — 9 commits
  • tools/compare.py — 4 commits
  • src/object.rs — 1 commit
  • tools/corpus-manifest.json — 1 commit
  • tools/diff_outputs.py — 1 commit

Notable commits

  • fix: fix(compare): count no text positions outside character ranges
  • fix: fix(compare): count text ranges inside wrapper elements
  • fix: fix(compare): count the ContourOption of text wrap settings
  • fix: fix(compare): count the text ranges of footnotes, table cells and notes
  • fix: fix(compare): give the nested option table its own name
  • fix: fix(compare): match fonts whose family has the technology suffix
  • fix: fix(render_compare): correct line-box offsets per page
  • fix: fix: accept InDesign's markup of form fields anchored in text
  • fix: fix: accept any second byte in searched in-object strings
  • fix: fix: bound the capacity of text segments by the bytes left
  • fix: fix: convert or clearly reject every file in the fetched sample batch
  • fix: fix: convert or clearly reject every file in the new sample batch
  • fix: fix: guard against cyclic and oversized structures in damaged files
  • fix: fix: leave a family name's trailing spaces out of its fonts' Name from DOM 21
  • fix: fix: leave out UntitledDocumentCount, which the IDML schema does not allow
  • fix: fix: leave out an unreadable story, spread or page item with a warning
  • fix: fix: leave out font axes and placed-text plugin data from the measurement
  • fix: fix: leave out spread guides outside the spread's pages
  • fix: fix: leave out timing targets whose element is not written
  • fix: fix: name grouped styles with their group path and escape colons
  • …and 280 more

Written by cca.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

storytold/indd-utils was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 7 November 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 136f973a9d5f1b3ef34e46e27f4a08af196efde7 — the exact code this score is about.
  • Scored under rubric-2026.11.2 — the same rubric and the same method as every other entry in this index.
  • Measured by Canine Code Analyzer (cca.canine.dev) using cca measure-2026.11.3+preprod-5f8314471808.