@planu/cli 5.3.45 → 5.3.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## [5.3.46] - 2026-08-24
2
+
3
+ ### Bug Fixes
4
+ - fix(spec-1285): meta filter sees backticked tool token; harden AC1 coverage
5
+ - fix(spec-1285): stop local privacy specs activating auth/meta challenge families
6
+
7
+ ### Chores
8
+ - chore(planu): record SPEC-1285 done and SPEC-1598 discarded (merged into SPEC-1285)
9
+
10
+
1
11
  ## [5.3.45] - 2026-08-24
2
12
 
3
13
  ### Bug Fixes
@@ -25,6 +25,7 @@ const EXPECTED_META_ANALYSIS_RE = /^\s*expected\s*:(?=[^.!?。!?]{0,240}\b(?
25
25
  const QUALIFIED_EVIDENCE_SUBJECT_RE = /^\s*(?:[-*+>]\s+|\d+[.)]\s+)?(?:(?:given|when|then|and)\s+)?(?=[^.!?。!?]{0,240}\b(?:positive|negative|affirmative|meta-analysis(?:-only)?|regression|table-driven)\b)(?=[^.!?。!?]{0,240}\b(?:fixtures?|controls?|tests?|examples?|assertions?|findings?)\b)[^.!?。!?]{1,240}$/iu;
26
26
  const CONTRACT_ANALYSIS_SUBJECT_RE = /^\s*(?:[-*+>]\s+|\d+[.)]\s+)?(?:(?:given|when|then|and)\s+)?(?:(?:the|this|that|a|an|any|each|our|existing|current)\s+)?(?:[\p{L}\p{N}_-]+\s+){0,2}contract\s+(?:evidence|inference|requirements?)\b/iu;
27
27
  const CONTRACT_ANALYSIS_PREDICATE_RE = /\b(?:(?:is|are)\s+(?:inferred|expected|selected|classified|matched|detected|discussed|reported|recorded)|expects?|records?|describes?)\b|\b(?:detector|classifier|matcher)\s+evidence\b|\b(?:positive[ -]?control|expected\s+absence|meta-analysis(?:-only)?)\b/iu;
28
+ const META_ANALYSIS_TOOL_OUTPUT_RE = /\b(?:challenge[_\s]spec|challenge\s+tool)\b[^.!?\n]{0,120}?\bcall\b[^.!?\n]{0,120}?\b(?:emitted|returned|produced|reported|surfaced)\b[^.!?\n]{0,120}?\bscenarios?\b/iu;
28
29
  function stripExcludedMarkdownSections(text) {
29
30
  const lines = text.split('\n');
30
31
  const kept = [];
@@ -71,7 +72,8 @@ export function stripMetaAnalysisText(text) {
71
72
  !META_ANALYSIS_EVIDENCE_RE.test(clause) &&
72
73
  !EXPECTED_META_ANALYSIS_RE.test(clause) &&
73
74
  !QUALIFIED_EVIDENCE_SUBJECT_RE.test(clause) &&
74
- !(CONTRACT_ANALYSIS_SUBJECT_RE.test(clause) && CONTRACT_ANALYSIS_PREDICATE_RE.test(clause)))
75
+ !(CONTRACT_ANALYSIS_SUBJECT_RE.test(clause) && CONTRACT_ANALYSIS_PREDICATE_RE.test(clause)) &&
76
+ !META_ANALYSIS_TOOL_OUTPUT_RE.test(clause))
75
77
  .join('\n');
76
78
  }
77
79
  function clauseBefore(text, index) {
@@ -16,7 +16,7 @@ const CAPABILITY_SIGNALS = {
16
16
  ],
17
17
  authentication: [/\b(?:login|sign[ -]?in|password|jwt|oauth2?|session\s+auth)\b/i],
18
18
  authorization: [
19
- /\b(?:authori[sz]ation|permission|rbac|role-based|access\s+control|resource\s+ownership|tenant)\b/i,
19
+ /\b(?:authori[sz]ation|permission\s+(?:check|model|grant|denied|scope|boundary|set|policy)|access\s+permission|role\s+permission|rbac|role-based|access\s+control|resource\s+ownership|tenant)\b/i,
20
20
  ],
21
21
  userInput: [
22
22
  /\b(?:user|client)\s+input\b/i,
@@ -133,7 +133,7 @@ export function contentMentions(content, keywords) {
133
133
  export function detectChallengeCapabilities(spec, specContent) {
134
134
  const contractSource = stripReaderPrefix(spec, specContent);
135
135
  const source = contractSource.trim().length > 0 ? contractSource : spec.title;
136
- const contract = stripMetaAnalysisText(stripNonContractText(source));
136
+ const contract = stripNonContractText(stripMetaAnalysisText(source));
137
137
  const capabilities = Object.fromEntries(Object.entries(CAPABILITY_SIGNALS).map(([capability, patterns]) => [
138
138
  capability,
139
139
  hasAnyAffirmedMatch(contract, patterns),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planu/cli",
3
- "version": "5.3.45",
3
+ "version": "5.3.46",
4
4
  "description": "Planu — MCP Server for Spec Driven Development. Cross-platform (Linux/macOS/Windows, x64/arm64).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/planu-plugin.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "dev.planu.cli",
3
3
  "displayName": "Planu — Spec Driven Development",
4
4
  "description": "Manage software specs, estimations, and autonomous SDD workflows. Language-agnostic MCP server for Claude Code.",
5
- "version": "5.3.45",
5
+ "version": "5.3.46",
6
6
  "icon": "assets/plugin/icon.svg",
7
7
  "command": ["npx", "@planu/cli@latest"],
8
8
  "packageName": "@planu/cli",