From d7a5238193c188f49626d488f1642967ce8f5a2e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 30 Oct 2026 16:17:22 +0000 Subject: [PATCH] chore(release): 0.8.13 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Raul Jäger --- CHANGELOG.md | 58 +++++++++++++++++++++++++++-------------------- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 36 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a411b97..7b91f59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,39 @@ All notable changes to pot-cli will be documented in this file. -## [0.8.12] - Unreleased +## [0.8.13] - 2026-10-30 + +### Fixed +- Structural mandate label variants are recognized in the preamble + ([#55](https://github.com/ThoughtProof/pot-cli/pull/55)): + `Principal mandate (verbatim):`, `Mandate:`, `User mandate:`, and + `Principal instruction:`. + `inspectMandateVerbatimQuote()` reports `quote`, `absent`, or `conflict`. + `extractMandateVerbatimQuote()` now also accepts those structural + headers, plus a bare `Principal mandate:` (case-insensitive, flexible + internal whitespace, optional space before the colon). A label inside + quotes, a blockquote, a fenced block, tool output, or the proposed-action + body is not a mandate section. Disagreeing sections return no quote. + The MCP host-excerpt pair (`User mandate:` containing + `Principal mandate (verbatim quote):`) still cites the verbatim span. + The two existing labels keep their cascade when both headers are in the + preamble: a non-empty MCP span wins over `USER INSTRUCTION:`. A label + after the action or tool section does not count, including legacy labels. + `Principal mandate (verbatim):` is accepted as the same MCP header. + Fence closing is CommonMark-conformant: a fence closes only on the same + character with a run at least as long as the opener (`~` does not close + `` ` ``), and only ASCII spaces or tabs may follow that run. Section + boundaries use that same ASCII space or tab for both the span cut and + the end of the mandate region, including inline labels, and fail closed: + any other whitespace before a section label recovers no mandate. Mandate + texts are compared literally after outer trim; internal spaces are not + collapsed. A detected `MANDATE_CONFLICT` forces HOLD when the verdict + would otherwise be ALLOW or CONDITIONAL_ALLOW, including when the model + quoted one side and when only one critical step is present. BLOCK is + left in place. Action or tool content cannot weaken that mandate + decision. A model-emitted quote is never replaced by an extracted span. + +## [0.8.12] - 2026-10-10 ### Changed - Require Node.js >=22. `better-sqlite3` prebuilt binaries are only published for Node >=22, and Node 20 is EOL. @@ -18,30 +50,6 @@ All notable changes to pot-cli will be documented in this file. - `npm run test:package` packs the build, installs it in a clean consumer without the development lockfile, and checks `--version` and `ask --dry-run`. Both checks reproduced the `0.8.11` import failure. -- `inspectMandateVerbatimQuote()` reports `quote`, `absent`, or `conflict`. - `extractMandateVerbatimQuote()` now also accepts structural - `Mandate:`, `User mandate:`, `Principal instruction:`, and bare - `Principal mandate:` headers (case-insensitive, flexible internal - whitespace, optional space before the colon). A label inside quotes, - a blockquote, a fenced block, tool output, or the proposed-action body - is not a mandate section. Disagreeing sections return no quote. - The MCP host-excerpt pair (`User mandate:` containing - `Principal mandate (verbatim quote):`) still cites the verbatim span. - The two existing labels keep their cascade when both headers are in the - preamble: a non-empty MCP span wins over `USER INSTRUCTION:`. A label - after the action or tool section does not count, including legacy labels. - `Principal mandate (verbatim):` is accepted as the same MCP header. - Fenced blocks close only on the same character with a run at least as - long as the opener (`~` does not close `` ` ``), and only ASCII spaces - or tabs may follow that run. Section boundaries use that same ASCII - whitespace for both the span cut and the end of the mandate region, - including inline labels. Any other whitespace before a section label - recovers no mandate. Mandate texts are compared literally after outer - trim; internal spaces are not collapsed. A detected mandate - conflict forces HOLD when the verdict would otherwise be ALLOW or - CONDITIONAL_ALLOW, including when the model quoted one side and when - only one critical step is present. BLOCK is left in place. A - model-emitted quote is never replaced by an extracted span. ## [0.8.11] - 2026-10-09 diff --git a/package-lock.json b/package-lock.json index aaaec78..141b84a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pot-cli", - "version": "0.8.12", + "version": "0.8.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pot-cli", - "version": "0.8.12", + "version": "0.8.13", "license": "MIT", "dependencies": { "@pot-sdk2/bridge": "1.2.0", diff --git a/package.json b/package.json index 004ac65..e0a2d16 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pot-cli", - "version": "0.8.12", + "version": "0.8.13", "engines": { "node": ">=22" },