Development Journey — Seven open-source "craft" apps make one coffee launch

Dates: 2026-10-08 to 2026-10-09 (transcript times are UTC)
Deliverables: projects/ in the workspace folder artcraft_jay_E, index in projects/DELIVERABLES.md; the earlier tutorial page at az9713.github.io/artcraft-tutorial
Client: "Lumen Coffee Roasters — Ember Ridge launch" (fictional)
Apps: the 7 Artcraft "craft" apps from the storytold GitHub organisation, Windows portable builds v0.4–0.7
Driver: Claude Code, model Opus 5.5, effort "high" (set by the user at 2026-10-09 03:12)

How this document was made, and what it cannot show. It covers two Claude Code sessions. Session 1 (1db109c8…jsonl, 2026-10-08 13:29 to 2026-10-09 13:36) did the research report and the production build. Session 2 (the current one) replaced the music, explained the old score, started the demo server and wrote this page. Session 1 material is reconstructed from its saved transcript file with a small extraction script, from HANDOFF.md, DELIVERABLES.md, the build scripts and their build logs.

Two limits apply. (1) Three user entries in the session 1 file at 21:34 are stored in an unreadable encoded form. The "no toy projects" rule below is quoted from the memory file written one minute later, memory/production-grade-no-toys.md. (2) The images the agent looked at, the Chrome screenshots and the agent's reasoning are not in the file. The verification claims for session 1 are therefore the agent's own reports at the time, not re-checked here unless this page says so.

The per-craft design facts in section 3 and the consistency audit in section 4 come from one research subagent that read all 11 build files in session 2. Line references such as build_identity.py:22-29 are its findings.

Contents

  1. Reader's map: the 7 crafts
  2. 1. The briefs
  3. 2. Cold start: research, install, first logo
  4. 3. The build, craft by craft
  5. 4. The crux: one style and one message across 7 apps
  6. 5. Tools and features used
  7. 6. What went wrong, and the fixes
  8. 7. Session 2: the music that failed
  9. 8. Verification
  10. 9. Costs, limits and agents
  11. 10. Where things stand

Reader's map: the 7 crafts

Artcraft is a set of free, open-source desktop apps. Each one is a "clean-room" rebuild of a well-known Adobe app: it does the same job with similar concepts, but it is written from scratch and does not open Adobe's own project files in all cases. Each craft also has a command-line program (<name>-cli.exe) with an mcp mode. MCP (Model Context Protocol) is the standard way an AI agent such as Claude Code calls a program's functions. That is why an agent, not a person, could drive all seven apps in this project.

CraftAdobe equivalentWhat it is for, in plain wordsWhat it made here
vectorcraft 0.7.0IllustratorDrawing with shapes and curves, not pixels. Logos stay sharp at any size.Logo, colour palette, bag label, business cards, print files, app icons
photocraft 0.5.0PhotoshopEditing and compositing pixel images in layers.A 67-layer product "photo" of the coffee bag, built from nothing; social-media crops
lightcraft 0.4.0LightroomManaging a photo library and giving a whole shoot one consistent colour "look".A graded 4-photo series, exported for web, screen and print
effectcraft 0.6.0After EffectsMotion graphics: animated logos, titles, overlays.Logo animation, title card, name captions, end card, a web animation
filmcraft 0.4.0Premiere ProVideo editing: putting clips on a timeline with sound and captions.A 30-second launch video and a 15-second vertical cut
designcraft 0.4.0InDesignPage layout for multi-page documents: brochures, books, guidelines.A 12-page brand-guidelines book
pdfcraft 0.4.0AcrobatAssembling, organising, checking and protecting PDF files.A 19-page press kit, a product sheet and a password-protected copy

1. The briefs — what was actually being asked

The work grew from three prompts. Each one changed the scope.

Brief 1, 2026-10-08 13:29 — research.

Read @transcript.txt.
scan https://github.com/orgs/storytold/repositories
explain how the repositories map to Adobe applications
AMIAQ

transcript.txt is the transcript of the YouTube video "Someone Just Rebuilt Adobe for Free, and Claude Can Run Them All (7 apps tested)" by Jay E | RoboNuggets. "AMIAQ" means "ask me if any question"; at 13:32 the user asked the agent to remember that, and it became the memory file amiqa-ask-questions.md. The agent found 41 repositories in the organisation, of which 12 are crafts and 7 map to Adobe apps.

Brief 2, 2026-10-08 21:31 — build something.

Can we create at least one project per craft starting with no input? Every artifact will be created by the crafts. AMIAQ

The agent asked 4 questions in one form, and the user took the recommended option each time: install from the release files (not build from source); "no input" means generate everything from scratch; photocraft and lightcraft get craft-made images only (no stock photos, no AI images); outputs stay in a local folder. While the agent drew a first test logo, the user added the rule that set the quality bar for everything after it:

I want no trivial projects as if I am an experienced creative professional using the crafts for production work. No toy projects.

(Quoted from memory/production-grade-no-toys.md; see the note at the top.) The agent answered with a production plan for one fictional client, Lumen Coffee Roasters, in which each craft feeds the next.

Brief 3, 2026-10-09 03:13 — execute, with a stop condition. The user set the model to Opus 5.5 and effort to "high", then used /goal:

please execute the production plan with human in the loop. success is defined by using each and every of the craft tools to produce one or more production grade artifact. use computer use/playwright/cdp tools to verify your work.

/goal installs a Stop hook: the session cannot end until the condition holds. In practice "human in the loop" meant very little here. The user made no further prompt during the 47-minute build (03:13 to 04:00). The loop was the agent looking at its own renders.

Interpretations made silently. "Production grade" was read as print and broadcast specifications: CMYK colour, spot inks, 3 mm bleed, PDF/X-4, 16-bit images, ProRes with transparency, loudness targets, interchange files. "Starting with no input" was read strictly: even the product "photos" are renders that photocraft draws from shapes, and lightcraft grades those renders as if they were a camera shoot.

2. Cold start — research, install, first logo

Phase A: the research report (2026-10-08 13:29–15:20)

Seven prompts built one HTML report, summaries/artcraft-adobe-map-github.html: the mapping table; usage examples for a non-designer (the user wrote "i am not an Adobe user. no experience with creative designs"); 6–7 example prompts per craft ("beef up the example prompts"); the Codex MCP config syntax (~/.codex/config.toml, [mcp_servers.<name>]); install steps written as natural-language prompts; and finally a README and a public GitHub Pages site. The page went live at az9713.github.io/artcraft-tutorial (repo az9713/artcraft-tutorial, commit cb83523).

Two warts from this phase. The agent called the Adobe set "six apps" in several places before it counted seven and corrected the report. And before it published, it removed from the public copy a reference to the local transcript.txt and two mentions of the user's own Codex config.toml, including one MCP server name. So the published page and the local file differ on purpose.

Phase B: install and the first logo (2026-10-08 21:31–21:35)

  1. The agent checked the machine: Windows 11, CPU i5-12450H, Rust 1.93.0 (too old for effectcraft's source build, which needs 1.95; one reason to prefer the release files).
  2. It downloaded the 7 Windows x64 portable zips and verified each against SHA256SUMS.txt. All 7 contained the CLI. This answered an open risk from the report: the READMEs did not say that the Windows files include it.
  3. It dumped each CLI's command catalogue to tools/cat/. lightcraft answered {"command":"commands","error":"unknown command `commands`","ok":false}; its list command is run engine.commands.
  4. It drew a first Lumen logo in vectorcraft. The wordmark overlapped the sun-star. This is when the user gave the "no toy projects" rule. The session ended with a HANDOFF.md and the plan.

Total output on disk at the end: about 1.55 GB in projects/*/out plus 1.4 GB of app builds in apps/.

The companion guide — read late, and what it would have changed

The Craft Apps Automation Guide.pdf is a 12-page RoboNuggets guide to the same video, "Checked 8 October 2026". Its file time (2026-10-08 06:31 local) is two minutes before session 1 began, so it was in the workspace from the start. Neither session read it until the user added it as a source at the end of session 2. A second root file, README.txt, is excluded from this project by the user's decision. The guide gives one install prompt, the three ways an agent can drive the apps, one tested job per app with a copy-paste prompt, and a list of quirks. Compared with this build:

TopicThe guide saysThis build
How to drive the apps"drive the apps through their command line, not their MCP servers, unless i ask. it keeps your memory free for the actual work." MCP tool lists load every session (LightCraft has about 100 tools).MCP for 6 of 7 crafts, through tools/mcpclient.py, called from scripts. The tool lists did not load into the agent's context, because the scripts, not the agent, held the MCP sessions. The context still reached about 489k tokens at the handoff; this page does not measure which content filled it.
VersionsOn 8 Oct: PhotoCraft 0.3.0, FilmCraft 0.2.1, EffectCraft 0.4.0, VectorCraft 0.4.0, LightCraft 0.2.1, PrintCraft 0.2.1, DesignCraft 0.2.1.Newer builds: 0.5.0, 0.4.0, 0.6.0, 0.7.0, 0.4.0, 0.4.0, 0.4.0. Some quirks in the guide may be fixed in these.
Acrobat clone nameReleased as "PrintCraft" (printcraft-cli); the repo and newer builds say pdfcraft.Used pdfcraft-cli 0.4.0.
Smart objects in PSD"PNG export flattens, and PSD can't hold smart objects. Keep the .pcraft as your master."The hero is saved as both .pcraft and .psd. The PSD was checked only for its layer tree, not for live smart objects. Treat the .pcraft as the master.
VectorCraft stroke"A stroke setting sticks to new shapes."Hit the same issue: objects inherited a stroke; fixed by setting the default stroke to none.
EffectCraft fonts"avoid variable fonts in bold"; "fontFamily is ignored. Use font and fontStyle".Hit the same issue: Bahnschrift (a variable font) gave only Regular; Bold was faked with a stroke.
Lottie warnings"Lottie export tells you what it dropped."Export reported 0 warnings, and lottie-web 5.12.2 still ignored Merge Paths, so the holes filled in until the web comp used even-odd fills.
DesignCraft fonts"DesignCraft can't use my installed fonts yet"; no command to link text frames.The 0.4.0 build set Bahnschrift and Georgia in its paragraph styles. Whether the page renders use those fonts or a fallback was not checked.
Check your own work"render a preview, look at it, fix what's off".The same loop, on every craft; 2–3 rounds on most.
Rule learned: read the source documents in the workspace before the first build step. This guide named two of the problems the build later hit (the sticky stroke and bold variable fonts), and it marks the PSD as a weak master.

The architecture that every craft shares

Early in the build (03:14) the agent wrote one small file, tools/mcpclient.py: a minimal MCP client that starts <craft>-cli.exe mcp and talks to it over standard input and output. Every Python build script uses it. The shape is the same for six crafts:

build_<thing>.py  →  tools/mcpclient.py  →  <craft>-cli.exe mcp  →  craft engine  →  <craft>/out/…

effectcraft is the exception. Its build is a JSX script (the scripting language After Effects uses), run with "$fx" --empty --save-as out/lumen-motion.ecproj script build_motion.jsx. A few steps used plain CLI commands in bash. The file projects/env.sh holds the 7 CLI paths as $vec $photo $light $fx $film $dsg $pdf.

Rule learned: write the MCP client before the first app. One 76-line client (tools/mcpclient.py) drove 6 of the 7 crafts; effectcraft used its own JSX scripting.

3. The build, craft by craft

The build ran in chain order, because each craft uses files from the crafts before it: vectorcraft → photocraft → lightcraft → effectcraft → filmcraft → designcraft → pdfcraft. Each subsection gives what the script builds, the design decisions, the features that a reader new to these tools should notice, and what went wrong.

3.1 vectorcraft — the brand identity build_identity.py · 03:14–03:18

What it builds

Design decisions

Features to notice

What went wrong

3.2 photocraft — a product photo with no camera build_hero.py · 03:18–03:27

What it builds

Features to notice

What went wrong

3.3 lightcraft — grading a "shoot" make_shoot.sh, build_series.py · 03:27–03:31

What it builds

Design decisions

The look (build_series.py:19-32): white balance 6900 K, tint +4; highlights −18; shadows +10; blacks +8; colour grading 30°/10 and 45°/8; vignette −14; grain 12. The first version was too strong; the agent softened it and fixed a label crop and two bean crops after it looked at the exports.

Features to notice

What went wrong — the largest app failure of the project

The first export killed the MCP server: RuntimeError: server closed during tools/call, then OSError: [Errno 22] Invalid argument. Run directly from the CLI, the cause appeared:

Illegal instruction        "$light" run --library library app.export … format=jpeg longEdge=2048 quality=86
exit=132

A test matrix showed that every 8-bit encode crashes — JPEG, PNG, WebP, AVIF and 8-bit TIFF — while 16-bit TIFF works (sRGB/8 exit=132, sRGB/16 exit=0). "Illegal instruction" means the program used a CPU instruction this processor does not have; the deliverables record notes the i5-12450H has no AVX-512. DNG export refused with DNG export needs a raw photo.

Fix: lightcraft delivers 16-bit TIFF masters only, and photocraft converts them to the web JPEGs. Exports run as separate lightcraft-cli run --library … processes, because a crash inside the MCP server ends the whole session with it. This JPEG step has no script; it was a one-off loop.

Rule learned: when an MCP server closes with a protocol error, run the same command from the plain CLI. Here the MCP error said only server closed during tools/call; the CLI showed exit code 132.

3.4 effectcraft — the motion package build_motion.jsx · 03:31–03:36

What it builds

Seven compositions ("comps"), all 1920 × 1080 at 30 fps: Logo Sting (5 s), Title Card (4 s), two lower thirds (6 s each, transparent), End Card (4 s), Logo Sting Web (4 s), and Music Bed (30 s). Renders: the sting as H.264 and as ProRes 4444 with alpha; title and end cards; lower thirds as ProRes 4444 with alpha; the web sting as a transparent WebM and as a Lottie JSON file with 0 export warnings. The render and Lottie commands are not in the script; DELIVERABLES.md records them.

Design decisions

Features to notice

What went wrong

3.5 filmcraft — the edit build_spot.py · 03:36–03:48

What it builds

Features to notice

What went wrong

3.6 designcraft — the brand guidelines build_guidelines.py · 03:48–03:52

What it builds

Design decisions

Body text Georgia 10/15 pt. A colour-proportion bar shows how much of each colour to use: Roast 55 %, Crema 25 %, Clay 8 %, Ember 8 %, Gold 4 %.

Features to notice

What went wrong

3.7 pdfcraft — the press kit build_presskit.py · 03:51–03:54

What it builds

Features to notice

What went wrong

4. The crux: one style and one message across 7 apps

The user's question was: how can style and message stay consistent across all the crafts? This build gives an honest answer in two parts — what was done, and what leaked.

4.1 What this build did

Files carried the look. Where one craft used another craft's output file, consistency was automatic, because it was literally the same artwork:

Copy-paste carried everything else. No shared brand file exists. Each of the 7 build scripts types the colours, fonts, product facts and copy lines again. The research subagent found the five colour hexes re-declared in designcraft, effectcraft, pdfcraft, filmcraft and the story-post script, and the product facts (Ethiopia, Guji, Washed, 2,100 m; Lot 07; Mara Okafor; 340 g / 12 oz) in five or six scripts each. vectorcraft → effectcraft has no file handoff at all: effectcraft redraws the logo from copied numbers. It matches, but only because the numbers were copied correctly.

4.2 What leaked — 13 inconsistencies

The subagent's audit found these. None was fixed in this pass; this page documents them.

  1. Tasting notes, 4 forms: "Bergamot, ripe apricot, cacao nib" (label, video caption, guidelines); "Bergamot · Apricot · Cacao nib" (story post, title card); the guidelines and press release add "bright, tea-like … long cocoa finish".
  2. Origin line, 5 forms: "Ethiopia · Guji · Washed · 2,100 m"; "ETHIOPIA · GUJI · WASHED · 2,100 M" (the metre becomes a capital M); "Guji zone, Ethiopia"; "2,100 metres" and "2,100 m" in the same press kit.
  3. Fonts: the press-release page uses Helvetica and Times, not Bahnschrift and Georgia. The tagline is SemiLight in vectorcraft and Regular in effectcraft.
  4. Off-palette colour: the story post's tasting notes use #6b3f24, which is not Clay (#b06a45).
  5. Bleed: 8.504 pt in vectorcraft, 8.5 pt in designcraft; both labelled 3 mm.
  6. Letter-spacing: the guidelines say capitals use 300 tracking; the label uses 380 and the kickers 420.
  7. Logo misuse rules: vectorcraft lists 4; designcraft adds "rotate" and "shadows".
  8. URL and email forms: capitals on the story post, "https://" only in pdfcraft; email mara@ on the card and press release, hello@ on the back cover.
  9. Records: DELIVERABLES.md says 14 paragraph styles; the code makes 12.
  10. Records: "preflight 0 errors / 0 warnings" is true, but the PDF/X-4 export logged 11 warnings.
  11. Records: DELIVERABLES.md says "all → designcraft → pdfcraft"; filmcraft is an end point and feeds neither.
  12. Records: the build_motion.jsx header lists 5 comps; the code makes 7.
  13. Possible: the guidelines say keep type 250 px clear of the bottom of a story; the story URL is placed at y = 1702 of 1920 (218 px). Not confirmed, because the anchor point of that y value is unknown.
Rule learned: in this build, artwork passed between crafts as a file matched in every craft that used it. Facts and copy retyped in up to 6 scripts produced the 13 differences in section 4.2.

4.3 Advice for the next build recommendation, not done here

  1. One brand file, read by every script. Put the colours (hex and CMYK), fonts with weights, tracking values, bleed, and every approved copy line (tasting notes, origin line, URL, contacts) in one brand.json. Each build script loads it and contains no brand literals.
  2. Pass artwork as files, never as numbers. effectcraft should import the vectorcraft SVG of the mark, not redraw it from copied coordinates.
  3. Write the message once. Approve a short "message house" — headline, 3 proof points, one call to action — and generate captions, story text, press copy and guideline text from it.
  4. One check after each build. A small script that searches every build script and text export for any hex code or copy line that is not in brand.json. It would have caught items 1, 2, 4 and 8.
  5. Build the guidelines from the brand file. designcraft's tracking, safe-zone and misuse rules should come from the same file the other crafts read, so the book cannot disagree with the work.

5. Tools and features used

ToolWhat it did in this project
Bash (Git Bash)Session 1: 122 calls — downloads, checksums, CLI runs, test matrices, ffprobe checks.
Read / Edit / Write53 / 26 / 18 calls in session 1: build scripts, DELIVERABLES.md, HANDOFF.md, memory files.
WebFetch, WebSearch17 and 1 calls: GitHub org pages, READMEs, the Codex MCP documentation.
AskUserQuestionSession 1: one form with 4 questions before the build. Session 2: two forms (next task; format and scope of this page).
Claude in ChromeSession 1: QC of SVGs, the Lottie file and the press-kit PDF in the browser (7 computer, 6 javascript, 5 navigate calls).
tools/mcpclient.pyThe minimal MCP stdio client every Python build script uses.
tools/rangeserve.pyStatic web server with HTTP Range support, for MP4 playback in the browser.
gh CLICreated and pushed az9713/artcraft-tutorial; enabled GitHub Pages.
ffmpeg / ffprobeSession 2: loudness (EBU R128) and per-second level of the jingle takes and the new exports; thumbnails for this page.
ElevenLabs connectorSession 2: Music v2.5, three 30 s jingle takes.
Skillshandoff-after-clear (end of session 1); music (session 2, for the ElevenLabs API); dev-journey (this page).
Subagents and advisorSession 1: none — all work inline. Session 2: one general-purpose subagent (the design-decision and consistency audit in sections 3 and 4) and one advisor consultation before this page was written.

Invisible constraints that shaped the output. The user's global rules were active in both sessions: replies in ASD-STE100 Simplified Technical English; precise, not rhetorical phrasing; dark-mode HTML. A "ponytail" hook pushed toward the smallest working change. A "coach" hook warned about context size (section 9).

6. What went wrong, and the fixes

The app-specific failures are in each craft's subsection. These are the harness and process failures — problems of Claude Code, the shell, or the agent, not of the crafts.

  1. UnicodeEncodeError: 'charmap' codec can't encode character '\u2192' in position 22 — Windows Python printed to a cp1252 console; the catalogues contain "→". Failed twice before the fix: run Python with -X utf8.
  2. make.sh: line 2: : command not found (exit 127) — the corrected logo script used $vec, which was set but not exported to the child shell. Fix: export the variables after . projects/env.sh.
  3. ModuleNotFoundError: No module named 'mcpclient' — an inline probe could not import the new client. Fix: each build script inserts tools/ into sys.path itself (for example build_spot.py:10).
  4. File has not been read yet. Read it first before writing to it. — the agent tried to overwrite MEMORY.md without reading it.
  5. CDP sendCommand "Page.captureScreenshot" timed out after 30000ms — Chrome ran with its window hidden (visibilityState: hidden). It did not load <video> elements. Video was checked by decoding frames in effectcraft instead.
  6. ConnectionResetError: [WinError 10054] from Python's simple web server when Chrome asked for byte ranges; this led to rangeserve.py.
  7. Lost checkout. The git copy of artcraft-tutorial lived in the session scratchpad, which is deleted at /clear. HANDOFF.md says to clone it again before editing the page.
  8. Near-miss: the first lightcraft failure looked like an MCP protocol bug (OSError: [Errno 22] Invalid argument). It was an app crash, which the plain CLI run showed as exit code 132.

7. Session 2: the music that failed

After /clear, session 2 resumed from HANDOFF.md. Asked which task to do, the user wrote:

The sound effect is bad. it is a monotone noise. remove it or come up with better. can music be created like a short jingo

Why the first score failed — an agent design error

The "music" was a 30 s bed that the session 1 agent specified in build_motion.jsx:192-208 and effectcraft rendered with its Tone effect: four sustained 5-note sine-wave chords, Dmaj9 – Bm11 – Gmaj9 – A6/9, 7.5 s each, with 0.75 s crossfades. effectcraft rendered these settings as specified, so the faults below are in the specification:

Session 1 had checked this file only by level ("WAV RMS ≈ -17 dBFS"). A level check cannot hear music. A fuller explanation is in projects/filmcraft/temp-score-explained.html.

Rule learned: session 1 checked the score only by level (RMS ≈ −17 dBFS). A level measurement does not test melody, rhythm or fit to the picture, so a person must listen before audio is accepted.

The replacement, and a broken promise

  1. The ElevenLabs connector (Music v2.5, flow ckO0MhirZeulZW65EMCF) made 3 takes of a 30 s instrumental jingle: marimba, acoustic guitar, upright bass, light percussion, about 100 BPM, a four-note hook at the start and a resolved final chord. 900 credits each, 2,700 credits ($0.45) in total. Generation took about 2 minutes.
  2. The agent cannot hear audio, so it selected by measurement: take B starts with 1.18 s of silence (under the logo); take A lifts at 19 s; take C starts at once, lifts at 9 s on the wide-shot cut, and ends with a decay to −39 dB in the last 0.5 s. Take C was chosen.
  3. build_spot.py was changed to load filmcraft/music/lumen-jingle-30s.mp3, and the :15 now uses the jingle's last 15 s so it ends with the end card. The rebuild took about 3 minutes.
  4. Checks: :30 at −16.0 LUFS (peak −3.2 dBFS), :15 at −14.0 LUFS (peak −2.0 dBFS), ProRes master at −19.2 LUFS (the build sets no target for it). The per-second level of each export follows take C.

The cost to the original brief: Brief 2 said "Every artifact will be created by the crafts." The music is now made by an external AI service. DELIVERABLES.md gap 7 and the build_spot.py header say so.

8. Verification

ClaimHow it was checkedWhen
Downloads are genuineSHA-256 of each zip against SHA256SUMS.txtS1
Images and pages look rightThe agent viewed PNG renders after each build and rebuilt after faults (2–3 rounds on most crafts)S1, not re-checked
Print PDFs are validpdfcraft check on the vectorcraft PDF/X-4 (PDF 1.6, 3 pages, 0 warnings) and all press-kit PDFsS1
Guidelines print-readydesigncraft preflight 0 errors / 0 warnings (but 11 export warnings, see 3.6)S1
Layered PSD survivesReopened with info: 16-bit, layer tree intact, 67 layersS1
ProRes has transparencyfilmcraft probe: Apple ProRes 4444, has_alpha, YUVA 4:4:4 12-bitS1
Lottie plays on the weblottie-web 5.12.2 in Chrome on a checkerboard; holes transparentS1
Videos are correctH.264 probe (High, 1920 × 1080, AAC 48 kHz, 30.0 s); frames decoded in effectcraft and viewed; EDL readS1
New music is in the videosEBU R128 loudness and per-second level of each export against take CS2
Demo server worksHTTP 206 for _qc/index.html, _qc/lottie.html and the :30 MP4S2
Thumbnails on this pageMade with ffmpeg and pdfcraft render from the current outputs; the bag label was viewedS2

Not verified: the jingle by ear (the user has not confirmed take C); video playback in a visible browser (Chrome was hidden in session 1); the .ai, .psd and .idml files in Adobe's own apps; the raw-photo path of lightcraft (the shoot is renders, not RAW); this page in a browser.

9. Costs, limits and agents

10. Where things stand

Done

Unfinished, and why

Knowledge captured

Next steps (options)

  1. Listen to take C and keep it or change it.
  2. Make brand.json and fix the 13 drifts (section 4.3).
  3. Script the hand-run steps so one command rebuilds everything.
  4. Fix the press-kit accessibility and the 34 MB product sheet.
  5. Report the lightcraft exit-132 crash and the filmcraft MP4 fast-start issue to the Artcraft project.