@neonwatty/limner 0.1.7 → 0.1.9
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/README.md +7 -31
- package/dist/commands/compare-image-reference.d.ts +1 -0
- package/dist/commands/compare-image-reference.js +4 -0
- package/dist/commands/compare-image-reference.js.map +1 -1
- package/dist/commands/compare-output.js +1 -1
- package/dist/commands/compare-output.js.map +1 -1
- package/dist/commands/compare.d.ts +1 -0
- package/dist/commands/compare.js +4 -12
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/loop-cli.js +35 -2
- package/dist/commands/loop-cli.js.map +1 -1
- package/dist/commands/loop-comparison-adapters.d.ts +1 -0
- package/dist/commands/loop-comparison-adapters.js +7 -2
- package/dist/commands/loop-comparison-adapters.js.map +1 -1
- package/dist/commands/loop-response.d.ts +31 -0
- package/dist/commands/loop-response.js +84 -0
- package/dist/commands/loop-response.js.map +1 -0
- package/dist/commands/loop-task.js +24 -3
- package/dist/commands/loop-task.js.map +1 -1
- package/dist/commands/loop.d.ts +11 -0
- package/dist/commands/loop.js +22 -8
- package/dist/commands/loop.js.map +1 -1
- package/dist/core/agent-comparison-fingerprint.js +1 -0
- package/dist/core/agent-comparison-fingerprint.js.map +1 -1
- package/dist/core/agent-comparison-pack.d.ts +5 -1
- package/dist/core/agent-comparison-pack.js +17 -100
- package/dist/core/agent-comparison-pack.js.map +1 -1
- package/dist/core/agent-comparison-prompts.d.ts +1 -1
- package/dist/core/agent-comparison-prompts.js +4 -4
- package/dist/core/agent-comparison-prompts.js.map +1 -1
- package/dist/core/agent-comparison-report.js +2 -2
- package/dist/core/agent-comparison-report.js.map +1 -1
- package/dist/core/agent-comparison-response.d.ts +0 -18
- package/dist/core/agent-comparison-response.js +1 -33
- package/dist/core/agent-comparison-response.js.map +1 -1
- package/dist/core/agent-comparison-submit.d.ts +35 -0
- package/dist/core/agent-comparison-submit.js +113 -0
- package/dist/core/agent-comparison-submit.js.map +1 -0
- package/dist/core/agent-task-brief.d.ts +4 -1
- package/dist/core/agent-task-brief.js +11 -2
- package/dist/core/agent-task-brief.js.map +1 -1
- package/dist/core/comparison-artifacts.js +3 -8
- package/dist/core/comparison-artifacts.js.map +1 -1
- package/dist/core/ledger-agent-responses.d.ts +1 -0
- package/dist/core/ledger-agent-responses.js +3 -3
- package/dist/core/ledger-agent-responses.js.map +1 -1
- package/dist/core/ledger-db.js +2 -0
- package/dist/core/ledger-db.js.map +1 -1
- package/dist/core/ledger-markdown.js +1 -1
- package/dist/core/ledger-markdown.js.map +1 -1
- package/dist/core/ledger-queries.js +2 -1
- package/dist/core/ledger-queries.js.map +1 -1
- package/dist/core/report-writer.js +1 -1
- package/docs/agent-workflow.md +14 -16
- package/docs/archive/visual-spec-workflow.md +23 -0
- package/docs/goals/db-native-agent-responses/goal.md +91 -0
- package/docs/goals/db-native-agent-responses/state.yaml +240 -0
- package/package.json +1 -1
- package/skills/limner/SKILL.md +11 -21
- package/templates/target/AGENT_GUIDE.md +4 -4
|
@@ -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
package/skills/limner/SKILL.md
CHANGED
|
@@ -17,24 +17,24 @@ 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
|
|
21
|
-
4.
|
|
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.
|
|
25
25
|
8. Record `limner loop action complete --trajectory <trajectory-id> --action <action-id> --executor subagent --summary "<what changed>" --files "<paths>"` after edits, then rerun `limner loop compare --trajectory <trajectory-id>`.
|
|
26
26
|
9. For comparison-only smoke runs with no intended edit, record `limner loop action skip --trajectory <trajectory-id> --from-run <run-id> --summary "Comparison smoke only; no edit intended"`.
|
|
27
|
-
10. Check state with `limner loop status --trajectory <trajectory-id
|
|
27
|
+
10. Check state with `limner loop status --trajectory <trajectory-id>` or `limner loop status --trajectory <trajectory-id> --format json`.
|
|
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
|
|
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
|
-
Use `limner loop task --trajectory <trajectory-id> --executor subagent --format json` when another tool needs machine-readable task data.
|
|
33
|
+
Use `limner loop task --trajectory <trajectory-id> --executor subagent --format json` when another tool needs machine-readable task data. The task is generated from the latest validated response stored in SQLite and includes a stable `comparisonSource`; do not depend on mutable files under `captures/**` as the source of truth.
|
|
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.
|
|
48
|
-
8.
|
|
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.
|
|
68
|
-
6.
|
|
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
|
|
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/`.
|
|
@@ -11,8 +11,8 @@ Prompt profiles: `ideal-to-mockup` for Loop 1, and `mockup-to-implementation` fo
|
|
|
11
11
|
3. Edit `reference/index.html` and `reference/styles.css` until the reference is a faithful HTML facsimile.
|
|
12
12
|
4. Run `limner compare image-reference --target <target>`.
|
|
13
13
|
5. Read `captures/image-reference/agent-comparison/agent-prompt.codex.md`.
|
|
14
|
-
6.
|
|
15
|
-
7.
|
|
14
|
+
6. Submit JSON with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
15
|
+
7. Use the validated next-iteration guidance for one scoped mockup fix.
|
|
16
16
|
|
|
17
17
|
## Loop 2: Reference To Implementation
|
|
18
18
|
|
|
@@ -20,8 +20,8 @@ Prompt profiles: `ideal-to-mockup` for Loop 1, and `mockup-to-implementation` fo
|
|
|
20
20
|
2. Add implementation selectors to `contract/regions.json` using `appSelector`.
|
|
21
21
|
3. Run `limner compare reference-implementation --target <target> --url <implementation-url>`.
|
|
22
22
|
4. Read `captures/reference-implementation/agent-comparison/agent-prompt.codex.md`.
|
|
23
|
-
5.
|
|
24
|
-
6.
|
|
23
|
+
5. Submit JSON with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
24
|
+
6. Use the validated next-iteration guidance for one scoped implementation fix.
|
|
25
25
|
|
|
26
26
|
## Rule
|
|
27
27
|
|