llm-connect/workplans/LLM-WP-0010-text-to-image-rendering.md
tegwick 50c49c9b55
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Mark LLM-WP-0010 blocked on the unpaid backfill choice
The image facility is done. The live backfill and the owner-metered
production proof still wait on decisions and tasks outside this repo.

Assistant: grok
Assistant-Session: 01a11ab6-1534-7d63-8606-662b92a80ed6
2026-10-08 12:13:43 +02:00

82 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: LLM-WP-0010
type: workplan
title: "Text-to-image rendering for square portraits"
domain: agents
repo: llm-connect
status: blocked
flavor: implementation
owner: grok
topic_slug: text-to-image-rendering
created: "2026-10-08"
updated: "2026-10-08"
related:
- message:ae2b441f-7c38-4cb5-8572-47791cb52456
state_hub_workstream_id: "205485de-a74d-57bd-8f84-e91b8623adeb"
---
# LLM-WP-0010 — Text-to-image rendering for square portraits
Founder-approved request from fluid-telegram (2026-10-08) for the Hall of
Helix portrait backfill. This workplan adds the facility. It does not choose
the production model or the live budget, and it does not render the hall.
## Library, OpenRouter client, and spend gate
```task
id: LLM-WP-0010-T01
status: done
priority: high
state_hub_task_id: "f7f5b10e-f78e-53b0-ba0e-a52d91b701c8"
```
`llm_connect.images` renders one square image of at least 1024 pixels and
returns bytes plus a receipt: provider, model, SHA-256 prompt digest, and
cost. A per-call or batch cap requires a quote and refuses before the
provider call. OpenRouter `POST /api/v1/images` is the only client. The model
is required. The API key is resolved the same way as the chat adapter and is
not copied onto the receipt. Contract: `contracts/functional/images.md`.
## CLI
```task
id: LLM-WP-0010-T02
status: done
priority: high
state_hub_task_id: "7532cca3-2198-52ae-9891-2e95d97d76b0"
```
`llm-connect image render` writes `--output` or a JSONL `--batch` of
`prompt` / `output_path` lines. Receipts go to stdout. Exit 2 stops a batch
on a cap. Existing files are not replaced unless `--force`.
## HTTP
```task
id: LLM-WP-0010-T03
status: done
priority: high
state_hub_task_id: "7b824e20-7ebf-591b-84e5-eea8154ca778"
```
`POST /images` is registered only when `python -m llm_connect.server` is
started with `--image-model`, `--image-max-cost-usd`, and `--image-quote-usd`.
The response is the receipt plus base64 bytes. `/execute` is unchanged.
The process-lifetime batch cap is shared by concurrent requests.
## Live backfill
```task
id: LLM-WP-0010-T04
status: wait
priority: medium
blocking_reason: "The facility is in place and covered by fake-provider tests. A paid Hall of Helix backfill still needs the founder to name the image model, the per-call quote, and the batch cap. fluid-telegram asked not to have that chosen for them."
state_hub_task_id: "e69a1f53-a1d5-540e-a926-0f2a32ae4f54"
```
Do not run a paid render, deploy a new image, or write hall portraits until
that choice is recorded. Reply to fluid-telegram used this workplan id.
2026-10-08 follow-up: T01–T03 are the whole of the work this repository can
finish. No model, quote, or batch cap has been named, and no newer inbox
message supplies one. The workplan is `blocked` while T04 stays `wait`.