Skip to content

Commit 3760ff9

Browse files
forkrulclaude
andauthored
fix: redraw hero.png with a clean alpha channel and all five stages (#13)
The committed hero.png keyed badly. It carried an opaque cream background remnant sitting above the forge and 250 separate speckle regions of keying debris — 258 regions in total against 4 objects, with subject pixels bleeding onto the canvas border. Invisible on white, obvious on any mid-tone. It was also stale and unfixable in place: `forge anvil temper quench` was painted into the pixels, so it still read as a four-stage pipeline after `hone` became stage five, and painted text cannot be re-cropped, restyled or read at favicon size. Redrawn with the transparent-logo skill as five objects and no lettering — coke forge, anvil, tempered blade, quenching tub, whetstone — and cut to a real alpha channel. The stage names now live in a README caption beside the pipeline table, where they can be edited. Cut: 5 regions for 5 objects, 2.06% partial alpha, zero opaque key-coloured pixels, zero border bleed, no fringe over white, mid-grey or #0d1117. Four plates were rejected first, each for a property of the subject rather than of the keyer: an open recess bleeding the key through its hatching, glowing flame wisps taking the key colour and detaching, a "sword blade" arriving without a hilt, and a narrow enclosed gap under a bridging clamp surviving the keyer's hole test because a sliver is mostly antialiased fringe. All four are recorded in docs/assets/README.md with the fix each one bought. Feature: hero-image Symbol: docs/assets/hero.png Changelog: Redraw docs/assets/hero.png with a real alpha channel and five stages Claude-Session: https://claude.ai/code/session_018ND32T9ygT3PJ6A9EjGV23 Co-authored-by: Claude <noreply@anthropic.com>
1 parent f77d070 commit 3760ff9

5 files changed

Lines changed: 56 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ All notable changes to this project are documented here, following [Common Chang
2929

3030
### Changed
3131

32+
- Redraw `docs/assets/hero.png` with a real alpha channel: the previous file carried an opaque cream background remnant above the forge and 250 speckle regions of keying debris, and it showed four stages with `forge anvil temper quench` painted into its pixels. The new plate is five objects and no lettering — 5 regions for 5 objects, 2.06% partial alpha, no border bleed — with the stage names moved to a README caption
3233
- Make `install.sh` portable to bash 3.2 / stock macOS (replace `declare -A` and `readlink -f` with portable equivalents)
3334
- Replace the external-API review gate in `temper` with a fully local adversarial panel (3 critic lenses + judge; A++ = two consecutive zero-blocking rounds, max 5 rounds)
3435
- Change forge's Norms section to require machine-checkable form (the tool + config that enforces each norm, installed as gates by quench) and mark each Safeguard as the source of a property test or runtime assertion

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
**Structured Prompt-Driven Development, or BDD/TDD carnival, or Spec-it-to-death.** A raw idea enters; folded, hardened, tested steel leaves. Damascus packages the SPDD pipeline — five gated stages plus an orchestrator — as skills you symlink into any repo.
44

5-
![The Damascus pipeline](docs/assets/hero.png)
5+
![The Damascus pipeline: a coke forge, an anvil, a tempered blade, a quenching tub and a whetstone](docs/assets/hero.png)
6+
7+
<sub>Left to right: **forge** · **anvil** · **temper** · **quench** · **hone**.</sub>
68

79
## The Pipeline
810

docs/assets/README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# The hero image — provenance
2+
3+
`hero.png` is the five stages of the pipeline drawn as five smithing implements, reading left to
4+
right: a brick coke forge with a bed of glowing coals (**forge**), a wrought-steel anvil
5+
(**anvil**), an arming sword whose blade carries the temper colours from straw yellow through
6+
bronze to peacock blue (**temper**), an oak quenching tub with steam rising off the water
7+
(**quench**), and a whetstone in its holder (**hone**).
8+
9+
Drawn with the [`transparent-logo`](https://github.com/forkrul/dotfiles-agents) skill
10+
(`gemini-3-pro-image`, Audubon-era engraved-plate style reference) and cut to a real alpha channel.
11+
**It cannot be reproduced.** An image model draws a different picture every run, so the command
12+
below records *how* it was made and will make another one — not this one. That is why the prompt is
13+
committed beside the asset.
14+
15+
## No lettering
16+
17+
The previous hero baked the words `forge anvil temper quench` into its pixels. Painted text cannot
18+
be re-cropped, restyled or localised, it is illegible at favicon size, and it goes stale silently —
19+
that image still read as a four-stage pipeline long after `hone` became stage five. The stage names
20+
belong in the README's caption and in the pipeline table, never in the image.
21+
22+
## Command
23+
24+
```bash
25+
export GEMINI_API_KEY=... # never as an argument: it lands in shell history
26+
27+
uv run python3 .claude/skills/transparent-logo/assets/generate_plate.py \
28+
--objects 5 --warm --size 4K --ratio 21:9 --out plate.jpg --subject "$(cat subject.txt)"
29+
30+
uv run --with pillow python3 .claude/skills/transparent-logo/assets/cut_background.py \
31+
plate.jpg docs/assets/hero.png --width 1536 --report
32+
```
33+
34+
The subject line is in [`hero-subject.txt`](hero-subject.txt), verbatim.
35+
36+
**Cut:** 5 regions for 5 objects, partial alpha 2.06%, zero opaque key-coloured pixels, zero border
37+
bleed, no fringe over white, mid-grey or `#0d1117`. A region count matching the object count is the
38+
skill's artefact detector; partial alpha in the 2–4% band is the second one.
39+
40+
## What the four rejected plates taught
41+
42+
Five generations, four rejected. Each failure is a property of the *subject*, not of the keyer:
43+
44+
| # | Defect | Cause | Fix applied to the next subject |
45+
| :--- | :--- | :--- | :--- |
46+
| 1 | 28 regions; 69 opaque magenta pixels dithered through the forge's ash arch | An open recess is drawn as dark hatching, so the key colour bleeds between the strokes and the cut half-takes it | Close the recess: *"the brick base is solid and closed, with no arch, no opening, no recess and no cavity"* |
47+
| 2 | 7 regions; flame tips painted **pink**, two of them detached into their own regions | A thin glowing wisp tints towards the magenta key however firmly `--warm` bans rose, and then breaks off | Remove the wisps and name the fire's colours: *"coals glowing in orange, amber and straw yellow only … no flame, no wisp and no spark"* |
48+
| 3 | Clean at 5 regions / 2.48%, but the sword lost its hilt and read as a shard | "A sword blade" is a blade, not a sword | Name every part: *"a straight double-edged blade, a plain straight iron crossguard, a leather-wrapped grip and a rounded iron pommel"* |
49+
| 4 | Clean at 5 regions / 2.33%, but an 18px magenta sliver under the honing guide's clamp | A **narrow enclosed** gap is mostly antialiased fringe, so it fails the keyer's hole test (a hole needs half its pixels above the clear threshold) and survives as opaque key colour | Remove the bridge rather than loosen the keyer: *"the guide lies flat against the stone … with no arch, no bridge, no clamp jaw, no leg and no gap"* |
50+
51+
Findings 1, 2 and 4 are recorded upstream as `L15``L17` in the skill's running log.

docs/assets/hero-subject.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Five blacksmith's implements from a 19th-century smithy, arranged in a single horizontal row reading left to right, evenly spaced and none touching. First, a square coke forge of brick with a riveted wrought-iron band around its top, its open top holding a bed of coals glowing in orange, amber and straw yellow only; the coals sit low and flat with no flame, no wisp and no spark rising above them, and the brick base is solid and closed, with no arch, no opening, no recess and no cavity anywhere beneath the fire. Second, a heavy wrought-steel anvil, horn pointing to the left, drawn in three-quarter view. Third, a complete arming sword shown whole and held at a slight diagonal with its point up to the right: a straight double-edged blade, a plain straight iron crossguard, a leather-wrapped grip and a rounded iron pommel, the crossguard, grip and pommel all drawn solidly and joined to the blade with no gap of background between them; the polished blade carries a band of temper colours along its length running from pale straw yellow through bronze and deep blue to peacock blue. Fourth, a hexagonal oak quenching tub bound with three iron hoops, brimming with dark water, one thin curl of cool grey-white steam rising from its centre; the steam is plain white and cool grey only. Fifth, a long rectangular grey whetstone lying at a slight angle, with a flat steel honing guide resting directly on top of it; the guide lies flat against the stone along its whole length and width, pressed down against it with no arch, no bridge, no clamp jaw, no leg and no gap, slot or opening of any kind between the guide and the stone. Every opening in every object is filled with solid opaque drawn detail; no object contains a hole, window, gap or see-through cavity of any kind, and no object has a thin trailing wisp, thread or tendril leaving its outline. Aged wrought iron, tarnished steel, oak, leather, brick and bone white, in ochre, umber, slate blue-grey and rust red.

docs/assets/hero.png

172 KB
Loading

0 commit comments

Comments
 (0)