@lazyingart/agintiflow 0.20.267 → 0.20.269

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": "@lazyingart/agintiflow",
3
- "version": "0.20.267",
3
+ "version": "0.20.269",
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",
@@ -5308,6 +5308,11 @@ try {
5308
5308
  );
5309
5309
  const generatedDeckValidator =
5310
5310
  "python3 /tmp/presentation_deck_contract.py --root .";
5311
+ await fs.writeFile(
5312
+ path.join(workspace, "build_deck.py"),
5313
+ "print('build canonical deck')\n",
5314
+ "utf8"
5315
+ );
5311
5316
  const staleGeneratedDeckState = {
5312
5317
  goal: [
5313
5318
  "Rebuild the canonical presentation output after repairing build_deck.py.",
@@ -5353,6 +5358,20 @@ try {
5353
5358
  failureSummary: "acceptance failed: deck omits source-grounded phrase: single reader",
5354
5359
  }],
5355
5360
  },
5361
+ completionEvidenceRepair: {
5362
+ key: "stale-generated-deck-repair",
5363
+ at: "2026-08-27T19:00:00.000Z",
5364
+ mutationRevision: 9,
5365
+ requiresFreshFileMutation: true,
5366
+ requiredFreshMutationRevision: 10,
5367
+ },
5368
+ sourceCodeQuality: {
5369
+ checked: true,
5370
+ ok: true,
5371
+ paths: ["build_deck.py"],
5372
+ defects: [],
5373
+ mutationRevision: 9,
5374
+ },
5356
5375
  },
5357
5376
  };
5358
5377
  const staleGeneratedDeckRuntime = nextStepRuntimeConfig(
@@ -5377,12 +5396,50 @@ try {
5377
5396
  assert(
5378
5397
  staleGeneratedDeckRuntime.generatedArtifactProducerPending === true &&
5379
5398
  staleGeneratedDeckRuntime.generatedArtifactProducerCommand === "python3 build_deck.py" &&
5399
+ staleGeneratedDeckRuntime.completionFreshMutationRequired !== true &&
5380
5400
  staleGeneratedDeckPhase?.mode === "generated-artifact-producer" &&
5381
5401
  staleGeneratedDeckPhase?.command === "python3 build_deck.py",
5382
5402
  `a stale generated artifact did not recover its exact safe producer before validation: ${JSON.stringify(
5383
5403
  staleGeneratedDeckRuntime
5384
5404
  )}`
5385
5405
  );
5406
+ const staleGeneratedDeckSourceDefectState = JSON.parse(
5407
+ JSON.stringify(staleGeneratedDeckState)
5408
+ );
5409
+ staleGeneratedDeckSourceDefectState.meta.sourceCodeQuality = {
5410
+ checked: true,
5411
+ ok: false,
5412
+ paths: ["build_deck.py"],
5413
+ defects: ["build_deck.py still contains a concrete source defect"],
5414
+ mutationRevision: 9,
5415
+ };
5416
+ const staleGeneratedDeckSourceDefectRuntime = nextStepRuntimeConfig(
5417
+ {
5418
+ provider: "deepseek",
5419
+ taskProfile: "slides",
5420
+ commandCwd: workspace,
5421
+ goal: staleGeneratedDeckSourceDefectState.goal,
5422
+ },
5423
+ staleGeneratedDeckSourceDefectState
5424
+ );
5425
+ const staleGeneratedDeckSourceDefectPhase = buildKnownConstrainedPhasePlan(
5426
+ {
5427
+ provider: "deepseek",
5428
+ taskProfile: "slides",
5429
+ commandCwd: workspace,
5430
+ goal: staleGeneratedDeckSourceDefectState.goal,
5431
+ },
5432
+ staleGeneratedDeckSourceDefectState,
5433
+ staleGeneratedDeckSourceDefectRuntime
5434
+ );
5435
+ assert(
5436
+ staleGeneratedDeckSourceDefectRuntime.completionFreshMutationRequired === true &&
5437
+ staleGeneratedDeckSourceDefectPhase?.mode !== "generated-artifact-producer",
5438
+ `a retained source-quality defect was incorrectly bypassed by a stale artifact producer: ${JSON.stringify({
5439
+ runtime: staleGeneratedDeckSourceDefectRuntime,
5440
+ phase: staleGeneratedDeckSourceDefectPhase,
5441
+ })}`
5442
+ );
5386
5443
  recordProjectVerificationOutcome(
5387
5444
  staleGeneratedDeckState,
5388
5445
  {
@@ -5392,6 +5449,12 @@ try {
5392
5449
  args: { command: "python3 build_deck.py" },
5393
5450
  stdout: "Wrote output/deck.pptx\n",
5394
5451
  stderr: "",
5452
+ commandPolicy: {
5453
+ category: "toolchain",
5454
+ writesWorkspace: true,
5455
+ mayMutateProject: false,
5456
+ substantiveTest: false,
5457
+ },
5395
5458
  },
5396
5459
  {
5397
5460
  provider: "deepseek",
@@ -6045,14 +6045,15 @@ export function recordProjectVerificationOutcome(state = {}, toolResult = {}, co
6045
6045
  // verification regardless of its final exit status. Test identity and
6046
6046
  // mutation capability are independent: a generator or snapshot-updating
6047
6047
  // test still advances the revision, then records its evidence there.
6048
+ const generatedArtifactProducer = safeProjectProducerSegment(command, config);
6048
6049
  const projectContentMutation = Boolean(
6049
6050
  command &&
6050
6051
  toolResult.blocked !== true &&
6051
- commandCanMutateProjectContent(mutationCommand, commandPolicy)
6052
+ (
6053
+ commandCanMutateProjectContent(mutationCommand, commandPolicy) ||
6054
+ generatedArtifactProducer
6055
+ )
6052
6056
  );
6053
- const generatedArtifactProducer = projectContentMutation
6054
- ? safeProjectProducerSegment(command, config)
6055
- : "";
6056
6057
  let requiredBatch = currentRequiredCommandBatch(verification, requiredCommands);
6057
6058
  const activeExecutionContract = state.meta?.activeExecutionContract;
6058
6059
  const activeTurnCommands =
@@ -11302,6 +11303,12 @@ export function nextStepRuntimeConfig(config = {}, state = {}) {
11302
11303
  if (pendingArtifactProducerCommand) {
11303
11304
  runtimeConfig.generatedArtifactProducerPending = true;
11304
11305
  runtimeConfig.generatedArtifactProducerCommand = pendingArtifactProducerCommand;
11306
+ if (!retainedSourceQualityRepairRequired) {
11307
+ delete runtimeConfig.completionFreshMutationRequired;
11308
+ delete runtimeConfig.completionFreshMutationRevision;
11309
+ delete runtimeConfig.completionFreshMutationPaths;
11310
+ delete runtimeConfig.completionFreshMutationNeedsSourceRead;
11311
+ }
11305
11312
  }
11306
11313
  if (retainedFailedTest) {
11307
11314
  const repositoryStateRepairMarker = state.meta?.repositoryStateRepair;
@@ -14901,7 +14908,9 @@ async function executeTool(browserState, toolCall, snapshot, config, store, obse
14901
14908
  packageInstallPolicy: policy.packageInstallPolicy,
14902
14909
  needsNetwork: Boolean(policy.needsNetwork),
14903
14910
  writesWorkspace: Boolean(policy.writesWorkspace),
14904
- mayMutateProject: Boolean(policy.mayMutateProject),
14911
+ ...(typeof policy.mayMutateProject === "boolean"
14912
+ ? { mayMutateProject: policy.mayMutateProject }
14913
+ : {}),
14905
14914
  substantiveTest: Boolean(policy.substantiveTest),
14906
14915
  gitOnly: Boolean(policy.gitOnly),
14907
14916
  noMatchExitIsSuccess: Boolean(policy.noMatchExitIsSuccess),