@neonwatty/limner 0.1.7 → 0.1.8

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.
Files changed (55) hide show
  1. package/README.md +7 -31
  2. package/dist/commands/compare-image-reference.d.ts +1 -0
  3. package/dist/commands/compare-image-reference.js +4 -0
  4. package/dist/commands/compare-image-reference.js.map +1 -1
  5. package/dist/commands/compare-output.js +1 -1
  6. package/dist/commands/compare-output.js.map +1 -1
  7. package/dist/commands/compare.d.ts +1 -0
  8. package/dist/commands/compare.js +4 -12
  9. package/dist/commands/compare.js.map +1 -1
  10. package/dist/commands/loop-cli.js +26 -1
  11. package/dist/commands/loop-cli.js.map +1 -1
  12. package/dist/commands/loop-comparison-adapters.d.ts +1 -0
  13. package/dist/commands/loop-comparison-adapters.js +7 -2
  14. package/dist/commands/loop-comparison-adapters.js.map +1 -1
  15. package/dist/commands/loop-response.d.ts +31 -0
  16. package/dist/commands/loop-response.js +84 -0
  17. package/dist/commands/loop-response.js.map +1 -0
  18. package/dist/commands/loop-task.js +5 -2
  19. package/dist/commands/loop-task.js.map +1 -1
  20. package/dist/commands/loop.d.ts +1 -0
  21. package/dist/commands/loop.js +3 -0
  22. package/dist/commands/loop.js.map +1 -1
  23. package/dist/core/agent-comparison-pack.d.ts +5 -1
  24. package/dist/core/agent-comparison-pack.js +17 -100
  25. package/dist/core/agent-comparison-pack.js.map +1 -1
  26. package/dist/core/agent-comparison-prompts.d.ts +1 -1
  27. package/dist/core/agent-comparison-prompts.js +4 -4
  28. package/dist/core/agent-comparison-prompts.js.map +1 -1
  29. package/dist/core/agent-comparison-report.js +2 -2
  30. package/dist/core/agent-comparison-report.js.map +1 -1
  31. package/dist/core/agent-comparison-response.d.ts +0 -18
  32. package/dist/core/agent-comparison-response.js +1 -33
  33. package/dist/core/agent-comparison-response.js.map +1 -1
  34. package/dist/core/agent-comparison-submit.d.ts +35 -0
  35. package/dist/core/agent-comparison-submit.js +113 -0
  36. package/dist/core/agent-comparison-submit.js.map +1 -0
  37. package/dist/core/comparison-artifacts.js +3 -8
  38. package/dist/core/comparison-artifacts.js.map +1 -1
  39. package/dist/core/ledger-agent-responses.d.ts +1 -0
  40. package/dist/core/ledger-agent-responses.js +3 -3
  41. package/dist/core/ledger-agent-responses.js.map +1 -1
  42. package/dist/core/ledger-db.js +2 -0
  43. package/dist/core/ledger-db.js.map +1 -1
  44. package/dist/core/ledger-markdown.js +1 -1
  45. package/dist/core/ledger-markdown.js.map +1 -1
  46. package/dist/core/ledger-queries.js +2 -1
  47. package/dist/core/ledger-queries.js.map +1 -1
  48. package/dist/core/report-writer.js +1 -1
  49. package/docs/agent-workflow.md +11 -13
  50. package/docs/archive/visual-spec-workflow.md +23 -0
  51. package/docs/goals/db-native-agent-responses/goal.md +91 -0
  52. package/docs/goals/db-native-agent-responses/state.yaml +240 -0
  53. package/package.json +1 -1
  54. package/skills/limner/SKILL.md +9 -19
  55. package/templates/target/AGENT_GUIDE.md +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-agent-responses.js","sourceRoot":"","sources":["../../src/core/ledger-agent-responses.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAmBjD,MAAM,UAAU,mBAAmB,CAAC,EAAkB,EAAE,KAA+B,EAAE,GAAW;IAClG,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,EAAE,CAAC,OAAO,CAAC;;;;;;GAMV,CAAC,CAAC,GAAG,CACJ,UAAU,EACV,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EACpF,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAC9D,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"ledger-agent-responses.js","sourceRoot":"","sources":["../../src/core/ledger-agent-responses.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAoBjD,MAAM,UAAU,mBAAmB,CAAC,EAAkB,EAAE,KAA+B,EAAE,GAAW;IAClG,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,EAAE,CAAC,OAAO,CAAC;;;;;;GAMV,CAAC,CAAC,GAAG,CACJ,UAAU,EACV,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EACpF,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,EACtF,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAC9D,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC"}
@@ -112,6 +112,7 @@ function migrate(db) {
112
112
  freshness text not null,
113
113
  validation_status text not null,
114
114
  input_fingerprint_json text,
115
+ comparison_context_json text,
115
116
  response_json text,
116
117
  score_json text,
117
118
  top_fix text,
@@ -124,6 +125,7 @@ function migrate(db) {
124
125
  `);
125
126
  ensureColumn(db, 'artifacts', 'role', "text not null default 'artifact'");
126
127
  ensureColumn(db, 'artifacts', 'exists_on_disk', 'integer');
128
+ ensureColumn(db, 'agent_responses', 'comparison_context_json', 'text');
127
129
  }
128
130
  function ensureColumn(db, tableName, columnName, definition) {
129
131
  const columns = db.prepare(`pragma table_info(${tableName})`).all();
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-db.js","sourceRoot":"","sources":["../../src/core/ledger-db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,aAAa,GAAG,CAAC,CAAC;AAQxB,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,EAAkB;IACjC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA6GsB,aAAa;;GAE1C,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC1E,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,EAAkB,EAAE,SAAiB,EAAE,UAAkB,EAAE,UAAkB;IACjG,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,SAAS,GAAG,CAAC,CAAC,GAAG,EAAwB,CAAC;IAC1F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAC1D,EAAE,CAAC,IAAI,CAAC,eAAe,SAAS,eAAe,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ledger-db.js","sourceRoot":"","sources":["../../src/core/ledger-db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,aAAa,GAAG,CAAC,CAAC;AAQxB,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,EAAkB;IACjC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA8GsB,aAAa;;GAE1C,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC1E,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC3D,YAAY,CAAC,EAAE,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,YAAY,CAAC,EAAkB,EAAE,SAAiB,EAAE,UAAkB,EAAE,UAAkB;IACjG,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,SAAS,GAAG,CAAC,CAAC,GAAG,EAAwB,CAAC;IAC1F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAC1D,EAAE,CAAC,IAAI,CAAC,eAAe,SAAS,eAAe,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
@@ -46,7 +46,7 @@ function formatAgentResponses(responses) {
46
46
  ...(response.responseHash ? [` - hash: ${response.responseHash}`] : []),
47
47
  ...formatScore(response.scoreJson),
48
48
  ...(response.topFix ? [` - top fix: ${response.topFix}`] : []),
49
- ` - response: ${response.responsePath}`,
49
+ ` - response store: ${response.responsePath}`,
50
50
  ]);
51
51
  }
52
52
  function formatScore(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-markdown.js","sourceRoot":"","sources":["../../src/core/ledger-markdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger-markdown.js","sourceRoot":"","sources":["../../src/core/ledger-markdown.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,8 @@ export function exportTrajectoryRows(db, trajectory) {
38
38
  notes: db.prepare('select note_id as noteId, body from notes where trajectory_id = ? order by rowid').all(trajectoryId),
39
39
  agentResponses: db.prepare(`select response_id as responseId, iteration_id as iterationId, run_id as runId, mode, profile,
40
40
  response_path as responsePath, response_hash as responseHash, freshness, validation_status as validationStatus,
41
- input_fingerprint_json as inputFingerprintJson, response_json as responseJson, score_json as scoreJson,
41
+ input_fingerprint_json as inputFingerprintJson, comparison_context_json as comparisonContextJson,
42
+ response_json as responseJson, score_json as scoreJson,
42
43
  top_fix as topFix, created_at as createdAt from agent_responses where trajectory_id = ? order by rowid`).all(trajectoryId),
43
44
  artifacts,
44
45
  currentArtifacts: getCurrentArtifacts(artifacts),
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-queries.js","sourceRoot":"","sources":["../../src/core/ledger-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,UAAU,iBAAiB,CAAC,EAAkB,EAAE,KAA6B;IACjF,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;QAC5B,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC;QACrC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;QACnC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KAC/D,EAAE,CAAC;QACX,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,sBAAsB,KAAK,gCAAgC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAwB,CAAC;AAClJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,4CAA4C,CAAC,CAAC,GAAG,CAAC,YAAY,CAAkC,CAAC;AAChJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,gHAAgH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAkB,EAAE,UAA6B;IACpF,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC;8FAC+D,CAAC,CAAC,GAAG,CAAC,YAAY,CAAwB,CAAC;IACvI,OAAO;QACL,UAAU;QACV,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC;QAC3C,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;;gEAEyC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/E,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,uHAAuH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3J,mBAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,wIAAwI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3L,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QACvH,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC;;;6GAG8E,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC5H,SAAS;QACT,gBAAgB,EAAE,mBAAmB,CAAC,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG;;;;;;;;;CASzB,CAAC"}
1
+ {"version":3,"file":"ledger-queries.js","sourceRoot":"","sources":["../../src/core/ledger-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,UAAU,iBAAiB,CAAC,EAAkB,EAAE,KAA6B;IACjF,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;QAC5B,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC;QACrC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;QACnC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KAC/D,EAAE,CAAC;QACX,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,sBAAsB,KAAK,gCAAgC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAwB,CAAC;AAClJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,4CAA4C,CAAC,CAAC,GAAG,CAAC,YAAY,CAAkC,CAAC;AAChJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,gHAAgH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAkB,EAAE,UAA6B;IACpF,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC;8FAC+D,CAAC,CAAC,GAAG,CAAC,YAAY,CAAwB,CAAC;IACvI,OAAO;QACL,UAAU;QACV,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC;QAC3C,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;;gEAEyC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/E,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,uHAAuH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3J,mBAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,wIAAwI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3L,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QACvH,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC;;;;6GAI8E,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC5H,SAAS;QACT,gBAAgB,EAAE,mBAAmB,CAAC,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG;;;;;;;;;CASzB,CAAC"}
@@ -127,7 +127,7 @@ function formatAgentSpecStatus(agentSpec) {
127
127
  ## Visual Spec Status
128
128
 
129
129
  - Agent-required spec pack generated.
130
- - Next step: have an agent inspect the ideal image and reference artifacts, then write \`captures/image-reference/spec/agent-response.json\`.
130
+ - Next step: have an agent inspect the ideal image and reference artifacts, then write structured JSON to the response path named by the spec prompt.
131
131
  - Rerun \`limner compare image-reference --target <target> --spec\` after the response file exists.`;
132
132
  }
133
133
  if (agentSpec.status === 'invalid') {
@@ -12,13 +12,13 @@ Use `limner loop` when a screen will need Ralph Loop-style iteration. Limner sto
12
12
 
13
13
  1. Start a trajectory with `limner loop start --mode <mode> --target <name> --name <human-name> --max-iterations <count>`.
14
14
  2. Run `limner loop compare --trajectory <trajectory-id>`.
15
- 3. Read the generated agent comparison prompt and response target.
16
- 4. Write or validate the agent response.
15
+ 3. Read the generated agent comparison prompt.
16
+ 4. Submit the agent response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
17
17
  5. Use `limner loop status --trajectory <trajectory-id>` to inspect current state.
18
18
  6. Use `limner loop next --trajectory <trajectory-id>` to begin the next scoped fix.
19
19
  7. Use `limner loop close --trajectory <trajectory-id>` when the trajectory is done.
20
20
 
21
- Every meaningful loop interaction writes a ledger event. Agent responses are stored in the local SQLite DB with the full JSON body, hash, validation status, and freshness, so cached reuse is visible in exports. Use `--feedback "<short note>"` on loop status for a 255-character `agentFeedback` note about improving the current process.
21
+ Every meaningful loop interaction writes a ledger event. Agent responses are submitted to the local SQLite DB with the full JSON body, hash, validation status, and freshness. Use `--feedback "<short note>"` on loop status for a 255-character `agentFeedback` note about improving the current process.
22
22
 
23
23
  Use `limner ledger export <trajectory-id> --format markdown` when an agent needs a compact case file for a trajectory.
24
24
 
@@ -27,7 +27,7 @@ Use `limner ledger export <trajectory-id> --format markdown` when an agent needs
27
27
  After validation, the expected edit loop is:
28
28
 
29
29
  ```text
30
- loop compare -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare
30
+ loop compare -> loop response submit -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare
31
31
  ```
32
32
 
33
33
  Prefer `limner loop task --trajectory <trajectory-id> --executor subagent` so the task brief records subagent intent. Before editing, record the source comparison run with `limner loop action start --trajectory <trajectory-id> --from-run <run-id> --kind polish --executor subagent --summary "<short edit intent>"`. After editing, record `limner loop action complete --trajectory <trajectory-id> --action <action-id> --executor subagent --summary "<what changed>" --files "<paths>"`, then rerun `limner loop compare --trajectory <trajectory-id>`.
@@ -36,7 +36,7 @@ Use `limner loop action skip --trajectory <trajectory-id> --from-run <run-id> --
36
36
 
37
37
  ## Agent Handoff After Validation
38
38
 
39
- After an agent writes `agent-response.json` and `limner loop compare` reports `Agent comparison status: validated`, use:
39
+ After `limner loop response submit` reports `Status: validated`, use:
40
40
 
41
41
  ```bash
42
42
  limner loop task --trajectory <trajectory-id> --executor subagent
@@ -60,21 +60,19 @@ Ledger exports remain append-only for audit history, but the top artifact sectio
60
60
  4. Rebuild `reference/index.html` and `reference/styles.css` as a faithful HTML facsimile.
61
61
  5. Run `limner compare image-reference --target <name>`.
62
62
  6. Read `captures/image-reference/agent-comparison/agent-prompt.codex.md`.
63
- 7. Write `captures/image-reference/agent-comparison/agent-response.json`.
64
- 8. Rerun the same command to validate `image-comparison.json` and `comparison-summary.json`.
65
- 9. Optional: run `limner compare image-reference --target <name> --spec` to generate a visual spec prompt pack.
66
- 10. Edit `contract/visual-spec-instructions.md` for target-specific prompt guidance, or pass `--spec-instructions <path>` for a shared prompt policy.
67
- 11. Iterate on one scoped mockup fix at a time until the reference is approved.
63
+ 7. Submit the response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
64
+ 8. Use the validated `image-comparison.json` and `comparison-summary.json`.
65
+ 9. Iterate on one scoped mockup fix at a time until the reference is approved.
68
66
 
69
67
  ## Phase 2: Reference To Implementation
70
68
 
71
69
  1. Add implementation selectors to `contract/regions.json` using `appSelector`.
72
70
  2. Run `limner compare reference-implementation --target <name> --url <implementation-url>`.
73
71
  3. Read `captures/reference-implementation/agent-comparison/agent-prompt.codex.md`.
74
- 4. Write `captures/reference-implementation/agent-comparison/agent-response.json`.
75
- 5. Rerun the same command to validate `image-comparison.json`, `structure-comparison.json`, and `comparison-summary.json`.
72
+ 4. Submit the response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
73
+ 5. Use the validated `image-comparison.json`, `structure-comparison.json`, and `comparison-summary.json`.
76
74
  6. Fix the implementation and rerun until it matches the approved reference.
77
75
 
78
76
  ## Agent Rule
79
77
 
80
- Do not treat side-by-side generation as success. It is evidence. The agent must write the structured comparison response and use its next-iteration guidance for one scoped fix.
78
+ Do not treat side-by-side generation as success. It is evidence. The agent must submit the structured comparison response and use its next-iteration guidance for one scoped fix.
@@ -0,0 +1,23 @@
1
+ # Archived Visual Spec Workflow
2
+
3
+ Limner previously exposed an optional `compare image-reference --spec` workflow for source image to mockup work.
4
+
5
+ The workflow asked an external agent to produce a structured visual-spec bundle:
6
+
7
+ - `idealSpec`: design intent inferred from the source image
8
+ - `referenceSpec`: design intent expressed by the rendered HTML mockup
9
+ - `diff`: semantic mismatches and next fixes between those two specs
10
+
11
+ When validated, Limner split the bundle into:
12
+
13
+ - `captures/image-reference/ideal-visual-spec.json`
14
+ - `captures/image-reference/reference-visual-spec.json`
15
+ - `captures/image-reference/visual-spec-diff.json`
16
+
17
+ This lane is archived because the DB-native agent comparison loop now covers the active iteration need more directly:
18
+
19
+ ```text
20
+ loop compare -> loop response submit -> loop task -> loop action -> loop compare
21
+ ```
22
+
23
+ The archived visual-spec code may still be useful as a historical reference for structured design-intent extraction, but active agent workflows should use DB-native comparison responses in the local SQLite ledger.
@@ -0,0 +1,91 @@
1
+ # DB-Native Agent Responses
2
+
3
+ ## Objective
4
+
5
+ Make Limner treat SQLite as the canonical store and submission path for agent comparison responses, so agents no longer rely on a magic `agent-response.json` file as package state.
6
+
7
+ ## Original Request
8
+
9
+ Plan this out using GoalBuddy prep and do the work so Limner stores agent comparison responses in SQLite instead of using `agent-response.json`.
10
+
11
+ ## Intake Summary
12
+
13
+ - Input shape: `existing_plan`
14
+ - Audience: Limner users and agents dogfooding visual comparison loops across multiple projects
15
+ - Authority: `approved`
16
+ - Proof type: `test`
17
+ - Completion proof: `npm run check` passes, docs/skills describe the DB-native workflow, and a fresh Seatify loop can submit/read an agent response through SQLite without depending on target-scoped `agent-response.json`.
18
+ - Goal oracle: A local Limner workflow where `loop compare` produces a response submission path, `loop response submit` stores the full JSON in SQLite, ledger/export surfaces that row, and no docs/skills instruct agents to write canonical `agent-response.json`.
19
+ - Likely misfire: Only copying response JSON into SQLite after reading the old file, while leaving the file as the real source of truth.
20
+ - Blind spots considered: migration from existing local ledgers, direct compare command compatibility, stale response detection without file mtimes, generated artifact naming, agent discoverability, and preserving model-agnostic CLI behavior.
21
+ - Existing plan facts: Keep responses local only; SQLite should store the full raw JSON; `agent_responses` belongs beside ledger events rather than inside the ledger event log; agent-readable skills/docs must explain the CLI commands; previous `agent-response.json` freshness semantics showed cached reuse and should become explicit DB submission state instead.
22
+
23
+ ## Goal Oracle
24
+
25
+ The oracle for this goal is:
26
+
27
+ `npm run check` passes and a fresh loop can validate a DB-submitted agent comparison response without treating captures/**/agent-response.json as canonical state.`
28
+
29
+ The PM must keep comparing task receipts to this oracle. Planning, discovery, a passing tiny slice, or a clean-looking board is not enough. The goal finishes only when a final Judge/PM audit maps receipts and verification back to this oracle and records `full_outcome_complete: true`.
30
+
31
+ ## Goal Kind
32
+
33
+ `existing_plan`
34
+
35
+ ## Current Tranche
36
+
37
+ Complete the DB-native response submission and storage tranche: validate the current code path, implement the CLI/storage/prompt/doc changes, verify with tests and `npm run check`, then prepare the branch for PR/release follow-up if green.
38
+
39
+ ## Non-Negotiable Constraints
40
+
41
+ - Keep Limner model-agnostic: accept JSON via CLI file or stdin rather than integrating a provider.
42
+ - Keep logs and ledgers local; do not add remote telemetry.
43
+ - Do not commit generated `.limner/`, `dist/`, `node_modules/`, or smoke artifacts.
44
+ - Preserve supported comparison modes: `image-mockup`, `mockup-implementation`, and `image-implementation`.
45
+ - Store the full agent response JSON in SQLite.
46
+ - Do not leave `agent-response.json` as the canonical handoff/state file in docs, skills, or loop behavior.
47
+ - Run `npm run check` before claiming implementation completion or opening a PR.
48
+
49
+ ## Stop Rule
50
+
51
+ Stop only when a final audit proves the full original outcome is complete.
52
+
53
+ Do not stop after planning, discovery, or Judge selection if a safe Worker task can be activated.
54
+
55
+ Do not stop after a single verified Worker package when the broader owner outcome still has safe local follow-up work. Advance the board to the next highest-leverage safe Worker package and continue unless a phase, risk, rejected-verification, ambiguity, or final-completion review is due.
56
+
57
+ ## Slice Sizing
58
+
59
+ Safe means bounded, explicit, verified, and reversible. It does not mean tiny.
60
+
61
+ A good task is the largest safe useful slice.
62
+
63
+ The Worker should complete the full coherent DB-native response submission slice, including tests and documentation, unless code inspection finds that the slice must be split.
64
+
65
+ ## Canonical Board
66
+
67
+ Machine truth lives at:
68
+
69
+ `docs/goals/db-native-agent-responses/state.yaml`
70
+
71
+ If this charter and `state.yaml` disagree, `state.yaml` wins for task status, active task, receipts, verification freshness, and completion truth.
72
+
73
+ ## Run Command
74
+
75
+ ```text
76
+ /goal Follow docs/goals/db-native-agent-responses/goal.md.
77
+ ```
78
+
79
+ ## PM Loop
80
+
81
+ On every `/goal` continuation:
82
+
83
+ 1. Read this charter.
84
+ 2. Read `state.yaml`.
85
+ 3. Run the bundled GoalBuddy update checker when available and mention a newer version without blocking.
86
+ 4. Re-check the likely misfire: do not preserve `agent-response.json` as the canonical response channel.
87
+ 5. Work only on the active board task.
88
+ 6. Assign Scout, Judge, Worker, or PM according to the task.
89
+ 7. Write a compact task receipt.
90
+ 8. Update the board.
91
+ 9. Continue to the next safe local work package unless final audit proves the goal complete.
@@ -0,0 +1,240 @@
1
+ version: 2
2
+
3
+ goal:
4
+ title: "DB-Native Agent Responses"
5
+ slug: "db-native-agent-responses"
6
+ kind: existing_plan
7
+ tranche: "Implement SQLite-native agent response submission/storage and remove agent-response.json as canonical loop state."
8
+ status: done
9
+ oracle:
10
+ signal: "A fresh Limner loop can submit and validate an agent comparison response through SQLite, docs/skills describe that workflow, and npm run check passes."
11
+ cadence: "after Worker implementation and at final audit"
12
+ final_proof: "Receipt-backed npm run check result plus evidence that docs/skills and CLI behavior no longer make agent-response.json the canonical response state."
13
+ intake:
14
+ original_request: "Plan this out using GoalBuddy prep and make Limner stop using agent-response.json as canonical state."
15
+ interpreted_outcome: "Limner should make SQLite the source of truth and CLI submission channel for agent comparison responses."
16
+ input_shape: existing_plan
17
+ audience: "Limner users and agents running visual polish loops across multiple projects"
18
+ authority: approved
19
+ proof_type: test
20
+ completion_proof: "npm run check passes and a fresh loop validates a DB-submitted agent response without relying on target-scoped agent-response.json."
21
+ likely_misfire: "SQLite stores a copy of the file, but the file remains the true handoff/state mechanism."
22
+ blind_spots_considered:
23
+ - "Existing ledger migration from 0.1.7 rows that used response_path."
24
+ - "Direct compare commands may still need prompt/schema artifacts without a loop trajectory."
25
+ - "Freshness must become DB submission state rather than file existence timing."
26
+ - "Agents need docs/skills that reveal the submission CLI without reading code."
27
+ - "Seatify smoke artifacts should not be committed."
28
+ existing_plan_facts:
29
+ - "SQLite already has an agent_responses table with response_json."
30
+ - "Current 0.1.7 still reads captures/**/agent-response.json before storing rows."
31
+ - "The new workflow should accept response JSON through CLI file or stdin."
32
+ - "The full raw JSON must remain stored locally in SQLite."
33
+ - "Loop ledger exports should keep surfacing response evidence and action history."
34
+
35
+ rules:
36
+ pm_owns_state: true
37
+ one_active_task: true
38
+ max_write_workers: 1
39
+ no_implementation_without_worker_or_pm_task: true
40
+ no_completion_without_judge_or_pm_audit: true
41
+ planning_is_not_completion: true
42
+ queued_required_worker_blocks_completion: true
43
+ continuous_until_full_outcome: true
44
+ missing_input_or_credentials_do_not_stop_goal: true
45
+ preserve_and_validate_existing_plan: true
46
+ intake_misfire_must_be_audited: true
47
+ goal_pressure_requires_oracle: true
48
+ no_completion_on_weak_proof: true
49
+ slice_policy:
50
+ max_consecutive_tiny_tasks: 2
51
+ prefer_vertical_slices: true
52
+ judge_picks_largest_safe_slice: true
53
+ worker_completes_whole_slice: true
54
+
55
+ agents:
56
+ scout: installed
57
+ worker: installed
58
+ judge: installed
59
+
60
+ visual_board:
61
+ selected: local
62
+ local:
63
+ status: starting
64
+ url: "http://goalbuddy.localhost:41737/db-native-agent-responses/"
65
+ command: "npx goalbuddy board docs/goals/db-native-agent-responses"
66
+
67
+ active_task: null
68
+
69
+ tasks:
70
+ - id: T001
71
+ type: judge
72
+ assignee: Judge
73
+ status: done
74
+ reasoning_hint: high
75
+ objective: "Validate the DB-native response plan against the current Limner code and choose the largest safe Worker implementation slice."
76
+ inputs:
77
+ - "docs/goals/db-native-agent-responses/goal.md"
78
+ - "Current Limner source, tests, README, docs, and skills"
79
+ - "Existing plan facts in goal.intake.existing_plan_facts"
80
+ constraints:
81
+ - "Read-only."
82
+ - "Do not implement."
83
+ - "Preserve the user's correction that agent-response.json must not remain canonical."
84
+ expected_output:
85
+ - "Decision"
86
+ - "Exact Worker objective"
87
+ - "allowed_files"
88
+ - "verify"
89
+ - "stop_if"
90
+ - "Any split tasks if the first slice is too large or risky"
91
+ receipt:
92
+ result: done
93
+ decision: approved
94
+ full_outcome_complete: false
95
+ summary: "Current code stores response_json in SQLite but still reads captures/**/agent-response.json as canonical input. Approve one vertical Worker slice: DB pending context on loop compare, loop response submit for file/stdin, validation from stored context, summary artifacts, ledger export, docs/skills updates."
96
+ evidence:
97
+ - "src/core/agent-comparison-pack.ts reads responsePath and readAgentResponse()."
98
+ - "src/commands/loop.ts records responseJson after compare, not as the submission channel."
99
+ - "src/core/agent-comparison-prompts.ts tells agents to write JSON to responsePath."
100
+ - "README.md and docs/agent-workflow.md instruct agent-response.json handoff."
101
+ worker:
102
+ objective: "Implement SQLite-native agent response submission and remove agent-response.json as canonical loop state."
103
+ allowed_files:
104
+ - "src/core/agent-comparison*.ts"
105
+ - "src/core/comparison-artifacts.ts"
106
+ - "src/core/current-artifacts*.ts"
107
+ - "src/core/ledger*.ts"
108
+ - "src/core/report-writer.ts"
109
+ - "src/commands/compare*.ts"
110
+ - "src/commands/loop*.ts"
111
+ - "src/commands/ledger*.ts"
112
+ - "src/schemas/*.ts"
113
+ - "src/index.ts"
114
+ - "README.md"
115
+ - "docs/agent-workflow.md"
116
+ - "skills/limner/SKILL.md"
117
+ - "templates/target/AGENT_GUIDE.md"
118
+ verify:
119
+ - "npm test -- agent-comparison-pack loop-agent-responses loop-task ledger"
120
+ - "npm run check"
121
+ stop_if:
122
+ - "The migration requires destructive changes to existing ledgers."
123
+ - "Direct compare commands cannot remain useful without an explicit user decision."
124
+ - "The implementation would require remote telemetry or model-provider coupling."
125
+ - id: T002
126
+ type: worker
127
+ assignee: Worker
128
+ status: done
129
+ reasoning_hint: high
130
+ objective: "Implement the DB-native agent response submission/storage workflow selected by T001."
131
+ allowed_files:
132
+ - "src/core/agent-comparison*.ts"
133
+ - "src/core/comparison-artifacts.ts"
134
+ - "src/core/current-artifacts*.ts"
135
+ - "src/core/ledger*.ts"
136
+ - "src/core/report-writer.ts"
137
+ - "src/commands/compare*.ts"
138
+ - "src/commands/loop*.ts"
139
+ - "src/commands/ledger*.ts"
140
+ - "src/schemas/*.ts"
141
+ - "src/index.ts"
142
+ - "README.md"
143
+ - "docs/agent-workflow.md"
144
+ - "skills/limner/SKILL.md"
145
+ - "templates/target/AGENT_GUIDE.md"
146
+ verify:
147
+ - "npm test -- agent-comparison-pack loop-agent-responses loop-task ledger"
148
+ - "npm run check"
149
+ stop_if:
150
+ - "Need files outside allowed_files."
151
+ - "Current code shape contradicts the selected implementation approach."
152
+ - "A migration risk appears that requires an explicit Judge decision."
153
+ - "Verification fails twice with different root causes."
154
+ receipt:
155
+ result: done
156
+ changed_files:
157
+ - "src/core/agent-comparison*.ts"
158
+ - "src/core/ledger*.ts"
159
+ - "src/commands/loop*.ts"
160
+ - "src/commands/compare*.ts"
161
+ - "README.md"
162
+ - "docs/agent-workflow.md"
163
+ - "skills/limner/SKILL.md"
164
+ - "templates/target/AGENT_GUIDE.md"
165
+ commands:
166
+ - cmd: "npm test -- loop-agent-responses"
167
+ status: pass
168
+ - cmd: "npm test -- agent-comparison-pack comparison-artifacts loop-agent-responses loop-task ledger current-artifacts ledger-store"
169
+ status: pass
170
+ - cmd: "npm run typecheck"
171
+ status: pass
172
+ - cmd: "npm test"
173
+ status: pass
174
+ - cmd: "npm run check"
175
+ status: pass
176
+ summary: "Loop comparison prompts now submit responses through SQLite via loop response submit; stored comparison context validates submissions and writes summary artifacts without canonical agent-response.json."
177
+ - id: T003
178
+ type: worker
179
+ assignee: Worker
180
+ status: done
181
+ reasoning_hint: medium
182
+ objective: "Run a fresh local smoke workflow, preferably Seatify if available, and record evidence without committing generated artifacts."
183
+ allowed_files:
184
+ - "No repo file writes; smoke may write only external workspace/ledger artifacts."
185
+ - "/Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage/targets/homepage-desktop/captures/image-reference"
186
+ verify:
187
+ - "Run a fresh loop compare and loop response submit using the source CLI."
188
+ - "Confirm ledger export includes a fresh validated agent response row."
189
+ stop_if:
190
+ - "Seatify workspace is unavailable."
191
+ - "Smoke workflow needs credentials or external publishing."
192
+ - "Generated artifacts would need to be committed."
193
+ receipt:
194
+ result: done
195
+ changed_files:
196
+ - "/Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage/targets/homepage-desktop/captures/image-reference"
197
+ commands:
198
+ - cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop start --mode image-mockup --target homepage-desktop --name db-native-seatify-smoke --max-iterations 2"
199
+ status: pass
200
+ - cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop compare --trajectory traj_2da3a56dc1909a61"
201
+ status: pass
202
+ - cmd: "test ! -e targets/homepage-desktop/captures/image-reference/agent-comparison/agent-response.json"
203
+ status: pass
204
+ - cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop response submit --trajectory traj_2da3a56dc1909a61 --from-run 2026-06-14T125413357Z-db02fl --file targets/homepage-desktop/captures/image-reference/agent-comparison/agent-response.example.json"
205
+ status: pass
206
+ - cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop task --trajectory traj_2da3a56dc1909a61 --executor subagent"
207
+ status: pass
208
+ summary: "Fresh Seatify homepage loop validated DB-native response submission: pending missing row, fresh validated row, comparison summary, task brief, and skipped no-op action were all recorded."
209
+ - id: T999
210
+ type: judge
211
+ assignee: Judge
212
+ status: done
213
+ reasoning_hint: high
214
+ objective: "Audit whether DB-native agent responses satisfy the original user outcome for this tranche."
215
+ inputs:
216
+ - "All done task receipts"
217
+ - "Last verification"
218
+ - "Current dirty diff"
219
+ constraints:
220
+ - "Do not implement."
221
+ - "Reject completion if agent-response.json remains canonical in loop behavior, docs, or skills."
222
+ - "Reject completion if npm run check has not passed after implementation."
223
+ - "Reject completion if required Worker work is still queued or active."
224
+ expected_output:
225
+ - "complete | not_complete"
226
+ - "full_outcome_complete: true | false"
227
+ - "missing evidence"
228
+ - "next task if not complete"
229
+ receipt:
230
+ result: done
231
+ decision: complete
232
+ full_outcome_complete: true
233
+ summary: "Oracle satisfied: npm run check passed; Seatify smoke validated loop response submit; docs/skill/target guide teach SQLite submission; current loop comparison code no longer uses agent-response.json as canonical state."
234
+
235
+ checks:
236
+ dirty_fingerprint: "main...origin/main clean before GoalBuddy control files"
237
+ last_verification:
238
+ result: unknown
239
+ task: null
240
+ commands: []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neonwatty/limner",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "Agent-guided visual fidelity workbench for turning images into HTML references and comparing references to real apps.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,8 +17,8 @@ Use `limner loop` for Ralph Loop-style polishing across one or more trajectories
17
17
 
18
18
  1. Start with `limner loop start --mode <mode> --target <name> --name <human-name> --max-iterations <count>`.
19
19
  2. Compare with `limner loop compare --trajectory <trajectory-id>`.
20
- 3. Read the generated comparison prompt and response target.
21
- 4. Write or validate the agent response.
20
+ 3. Read the generated comparison prompt.
21
+ 4. Submit the agent response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
22
22
  5. After validation, prefer `limner loop task --trajectory <trajectory-id> --executor subagent`.
23
23
  6. Record `limner loop action start --trajectory <trajectory-id> --from-run <run-id> --kind polish --executor subagent --summary "<short edit intent>"` before edits.
24
24
  7. Make one scoped edit from the task brief.
@@ -28,13 +28,13 @@ Use `limner loop` for Ralph Loop-style polishing across one or more trajectories
28
28
  11. Move to the next scoped fix with `limner loop next --trajectory <trajectory-id>`.
29
29
  12. Close with `limner loop close --trajectory <trajectory-id>`.
30
30
 
31
- The intended edit loop is `loop compare -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare`. Every meaningful loop interaction writes a ledger event. Agent responses are stored in local SQLite with the full JSON body, hash, validation status, and freshness, so cached reuse is visible. Keep every action `--summary` under 255 characters. Use `--feedback "<short note>"` for a 255-character `agentFeedback` note about improving the current process. Use `limner ledger export <trajectory-id> --format markdown` to hand a compact trajectory history to another agent.
31
+ The intended edit loop is `loop compare -> loop response submit -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare`. Every meaningful loop interaction writes a ledger event. Agent responses are submitted to local SQLite with the full JSON body, hash, validation status, and freshness. Keep every action `--summary` under 255 characters. Use `--feedback "<short note>"` for a 255-character `agentFeedback` note about improving the current process. Use `limner ledger export <trajectory-id> --format markdown` to hand a compact trajectory history to another agent.
32
32
 
33
33
  Use `limner loop task --trajectory <trajectory-id> --executor subagent --format json` when another tool needs machine-readable task data.
34
34
 
35
35
  Limner records executor intent and action claims; it cannot prove an external orchestrator actually used a subagent.
36
36
 
37
- Agents can discover the current command surface with `limner --help`, `limner loop --help`, `limner loop task --help`, and `limner ledger --help`.
37
+ Agents can discover the current command surface with `limner --help`, `limner loop --help`, `limner loop response --help`, `limner loop task --help`, and `limner ledger --help`.
38
38
 
39
39
  ## Image To Reference
40
40
 
@@ -44,32 +44,22 @@ Agents can discover the current command surface with `limner --help`, `limner lo
44
44
  4. Edit `reference/index.html` and `reference/styles.css`.
45
45
  5. Run `limner compare image-reference --target <name>`.
46
46
  6. Read `captures/image-reference/agent-comparison/agent-prompt.codex.md`.
47
- 7. Write `captures/image-reference/agent-comparison/agent-response.json`.
48
- 8. Rerun `limner compare image-reference --target <name>` so Limner validates `image-comparison.json` and `comparison-summary.json`.
47
+ 7. Submit JSON with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
48
+ 8. Use the validated `image-comparison.json` and `comparison-summary.json`.
49
49
  9. Use the validated next-iteration guidance for one scoped mockup fix.
50
50
 
51
- Optional structured spec layer:
52
-
53
- - Run `limner compare image-reference --target <name> --spec`.
54
- - Edit `contract/visual-spec-instructions.md` to customize the agent prompt for this target, or pass `--spec-instructions <path>` for a shared policy file.
55
- - Use `captures/image-reference/spec/agent-prompt.codex.md` for Codex or `captures/image-reference/spec/agent-prompt.claude.md` for Claude.
56
- - Use the generated `captures/image-reference/spec/agent-response.schema.json` for strict structured output when the agent supports it.
57
- - The agent should inspect the ideal image and reference screenshot separately. The side-by-side is comparison context, not the image to parse.
58
- - Have the agent write `captures/image-reference/spec/agent-response.json`.
59
- - Rerun the same command so Limner can validate the response and emit the spec and diff JSON artifacts.
60
-
61
51
  ## Reference To Implementation
62
52
 
63
53
  1. Confirm the reference HTML is approved.
64
54
  2. Ensure every important region has both `referenceSelector` and an implementation selector in `appSelector`.
65
55
  3. Run `limner compare reference-implementation --target <name> --url <implementation-url>`.
66
56
  4. Read `captures/reference-implementation/agent-comparison/agent-prompt.codex.md`.
67
- 5. Write `captures/reference-implementation/agent-comparison/agent-response.json`.
68
- 6. Rerun the same command so Limner validates image, structure, and summary comparison artifacts.
57
+ 5. Submit JSON with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
58
+ 6. Use the validated image, structure, and summary comparison artifacts.
69
59
  7. Use the validated next-iteration guidance for one scoped implementation fix.
70
60
 
71
61
  ## Constraints
72
62
 
73
- - Limner does not call an AI vision model itself. Agent comparison and the `--spec` workflow require an external agent.
63
+ - Limner does not call an AI vision model itself. Agent comparison requires an external agent.
74
64
  - Limner does not make final pass/fail judgments.
75
65
  - Limner logs only local JSONL events under `.limner/runs/`.