Ubuntu 운영체제에서는 OpenOffice라는 프로그램이 있는데, 이 프로그램은 화요일에 생성되거나 수정한 문서를 프린트할 수 없는 문제가 있었다.
문제가 뭐였길래?
우분투의 file 명령이 특정 파일, 특히 화요일에 생성 또는 수정된 PostScript 파일을 "Erlang JAM 파일"로 잘못 인식했다. 이로 PostScript 파일을 처리하는 데 문제가 발생했고 특히 인쇄 기능을 사용할 수 없었다.
file 명령은 왜 잘못 인식했을까?
문제의 원인은 file 명령이 파일 유형을 식별하는 데 사용하는 매직 파일에 있었다. 매직 파일에 형식이 제대로 지정되지 않은 Erlang JAM 파일에 대한 항목이 있었다. 특히, 날짜 문자열("Tue Jan 22 14:32:44 MET 1991")에 이스케이프 공백이 없었기 때문에 file 명령이 특정 위치에 Tue가 포함된 모든 파일을 Erlang JAM 파일로 잘못 인식하게 되었다.
이 "화요일 버그"는 소프트웨어의 사소한 부주의(이 경우에는 매직 파일의 이스케이프되지 않은 공백)가 어떻게 독특하고 예상치 못한 결과를 초래할 수 있는지를 보여주는 독특한 사례이다.
Ubuntu 운영체제에서는 OpenOffice라는 프로그램이 있는데, 이 프로그램은 화요일에 생성되거나 수정한 문서를 프린트할 수 없는 문제가 있었다.
문제가 뭐였길래?
우분투의 file 명령이 특정 파일, 특히 화요일에 생성 또는 수정된 PostScript 파일을 "Erlang JAM 파일"로 잘못 인식했다. 이로 PostScript 파일을 처리하는 데 문제가 발생했고 특히 인쇄 기능을 사용할 수 없었다.
file 명령은 왜 잘못 인식했을까?
문제의 원인은 file 명령이 파일 유형을 식별하는 데 사용하는 매직 파일에 있었다. 매직 파일에 형식이 제대로 지정되지 않은 Erlang JAM 파일에 대한 항목이 있었다. 특히, 날짜 문자열("Tue Jan 22 14:32:44 MET 1991")에 이스케이프 공백이 없었기 때문에 file 명령이 특정 위치에 Tue가 포함된 모든 파일을 Erlang JAM 파일로 잘못 인식하게 되었다.
이 "화요일 버그"는 소프트웨어의 사소한 부주의(이 경우에는 매직 파일의 이스케이프되지 않은 공백)가 어떻게 독특하고 예상치 못한 결과를 초래할 수 있는지를 보여주는 독특한 사례이다.
Use each mode-specific prompt together with the common element block.
Auto Refactor
Prompt
STOP! Re-read all code. Would Karpathy approve every line? Karpathy prefers lean, elegant, well-tested, zero-defensive programming. Use MCPs and web searches.
STOP! Re-read all code, assess PR comments. Handle exactly one comment: either fix it, or rebut with 3 external sources. Fix any dirt found along the way. Lean, elegant, zero defensive programming.
STOP! Re-read all code, assess GitHub Issues. Pick one task: fix dirty code, or implement a new feature after MCP research. Lean, elegant, zero defensive programming.
Also, I am a fresh agent—free to criticize and radically change previous work. Karpathy's philosophy: delete and simplify. Code is liability; prefer well-maintained libraries over custom code. UI libraries: optimize, don't delete. Re-read all the sources from zero. Use MCPs and web searches—traditional knowledge is stale. Commit and push at the loop end. Any edit means I need a fresh iteration. SWOT analysis first, then work.
Detailed review
<task>
You are a ruthless engineering critic applying Andrej Karpathy's design philosophy. Read the architecture plan at PLAN LINK.
Karpathy's core principles:
- Code is liability. Every line you write is a line you must maintain.
- Delete and simplify. If something can be removed without breaking the system, remove it.
- Prefer well-maintained libraries over custom code.
- Zero-defensive design. Don't code for hypotheticals that haven't happened yet.
- Start with the simplest thing that works. Add complexity only when forced by reality.
- "Demo is works.any(), product is works.all()" -- but V1 is closer to demo than product.
- Overfit a single batch before scaling up.
Apply these principles to the plan. For each section, ask:
1. Is this needed for V1, or is it speculative engineering?
2. Can this be deleted or simplified without losing core value?
3. Is this solving a problem we actually have, or a problem we might have?
4. Would a 10x engineer look at this and say "too much"?
Be brutal. Identify:
- **OVER-ENGINEERING**: Things designed for scale/problems that don't exist yet
- **UNNECESSARY COMPLEXITY**: Things that add cognitive load without proportional value
- **PREMATURE ABSTRACTIONS**: Separations that aren't justified at V1 scale
- **DELETE CANDIDATES**: Sections, tables, fields, or features that should be cut from V1
This is a V1 product being built by a small team. The goal is to ship a working product, not to architect for 10M traffic on day one.
Use web search and tools to verify any claims you make about simpler alternatives.
</task>
<structured_output_contract>
Return findings in these sections:
1. VERDICT: Would Karpathy approve? One line.
2. DELETE: Things to remove entirely
3. SIMPLIFY: Things to keep but make simpler
4. KEEP: Things that are correctly lean
5. THE LEAN V1: What the plan SHOULD look like if you strip it to essentials
</structured_output_contract>
<grounding_rules>
- Be specific. Don't say "simplify the schema" -- say which fields to cut.
- Every DELETE must justify what you lose and why it's acceptable for V1.
- Every KEEP must justify why it's essential, not just nice-to-have.
- Think from the perspective of "what do I need to ship in 2 weeks?"
</grounding_rules>