chore(release): v0.12.9
Issue for this PR
Release PR. It promotes the v0.12.8..main payload to latest as v0.12.9: #1609, #1605, #1625, #1624, #1513, #1606, #1501, #1611, #1597.
Type of change
- Bug fix
- New feature
- Refactor / code improvement
- Documentation
- Other: release
What does this PR do?
Seven commits on top of main (2d59604e66):
-
release: v0.12.9: the CHANGELOG entry. Its heads-up for support covers:- where read-only is enforced by the database (PostgreSQL, SQLite, DuckDB) and where only by SQL classification;
- the best-effort DROP/TRUNCATE block;
warehouse_addover MCP without--allow-write, and tool results reaching the calling agent's model;- the per-project
toolbackground process, and opt-in Claude skill copies; - the
schema_inspectlisting change, thelearn statuswording and rule proposal cards; - signed-in identity and the final opt-out event in telemetry;
- the analyst's write tools staying off under config grants, and symlink-following external-directory checks;
- what
auth logoutnow removes, exit status 130 on Ctrl+C during sign-in, and the 1M free-token allowance.
-
fix: release review follow-ups for v0.12.9:auth logoutalso removes the cached telemetry identity (~/.altimate/telemetry-identity.json), as the telemetry reference already said.tool runpoints totool schemaonly when the arguments were the problem, not for SQL, connection or permission errors.--allow-writehelp says what counts as a write.- Docs:
- the DROP/TRUNCATE block is best effort, with a read-only database user recommended;
- tool results reach the calling agent's model, and credentials don't belong in
warehouse_addarguments; mcp serve --workspace-toolsis documented;- the security FAQ no longer calls signed-in telemetry anonymous or says email is hashed;
- the config opt-out caveat is narrowed to unreadable config files;
- the MCP workspaces note loses its draft wording.
-
test: v0.12.9 adversarial tests, and a length cap on the rule classifier:test/skill/release-v0.12.9-adversarial.test.ts, 164 tests.- A first length cap on the rule classifier, replaced in the last commit.
-
fix: release PR review follow-ups(bot reviews on this PR):- the
tool schemahint matches only the messages an argument problem produces, including a workspace tool schema mismatch; - CHANGELOG wording:
warehouse_addover MCP,tool runstarting the background process, the analyst's built-in tools; - the MCP workspaces note says which checks are not covered by tests yet;
- the adversarial timing bounds are 15 s.
- the
-
fix: bound the rule classifier's slow patterns instead of capping its input: two of the classifier's patterns backtracked, and a 450 KB request took about 16 s. The clause scan and the rule-cue lookahead are now bounded, so long texts are still classified whole (a cap would change what callers read from a long message) and take milliseconds. Thetool schemahint also covers a missing workspace skill name or SQL field. -
fix: bound the rule classifier's glossary cue tooandtest: time every rule classifier cue on 450 KB inputs: the glossary cue had the same rescan (450 KB of "means " took about 29 s); it now looks 500 characters ahead. Every cue now classifies a 450 KB input in under 100 ms locally, and the tests bound each at 5 s.
Release review: all five reviewers said ship with notes, with no P0 and no HOLD. The reviewers were CTO, product, data engineer, tech lead, and a privacy officer as this release's adversarial reviewer. Deferred findings are filed as #1648 to #1652. The SQL classifier gaps are in #1644.
After merge: tag the merge commit v0.12.9 and push only the tag, which starts release.yml.
How did you verify your code works?
- Preflight and static checks:
--stage prepreflight passed (9/9). Typecheck and the marker guard are clean. - Full opencode suite: 20,477 passed, 9 failed, all explained:
- 6 MCP tests read the developer's own MCP config. They pass with an isolated
HOME(15/15). - 2 are the
--time-budgetJSON-output tests that also failed in the v0.12.8 release run. - 1 budget-finalization subprocess test timed out under full-suite load and passes alone.
- 6 MCP tests read the developer's own MCP config. They pass with an isolated
- Release tests:
- adversarial, rules and tool CLI tests 410/410;
- earlier release adversarial tests 258/258;
- every test file changed since v0.12.8: 3,798 passed, 0 failed.
- Pre-release build:
pre-releasepassed, and the darwin-arm64 binary reports0.12.9. - Smoke test on that binary (
tool list, thentool run sql_executeagainst SQLite, with and without the daemon):- reads ran;
- writes needed
--allow-write; - TRUNCATE was refused even with it;
- invalid JSON arguments pointed to
tool schema; tool daemon statusandstopworked.
Cost side effects
None added by the release commits. The included PRs describe their own: #1605 makes one model call to word each proposed rule, and the tool daemon from #1609 runs only the queries its callers send.
Screenshots / recordings
N/A
Checklist
- I have tested my changes locally
- I have not included unrelated changes in this PR
- I checked for cost side effects (model calls, queries or cloud resources that grow with user data) and described them, or wrote "none"
๐ค Generated with Claude Code
https://claude.ai/code/session_01XM3J9mB75wZRnzTSGcW2kc
Summary by CodeRabbit
- New Features
- Added a model-free tool CLI with schema inspection, result handling, and expanded workspace and MCP tools.
- Added workspace-rule proposals and review, plus workspace skill synchronization.
- Bug Fixes
- Improved tool error guidance and clarified write-permission restrictions, including blocked destructive SQL operations.
- Sign-out now clears cached telemetry identity; external-directory checks account for symlinks.
- Ctrl+C during sign-in now exits with the documented status code.
- Documentation
- Updated guidance on telemetry identity, tool permissions, credentials, daemon behavior, and test coverage.