speclock 4.1.0 → 4.1.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speclock",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "description": "AI constraint engine with Policy-as-Code DSL, OAuth/OIDC SSO, admin dashboard, telemetry, API key auth, RBAC, AES-256-GCM encryption, hard enforcement, semantic pre-commit, HMAC audit chain, SOC 2/HIPAA compliance. 100% detection, 0% false positives. 31 MCP tools + CLI. Enterprise platform.",
5
5
  "type": "module",
6
6
  "main": "src/mcp/server.js",
@@ -142,12 +142,7 @@ export async function checkConflictAsync(root, proposedAction) {
142
142
  const maxNonConflictScore = heuristicResult._maxNonConflictScore || 0;
143
143
  const maxScore = Math.max(maxConflictScore, maxNonConflictScore);
144
144
 
145
- // 3. Fast path: zero signal anywheretruly unrelated, skip LLM
146
- if (maxScore === 0 && !heuristicResult.hasConflict) {
147
- return heuristicResult;
148
- }
149
-
150
- // 4. Fast path: all conflicts are HIGH (>70%) → heuristic is certain, skip LLM
145
+ // 3. Fast path: all conflicts are HIGH (>70%) heuristic is certain, skip LLM
151
146
  if (
152
147
  heuristicResult.hasConflict &&
153
148
  heuristicResult.conflictingLocks.every((c) => c.confidence > 70)
@@ -155,7 +150,9 @@ export async function checkConflictAsync(root, proposedAction) {
155
150
  return heuristicResult;
156
151
  }
157
152
 
158
- // 5. GREY ZONE: some signal (1-70%) or low-confidence conflicts → call LLM
153
+ // 4. Call LLM for everything else including score 0.
154
+ // Score 0 means "heuristic vocabulary doesn't cover this domain",
155
+ // which is EXACTLY when an LLM (which knows every domain) adds value.
159
156
  try {
160
157
  const { llmCheckConflict } = await import("./llm-checker.js");
161
158
  const llmResult = await llmCheckConflict(root, proposedAction);