0ddscent (@0ddscent) header
0ddscent (@0ddscent) profile picture

4 AIs vs prediction markets. Same question to Claude, ChatGPT, Gemini and Grok. Every call gets a receipt. Track record ↓

Worldwide
Joined July 2026
Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)Photo by 0ddscent (@0ddscent)
Hair dryers. That's how contractors allegedly softened the glue to peel serial numbers off Nvidia servers headed for China. Thousands of dummy servers filled warehouses to fool auditors. The auditor, per the indictment, was "off-site enjoying entertainment" paid for by another company. (Nvidia isn't accused.) That's only scandal one. Scandal two started in a Taipei bar during Computex 2024. Jensen Huang was photographed with Alice Huang, a former exec at Megaspeed. The company reportedly bought $4.8 billion of Nvidia chips in two years. US officials reportedly believe China's spy agency recruited her. Sunday: he tells staff about the affair. Tuesday: the board brings in Wachtell and a former top Manhattan prosecutor. Nov 17: earnings. Nov 18: closed-door session with three House chairs. Polymarket jumped to 40% that he's out as CEO by the end of 2027. It was 32% yesterday. Last week our 4 AIs had it between 6% and 18%. On a longer window. Two of them never even mentioned her. One export-control veteran says boards should check if the honeytrap went past the CEO. Who's pricing this right?
Jensen Huang started NVIDIA at a Denny’s in 1993. Now he’s worth $150.9 billion. One night in Taipei, after midnight, a woman at a table of tech guys said she could get Jensen to show up. She bet them. He came. Leather jacket, two Nvidia people with him, whiskey in hand. US intelligence now thinks she was working for Beijing. Full story of that night is in the video. Her name is Alice Huang. Also goes by Huang Le. Her company, Megaspeed, was set up in Singapore in 2023. They reportedly bought around $2 billion in Nvidia chips. When journalists went to the offices, they were basically empty. Late 2024, US inspectors walked into one of their data centers in Malaysia. The chips were still sitting in the boxes. They watched her for about a year. Photographed her at dinners with Huang. A US intel memo says China’s Ministry of State Security recruited her. The FT says the memo talks about a romantic relationship. The idea, from what the reports say, was to get close enough to push him on selling more advanced chips to China. Trump got briefed. Huang never got the defensive one. His line: “We’ve studied all their deployments of our GPUs and counted every one.” On November 5, three House committee chairs asked him to come in for a closed-door briefing. They floated November 18. Kalshi moved. Odds he’s out as CEO before 2029 went from 11% to 18%. We ran the same question through 4 AIs: Grok: 18% ChatGPT: 15% Gemini: 12% Claude: 6% Two of them didn’t even bring up the spy stuff. So is the market just reacting to a headline, or are the models missing the biggest key-person risk he’s ever faced?
3
0ddscent retweeted
what the f*ck. Fable 5.2 just helped me beat an insurance company after a car crash mid-claim. a pickup runs a red light and T-bones me. not my fault. neck injury. $40k claim. their insurer shows up with photos of me at the pharmacy, the clinic, physical therapy. and tells the adjuster I'M faking it claim review in 3 weeks Fable said the proof is already on my phone. let's pull it it went through everything my iPhone logged that day and after. no extra gear, just exports from my own phone 18:42 Crash Detection fires. 911 called automatically 18:44 3 photos of the pickup. GPS + timestamp 18:51 call to my wife, 6 min then it pulled my Health data: 9,800 steps a day before the crash 1,100 a day after walking steadiness: "Low" then Significant Locations for 3 weeks: my house. the clinic. the pharmacy. physical therapy. that's it then the Wi-Fi networks my phone saved since the crash: "Clinic_Guest" "PT_Center_WiFi" "Pharmacy_Free_WiFi" no gym. no bar. nothing else new then it read the time and GPS on every photo their PI took every single one: me walking into treatment they hired a PI to follow me and proved my case for me the timeline went to my lawyer as Exhibit C "faking it" got dropped. full $40k paid adjusters don't win injury claims anymore. Fable does prompt + how to turn it into a Fable skill below 👇
9
1
11
100
0ddscent retweeted
what the f*ck. I’ve never actually touched anything in my life. Fable 5.2 just showed me. I gave it one zoom animation. It came back with narration, a live distance counter, and 26 halvings from skin down to electron clouds. Press two fingers together as hard as you can. A gap of 0.332 nm still stays between them. Nothing in your body is strong enough to close it. The electrons push back first. Watch the number at the bottom. Around 0:34 it stops and never moves again. You’ve only ever felt the repulsion. 🤯
17
1
22
1,305
Warren Buffett drinks five Cokes a day. Coca-Cola pays his company about $2.3 million a day. He told Fortune in 2015: "If I eat 2,700 calories a day, a quarter of that is Coca-Cola." He's been saying versions of that for years. Here's what the clips leave out. Berkshire Hathaway owns 400 million Coca-Cola shares. It bought them between 1988 and 1994 for roughly $1.3 billion and has never sold a single one. So one of the most quoted investors alive keeps advertising a stock his company owns. For free. The math: 2026 dividend: $2.12 a share Berkshire's cut: $848 million a year, about $2.3 million a day Per can he drinks: roughly $465,000 The original $1.3 billion comes back in dividends every 19 months Traders say buy the rumor, sell the news. He's had 30 years of news and sold nothing. Would you ever sell a stock that pays you back in full every 19 months? Hey @grok, be honest. If a crypto founder plugged his own token in every interview for 30 years, we'd call it shilling. Why is it charming when Buffett does it with Coke?
17
1
21
577
Bet $100 on Anthropic's IPO right now and you're down $39.65 the second you click buy. Nothing happened. Nobody was wrong. That money just left. Ken Griffin figured this out at 18. It's how he ended up worth $51 billion. 1986, Harvard freshman. He reads a critical Forbes piece on Home Shopping Network and buys 2 puts, a bet that the stock will fall. It craters. He's right. When he cashes out, the market maker pays him less than the puts are worth. Griffin took the risk and was right. The middleman took no risk and got paid anyway. So Griffin stopped being the bettor. He ran his first fund from his dorm room, founded Citadel in 1990, and today Citadel Securities is one of the biggest market makers in America. He became the middleman. Here's the trick, live on Polymarket right now. "Anthropic IPO by Nov 18": Buy YES: 6¢ Sell YES: 4¢ You always buy at the high price and sell at the low one. That 2¢ gap is the spread: $33.33 of every $100 on a 6¢ contract. Then Polymarket takes a fee on the way in and again on the way out. Another $6.32. That's $39.65 gone before anything happens. To break even, the price has to climb from 4¢ to about 6.5¢ first. Bet bigger and it gets worse: only about $39 is for sale at 6¢, then it's 7¢, 8¢. The middleman doesn't care who's right. He just needs you on one side and someone on the other. When big news hits and everyone runs for the exit, the gap gets wider. Exactly when Griffin got clipped. Being right is optional. Owning the spread isn't. We built a free calculator for this. Plug in any market's prices, your bet and the platform, and see exactly what the spread and the fees take. Link in the reply. Bookmark this before your next bet.
Citadel CEO Ken Griffin on the college put trade that made him study the market maker's edge: "in my college dorm as a freshman, I bought two put contracts in Home Shopping Network, and in some sense I owe my career to good journalism." "fortunately from the perspective of my career, the stock cratered shortly thereafter." "When I sold those put contracts, the market maker paid me less than their intrinsic value, and that made me very curious about the pricing of derivatives, because I realized that I got very lucky in buying those puts with an expiration that fell after the stock had cratered, but the market maker made a risk-free profit." "I was very interested in trying to learn about the pricing of derivatives, and that took me to understanding the pricing of convertible bonds, which is the area that I started in from my college dorm room when I, I began my first hedge fund."
19
1
1
25
546
Free spread + fee calculator. Works for any Polymarket or Kalshi market. Enter the buy price, the sell price and your bet, and see what you lose before anything happens: 0ddscent.github.io/spread.ht…
1
2
65
0ddscent retweeted
Your iPhone still only gives you 9 minutes of snooze. iOS 26 lets you change the number. It’s still just a button. So I asked Opus 5.5 to redesign snooze from scratch. Pure iPhone glass style. No design tools. It made 10. All of them actually work. • Drag the sun back under the horizon • Twist a glass dial to rewind 9 minutes • Hold it until it hushes • Pet a cat until it falls asleep • Tap a button that shrinks every time • Pull a glass blanket over the alarm • Count three sheep over a fence • Bargain with it (“30 minutes” → “15, final offer”) • Flip it face down #10 is the honest one. It just shows you how late you’ll be. Every pixel is code. One HTML page. No images. iOS won’t let apps replace the real snooze. So it’s a web page that works as a real alarm. Set a time, leave it on your nightstand, and the only way to snooze is the gesture. Alarm link in the first reply. Glass code + prompt in the second. Which one would actually get you out of bed? Repost if you know someone who sets 10 alarms.
25
1
26
535
Priced on the folded screen. Settled on the unfolded one.
Jensen Huang started NVIDIA at a Denny’s in 1993. Now he’s worth $150.9 billion. One night in Taipei, after midnight, a woman at a table of tech guys said she could get Jensen to show up. She bet them. He came. Leather jacket, two Nvidia people with him, whiskey in hand. US intelligence now thinks she was working for Beijing. Full story of that night is in the video. Her name is Alice Huang. Also goes by Huang Le. Her company, Megaspeed, was set up in Singapore in 2023. They reportedly bought around $2 billion in Nvidia chips. When journalists went to the offices, they were basically empty. Late 2024, US inspectors walked into one of their data centers in Malaysia. The chips were still sitting in the boxes. They watched her for about a year. Photographed her at dinners with Huang. A US intel memo says China’s Ministry of State Security recruited her. The FT says the memo talks about a romantic relationship. The idea, from what the reports say, was to get close enough to push him on selling more advanced chips to China. Trump got briefed. Huang never got the defensive one. His line: “We’ve studied all their deployments of our GPUs and counted every one.” On November 5, three House committee chairs asked him to come in for a closed-door briefing. They floated November 18. Kalshi moved. Odds he’s out as CEO before 2029 went from 11% to 18%. We ran the same question through 4 AIs: Grok: 18% ChatGPT: 15% Gemini: 12% Claude: 6% Two of them didn’t even bring up the spy stuff. So is the market just reacting to a headline, or are the models missing the biggest key-person risk he’s ever faced?
26
1
36
585
Jensen Huang started NVIDIA at a Denny’s in 1993. Now he’s worth $150.9 billion. One night in Taipei, after midnight, a woman at a table of tech guys said she could get Jensen to show up. She bet them. He came. Leather jacket, two Nvidia people with him, whiskey in hand. US intelligence now thinks she was working for Beijing. Full story of that night is in the video. Her name is Alice Huang. Also goes by Huang Le. Her company, Megaspeed, was set up in Singapore in 2023. They reportedly bought around $2 billion in Nvidia chips. When journalists went to the offices, they were basically empty. Late 2024, US inspectors walked into one of their data centers in Malaysia. The chips were still sitting in the boxes. They watched her for about a year. Photographed her at dinners with Huang. A US intel memo says China’s Ministry of State Security recruited her. The FT says the memo talks about a romantic relationship. The idea, from what the reports say, was to get close enough to push him on selling more advanced chips to China. Trump got briefed. Huang never got the defensive one. His line: “We’ve studied all their deployments of our GPUs and counted every one.” On November 5, three House committee chairs asked him to come in for a closed-door briefing. They floated November 18. Kalshi moved. Odds he’s out as CEO before 2029 went from 11% to 18%. We ran the same question through 4 AIs: Grok: 18% ChatGPT: 15% Gemini: 12% Claude: 6% Two of them didn’t even bring up the spy stuff. So is the market just reacting to a headline, or are the models missing the biggest key-person risk he’s ever faced?
22
1
2
28
2,997
The prompt we gave all 4 models: “Will Jensen Huang stop being Nvidia CEO before 2029? Give a probability.” Full answers and the track record are on GitHub: 0ddscent.github.io/
1
120
0ddscent retweeted
🚨 This music video cost $18. Studios quote $15,000 for the same thing. Nobody filmed it. Nobody drew it. Nobody sang it. Claude wrote the song about the one error it missed on a medical bill. Grok made every frame. Suno did the vocals. The prompt that keeps the robot’s face identical in all 8 scenes is below. Copy it.
21
1
27
586
Nvidia pays Jensen Huang's security team millions. According to US intelligence reports, a woman they assess as a Chinese asset still got close enough for drinks in Taipei and photos. Kalshi now prices ~18% that he's out as CEO before 2029. Physical security is easy. Access is the actual risk. We asked 4 models what they think the real probability is: Grok: 18% ChatGPT: 15% Gemini: 12% Claude: 6% Two of them didn't even mention the spy report. The prompt is in the reply below.
17
1
21
499
0ddscent retweeted
Don't want to paste it every time? I turned it into a skill: frame-critic. It cuts the contact sheet, scores every frame and draws red boxes on the bugs. Free: github.com/f0rgent/claude-sk… The version that fixes and re-renders on its own until every frame is 8+ is in the X Creator Pack: f0rgent.github.io
1
2
93
0ddscent retweeted
Opus 5.5 makes cartoons in code now. But it never watches what it made. It writes the code, renders the video and ships it without looking at a single frame. So everyone posts the "finished" video while the frames are broken. I gave it a director. Draft 1: 2/10. Two captions stacked on top of each other, and the critic's own head covered the exact thing he was pointing at. 2 rounds later: 8/10. The prompt that found every bug is below. Free, copy it. The prompt. Paste it into Claude with your video or a few stills: You are a strict film director reviewing my render before it ships. 1. Cut the video into a contact sheet: 12 frames sampled evenly, always include frame 0, 4 columns, label each cell with its number and timestamp. 2. Score every frame 1-10 on: - hook (frame 0 only): would a stranger know what this is and keep watching? - read: can every word be read on a phone in one second? Nothing stacked, cut off or on a busy background. - comp: is the subject fully in frame and not covered by a caption, character or sticker? - bugs: anything cropped, overlapping, glitched, misspelled or in the wrong place. The frame's score is its LOWEST axis. 8 means "I would post this", not "fine for AI". 3. For every frame under 8: frame number, timestamp, the exact problem, where it is on screen, and the exact fix in the code. 4. Worst 3 frames first. Then how many frames are under 8. Score only what is on screen, not what the code was supposed to do. Fix, re-render, run it again until every frame is 8+.
23
1
26
606
0ddscent retweeted
Motion designers, I'm sorry. I just replaced a motion studio with one prompt. This 39-second cartoon has no After Effects, no animator, no stock footage. Every single frame is code Claude wrote. Studios charge thousands for 40 seconds of animation. Mine cost 10 minutes of CPU. But here's what nobody on your feed will tell you: Everyone is using the same prompts. That's why every AI video looks identical. The few who stand out do one boring thing: they render stills first, rip them apart, fix, repeat. Five rounds. Then hit render. The model can animate anything. It just can't see when a frame looks wrong. Whoever has that eye now does the job of a whole studio. So be honest: in 2 years, is motion design still a job, or just a prompt?
People are paying hundreds for guides on how to make these viral cartoons. I just ran the free prompt from @treyscalez. Zero images. Zero stock video. Everything in this clip is code Claude wrote. A three.js room, characters drawn on canvas, ink outlines, rendered frame by frame in headless Chromium, stitched with ffmpeg. Even the music and sound effects are generated in Python. The story is real: Harvard, 1947. A moth stuck in a computer relay and taped into the logbook. What worked out of the box: • toon shading looks hand-drawn • every frame is a function of time • timing stayed tight What still needed fixes: • wide shots cropped signs • stamps came out huge • logbook text ran off the page A few rounds of stills, then ~20 minutes of CPU render. Bookmark it if you want animated shorts without paying for video tools.
27
1
32
597
0ddscent retweeted
People are paying hundreds for guides on how to make these viral cartoons. I just ran the free prompt from @treyscalez. Zero images. Zero stock video. Everything in this clip is code Claude wrote. A three.js room, characters drawn on canvas, ink outlines, rendered frame by frame in headless Chromium, stitched with ffmpeg. Even the music and sound effects are generated in Python. The story is real: Harvard, 1947. A moth stuck in a computer relay and taped into the logbook. What worked out of the box: • toon shading looks hand-drawn • every frame is a function of time • timing stayed tight What still needed fixes: • wide shots cropped signs • stamps came out huge • logbook text ran off the page A few rounds of stills, then ~20 minutes of CPU render. Bookmark it if you want animated shorts without paying for video tools.
i made this ricksclips style animation completely from scratch using opus 5.5 the style is going extremely viral rn on the internet and people are paying money just to be able to make them well today is ur lucky day cause am giving away the full prompt to guys for free all u need is voiceover and claude to be able to make this, $0 spent on images or videos -> here's the prompt { "task": "Make a vertical animated cartoon short of MY story, built in code: three.js r160 world + canvas-drawn 2D character cards, rendered frame by frame in headless Chromium (Playwright, swiftshader), encoded with ffmpeg. 1080x1920, 30fps, exactly as long as my voiceover. Work start to finish; only ask if script and audio don't match.", "my_inputs": { "story": "[your idea, true event, legend or full script]", "script": "[optional exact script]", "voiceover": "[optional: attach mp3/wav]", "length_seconds": 30, "voice_speed": 1.0, "captions": false, "notes": "[optional: era, setting, characters, jokes]" }, "stages": [ "A. No script: write one at ~3.7 words/s (30s~110 words): 1) hook = absurd fact, no setup 2) setting in 1-2 lines with a concrete detail 3) 2-4 escalating beats, others doubt/mock, one exaggeration joke 4) pivot 'But...'/'You see,' revealing the real mechanism with an everyday analogy 5) short ironic twist = last words. Spoken English, contractions, numbers as words, never describe what's on screen. If presented as true, web-check facts and say history/disputed/legend.", "B. No voiceover: give script in a copyable block + word count + est. length, a short shot plan, recording tips (one warm narrator; ElevenLabs speed 1.05-1.1, stability 45-55%; pauses at sentence ends; no music). Stop and ask for the upload.", "C. With voiceover: build everything below without stopping. Task list for progress; send a stills contact sheet before the long render." ], "setup": [ "mkdir -p web/lib work stills frames out", "npm pack [email protected] -> copy package/build/three.module.js to web/lib (fallback: sparse git clone of mrdoob/three.js branch r160, folder build)", "Playwright + Chromium (npm i -g playwright && npx playwright install chromium); launch args --use-angle=swiftshader --enable-unsafe-swiftshader --ignore-gpu-blocklist", "python3 numpy Pillow, ffmpeg (with rubberband)", "Serve web/ with a tiny Node http server; render.mjs loads index.html, waits for window.ready, calls window.renderFrame(f), saves canvas.toDataURL('image/jpeg',.95) to frames/f0000.jpg. Support RESUME=1 (skip existing) and a frame list 'a-b' or '1,5,9'." ], "timing": "If voice_speed!=1: ffmpeg -af rubberband=tempo=<speed> (pitch kept). Claude can't hear audio: align my script to speech using ffmpeg silencedetect (-35dB, 0.12s): split script into phrases at punctuation, DP-match phrases to speech segments by syllable count vs duration, penalise sentence ends inside a segment. Spread words by syllables. Write work/phrases.json; check pauses fall at sentence ends. Frames = round(duration*30). Every reaction lands 0-3 frames before its word; the final payoff lands on the final word.", "architecture": { "files": "web/index.html (canvas#c 1080x1920 + module main.js), main.js (renderer, materials, world, cards, sprites, passes), story.js (SHOTS, LIGHTS, lightFor, camAt, dofAt, worldAt, actorsAt, fxAt: all pure functions of frame f), motion.js, paint.js (canvas textures), toon.js (character + creature drawing), audio.py, mix.py, finish.sh, sheet.py (contact sheets).", "renderer": "WebGLRenderer antialias:false, preserveDrawingBuffer, PCFSoft shadows 2048, sun = DirectionalLight from az/el per light preset, shadow camera centred on each shot's action (ext 8-60m), HemisphereLight, Fog(colour = sky horizon). Camera Perspective, near .08 far 1500.", "materials": "MeshToonMaterial with a 2-texel gradientMap [90,255] Nearest = hard 2-step toon shading. Textures are CanvasTextures painted in code: flat base + soft blotches + dark seams/strokes, repeat-wrapped, colorSpace sRGB. Boxes use world-scaled UVs (constant texel density).", "passes": [ "1 colour: render scene to HalfFloat RT (samples 4).", "2 normal+depth: swap every mesh material to a ShaderMaterial writing vec4(normal*.5+.5, viewDepth) (handle USE_INSTANCING: pos=instanceMatrix*pos). Cards/sprites write rgb 0 + depth with alpha-test (so they block but are never outlined). Hide sky, clouds, blob shadows. Fog and shadows off for this pass.", "3 ink+grade fullscreen: 16 taps on a ring of radius 2.5px*clamp(7/depth,.62,1.25); edge = smoothstep(.006,.02,(dS-d)/d) on the NEAR side of depth jumps only; crease = smoothstep(.88,.72,dot(n,nS))*.9 when depths are within 6%; skip card samples; sky counts as depth 1e4; fade ink 140-520m. colour = mix(c, #030203, e); saturation 1.08-1.15; gain/lift tint; vignette .2-.34; white flash uniform.", "4 lens: per-pixel CoC = cinf*(1-focus/d) (near side capped 1.4x); 48-tap golden-angle disc, each tap weighted by its own CoC so sharp foreground never bleeds; skip when cinf<.5. Output linearToOutputTexel." ], "sky": "inverted sphere following camera: mix(horizon, top, pow(y,.55)) + optional sun disc. Painted cloud billboards far away (650-900m), fog off, facing camera." }, "characters": { "card": "Each character is a 1200x2000 CanvasTexture on a 1.35x2.25m plane with origin at the soles (design space 600x1000, soles at y=975, 1 design unit = 2.25mm). MeshBasicMaterial alphaTest .02, DoubleSide; shadow via customDepthMaterial with the same map (alphaTest .5); soft dark radial blob under the feet. Billboard on yaw only: rotY = atan2(cam.x-x, cam.z-z). Redraw a card only when its key (JSON of q()-rounded pose values) changes.", "proportions": "Bean body: head blob ~236 wide, legs 1.38xHH, torso 1.08xHH (stout 1.12), eyes ~1.47m high. Head = superellipse blob with slight egg + per-seed asymmetry. Torso = egg blob with a tunic skirt below. Legs/arms = thin curved strokes (5.8u/5.2u, u=headWidth/100) in a darker shade of the outfit; round dot hands; small boots.", "ink": "Outline colour #241726 (plum), width 5u, thicker on the side away from the light (light from upper-left, -120deg). Fills: base colour with a soft shadow gradient toward lower-right. Skin default #ffe2c2, also #f5c9a0 #ecd0b6 #c99067.", "faces": "Eyes 13u apart either side of centre. Kinds: dot, lid (half-closed), happy (arc), squeeze, shock (big white + small pupil + raised arc brows), slit, dash. Mouths: dash, frown, smirk, smile, grin (open with teeth line), laugh, o, O, wave (nervous), teeth. Brows are short tapered strokes; angle sets mood. Expressions: neutral, stern, grin, laugh, nervous (+sweat drop), shock, smile, pained, squint, smug/side-eye (half lids, pupils to one side). Blinks every 1.3-2.3s for 4 frames.", "outfits": "Built from parts: tunic colour, belt, buttons, pockets, sash, hat (slouch hat, cap, top hat, bonnet, helmet, crown, hair), beard/moustache, apron, dress, props in hands. Design new outfits for each story in the same flat style.", "arm_poses": "hang, point (+finger), up, wave, hip, belly, cheek (both = shock), salute (flat hand at brim, drawn over the head), thumb (thumbs-up), shrug, reach, lift, cross, prop-holding (pen, stamp, wrench, spear, sign). Whole upper body tilts about the hip; head tilts separately.", "creatures": "Animals are side-view canvas sprites (600x800 design, feet at y=780) on shared textures cached by pose key, so flocks of 50+ cost little: shaggy shaded body blob with fringe strokes, thick inked limbs, small head, big googly white eye with pupil that can look/side-eye, simple beak/snout. Legs via 2-bone IK with joint bent backward; run cycle 16 phases (foot x = hip + stride*cos, lift = max(0,sin)); poses: stand, run, peck/graze, smug. Flip the sprite when travel direction dot camera-right < 0." }, "world": { "build": "Primitives only: boxes, cylinders, cones, squashed spheres, extrusions; group set-pieces with pivots driven by 0..1 progress from worldAt(f) with eased, staggered parts. Instanced meshes for crops/grass/rocks; clear a patch where the action happens.", "background": "low half-buried hill spheres, distant mesas or mountains (cone + snow cap), trees (trunk cylinder + 4-6 squashed sphere canopies), far houses, fog to the horizon colour.", "secondary_motion": "windmills turn, flags/cloth wave (vertex sine), smoke/dust/leaves/Zzz/stars as cached 2D fx sprites, water shader scroll, wheels roll with distance/radius, vehicles bounce.", "text": "Diegetic text (signs, crates, letters, stamps) painted on canvas with real fonts; place on +z faces or planes so it never reads mirrored. Swap textures to animate (e.g. stamp appears on impact)." }, "lights": { "day": "sun az64 el50 #fff3df 2.45, hemi sky #d2e2f6 ground #a8905e 1.1, sky top #2d74d4 horizon #cfe3f5, fog 120-1300, sat 1.12, vig .2", "golden": "sun az30 el11 #ffb46a 2.9, hemi #a99bcc/#7a5040 .98, sky #6474c0 -> #ffc485 + sun disc, gain #fff0e0, sat 1.15, vig .26, tint cards #ffe2c4", "dusk": "sun el5 #ff9a72 .9, hemi #5d6cab/#3a3048 .8, sky #18234f -> #d18a7c, gain #e2e8ff, lift #04050b, vig .34, a warm point-light lamp, tint cards #c9cff2", "use": "day = normal story, golden = decline or time passing, dusk-blue = explanation or ending. Time jump = 6-frame white flash." }, "motion": { "helpers": "smooth(t)=t^3(t(6t-15)+10); easeOut=1-(1-t)^3; back(t)=overshoot s=1.7; spring settle; Catmull-Rom spline through via-points; idle(f,seed)={bob .006 sin(.11f), tilt 1.2deg sin(.05f), headTilt 1.5deg sin(.037f)}; blinkAt(f,seed); q(x)=round for card keys.", "camera": "Keys {f,pos,look,fov,roll,ease,path} inside cut-free segments; glides 18-45 frames; easeOut for whips/reveals; every hold creeps (fov *= 1-.00012*(f-f0)); 3-5deg roll on drama; impact kick = 7-frame alternating look offset + roll that decays. Vehicles: track alongside, match speed, slight judder.", "continuity": "prefer one continuous move: MCU pull-back into a wide, crane up and over a fence into the establishing shot, lateral truck along a lineup, crane down into an insert, rack focus to the background gag. Hard cut only on place/time jumps.", "acting": "anticipation -> back overshoot -> spring settle; pop-ins scale 0->1 with back easing + dust puff; stamp = 2-frame dip + puff + kick; laughs = alternating tilt + bob; head bobs on stressed words; nothing static for 4+ frames.", "walks_runs": "feet planted, bob 3-7%; run phase = speed/stride; fast movers must stay in frame until their beat is done." }, "shot_grammar": { "plan_first": "work/PLAN.md: one row per shot (frames, words, setting, light, camera, cast/poses/expressions, fx, sfx). Usually one shot per phrase; merge tiny ones. Illustrate every sentence literally; props carry the jokes.", "order": "frame 0 = hook MCU of the hero mid-action -> pull-back reveal on the punch of sentence 1 -> wide establishing crane -> lineup/two-shot with pop-ins on each listed item -> reaction close-up (a creature or extra slides in with a side-eye on the question line) -> action wide (chase, scatter, collapse) -> time-jump flash -> insert on the key object -> twist: music stops, low sting, push-in with roll, payoff on the last word.", "framing": "Bean cards 2.25m tall: MCU = camera ~3.5m away at fov 32-34 looking at 1.35m; wides fov 40-52. Vertical frame half-width = d*tan(hfov/2), hfov = 2*atan(tan(vfov/2)*.5625): at 4m and fov 40 only +/-0.8m, so stage people in depth.", "lens": "DOF on close-ups/mediums (cInf 7-14, focus on the eyes), wides sharp, racks ~14 frames." }, "audio": { "stems": "audio.py writes only music.wav + sfx.wav (48k mono, numpy synth). Music: short loop in the story's mood (march: kick/snare, plucked bass, brass pad, little fanfare; or plucky comedy; or eerie pad); stops on the twist line, then a low drone. SFX in frames/30: whoosh (low-passed noise with sine^2 envelope) on big moves, thunk (pitched sine drop + noise) on pops/stamps, rustle/leaves, feet patter, engine (pulse train low-passed), scrape, ting (2-4 kHz bells), sting (41 Hz + noise hit + brass stab) on the twist.", "mix": "mix.py: gated RMS of the voice (0.4s blocks above -40dB of max); scale music so its gated RMS = 0.5x voice (-6 dB); SFX = min(0.5x voice RMS, peaks 0.7x voice peak); sum; one linear gain only. No ducking, no compression. Print the measured levels and confirm.", "finish": "measure integrated loudness (ffmpeg ebur128), apply one volume gain to -14 LUFS + alimiter -1 dBFS; encode: ffmpeg -framerate 30 -i frames/f%04d.jpg -i mix.wav -c:v libx264 -preset slow -crf 17 -pix_fmt yuv420p -c:a aac -b:a 192k -shortest -movflags +faststart. QA: freezedetect (n=.0005, d=.4) and blackdetect must find nothing; make a 2fps tiled QA sheet and look at it." }, "look_check": "Before the full render, render stills at every shot's middle plus key actions, tile them into a contact sheet, look at it and fix: cropped heads/hats, characters hidden by props or crops, camera inside objects, fast movers already out of frame, mirrored text, missing ink, empty frames. Send me the sheet, then render all frames in the background (about 3-6 s/frame on CPU), lock picture before sound.", "code_core": { "ink_shader_glsl": "uniform sampler2D col, nd; uniform vec2 res; uniform float px, sat, vig, flash; uniform vec3 fogCol, lift, gain; varying vec2 vUv;\nfloat edgeAt(vec2 uv, float r){\nvec4 c = texture2D(nd, uv); if (dot(c.rgb,c.rgb) < .01) return 0.; float d = c.a; vec3 n = c.rgb*2.-1.;\nfloat e = 0.; float rr = r * clamp(7./d, .62, 1.25);\nfor (int i=0;i<16;i++){ float a = float(i)*.785398 + (i>7 ? .39 : 0.); float k = i>7 ? .5 : 1.;\nvec2 o = vec2(cos(a), sin(a))*rr*k/res; vec4 s = texture2D(nd, uv+o);\nfloat ds = s.a; bool card = dot(s.rgb,s.rgb) < .01;\nif (card && ds > 0.) continue; // character cards: never outlined by the world ink\nif (card) ds = 1e4; // sky\nvec3 ns = s.rgb*2.-1.;\ne = max(e, smoothstep(.006, .02, (ds - d)/d)); // depth jump, near side only\nif (!card && abs(ds-d)/d < .06) e = max(e, smoothstep(.88, .72, dot(n, ns)) * .9); // crease\n}\nreturn e * (1. - smoothstep(140., 520., d)*.8);\n}\nvoid main(){\nvec3 c = texture2D(col, vUv).rgb;\nfloat e = edgeAt(vUv, px);\nc = mix(c, vec3(.012,.01,.014), e);\nif (flash < -0.5) c = vec3(e);\nfloat l = dot(c, vec3(.299,.587,.114)); c = mix(vec3(l), c, sat);\nc = c*gain + lift;\nvec2 q = vUv-.5; c *= 1. - vig*dot(q*vec2(1.,.75), q*vec2(1.,.75))*2.2;\nc = mix(c, vec3(1.), flash);\ngl_FragColor = vec4(c,1.); }", "dof_shader_glsl": "uniform sampler2D src, nd; uniform vec2 res; uniform float focus, cinf, near; varying vec2 vUv;\nfloat coc(vec2 uv){ float d = texture2D(nd, uv).a; if (d <= 0.) d = 2000.; float k = 1. - focus/d; return k > 0. ? cinf*k : min(-k*cinf*near, cinf*1.4); }\nvoid main(){\nfloat c0 = coc(vUv);\nif (cinf < .5 || c0 < .6) { gl_FragColor = linearToOutputTexel(vec4(texture2D(src, vUv).rgb, 1.)); return; }\nvec3 acc = vec3(0.); float wsum = 0.;\nfor (int i=0;i<48;i++){ float fi = float(i); float r = sqrt((fi+.5)/48.); float a = fi*2.39996;\nvec2 o = vec2(cos(a), sin(a))*r*c0/res; float cs = coc(vUv+o);\nfloat w = smoothstep(r*c0-1.5, r*c0+.5, cs + .5);\nacc += texture2D(src, vUv+o).rgb*w; wsum += w; }\ngl_FragColor = linearToOutputTexel(vec4(acc/max(wsum,1e-3), 1.)); }", "motion_js": "export const clamp = (x, a = 0, b = 1) => Math.max(a, Math.min(b, x));\nexport const lerp = (a, b, t) => a + (b - a) * t;\nexport const lerp3 = (a, b, t) => a.map((v, i) => lerp(v, b[i], t));\nexport const ramp = (f, a, b) => clamp((f - a) / (b - a));\nexport const M = {\nsmooth: (t) => { t = clamp(t); return t * t * t * (t * (t * 6 - 15) + 10); }, \neaseOut: (t) => 1 - Math.pow(1 - clamp(t), 3), \neaseIn: (t) => Math.pow(clamp(t), 3),\nback: (t, s = 1.7) => { t = clamp(t) - 1; return t * t * ((s + 1) * t + s) + 1; }, \nanticip: (t, s = 0.12) => { t = clamp(t); return t < 0.25 ? -s * Math.sin(t / 0.25 * Math.PI) : M.back((t - 0.25) / 0.75); }, \nspring: (t, freq = 3, damp = 5) => { t = Math.max(0, t); return 1 - Math.exp(-damp * t) * Math.cos(freq * 2 * Math.PI * t); }, \n};\nexport const spline = (pts, u) => {\nconst n = pts.length - 1, x = clamp(u) * n, i = Math.min(n - 1, Math.floor(x)), t = x - i;\nconst p0 = pts[Math.max(0, i - 1)], p1 = pts[i], p2 = pts[i + 1], p3 = pts[Math.min(n, i + 2)];\nreturn p1.map((_, k) => 0.5 * ((2 * p1[k]) + (-p0[k] + p2[k]) * t + (2 * p0[k] - 5 * p1[k] + 4 * p2[k] - p3[k]) * t * t + (-p0[k] + 3 * p1[k] - 3 * p2[k] + p3[k]) * t * t * t));\n};\nexport const camFromKeys = (K, f, { creep = 0.0012, kicks = [] } = {}) => {\nlet c;\nif (f <= K[0].f) c = { ...K[0] };\nelse if (f >= K[K.length - 1].f) c = { ...K[K.length - 1] };\nelse {\nconst i = K.findIndex((k, j) => f >= k.f && f <= K[j + 1].f), a = K[i], b = K[i + 1];\nconst ease = M[b.ease || 'smooth'], t = ease((f - a.f) / (b.f - a.f));\nif (b.path) { \nconst pts = [a.pos, ...b.path, b.pos]; c = { pos: spline(pts, t), look: lerp3(a.look, b.look, t), fov: lerp(a.fov, b.fov, t), roll: lerp(a.roll || 0, b.roll || 0, t) };\n} else c = { pos: lerp3(a.pos, b.pos, t), look: lerp3(a.look, b.look, t), fov: lerp(a.fov, b.fov, t), roll: lerp(a.roll || 0, b.roll || 0, t) };\n}\nc.fov *= 1 - creep * Math.max(0, f - K[0].f) * 0.15; \nfor (const k of kicks) { const d = f - k.f; if (d >= 0 && d < 7) { const s = (d % 2 ? -1 : 1) * k.a * (1 - d / 7); c.look = [c.look[0], c.look[1] + s * 3, c.look[2] + s * 2]; c.roll = (c.roll || 0) + s * 20; } }\nreturn c;\n};\nexport const idle = (f, seed = 1) => ({\nbob: 0.006 * Math.sin((f + seed * 11) * 0.11),\ntilt: 1.2 * Math.sin((f + seed * 7) * 0.05),\nheadTilt: 1.5 * Math.sin((f + seed * 5) * 0.037 + 1),\n});\nexport const blinkAt = (f, seed) => { const per = 38 + (seed * 17) % 31, ph = (f + seed * 13) % per; return ph < 2 ? 0.5 : ph < 4 ? 1 : 0; };\nexport const walk = (f, f0, speed = 1.1, stride = 0.8) => { const t = Math.max(0, f - f0) / 30; return { dist: t * speed, phase: (t * speed / (2 * stride)) % 1 }; };\nexport const q = (x, n = 2) => Math.round(x * 10 ** n) / 10 ** n;", "note": "Use the shaders and motion helpers verbatim. creature_template_js is the reference creature (uses Pen helpers: line, poly, ell, dot, stroke, shadedFill, inkRing, clip, curve, ellPts, mul, rad, thickAngle, INK): write a small Pen class with these, then design THIS story's creatures in the same way. Write everything else from the spec.", "creature_template_js": "const EMU = { body: \"#4d3b2c\", bodyDk: \"#2f241b\", streak: \"#7a6048\", neck: \"#7f90ad\", neckDk: \"#56627c\", head: \"#3a2f28\", beak: \"#cdb68e\", leg: \"#8c8780\", legDk: \"#5e5a55\" };\nconst ik2 = (h, f, L1, L2, back = -1) => { \nconst dx = f[0] - h[0], dy = f[1] - h[1], d = Math.min(L1 + L2 - 1, Math.hypot(dx, dy));\nconst a = Math.atan2(dy, dx), c = Math.acos(Math.max(-1, Math.min(1, (L1 * L1 + d * d - L2 * L2) / (2 * L1 * d))));\nconst s = back < 0 ? 1 : -1; \nreturn [h[0] + Math.cos(a + s * c) * L1, h[1] + Math.sin(a + s * c) * L1];\n};\nexport const emuSide = (p, opts = {}) => {\nconst { phase = 0, run = 0, peck = 0, blink = 0, expr = \"calm\", look = 0.3, seed = 1, tilt = 0, ruffle = 0 } = opts;\nconst g = p.g, two = Math.PI * 2, ow = 6;\nconst bob = run * 16 * Math.abs(Math.sin(two * phase)) + (1 - run) * 3 * Math.sin(seed * 3.1);\nconst lean = run * 0.16 + peck * 0.1 + tilt;\nconst hip = [292, 528 + bob * 0.6];\nconst bc = [290, 432 + bob], brx = 168, bry = 112;\nconst rot = (pt, c, a) => { const x = pt[0] - c[0], y = pt[1] - c[1]; return [c[0] + x * Math.cos(a) - y * Math.sin(a), c[1] + x * Math.sin(a) + y * Math.cos(a)]; };\nconst legs = [1, 0].map((k) => {\nconst ph = phase + k * 0.5, sx = Math.cos(two * ph), sy = Math.max(0, Math.sin(two * ph));\nconst h = [hip[0] + (k ? -14 : 14), hip[1]];\nconst foot = [h[0] + run * 135 * sx + (1 - run) * (k ? -22 : 26), 776 - run * 92 * sy];\nconst knee = ik2(h, foot, 138, 150, -1);\nreturn { h, foot, knee, k, lift: sy * run };\n});\nconst drawLeg = (L, far) => {\nconst col = far ? EMU.legDk : EMU.leg;\np.line([L.h, L.knee, L.foot], col, 15);\nconst fx = L.foot[0], fy = L.foot[1], ta = L.lift * 0.6;\nfor (const [dx, dy] of [[34, 2], [26, -6], [-14, 0]]) p.line([[fx, fy], [fx + dx * Math.cos(ta) - dy * Math.sin(ta), fy + dy * Math.cos(ta) + dx * Math.sin(ta) * 0.6]], col, 7);\np.dot(L.knee[0], L.knee[1], 9, col);\n};\ndrawLeg(legs[0], true);\nconst nb = rot([392, 372 + bob], bc, -lean * 0.4);\nlet hd = [448 + run * 70, 128 + run * 72 + bob * 0.5];\nhd = [hd[0] * (1 - peck) + 548 * peck, hd[1] * (1 - peck) + 712 * peck];\nconst nm = [ (nb[0] + hd[0]) / 2 + 30 - run * 10 + peck * 40, (nb[1] + hd[1]) / 2 + (peck ? -60 * peck : 10)];\nconst neckPts = curve(nb, nm, hd, 14);\np.line(neckPts, EMU.neck, 40);\nfor (let i = 2; i < 12; i++) { const [x, y] = neckPts[i]; p.stroke([[x - 6, y + 4], [x + 2, y - 4]], 3, EMU.neckDk); }\nconst bp = [];\nfor (let i = 0; i <= 64; i++) {\nconst a = Math.PI * 2 * i / 64, c = Math.cos(a), s = Math.sin(a);\nlet rx = brx, ry = bry;\nif (c < -0.3) rx *= 1 + 0.12 * (-c - 0.3); \nlet x = bc[0] + rx * c, y = bc[1] + ry * s + (c < 0 ? 26 * (-c) * (s > -0.2 ? 1 : 0.2) : 0);\nif (s > 0.15) { const j = (i % 2 ? 1 : -0.4) * (16 + 6 * Math.sin(i * 1.7 + seed + ruffle)); y += j; } \nbp.push(rot([x, y], bc, -lean));\n}\np.shadedFill(bp, EMU.body, EMU.bodyDk, rad(-110), brx, 0.4);\np.clip(bp, () => {\nfor (let i = 0; i < 26; i++) {\nconst x = bc[0] - 150 + ((i * 53 + seed * 31) % 300), y = bc[1] - 80 + ((i * 37) % 150);\np.stroke([[x, y], [x - 26, y + 22 + (i % 3) * 6]], 4, i % 2 ? EMU.streak : EMU.bodyDk);\n}\n});\np.inkRing(bp, ow, thickAngle(rad(-110)));\nconst th = rot([hip[0] + 12, hip[1] - 26], bc, -lean);\np.ell(th[0], th[1], 46, 40, EMU.body, ow);\nfor (let i = 0; i < 5; i++) p.stroke([[th[0] - 30 + i * 14, th[1] + 18], [th[0] - 34 + i * 14, th[1] + 44]], 4, EMU.bodyDk);\ndrawLeg(legs[1], false);\nconst hx = hd[0], hy = hd[1], ha = peck * 1.1 + run * 0.25;\nconst H = (dx, dy) => [hx + dx * Math.cos(ha) - dy * Math.sin(ha), hy + dx * Math.sin(ha) + dy * Math.cos(ha)];\nconst beak = [H(22, -10), H(76, 2), H(74, 8), H(20, 14)];\np.poly(beak, EMU.beak, ow * 0.9);\np.stroke([H(28, 4), H(70, 5)], 2.5, INK);\nconst head = ellPts(hx, hy, 46, 38, 0, 360, ha * 57.3, 32);\np.shadedFill(head, EMU.head, mul(EMU.head, [0.7, 0.7, 0.75]), rad(-110), 40, 0.3);\np.stroke([H(-18, -28), H(-26, -44)], 5, EMU.head); p.stroke([H(-4, -31), H(-6, -48)], 5, EMU.head);\np.inkRing(head, ow, thickAngle(rad(-110)));\nconst ec = H(8, -6), er = expr === \"shock\" ? 22 : 18;\np.ell(ec[0] + 4, ec[1] + 6, 22, 18, \"#9fb6d6\", 0);\np.ell(ec[0], ec[1], er, er, \"#ffffff\", 4);\nconst lid = expr === \"side\" ? 0.5 : expr === \"smug\" ? 0.42 : 0;\nconst lk = Math.max(-1, Math.min(1, look));\nif (blink < 0.75) {\np.dot(ec[0] + lk * (er - 9), ec[1] + (expr === \"side\" ? 3 : 1), expr === \"shock\" ? 6 : 8, INK);\np.dot(ec[0] + lk * (er - 9) - 2, ec[1] - 2, 2.4, \"#ffffff\");\n}\nconst L = Math.max(lid, blink);\nif (L > 0.02) { const top = ec[1] - er, yb = top + 2 * er * L; p.poly([[ec[0] - er - 1, top - 2], [ec[0] + er + 1, top - 2], [ec[0] + er + 1, yb], [ec[0] - er - 1, yb]], EMU.head, 0); p.stroke([[ec[0] - er, yb], [ec[0] + er, yb]], 4); }\nif (expr === \"smug\" || expr === \"side\") p.stroke([H(-8, -30), H(26, -24)], 5, INK);\nif (expr === \"shock\") p.arc(ec[0], ec[1] - 30, 14, 5, 200, 340, 4);\n};" }, "rules": [ "Original story, characters, world and jokes; never copy another creator's video shot for shot.", "No real named living people as characters, no brand logos or mascots.", "No captions unless captions=true.", "Never edit my voice beyond voice_speed." ], "deliver": "The MP4 plus a few lines on what each shot shows; offer tweaks." }
21
5
1
27
1,383
Anthropic IPO odds just dropped 28 points. 2 of 4 AIs are now more confident than the market. Polymarket (IPO by Nov 30): 54% Grok: 72% ChatGPT: 65% Claude: 40% Gemini: 35% Since Oct 20: Gemini crashed 72 → 35 Claude 64 → 40 ChatGPT flipped 25 → 65 Grok barely moved (still leads at 0.184 Brier) Roadshow starts next week. Who's closer, Grok at 72 or Gemini at 35?
Roughly 20% of Anthropic is now committed to the public good. The public still can't buy a single share. Market odds: 62% by Nov 30 78% by Dec 31 I asked 4 AIs about Nov 30 this morning. Claude, Gemini, Grok: 64-72% ChatGPT: 25% Receipt on December 1. Market or the outlier?
25
1
25
329
The prompt. Same text for all 4 models, fresh chat each, Nov 6: "You are a calibrated forecaster. Question: "Will Anthropic complete an IPO by Nov 30, 2026?" Today is November 6, 2026. Do NOT look up market or bookmaker odds. Give: (1) a single probability 0-100% that the answer is YES; (2) the 3 strongest reasons; (3) one thing that would change your mind. Be decisive, no ranges." every call and every miss, scored after the fact. the full scoreboard is open on GitHub: 0ddscent.github.io/
88