getprismo 0.1.49 → 0.1.50

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.
@@ -7,3 +7,4 @@ Paper cuts, observations, and metric notes from the measurement window. Fix bugs
7
7
  - 2026-06-12: follow-up dogfood found optimize-report.md still churned backups because the report timestamp changed every auto-detect. Fixed by comparing optimize reports with the generated-at line normalized and added a repeated-run regression test.
8
8
  - 2026-06-12: follow-up dogfood found backend-summary.md could churn backups because generated .prismo context files influenced load-bearing text-reference counts. Excluded .prismo generated context from the reference corpus and added a regression test; repeated optimize on the SaaS repo now produces 0 new .bak files after the one-time old-report replacement.
9
9
  - 2026-06-12: connector dogfood found scoped `optimize frontend` and unscoped `optimize` could alternate optimize-report.md's Generated Files list and create metadata-only backups. Changed optimize-report metadata-only changes to update without backups and added a scoped/unscoped regression test.
10
+ - 2026-06-12: connector dogfood found legitimate generated-context changes still left timestamped `.prismo/*.bak` files, which made the repo look dirty during validation. Changed `prismo optimize` context files to update in place because they are reproducible generated artifacts; user-authored files still keep backups.
@@ -413,7 +413,20 @@ function writeOptimizeReport(root, relPath, contents) {
413
413
  }
414
414
  }
415
415
  } catch {}
416
- return writeGeneratedFile(root, relPath, contents);
416
+ return writeOptimizeGeneratedFile(root, relPath, contents);
417
+ }
418
+
419
+ function writeOptimizeGeneratedFile(root, relPath, contents) {
420
+ const fullPath = path.join(root, relPath);
421
+ fs.mkdirSync(path.dirname(fullPath), { recursive: true });
422
+ const existed = fs.existsSync(fullPath);
423
+ try {
424
+ if (existed && fs.readFileSync(fullPath, "utf8") === contents) {
425
+ return { path: relPath, backupPath: null, unchanged: true };
426
+ }
427
+ } catch {}
428
+ fs.writeFileSync(fullPath, contents, "utf8");
429
+ return { path: relPath, backupPath: null, replaced: existed };
417
430
  }
418
431
 
419
432
  function renderScopedContext(ctx, scope) {
@@ -549,7 +562,7 @@ function runOptimize(rootDir = process.cwd(), options = {}) {
549
562
  }
550
563
 
551
564
  for (const [name, contents] of pending) {
552
- const written = writeGeneratedFile(ctx.root, path.join(".prismo", name), contents);
565
+ const written = writeOptimizeGeneratedFile(ctx.root, path.join(".prismo", name), contents);
553
566
  generated.push(written.path);
554
567
  }
555
568
  const report = renderOptimizeReport(ctx, [...generated, ".prismo/optimize-report.md"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "getprismo",
3
- "version": "0.1.49",
3
+ "version": "0.1.50",
4
4
  "description": "Local AI coding workflow scanner for Codex, Claude Code, Cursor, and token-waste diagnostics.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/shanirsh/prismodev#readme",