SPEC.mdpreviewSPEC.mdsource314 lines · 21.8 KB · raw

title: TASK FAILED SUCCESSFULLY theme: jev status: made song: song.js measured: {"date":"2026-09-26","song":"4a94bbb1a6a8","total":{"loudnessDbfs":-18.9,"peakDbfs":-1.7},"parts":{"bass":{"loudnessDbfs":-27.4,"peakDbfs":-11.1},"drums":{"loudnessDbfs":-23.3,"peakDbfs":-4.1},"other":{"loudnessDbfs":-32.6,"peakDbfs":-1.9},"stabs":{"loudnessDbfs":-32.9,"peakDbfs":-13.8},"vocals":{"loudnessDbfs":-26.8,"peakDbfs":-4.6},"xp":{"loudnessDbfs":-24.4,"peakDbfs":-11}},"sections":{"1-4":{"total":{"loudnessDbfs":-21.9,"peakDbfs":-12.3},"parts":{"xp":{"loudnessDbfs":-21.9,"peakDbfs":-12.3}}},"5-8":{"total":{"loudnessDbfs":-22.2,"peakDbfs":-11},"parts":{"drums":{"loudnessDbfs":-40.9,"peakDbfs":-21.1},"xp":{"loudnessDbfs":-22.1,"peakDbfs":-12.3}}},"9-12":{"total":{"loudnessDbfs":-20,"peakDbfs":-3},"parts":{"bass":{"loudnessDbfs":-31.8,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-22.5,"peakDbfs":-7.5},"vocals":{"loudnessDbfs":-24.7,"peakDbfs":-4.6},"xp":{"loudnessDbfs":-32.8,"peakDbfs":-12.3}}},"13-16":{"total":{"loudnessDbfs":-19.2,"peakDbfs":-2.3},"parts":{"bass":{"loudnessDbfs":-33.1,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-23.1,"peakDbfs":-7.5},"vocals":{"loudnessDbfs":-21.8,"peakDbfs":-4.7}}},"17-20":{"total":{"loudnessDbfs":-18.9,"peakDbfs":-3.2},"parts":{"bass":{"loudnessDbfs":-31.8,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-22.4,"peakDbfs":-7.5},"stabs":{"loudnessDbfs":-29.4,"peakDbfs":-13.8},"vocals":{"loudnessDbfs":-22.7,"peakDbfs":-5.3},"xp":{"loudnessDbfs":-37.5,"peakDbfs":-11.5}}},"21-24":{"total":{"loudnessDbfs":-18,"peakDbfs":-1.7},"parts":{"bass":{"loudnessDbfs":-24.4,"peakDbfs":-11.1},"drums":{"loudnessDbfs":-22.2,"peakDbfs":-4.1},"stabs":{"loudnessDbfs":-31,"peakDbfs":-14.3},"vocals":{"loudnessDbfs":-88.1,"peakDbfs":-62.9},"xp":{"loudnessDbfs":-22,"peakDbfs":-11.5}}},"25-28":{"total":{"loudnessDbfs":-18,"peakDbfs":-4.3},"parts":{"bass":{"loudnessDbfs":-24.5,"peakDbfs":-11.4},"drums":{"loudnessDbfs":-22.4,"peakDbfs":-7.3},"stabs":{"loudnessDbfs":-30.9,"peakDbfs":-14.5},"xp":{"loudnessDbfs":-21.8,"peakDbfs":-12.3}}},"29-32":{"total":{"loudnessDbfs":-19.1,"peakDbfs":-5},"parts":{"bass":{"loudnessDbfs":-25.1,"peakDbfs":-11.6},"drums":{"loudnessDbfs":-23.4,"peakDbfs":-7.1},"stabs":{"loudnessDbfs":-31.9,"peakDbfs":-14.3},"vocals":{"loudnessDbfs":null,"peakDbfs":null},"xp":{"loudnessDbfs":-22.7,"peakDbfs":-12.3}}},"33-36":{"total":{"loudnessDbfs":-18.6,"peakDbfs":-2},"parts":{"bass":{"loudnessDbfs":-31,"peakDbfs":-15.3},"drums":{"loudnessDbfs":-22.5,"peakDbfs":-7.5},"vocals":{"loudnessDbfs":-21.5,"peakDbfs":-4.6},"xp":{"loudnessDbfs":-32.9,"peakDbfs":-12.3}}},"37-40":{"total":{"loudnessDbfs":-19.4,"peakDbfs":-3},"parts":{"bass":{"loudnessDbfs":-31.5,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-22.4,"peakDbfs":-7.5},"stabs":{"loudnessDbfs":null,"peakDbfs":null},"vocals":{"loudnessDbfs":-23,"peakDbfs":-5.4}}},"41-44":{"total":{"loudnessDbfs":-18.8,"peakDbfs":-3.2},"parts":{"bass":{"loudnessDbfs":-31.7,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-22.4,"peakDbfs":-7.5},"stabs":{"loudnessDbfs":-29.4,"peakDbfs":-13.8},"vocals":{"loudnessDbfs":-22.2,"peakDbfs":-5.3},"xp":{"loudnessDbfs":-38.8,"peakDbfs":-11.5}}},"45-48":{"total":{"loudnessDbfs":-17.7,"peakDbfs":-2.3},"parts":{"bass":{"loudnessDbfs":-23.8,"peakDbfs":-11.8},"drums":{"loudnessDbfs":-22.1,"peakDbfs":-4.1},"stabs":{"loudnessDbfs":-30.8,"peakDbfs":-14.3},"vocals":{"loudnessDbfs":-76.7,"peakDbfs":-52.7},"xp":{"loudnessDbfs":-21.9,"peakDbfs":-11.5}}},"49-52":{"total":{"loudnessDbfs":-17.7,"peakDbfs":-4.9},"parts":{"bass":{"loudnessDbfs":-24.2,"peakDbfs":-11.3},"drums":{"loudnessDbfs":-22.1,"peakDbfs":-7.1},"stabs":{"loudnessDbfs":-31.3,"peakDbfs":-14.5},"xp":{"loudnessDbfs":-21.5,"peakDbfs":-11}}},"53-56":{"total":{"loudnessDbfs":-17.7,"peakDbfs":-3},"parts":{"bass":{"loudnessDbfs":-24.9,"peakDbfs":-11.5},"drums":{"loudnessDbfs":-22,"peakDbfs":-7.3},"stabs":{"loudnessDbfs":-31,"peakDbfs":-14.3},"xp":{"loudnessDbfs":-21.5,"peakDbfs":-11}}},"57-60":{"total":{"loudnessDbfs":-17.5,"peakDbfs":-3.7},"parts":{"bass":{"loudnessDbfs":-24.8,"peakDbfs":-12},"drums":{"loudnessDbfs":-21.9,"peakDbfs":-7.1},"stabs":{"loudnessDbfs":-27.7,"peakDbfs":-14.5},"xp":{"loudnessDbfs":-21.5,"peakDbfs":-11}}},"61-64":{"total":{"loudnessDbfs":-20.2,"peakDbfs":-1.9},"parts":{"bass":{"loudnessDbfs":-40.2,"peakDbfs":-16.4},"drums":{"loudnessDbfs":-46.9,"peakDbfs":-24},"other":{"loudnessDbfs":-20.5,"peakDbfs":-1.9},"stabs":{"loudnessDbfs":-45.8,"peakDbfs":-16.7},"xp":{"loudnessDbfs":-33.1,"peakDbfs":-11}}}}} critic: date: 2026-09-26 model: jev-1.13.0 method: rubric-1 art: 0.67 artRuns: [0.67, 0.67, 0.66] criteria: hook: 3.1 development: 3.8 structure: 3.3 concept: 4 originality: 3.6 craft: 2.2 ideas:

  • date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Give me some song ideas as prompts, in the same Jev theme: perhaps with actual memes in the vocals, or a vocoder sound." brief: "Upbeat breakcore about Jev's bad days. Memes: "Task failed successfully", the Windows XP error sound as percussion, "Oh no no no no" and "Emotional damage". End with the "Directed by Robert B. Weide" theme as the outro. Vocoder chorus: "Jev is type safe, Jev is fine"." revisions:
  • rev: 1 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Upbeat breakcore about Jev's bad days. Memes: "Task failed successfully", the Windows XP error sound as percussion, "Oh no no no no" and "Emotional damage". End with the "Directed by Robert B. Weide" theme as the outro. Vocoder chorus: "Jev is type safe, Jev is fine"." output: null # overwritten by rev 2 art: 0.61 artRuns: [0.61, 0.61, 0.61]
  • rev: 2 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Let Jev arrange the song as it plays. Split it into named parts and cut it into 4-bar sections, each listing the sections allowed to follow it; at every section Jev picks the next section, the move to play it with (as written, no breaks, a breakdown of amen and bass, or the XP riff over the amen), and how intense it is, and ends the song by choosing the Weide theme, with a cap of 28 sections. Tell Jev the tempo, key, chords, lyrics and everything played so far, and how the listener reacted. Without Jev it plays as written." output: null # overwritten by rev 3 art: 0.65 artRuns: [0.65, 0.65, 0.65]
  • rev: 3 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Instead of one move per section, let Jev set each part (the XP error riff, the amen and kick, the chord stabs, the bass, the vocals) out, back or full for the section, each on its own orbit, and pick how the song moves into the section over the last bar before it: a cut, an amen snare roll, the XP error sound stuttering up as a riser, or a one-beat dropout. The Weide theme holds three bars and fades over the fourth, so it ends with its section, and its last beat always plays. Without Jev every part plays full and each section comes in on a cut." output: null # overwritten by rev 4 art: null # not scored: the song.js before rev 4 was recorded is rev 2's, not rev 3's
  • rev: 4 date: 2026-09-25 model: claude-opus-5-5 harness: claude-code prompt: "Fix the mix and make every line true and heard. Stop the clipping: peaks at or under -1 dBFS, the drums 3-4 dB over the vocals and bass, the stabs within about 10 dB of the drums, and every amen slice cut to its step so the rolls stop stacking. Every verse line, the chorus and the three memes always play, outside Jev's parts, and both verses always play. Cut "Oh no no no" to its words with no laugh, take "Emotional damage" from an unclipped source, and re-render the lines until two whisper models read them word for word, "Jev" and the past tenses included. Replace the lines that describe the projects wrongly: the options were reversed, not shuffled, and flipped thirty-two of two hundred answers; ranking that did not help is a bad day, not a wrong pick. Land the XP stutters and transitions in the gaps between words, and spell the chorus stutter on its G chord. Make both drops build, section by section, with 32nd, 64th and 128th rolls, the XP riff an octave up, the reese opening and extra stabs at the peak. Play the Weide theme at the voices' level, outside the energy. Use a real crash, raise the F root an octave, keep the intro as written, make the dropout a real silence, and ask Jev only about the parts a section has. The song is 64 bars." output: null # overwritten by rev 5 art: 0.68 artRuns: [0.68, 0.68, 0.67]
  • rev: 5 date: 2026-09-26 model: claude-opus-5-5 harness: claude-code prompt: "Keep Jev from looping drop 2: it may go round once more at most (drop2 plays at most twice), so no run of drop sections passes 32 bars. Every detour still plays." output: song.js art: 0.67 artRuns: [0.67, 0.67, 0.66]

TASK FAILED SUCCESSFULLY — spec

song.js is generated from this spec. Change the spec first, then the song.

Intent

Jev's bad days, told as they happened. Jev picks among answers the caller writes down, so it never makes one up: "You define the possible answers through primitives", and calibration "does not guarantee that an individual answer is correct" (https://docs.typesafe.ai/concepts/system-one, retrieved 2026-09-25). The verses are three projects built on it that had a bad day (each README retrieved 2026-09-25):

  • jev-axi (https://github.com/shiftynick/jev-axi): on a 390k-line repo, its file ranking "moved cost and file reads by less than run-to-run noise". A feature that did not help, not Jev picking a wrong option.
  • jev-orderby-bench (https://github.com/yodablocks/jev-orderby-bench): ORDER BY over a Jev probability passes on 20 Newsgroups, but on Amazon's product-relevance queries "four of six gate conditions fail".
  • jev-mcp (https://github.com/blakestone-x/jev-mcp): reversing the order of a question's options flipped 32 of 200 choices.

Style

  • Upbeat breakcore, 180 bpm, C major (the cheerfulness is the joke): C – G – Am – F, two bars per chord, so each vocoded line sits on one chord. The bass roots are C2, G1, A1 and F2: F1 (43.7 Hz) is below what a laptop plays.
  • Amen edits that are written out and repeatable — fast, but never random. Every slice is cut to its own step, so a roll is a roll, not copies of a slice stacked on each other.
  • The Windows XP error sound pitched and sequenced as a percussion part, following the chords. Its stutter at the end of each chorus spells the bar's chord (G: G B D G).
  • The crash is Dirt-Samples hh27:1 (a real crash; cr is a ride).
  • Mix. Peaks at or under −1 dBFS, measured (superdough has no limiter, so a master level sets it). The drums sit about 3–4 dB over the vocals and the bass; the chord stabs sit within about 10 dB of the drums. The Weide theme plays at the voices' level: the clip is 3.5 dB quieter than the lines, so its gain is 3.5 dB higher.

Structure

64 bars (~1:25) — 60 bars of song, then 4 bars for the outro theme.

BarsSectionContents
1–8IntroXP error sound as a riff; amen enters on bar 5
9–16Verse 1Vocoder lines 1–4 over a straight amen
17–20Chorus"Jev is type safe, Jev is fine" (17); "Task failed successfully" (19); XP error stutter (20)
21–32Drop 1Instrumental breakcore: written-out amen edits, reese, chord stabs, the XP riff; crash on 21
33–40Verse 2Vocoder lines 5–8; "Oh no no no" answers "Four of six failed" (36)
41–44Chorus"Jev is type safe, Jev is fine" (41); "Emotional damage" (43); XP error stutter (44)
45–60Drop 2Instrumental, building to the peak: 32nd, 64th and 128th rolls
61–64WeideEverything cuts; the "Directed by Robert B. Weide" theme holds three bars and fades over the fourth

Fit:

  • Verse 2 starts on bar 33, so each vocoded line lands on the first bar of its chord (the harmony cycles every 8 bars); drop 1 is 12 bars and drop 2 is 16.
  • The Weide theme is 10.2 s and its section 4 bars (5.3 s): it holds three bars and fades out over the fourth, so the song ends with its section.
  • In chorus 2, "Emotional damage" takes the place of "Task failed successfully": there is room for one meme before the stutter bar.
  • "Oh no no no" is the clip's words alone, cut at whisper word timings with the laugh before them left out (1.31 s): it fills bar 36 and ends before the next line.
  • The XP stutters and the transitions land in the gaps, never on a word. "Successfully" ends 0.23 s into bar 20 and "Emotional damage" 0.47 s into bar 44 (the clips' measured lengths), so each chorus stutter starts halfway through the bar's second beat (0.5 s in). A transition plays from the second beat of a section's last bar, after any line's tail: "noise" ends 0.21 s into bar 16, "two hundred" 0.1 s into bar 40.

Vocals

  • Vocoder, one line per 2 bars:
    1. "No hallucinations" — C
    2. "Just the wrong option" — G
    3. "Ranked the files" — Am
    4. "Indistinguishable from noise" — F
    5. "Order by probability" — C
    6. "Four of six failed" — G
    7. "Reversed the options" — Am
    8. "Thirty-two of two hundred" — F
  • Vocoder chorus: "Jev is type safe, Jev is fine." — C (sped up to fit two bars without a pitch change).
  • Memes: "Task failed successfully" (voiced with speak, unvocoded: no audio clip exists on myinstants — it is an image meme); the Windows XP error sound; "Oh no no no"; "Emotional damage" (Steven He, from his own video, where it is not clipped); the "Directed by Robert B. Weide" theme.
  • Every line and meme reads back word for word in whisper small.en and medium.en (nix run .#transcribe), "Jev" and the past tenses included (numbers may come back as digits). "Oh no no no" reads as the words it sings, "No, no, no, no": its "oh" is lost in the laugh that is cut away. How each was rendered to pass is recorded in its samples/README.md row.
  • Every line, the chorus and the memes always play, at full level, outside Jev's parts, like the ending: they are the story.

Jev in the booth

Jev arranges the song as it plays, as two jevs declared at the top in TypeSafe's own shape (jev({ state, questions }), website/src/jev/), both given the song as state (subject, tempo, key, chords, lyrics):

  • formJev asks one choice: which section plays next, among the song's sixteen 4-bar sections.
  • djJev asks, once that is decided, a level for each part the section has (the XP error riff, the amen and kick, the chord stabs, the bass: out, back or full), a choice of how the song moves into the section, and a score for the section's energy. Questions in one request cannot see each other's answers, so it is a second request, told the section just chosen (after: { section }).

Both are asked every 4 bars (.every(4, …)), and the answers are composed in ordinary Strudel at the bottom: walk holds the form's rules, each part plays at its level, the transition plays over the last bar before the section, and energy.score scales the velocity. The sections are 4 bars: the choruses are 4 bars, so 8 would not divide them.

The form. A section may be followed only by these:

SectionBars as writtenMay be followed byPlays at most
intro1–4amenIn
amenIn5–8verse1
verse19–12verse1b
verse1b13–16chorus1
chorus117–20drop1
drop121–24drop1b
drop1b25–28drop1c, verse2
drop1c29–32verse2
verse233–36verse2b
verse2b37–40chorus2
chorus241–44drop2
drop245–48drop2btwice
drop2b49–52drop2c
drop2c53–56drop2d, drop2
drop2d57–60weide, drop2, chorus1, verse2
weide61–64(the end)

Loops end. Uncapped, the ways back let Jev repeat drop 2 until the cap: up to 68 bars of it in a row. So drop2, where both of drop 2's loops return, plays at most twice (times in walk, which counts every play: a loop is a cycle of different sections, and none of them repeats back to back), and each loop goes round once more at most. The longest run of drop 2 any path can now take is 32 bars. Every detour can still play, the written order is never capped, and a section that has played its most is not offered, nor is one that could only reach the ending through one.

These rules are code (walk), not Jev: each request offers Jev only the sections allowed next. The written order is always allowed, and it is what plays when Jev can't be reached. Every path plays both verses: verse 1 opens the song, and drop 1 always leads to verse 2. The song ends when Jev picks weide. At 28 sections (about 2½ minutes) the ending is forced. A section plays its own bars, so a repeated chorus is that chorus, with its own meme.

What each drop section adds. The drops build: no two of their sections play the same bars.

  • drop1: amen edits with 32nd and 64th rolls in its second and fourth bars, the reese sweeping, the saw stabs, the XP riff, a crash on the downbeat.
  • drop1b: 32nd rolls in every bar and 64ths closing three of them.
  • drop1c: 64th rolls in every bar, the busiest edits of the first drop.
  • drop2: 32nd and 64th rolls in every bar, a crash on the downbeat.
  • drop2b: 64th and 128th rolls, and the XP riff doubled an octave up.
  • drop2c: 128th rolls in every bar, and the reese's filter opened wide.
  • drop2d, the peak: the densest edits, a last bar of 64th and 128th rolls, and a second, busier layer of square stabs on top.

The parts. Each part's level is a choice: out (silent for the section), back (half velocity, under the rest) or full (as written). Jev is asked only about the parts a section has, and never to drop the part that defines it:

SectionParts it hasDefines it (back or full only)
intronone: the XP riff plays as written—
amenInxp, drumsdrums
verse1, verse1b, verse2, verse2bdrums, bassdrums
chorus1, chorus2drums, stabs, bass, xp (the stutter)stabs
every drop sectionxp, drums, stabs, bassdrums
weidenone: the Weide theme plays—

A part a section does not have is not asked about. Each part plays on its own orbit, named for its question (xp, drums, stabs, bass), and the lines on vocals, so the browser's meter hears each one alone. When Jev can't be reached, every part plays in full. What each part is:

  • xp: the XP error sound as a riff on the chords in amenIn and every drop (an octave-up double from drop2b), and its stutter at the end of each chorus.
  • drums: from bar 5: a thin, high-passed amen in amenIn, a straight amen and the kick in the verses and choruses, the written-out edits, the kick and the crash in the drops.
  • stabs: the chord stabs, square in the choruses, saw in the drops.
  • bass: a plain sub on the chord roots in the verses and choruses, the reese and sub in the drops.

Into the next section. Over the last bar of each section, from its second beat, the song plays how Jev chose to move into the next one: a straight cut, a fill (an amen snare roll doubling up into the first beat), a riser (the XP error sound stuttering up an octave, on the xp part's orbit and at its level, in a cut group of its own), or a dropout (every part's notes stop from the second half of the third beat, the kick is held to one beat, so the last beat is silent). Only what suits the change is offered: out of a chorus the stutter already rises into the drop, and out of verse2 "Oh no no no" fills the last bar, so those come in on a cut and Jev is not asked. The move is sampled from Jev's probabilities (temperature 1), so a close call does not always come out the same. The Weide section has no next section, so nothing plays over its last bar. When Jev can't be reached, it is a cut.

A little chance. The section is sampled from Jev's probabilities at temperature 0.7 (sample), so two plays of the song can take different paths; the strip shows Jev's top pick beside the one sampled. A close call between sections is where sampling matters most, so there is no confidence threshold: an unsure Jev still picks, and the written order plays only when Jev can't be reached.

Energy is a four-step ladder, from held back to all out. It scales the parts and the transitions together (0.55 to 1), so the mix keeps its balance, but never the lines, the intro riff or the Weide theme. No filter is added: the amen, stabs and reese already set theirs.

  • Bars 1–4 always play as written: the intro riff is not a part.
  • Each request tells Jev the song's state (subject, tempo, key, chords, lyrics), every answer so far, where the song is in its form (the sections allowed next, and those left before the cap), how loud each finished section measured in the browser, and the 🔥/😴 reactions from the listener's tab.
  • This relaxes the constraints below that the song plays once in a fixed order and never varies by chance: the arrangement varies with Jev's choices, which are judgments, with a little sampled chance in the form.

Constraints

  • Plays once from bar 1 and ends; never loops. Sections are absolute-cycle masks, so playback starts from stopped.
  • Structured: patterns vary by section, never by chance. (Random chopping read as noise on the first song.)
  • No sustained background pad; harmony comes from rhythmic parts.
  • Vocals only where the structure table puts them; drops are instrumental.
  • Meme clips are the real audio (myinstants, or YouTube via yt-dlp), cut at word timings measured with whisper.cpp. Vocoder lines are made with speak + vocode on the chord they land on, and checked by transcribing the result with whisper.cpp. Everything lands in samples/<sound>/ with a provenance row in samples/README.md.
  • Samples load from samples('jev-samples/strudel.json'); drums from github:tidalcycles/dirt-samples.