You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.mjsbd70dd5d and scripts/secret-scan.test.mjs142221ed, 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.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Config parsing stays linear; a config over 1 MiB is skipped
Reading a
.coaltipple.jsonno 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 inverify, and a re-copied secret scanner.Fixed
.coaltipple.jsonruns 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 inconfigure.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.mjsChanged
(too large), and the config loader treats it as absent. — test:scripts/lib/jsonc-linear.test.mjsRepo tooling (user-run scripts; not in the plugin)
configure.mjswrite stops on an over-size config with a message that names the size, and leaves the file untouched.configure.mjs --listreads 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.mjsscripts/lib/secret-scan.mjsbd70dd5dandscripts/secret-scan.test.mjs142221ed, both as inLLMWorks/Bankfireat71f71ae. No plugin byte changes. — test:scripts/secret-scan.test.mjsscripts/lib/link-check-linear.test.mjsverifyprints 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.mjsverify's SKILL.md frontmatter check runs in linear time on a frontmatter that never closes. It now requiresname:anddescription:to start a line inside the frontmatter block, and requires the name to be exactlycoaltipple. — test:scripts/lib/skill-frontmatter.test.mjsbuild-dist.mjs --checknames a link under a shipped item and does not follow it. — test:scripts/build-dist.test.mjsNotes
CoalTipple's own effort ladder stays
lowtomaxby design. The platform's ladder also hasxhigh, which is a named divergence rather than a leak; the older entries that called it a "vocabulary leak" are not rewritten.Release page · CoalTipple
All reactions