Skip to content

v1.7.6 - config parsing stays linear; a config over 1 MiB is skipped

Choose a tag to compare

@github-actions github-actions released this 28 Oct 23:58
· 15 commits to main since this release
v1.7.6
8fc833d

Config parsing stays linear; a config over 1 MiB is skipped

Reading a .coaltipple.json no longer stalls on input full of unclosed comments, strings or backslashes, and a config file over 1 MiB is no longer read at all. The repo tooling gets the same linear parsing, a few stricter checks in verify, and a re-copied secret scanner.

Fixed

  • The comment strip of a .coaltipple.json runs in linear time. An unclosed /*, string or backslash run in a config file could take seconds in the conductor's read, with the same cost in configure.mjs. The strip now keeps an unclosed opener to the end of the file, unchanged, so the file stays unreadable as JSON but no longer stalls the hook. — test: scripts/lib/jsonc-linear.test.mjs

Changed

  • A config file over 1 MiB (1,048,576 bytes) is never read. The conductor skips it and names it in its existing UNREADABLE line as (too large), and the config loader treats it as absent. — test: scripts/lib/jsonc-linear.test.mjs

Repo tooling (user-run scripts; not in the plugin)

  • A configure.mjs write stops on an over-size config with a message that names the size, and leaves the file untouched. configure.mjs --list reads such a file as absent and prints one line naming it as skipped (Skipped <file>: larger than 1048576 bytes, read as absent.), then shows the remaining config, or the defaults when none is left. — test: scripts/lib/jsonc-linear.test.mjs, scripts/lib/configure.test.mjs
  • The house secret scanner pair is re-copied from its source, byte for byte: scripts/lib/secret-scan.mjs bd70dd5d and scripts/secret-scan.test.mjs 142221ed, both as in LLMWorks/Bankfire at 71f71ae. No plugin byte changes. — test: scripts/secret-scan.test.mjs
  • Link extraction is linear on unclosed brackets, with the same link targets as before. — test: scripts/lib/link-check-linear.test.mjs
  • verify prints values read from repo files quoted, so a line break in one of them cannot start an output line of its own; control characters in such a value (ESC, the C1 range, U+2028 and U+2029) are written out as escapes too. — test: scripts/verify.test.mjs
  • verify's SKILL.md frontmatter check runs in linear time on a frontmatter that never closes. It now requires name: and description: to start a line inside the frontmatter block, and requires the name to be exactly coaltipple. — test: scripts/lib/skill-frontmatter.test.mjs
  • build-dist.mjs --check names a link under a shipped item and does not follow it. — test: scripts/build-dist.test.mjs

Notes

CoalTipple's own effort ladder stays low to max by design. The platform's ladder also has xhigh, which is a named divergence rather than a leak; the older entries that called it a "vocabulary leak" are not rewritten.