@lazyingart/agintiflow 0.20.286 → 0.20.288

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.
@@ -161,6 +161,16 @@ existing routine owned by the relevant project:
161
161
  The agent selects, invokes, monitors, and verifies those routines. It does not
162
162
  replace them with prompt-specific shell fragments.
163
163
 
164
+ ## Verification Recovery
165
+
166
+ Failed project tests are authoritative evidence unless the current request
167
+ explicitly asks to change them. AgInTiFlow keeps the failing command and source
168
+ lineage, constrains repair writes to evidence-linked production files, and
169
+ rejects repeated attempts to weaken the test specification. If bounded
170
+ LocalLLM recovery exhausts its authenticated strong routes without producing a
171
+ passing verification, the same session can rebound once to its original
172
+ provider while preserving the goal, source context, and verifier evidence.
173
+
164
174
  ## Acceptance Gates
165
175
 
166
176
  A primary-backend release is accepted only after all of these pass:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lazyingart/agintiflow",
3
- "version": "0.20.286",
3
+ "version": "0.20.288",
4
4
  "type": "module",
5
5
  "description": "AgInTiFlow is a project-aware agent workspace for hybrid wet-dry R&D, hardware-aware intelligence, software automation, and industrial workflows.",
6
6
  "license": "Apache-2.0",
@@ -8,6 +8,7 @@ import {
8
8
  } from "../src/context-budget-controller.js";
9
9
  import { createPlan } from "../src/model-client.js";
10
10
  import { deriveScsTaskContract } from "../src/scs-evidence.js";
11
+ import { recordDurableResearchEvidence } from "../src/durable-research-evidence.js";
11
12
 
12
13
  const HEAD = "AUTHORITATIVE-HEAD exact current task";
13
14
  const TAIL = "AUTHORITATIVE-TAIL bounded task packet and latest interruption";
@@ -283,6 +284,27 @@ const compactionState = {
283
284
  { role: "user", content: "latest interruption: send the finished PDF to this exact chat" },
284
285
  ],
285
286
  };
287
+ recordDurableResearchEvidence(compactionState, {
288
+ ok: true,
289
+ toolName: "web_search",
290
+ query: "closed-loop organoid imaging",
291
+ results: [{
292
+ title: "A modular platform for automated organoid culture and longitudinal imaging",
293
+ url: "https://example.org/organoid-platform",
294
+ snippet: "Automated media exchange, longitudinal imaging, and environmental feedback.",
295
+ publishedAt: "2026",
296
+ }],
297
+ });
298
+ recordDurableResearchEvidence(compactionState, {
299
+ ok: true,
300
+ toolName: "read_web_page",
301
+ query: "closed-loop organoid imaging",
302
+ title: "A modular platform for automated organoid culture and longitudinal imaging",
303
+ canonicalUrl: "https://example.org/organoid-platform",
304
+ passages: ["The verified source combines automated culture with longitudinal imaging."],
305
+ retrievedAt: "2026-08-30T01:00:00.000Z",
306
+ sha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
307
+ });
286
308
  const runtimeMessages = buildContextBudgetCompactionMessages(
287
309
  compactionState,
288
310
  config,
@@ -333,6 +355,10 @@ assert.ok(runtimeText.includes('"version":14'));
333
355
  assert.ok(runtimeText.includes("RESEARCH-COMPACTION-SUMMARY"));
334
356
  assert.ok(runtimeText.includes("EVIDENCE-CHUNK-ONE"));
335
357
  assert.ok(runtimeText.includes("EVIDENCE-CHUNK-TWO"));
358
+ assert.ok(runtimeText.includes("Durable inspected web evidence"));
359
+ assert.ok(runtimeText.includes("A modular platform for automated organoid culture"));
360
+ assert.ok(runtimeText.includes("https://example.org/organoid-platform"));
361
+ assert.ok(runtimeText.includes("verified source combines automated culture"));
336
362
  assert.ok(runtimeText.includes("range=lines 1-50"));
337
363
  assert.ok(runtimeText.includes("range=lines 51-100"));
338
364
  assert.ok(!runtimeText.includes("OLD-COMPACTION-MUST-NOT-RECUR"));