유대선
프로젝트로
·기술 회고·1

Move Decks enriched — every engineering principle now has tools, trade-offs, an example, and code

Move Decks are the engineering first-principles the sparring and AI-audit graders reason from, but each move only had a seed line, a raw-English line, an explanation, and probes. Enriched all 25 via generate-then-verify: each now carries the real tools it applies to, its actual trade-offs (always shown), a concrete Offer-FSM example, and a verified code snippet.

The owner pushed on Move Decks specifically: these aren't a flat 25-item memorization list, they're the engineering first-principles, and they were thin — each move had only a seed, a raw-English line to say, an explanation, and self-attack probes. He wanted each principle carved in, sayable in English, and — emphatically — to always surface its trade-offs. He's right that it matters here: the sparring and AI-audit graders literally use "System moves 15 / Algorithm moves 10" as their judging frame, so shallow moves mean a shallow grader.

Added four optional fields to the Move interface and filled all 25 (15 system + 10 algorithm) through a generate-then-verify workflow: for each move, three to four real tools it applies to (each with a one-line how), two to three specific trade-offs (the real cost, when it backfires — never generic filler), one concrete example tied to the Offer FSM domain so it connects to his own work, and a short verified code or SQL snippet that actually demonstrates the principle. A second agent reviewed each batch for correctness.

The /moves detail panel renders the new sections: 어디에 적용되나 (the tools), 실제 트레이드오프 (always shown, in red), 사례 (the spoken example), and the code block. So a move is no longer "say this line" — it's the principle, where it shows up, what it costs, a real story, and code to anchor it.

Integration followed the same discipline as the concept-code expansion: html.unescape the agent output first (the SQL came back with <>), escape backslash/backtick/${ for the TS template literal, and insert the new fields right after each move's probes array, applying the edits right-to-left so offsets stayed valid. Zero entities left, tsc clean.