What does Issue Index (Symptom → Fix Location) do?
Rules: Each fix is filed after repair and human verification. Fixes that belong to a dedicated skill go into that skill; this file only keeps pointers. Fixes without a dedicated home (engineering workflow / rendering pipeline) are allowed to keep short inline fixes (so the user can see the fix at a glance without jumping), but if the inline fix exceeds five lines, it must be moved to a dedicated file and replaced by a pointer. This file must not exceed 150 lines; if it does, move the longest inline fix first.
Family Navigation (first determine the family, then check entries – avoids bouncing between similar entries):
- Rendering freeze/hang/disappear family: First run
render-service.cjsstartup self-check (since 2026-07-24, it automatically catches #37 public/ volume, #38 signature hang, and falls back to system Chrome if Chrome won't open); if self-check passes but still hangs → follow #23 concurrent deadlock → #25 dataless → #26 harness reaping → #24 npm broken package check. - QC false positive family: #29 ghost box (null gating) / #31 cold-start font bloat (qcAllow exemption) / #32 Place box height inflation (visual judgement → release); if QC reports "zero violations", first check coverage (#35).
| # | Category | Symptom | Fix Location |
|---|---|---|---|
| 01 | Visual Rendering | Chinese text silently becoming Song Ti / intermittent | remotion-design-system §6 #01 (fonts.ts + FontGuard) |
| 02 | Engineering Workflow | remotion still outputs ○, but image doesn't change after code edit | remotion-design-system §6 #02 |
| 03 | Engineering Workflow | Thumbnail diff misjudges font details | remotion-design-system §6 #03 |
| 04 | Visual Rendering | \uXXXX rendered literally in JSX props (e.g., icon="✅") | remotion-design-system §6 #04 |
| 05 | Design Language | Custom-drawn placeholder reproduction "feels quite off" | remotion-design-system §0 Iron Rule 4 (real material as main body) |
| 06 | Visual Rendering | backgroundClip:text gradient text looks dark in export | remotion-design-system §6 #06 (solid color + textShadow) |
| 07 | Design Language | Flat color blocks / flat black background / fake logo looks cheap | remotion-design-system references/texture.md (jelly block + glow + vignette + real logo) |
| 08 | Export | MG text edge halo/smear in final output, "MG makes quality worse" | remotion-design-system §6 #08 (jpeg100+crf15 fixed config) |
| 34 | Design Aesthetics | User says "not premium / rough / looks like a mistake / unnatural / not smooth / disjointed" | design-system references/motion.md "Five Laws of Smoothness" – Attribution table: ① Pre-placed skeleton (structure not yet shown becomes visible) ② Breaking continuous objects apart to avoid collisions ③ Gap between boundary pass-through or hanging (>2px = break) ④ Constant speed motion without deceleration stop ⑤ Instantaneous global state mutation. Check one by one; do not tweak parameters by feel; when fixing one, avoid triggering another (0722-01: fixed "line doesn't pass through circle" but triggered "breaking apart" + "exposing skeleton", rework twice) |
| 09 | Engineering Workflow | Long render disappears midway / mp4 fragments / pgrep misjudges process as alive | remotion-design-system §6 #09 (nohup detachment + recognize + lines in log) |
| 10 | Long-form Assembly | Bare visual / long static period / MG all squashed to left zone, no impact | remotion-design-system references/layout.md (takeover/hero moment) + remotion-assembly references/rhythm.md (density audit) |
| 11 | Audio | No sound effects / sound effects buried / loudness below target | remotion-assembly references/audio.md (volume spec + mastering loudnorm) |
| 12 | Long-form Assembly | Elements appear then stay static / hard cut disappearance at chapter boundaries | remotion-design-system references/motion.md (Breathe + useExit exit discipline) |
| 13 | Design Language | Text on bright background becomes unreadable (plain text over white) | remotion-design-system §0 Iron Rule 5 + references/texture.md |
| 14 | Long-form Assembly | Overlapping header/top bar text | remotion-design-system references/layout.md (header mutual exclusion placeholder) |
| 15 | Subtitles | Subtitle word breaks / English fragments / no background box | remotion-assembly references/subtitle.md (semantic line breaks + background box + validation script) |
| 16 | Asset Fetching | Hand-drawn reproduction of product visuals "no matter how you adjust, still far off" | remotion-assembly references/broll.md §0 General Principle (synthesizer is not a drawing board; 4 asset levels + acquisition/editing pipeline) |
| 17 | Long-form Assembly | AI self-check says looks good, user says far off (still frame blind spot / thumbnail downsizing) | remotion-assembly SKILL §2.5 Segment Workshop (measure first, then code + user dynamic final review) |
| 18 | Asset Fetching | Asset clips look like "stuck-on patches", don't blend into main video | remotion-assembly references/broll.md Pipeline step 5 (color grading unification layer) |
| 19 | Animation Timing | Whole video entrance feels like PPT / animation duration doesn't match design | remotion-design-system references/motion.md §0 (frame count written at 60fps but composition is 30fps; convert via seconds first) |
| 20 | Design Language | Assembly size "no matter how I adjust, it's smaller than reference" | remotion-design-system references/specs.md (check spec table before coding, no visual guessing) |
| 21 | Audio | Sound effects cheap/weak; both synthesis and reference sample rejected | remotion-assembly references/audio.md Rule 8 (correct approach: professional SFX library: Jianying cache disk → @remotion/sfx → Mixkit → CC0 → commercial pack; texture must pass user audition and pick ID; AI only filters spectral defects) |
| 22 | Engineering Workflow | Audio-video desync over time in audition board/concatenated video | remotion-sfx SKILL §2 Concatenation Iron Rule (forbid -c copy concat and -shortest: segment length micro-differences accumulate into drift; must lock equal length + full re-encode) |
| 23 | Engineering Workflow | Render hangs/times out mysteriously, repeated retries also hang | Forbid concurrent renders on the same project (confirmed "concurrent crash" warning area): multiple sessions/orphan processes collide and deadlock. Diagnosis = ps -o etime,pcpu (etime exceeds expected multiple + sustained 0% CPU = zombie, kill); tool timeout only kills bash, leaving orphan node processes causing chain collisions—renders must use nohup real background + recognize + lines in log (issue #09 same family); before starting render, check field, but check field mode must prevent self-matching: `pgrep -f "remotion render |
| 24 | Engineering Workflow | Render error Named export not found / plugin is not a function etc., package internal error | Concurrent npm install can corrupt packages (multiple sessions npm i simultaneously / process interruption mid-write): symptom = require returns empty export, dependency tree internal TypeError; fix = corrupt package rm -rf node_modules/<package>+npm cache clean --force+reinstall; widespread corruption: rm -rf node_modules && npm ci (first move out node_modules/.remotion browser binary to protect then delete); discipline = only one session touching npm at a time on the same project |
| 25 | Engineering Workflow | Render permanently stuck at fixed Bundling percentage, process tree all 0% CPU, changing Node/reinstalling dependencies ineffective | Asset file evicted to dataless shell by sync app (2026-07-16 bloodbath: third-party sync app evicted 747MB main asset on uninstall; bundle copying public/ blocks forever, all-night renders hang in chain). Diagnosis = ls -lO public/** check for dataless flag; fix = restore entity from original/download source (brctl ineffective against uninstalled provider); prevention = add dataless check to asset ingestion validation (broll.md 2b), don't place project in sync-managed directory. Variant (2026-07-28, iCloud evicts node_modules): CLI/Studio starts then silently hangs at 0% CPU, can't even print version number ("Optimize Mac Storage" evicts dependency files, @remotion package has ~10k dataless, require waits for cloud download per file); fix = reinstall dependencies into node_modules.nosync/ physical directory + same-name symlink (*.nosync naming iCloud does not sync, cures recurrence); must move old directory out of project tree (into ../.trash/) – renaming but staying inside project will cause Studio watcher recursive scan, second hang |
| 26 | Engineering Workflow | Render process "disappears" when sub-agent/agent round ends—neither concurrent deadlock (#23) nor mid-render break (#09) | When sub-agent round ends, harness reaps its foreground or incompletely detached child process chain → render killed midway, leaving fragments. Fix belongs to #09 family: render must fully detach from parent shell (nohup + run_in_background/setsid, redirect all fds); completion determined only by log +/tail line, not by whether agent is alive; starting long renders inside sub-agents is especially deadly (round boundary = process death); when needed, split into "start render and detach this round → check log next round" |
| 27 | Engineering Workflow | Render service .mjs/ESM entry import '@remotion/renderer' reports does not provide an export named 'Fragment' | When package.json lacks type:module, using ESM entry to load renderer triggers interoperability break in its ESM build of react/jsx-runtime (Node 24 confirmed); fix = change service script to .cjs + require to use CommonJS build (evidence: top comment of scripts/render-service.cjs) |
| 28 | Engineering Workflow | <Sequence layout="none" premountFor={N}> fails tsc with premountFor not existing / type mismatch | Remotion SequenceProps is a discriminated union: premountFor is only valid in default/layout:"absolute-fill" branch (AbsoluteFillLayout), not in {layout:"none"} branch (type in node_modules/remotion Sequence.d.ts LayoutAndStyle). Fix = media needing premount must be wrapped in default layout Sequence (omit layout or write absolute-fill); when layout="none" positioning is needed, nest the media inside a separate default-layout Sequence to host premount. Derived from official minefield ③ (premountFor) |
| 29 | Engineering Workflow | QC probe reports "ghost overlap" false positive: element invisible to naked eye on that frame | QC probe (src/design/qc.tsx) checks each frame by getting getBoundingClientRect of [data-qc] elements for overlap; if the element is invisible but still in DOM (not standard hidden or fully transparent but visually yielded), its rect still exists → false overlap (seg05 S5Appear hit). Probe side only filters opacity<0.15 and w/h<3, can't block placeholder ghosts. Fix = when element is invisible, component should return null (null gating)—no node = no rect; anti-overlap placeholder rules in remotion-design-system references/layout.md §10.5. Another variant (Place box height inflation) is separately listed as #32, follow #32 for the fix |
| 30 | Engineering Workflow | Bash-written file "command succeeded" but disappears moments later / Read can't see just-written file / rendered output doesn't exist in ls | New session uses sandbox execution by default: unauthorized Bash writes land in sandbox temporary copy, command ends and file evaporates (0719-01 test confirmed: subtitle data, 18 Scenes, 590MB output all evaporated, only 3 files written by Write tool survived); writing to project via /tmp symlink path worsens redirection. Fix = before starting work, must pass assembly SKILL §0.5 Step 0 environment self-check; if fails, stop and let user authorize Bash/editor permissions before proceeding; forbid symlink to bypass Chinese paths (just wrap path in double quotes), forbid dangerouslyDisableSandbox to self-rescue, forbid copying project to /tmp to work; prefer Write tool for file output |
| 31 | Engineering Workflow | QC reports overlap only in first few frames of segment, visually no overlap (common sub-zh × card frame) | First few frames of cold start: font not loaded, text box measured with fallback font → inflated height, rect intersection is measurement false positive (0715-01 seg03 and 0715-02 S04 both confirmed; #29 ghost family variant). Fix = visually confirm, then qcAllow whitelist exempt the element pair (retain other assertions); don't change layout due to a few false positive frames |
| 32 | Engineering Workflow | Full video QC reports large number of place@72,* left-zone box overlaps, but rendered frame visually shows no overlap | Paginated/grouped left-zone Place box bounding exceeds visual content (container inflated), box intersection ≠ visual intersection (0715-02 full video QC 15 violation types all belonged to this). Fix = after visual inspection, release as false positive; root fix = Place box height matches actual content, or hang qcAllow on the group; sub-clearance crossing clean-air line is a separate true/false judgment, not covered here |
| 33 | Visual Rendering/Export | Certain segment of final output: person/video frozen into still frame, original clip is moving at the same time (common with 4K base); visually "person not moving", but md5/mpdecimate can't detect | 4K base OffthreadVideo rendering decoding stutters and produces duplicate frames (more likely when complex SVG animation layers are added) → switch to 1080p H264 base source (composition is already 1080p; 4K is wasted and degrades decoding); re-render with 1080p source resolves. Diagnosis must use ffmpeg -vf freezedetect=n=-50dB:d=0.3—md5 all different ≠ visual motion (compression noise makes each still frame's md5 different, misleading); mpdecimate also unreliable due to noise; only freezedetect with noise tolerance is accurate; asset takeover segment (character exit, asset itself static) freezing is normal, not a bug (0721-01 confirmed: 63-69s person segment frozen, after 4K→1080p source, freezedetect zero freeze). Tip: delivery encoding suggestion -bf 0 -g 30 -movflags +faststart improves player compatibility (Remotion defaults to many B-frames, some players decode with seek stutter) |
| 34 | Visual Rendering | Rendered asset segment shows large pure black/dead black band/empty glass, only a vertical strip remains; both placeholders and real assets affected; easy to miss in post-render self-review (spot-check points fall outside asset's visible window) | OffthreadVideo "oversized box style width + objectFit/translate" cropping approach: width doesn't take effect on render side → content rendered at card width then truncated by displacement (0721-01 6 segments confirmed: S02/S06/S07/S10/S13/S16; only correct S14 used "video 100% fill card + transform scale overshoot"). Fix and post-render acceptance gate = remotion-assembly references/broll.md Rule 12 |
| 35 | Engineering Workflow | Assembler/QC reports "entire video zero violations" but there are many overlaps—false gate pass | QC probe (src/design/qc.tsx) is mounted inside each Scene, only runs within that segment's frame range; Scene missing <QcProbe/> (only declares qc?:boolean but doesn't consume) → segment has zero assertions → summary is clean, a false gate pass (0722-01 bloodbath: 20 segments, only 1 had probe; reported zero violations but actually 8 types of true violations). Fix already solidified: probe emits coverage heartbeat QC{hb:1,n} per frame; render-service.cjs qc checks "covered frames / rendered frames"; if <90% or 0 elements throughout → return [FAIL] insufficient coverage instead of "zero violations". Discipline: "zero violations" must distinguish between "checked and ok" and "never checked"; in production mode, during integration phase, run a short segment first to confirm coverage reaches threshold before full run. Supplement (2026-07-24 review discovery): Probe must be mounted at root (assembly root {qc ? <QcProbe/> : null}, e.g., Koubo072101/072201)—when mounted inside Scene, useCurrentFrame goes through Sequence and returns local frame (starting from 0), causing heartbeat frame numbers to misalign with global frame-range: full-video/cross-segment QC coverage will false FAIL (local frames overlap between segments, after dedup << total frames); single segment missing probe might also be masked by neighboring segments' local frames leading to false PASS; render-service already added frame-range filtering, but global coverage only root mounting guarantees. Single-segment QC short runs can't detect this pitfall—test guardrail with scenarios that trigger failure (cross-segment range / intentionally remove one probe), don't only test normal segments |
| 36 | Design Language | Left-zone information MG text on bright background nearly unreadable, scrim seems ineffective | InfoScrim (src/design/InfoScrim.tsx) gradient defaults to transparent on left → darken on right, only pressing right side; information MG placed on left side (user decision: left info) → left-zone MG fully exposed in brightest area (white cabinet/bright wall) without underlay (0722-01 confirmed; 0715-02 also hit same pitfall but only patched locally in that segment, base gap not fixed). Fix = InfoScrim add side parameter (default 'right' for backward compatibility); when info is on left, pass side="left". Lesson: fix base defects at the base or file an issue; forbid patching only locally in one segment—local patch = leaving the pitfall for the next video |
| 37 | Engineering Workflow | Render stuck at Bundling, copyfile ... ETIMEDOUT, process alive but no output | public/footage/ accumulates many old clips (0722-01: 2GB/6 clips), Remotion bundle copies entire public/ to temp directory each time → copyfile timeout (different from #25 dataless: this is volume/copy time, files are real). Fix = keep only current clip's footage in public/footage/, move others to ../footage-hold/ (2GB→466MB, bundle from stuck→1.8s). Discipline: after fix delivery, don't blindly roll back—before rollback, ask "does this video need re-rendering?" (0722-01 same pitfall hit twice because clips were moved back after delivery) |
| 38 | Engineering Workflow | Any file-touching process permanently hangs, kill -9 ineffective, UE zombies accumulate; reinstall dependencies/change Node all ineffective | macOS code signing verification daemon (amfid/syspolicyd) hangs → binaries needing signature verification cannot exec (different from #25 dataless, #37 volume, #23 deadlock; this is system-level). Diagnosis: ffprobe -version (system) works but node_modules/@remotion/compositor-darwin-arm64/ffprobe -version hangs forever = signature deadlock; `ps -axo pid,stat,comm |
| 39 | Asset Fetching | Grok image-to-video three types of failure: default low resolution 736×400 blown up blur / elements morph and grow / specific composition forcibly "filled in" | ① Resolution: without explicit mention, defaults to 736×400 (2.6x upsample blurs halftone/cropped edges)—instruction must hardcode 720p (1280×720), tested 4/4 hits; CLI resolution_name only has 480p/720p two levels, requesting 1080p falls back (2026-07-24 tested); 1080p must go through xAI API (grok-imagine-video-1.5) or switch tool. ② Morph hyperplasia: gear grows / calendar adds cells / ring shatters—append at end of prompt a locking constraint for that specific element prone to mutation ("keep single original size, no growth" / "cell count and color unchanged" / "ring continuous, no break"). ③ Hard completion: "sparse elements + large empty background + hollow human shape + exposed face fragments" triggers model to fill empty space, fill hollow, generate full face (6 versions all broken for #14)—don't keep adding prohibitions; change the input composition that triggers it (fill fragments spread / bound negative space with outline / remove exposed face fragments; after change, one run succeeds). gbro headless call also needs --always-approve --permission-mode bypassPermissions --max-turns 10 to trigger video tool. See remotion-broll SKILL "AI-generated collage B-roll" section |
| 40 | Visual Rendering | Small circular avatar icon looks crooked, gold ring exposes background wedge; CSS angle adjustment makes it worse | Forbid using CSS rotate+offset to fix crooked avatar inside small circular crop window—rotation is around img center, visible window is off-center, both amplify crooked feeling and rotate past edges (0724-01 two rounds to fix correctly). Correct approach = offline bake: use PIL to straighten portrait (few degrees) then crop to "face-centered square" as asset; NamePlate avatarImgStyle uses 100%/left:0/top:0 full-window direct paste; global asset public/assets/author-avatar.png ready, reference directly |
| 41 | Engineering Workflow | render-service segment full-video reports frame range 0-N is not inbetween 0-(N-1) | Segment/splice start and end parameters are inclusive frame numbers: full video = 0 (durationInFrames-1) (for 1355-frame composition, pass 0 1354); copying durationInFrames directly will error |
| 42 | Design Language | User says subtitles "not good-looking" but can't specify what's wrong | First check whether English lines are rendered with Chinese font—Latin glyphs in Chinese fonts are just fallback, kerning and spacing all wrong, top cause of "can't say what's off" (BilingualSub old version rendered en line with FONT.zh, confirmed 2026-07-26). Fix = English line must use proportional Latin font FONT.subEn (Inter); also check Chinese line weight, subtitle layer uses FONT.subZh (PingFang SC) 400 light, not 700 of packaging layer. Judging font texture requires 1:1 crop local view, thumbnail can't see it (same as #03); before modifying, output multiple version same-frame comparisons for user to choose, don't guess one version |
| 43 | Long-form Assembly | qc-master zero FAIL zero WARN, but user says "texture is very different / motion effects getting uglier / subtitles not matching skill description" | Technical acceptance checks "is the video broken?", not "has the video used the base system?"—two different things; don't take green light of former as proof of latter. 0727-01 confirmed: 25 segments self-built 324-line _kit.tsx recreating cards, motion effects only quad fade-in displacement 0, zero references to design/motion, only 8 of 25 segments have exit, 77 subtitle lines en all empty degenerated to single-line Chinese; qc-master all PASS and still delivered. Fix = assembly step 0 gate node scripts/check-scenes.mjs src/koubo/scenes-<video_name> (motion zero references / zero exit items = FAIL) + check-subs.mjs en missing check; both run after coding and before render. Diagnosis order: first check what techniques are missing, then check parameters—check-scenes one command shows whether you're reinventing the wheel, but it only covers "base system not used" type of ugliness; color/rhythm/typography/composition each have their own true source (typography/rhythm/#42/layout), don't treat a single path as universal diagnosis. ⚠️ Incidental lesson: check-subs command parameter was passed incorrectly (video name instead of file path) and reported ENOENT; seeing an error, they just moved on, thus also missed hanging single word at line start and width exceed 16.5 characters—validation script reporting error ≠ validation passed; if it can't run, it didn't run |
Category reference (reserved per base video system): Visual Rendering / Animation Timing / Studio Local Run / Export / Audio / Asset Fetching / Long-form Assembly / Design Language / Engineering Workflow.
Warning Minefield (Issue Directory 44 entries, screenshots provided by user on 2026-07-16)
Rule: This is a minefield map, not issues—only symptom names, no fixes, most we haven't encountered. On hitting any entry: fix + human verification, then upgrade to formal number above. Entries already matched to our existing issues are marked with their assignment.
| Category | Pitfall (original) | Our Status |
|---|---|---|
| Visual Rendering | LOGO flicker / video freeze / transparent ProRes black border / animation locked top-left / image stretch / web chrome / face occlusion / subtitle collision / Emoji / Logo black-on-black | Already covered: subtitle collision=#14 overlapping text; Emoji=#04 + icon spec (lucide real icons); face occlusion=3-zone person exclusion zone (layout.md); Logo black-on-black=logo dark/light dual-version spec (texture.md). Remaining 6 not encountered, be alert: video freeze (OffthreadVideo frame freeze), image stretch (objectFit), web chrome (screenshot with browser frame on card) |
| Animation/ Timing | Phase index missing break / animation not synced to voiceover / spring overshoot | Already covered: animation not synced to voiceover=§2.5 word-level alignment + main visual aligned to SRT; spring overshoot=motion.md §11 forbidden items. Phase index missing break not encountered (switch branch missing class issue) |
| Studio/ Local Run | Studio immediate crash (SIGPIPE) / EMFILE handle exhausted / staticBase hash expired / HEVC black screen / id underscore / Studio+still concurrent crash | All not encountered. Be alert for two high-probability: HEVC black screen (iPhone screen recording is HEVC; convert to H.264 on ingest), Studio+still concurrent crash (running still/render while Studio open may collide—our workflow often runs concurrently; if hit, don't first suspect code) |
| Export | C drive full / OOM / blurry quality / slow render / Encoded misjudgment | Already covered: blurry quality=#08 (jpeg100+crf15); Encoded misjudgment=#09 completion criterion only recognize log + line (similar: log text ≠ success). OOM/slow render not encountered (be alert for concurrent frame count on long 4K) |
| Audio | impact-heavy filling entire video / group each with whoosh / sound before motion | Already covered: impact-heavy filling entire video=audio.md heavy hit SFX max 2 per video (user vetoed opening whoosh same root lesson); group each with whoosh = combos should have light pop per item, not one heavy per group. "Sound before motion" not encountered; pending confirmation (suspects SFX frame vs motion frame timing rule; define on hit) |
| Asset Fetching | yt-dlp 403 / fetch doesn't use proxy / Wikimedia GFW / Firefox cookie / PNG actually HTML | Partially covered: yt-dlp acquisition pipeline in broll.md (we download Lovable, haven't encountered 403; when encountered, first add cookie/UA/proxy three-piece). "PNG actually HTML" classic pitfall: downloaded "image" is actually anti-hotlink HTML page—validate with file command before ingest; this entry directly adopted as fixed step in asset pipeline |
| Long-form Assembly | Chapter missing breather / Host card ↔ Chip collision | Already covered: chapter missing breather=motion.md §1/§2 inter-chapter clear screen; Host card ↔ Chip collision=layout.md Rule 9 mutual exclusion placeholder (similar overlap) |
| Design Language | Not replicating House Style / kicker overclaim / aspect ratio not calculated / subtitle repetition | Not replicating House Style = whole reason for our design-system. Kicker overclaim (kicker copy exaggerating beyond what voiceover says), aspect ratio not calculated (asset distortion), subtitle repetition (subtitle and MG text repeating same phrase) three not encountered—subtitle repetition alert: our ruling on chip vs Stamp not repeating same phrase is same principle |
| Official Minefield (remotion-dev/skills documented, 2026-07-16 cross-reference, see docs/官方skills对照.md) | ① CSS transition/animation/Tailwind animations=render will break (official FORBIDDEN; codex code most likely to mix in) ② ffmpeg cropping without re-encode=freeze at start (one cause of "video freeze" base; -c copy cropping forbidden) ③ Sequence with media without premountFor=first frame stutter/black frame ④ @remotion/transitions eats total duration (two shots overlap; SRT hard-alignment system will shift entire video) ⑤ fetch external data without delayRender=renders empty frame | ①②④⑤ not encountered, pre-coding check items; ③ premountFor adopted per spec (Scene06 anti-first-frame black) → practice spawns new pitfall #28 (premountFor and layout='none' type conflict) |
| Engineering Workflow | Modification scope expanded / font size <48px / auto-run 4K render | Modification scope expanded = negative example of segment workshop discipline "render only that segment / modify only that segment"; font size <48px (at 1080p, body text below 48px is unreadable; distinguish from specs.md min label size 20-22px by scenario: he refers to information body); auto-run 4K render (without confirmation, automatically start huge render burning machine)—this entry directly adopted as discipline: render only according to scope confirmed by user/plan |