omnius 1.0.566 → 1.0.568

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/dist/index.js CHANGED
@@ -568249,6 +568249,16 @@ function finalizeCompletionLedgerTruth(ledger) {
568249
568249
  if (effectiveLastVerification >= 0 && effectiveLastVerification >= lastVerificationInvalidatingMutation) {
568250
568250
  unresolved = unresolved.filter((item) => item.source !== "verification_missing" && item.source !== "verification_freshness");
568251
568251
  }
568252
+ unresolved = unresolved.filter((item) => {
568253
+ const failedIndex = ledger.evidence.findIndex((entry) => entry.id === item.source);
568254
+ if (failedIndex < 0)
568255
+ return true;
568256
+ const failed = ledger.evidence[failedIndex];
568257
+ if (!failed || !isFailedVerificationEvidence(failed))
568258
+ return true;
568259
+ const family = verificationFamily(failed);
568260
+ return family === null || (lastSuccessfulVerificationByFamily.get(family) ?? -1) <= failedIndex;
568261
+ });
568252
568262
  ledger.evidence.forEach((entry, index) => {
568253
568263
  if (isFailedVerificationEvidence(entry)) {
568254
568264
  const family = verificationFamily(entry);
@@ -595297,6 +595307,34 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
595297
595307
  }
595298
595308
  return gaps;
595299
595309
  }
595310
+ /**
595311
+ * Keep the in-memory REG-37 failure set aligned with the ordered shell
595312
+ * history. A completion hold can legitimately tell the model to run an
595313
+ * exact verifier later in the same run; that later pass must clear the
595314
+ * original hold before the truth auto-finalizer evaluates the next turn.
595315
+ *
595316
+ * This deliberately recomputes from post-mutation evidence rather than
595317
+ * clearing the most recently mentioned todo. That preserves freshness for
595318
+ * every completed leaf and leaves independent artifact-inspection failures
595319
+ * intact.
595320
+ */
595321
+ _refreshCompletedTodoVerifierFailures(todos, toolCallLog) {
595322
+ const gaps = this._completionVerifierGapsAfterFinalMutation(todos, toolCallLog);
595323
+ const gapContents = new Set(gaps.map((gap) => gap.todo.content));
595324
+ for (const todo of todos) {
595325
+ const verifyCommand = typeof todo.verifyCommand === "string" ? todo.verifyCommand.trim() : "";
595326
+ if (todo.status !== "completed" || !verifyCommand || !isExecutableVerifyCommand(verifyCommand)) {
595327
+ continue;
595328
+ }
595329
+ if (gapContents.has(todo.content)) {
595330
+ this._verifyCommandFailures.add(todo.content);
595331
+ } else {
595332
+ this._verifyCommandFailures.delete(todo.content);
595333
+ }
595334
+ this._refreshTodoVerificationFailure(todo.content);
595335
+ }
595336
+ return gaps;
595337
+ }
595300
595338
  _formatFreshVerifierGapFeedback(gaps) {
595301
595339
  const lines = gaps.slice(0, 8).map((gap) => {
595302
595340
  const artifacts = gap.declaredArtifacts.length ? ` artifacts=${gap.declaredArtifacts.join(", ")}` : " artifacts=(none declared; any later project mutation invalidates verifier evidence)";
@@ -596203,7 +596241,10 @@ ${modelVisible}` : modelVisible || result.error || displayOutput || "";
596203
596241
  void result;
596204
596242
  if (commandIsPureReadOnlyPipeline(command))
596205
596243
  return false;
596206
- return /\b(test|tests|vitest|jest|pytest|go test|cargo test|npm test|pnpm test|yarn test|typecheck|tsc|build|verify|verification|check)\b/i.test(command);
596244
+ if (!/\b(test|tests|vitest|jest|pytest|go test|cargo test|npm test|pnpm test|yarn test|typecheck|tsc|build|verify|verification|check)\b/i.test(command)) {
596245
+ return false;
596246
+ }
596247
+ return commandReliablySatisfiesVerifyCommand(command, command);
596207
596248
  }
596208
596249
  _shouldSuppressCompletionDiscoveryEvidence(toolName, result, targetPaths) {
596209
596250
  if (result.success !== true)
@@ -603543,18 +603584,7 @@ ${dynamicProjectContext}`
603543
603584
  };
603544
603585
  const holdUnresolvedVerificationTaskComplete = (turn) => {
603545
603586
  const todos = this.readSessionTodos() || [];
603546
- const freshVerifierGaps = this._completionVerifierGapsAfterFinalMutation(todos, toolCallLog);
603547
- const gapContents = new Set(freshVerifierGaps.map((gap) => gap.todo.content));
603548
- for (const todo of todos) {
603549
- if (todo.status === "completed" && typeof todo.verifyCommand === "string" && todo.verifyCommand.trim().length > 0) {
603550
- if (gapContents.has(todo.content)) {
603551
- this._verifyCommandFailures.add(todo.content);
603552
- } else {
603553
- this._verifyCommandFailures.delete(todo.content);
603554
- }
603555
- this._refreshTodoVerificationFailure(todo.content);
603556
- }
603557
- }
603587
+ const freshVerifierGaps = this._refreshCompletedTodoVerifierFailures(todos, toolCallLog);
603558
603588
  const freshGapFailures = freshVerifierGaps.map((gap) => gap.todo.content);
603559
603589
  const newFailures = [
603560
603590
  .../* @__PURE__ */ new Set([
@@ -607693,6 +607723,7 @@ ${cachedResult}`,
607693
607723
  this._lastBuildSuccessCommand = (_declaredVerify || _shellCmd2).slice(0, 200);
607694
607724
  this._truthAutoCompleteBlockedValidationTurn = -1;
607695
607725
  }
607726
+ this._refreshCompletedTodoVerifierFailures(this.readSessionTodos() || [], toolCallLog);
607696
607727
  }
607697
607728
  if (tc.name === "todo_write") {
607698
607729
  try {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.566",
3
+ "version": "1.0.568",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.566",
9
+ "version": "1.0.568",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.566",
3
+ "version": "1.0.568",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",