Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,12 +258,16 @@ A [Profullstack](https://profullstack.com) project.

## Artwork and card data v2

The complete 277-card edition is published in `public/releases/v2/`: native SVG
artwork, SVG and PNG card faces, the card-data catalog, a proof gallery and the
release manifest. All six site rosters use these versioned faces.

Build a new edition with native SVG artwork by default, Astra 6 at `xhigh`,
NicheDB metadata and optional GPT Image 2 PNG output:

```bash
pnpm release:v2 --dry-run
pnpm release:v2 --series legends --only 2 --out dist/releases/v2-proof
pnpm release:v2 --series legends --only 2 --background --out dist/releases/v2-proof
```

See [the v2 workflow](docs/artwork-v2.md) for full-edition builds, PNG fallback,
Expand Down
26 changes: 21 additions & 5 deletions docs/artwork-v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ pnpm release:v2 --dry-run

# Set OPENAI_API_KEY through your environment/secret manager first.
# Build one proof before spending on the full edition.
pnpm release:v2 --series legends --only 2 --out dist/releases/v2-proof
pnpm release:v2 --series legends --only 2 --background --out dist/releases/v2-proof

# Open dist/releases/v2-proof/index.html and inspect both sides and sources.
pnpm release:v2 validate --out dist/releases/v2-proof

# Build the whole edition. Re-run this exact command after an interruption.
pnpm release:v2 --png-copies
pnpm release:v2 --png-copies --background --concurrency 8
pnpm release:v2 validate

# After reviewing dist/releases/v2/index.html, activate the completed files locally.
Expand Down Expand Up @@ -152,9 +152,25 @@ directory. If the process is killed, verify it has stopped before removing its
stale lock file and resuming.

Requests have timeouts and bounded retries for transient failures. Generation is
sequential to make stopping, recovery and rate-limit handling predictable. The
script reports actual API usage when returned, but does not estimate spending or
promise API model access: your account must have access to the configured models.
sequential by default; `--concurrency N` permits 1–64 cards at once while preserving
roster order and serializing manifest writes. Adjust concurrency to your account's
rate limits. Changing concurrency does not invalidate artwork checkpoints.

Use `--background` for Astra requests that can exceed the foreground request's
four-minute timeout. It submits `background: true, store: true` and saves the
response ID in the staging directory's `.requests/` folder before polling. A
restart retrieves that same request and reuses completed output, including when
SVG validation needs a repair. Background responses are explicitly stored on
OpenAI for recovery; they contain the public roster text and generated artwork.
These working response files are not copied into the public release. Submission
is not automatically retried after an ambiguous network failure. Polling stops
after 30 minutes; re-run the command to continue polling the saved request.
`--force` intentionally bypasses saved requests as well as artwork checkpoints.
Background mode changes transport only, so existing artwork remains reusable.
See the [OpenAI background mode documentation](https://developers.openai.com/api/docs/guides/background).

The script reports actual API usage when returned, but does not estimate spending
or promise API model access: your account must have access to the configured models.
No paid API generation is necessary for the mocked automated tests.

```bash
Expand Down
Loading
Loading