| name | decision-log |
| description | Append-only build/interview/pivot/hold/CONDITIONAL_GO decision log with 3-6 month self-eval audit. Records every gate decision with score + reasons; later backfilled with outcome (shipped, killed, alive_no_revenue, pivoted, external_success) to compute hit_rate, false_holds, and missed_builds. The only PM gate skill that measures its own accuracy over time. |
| argument-hint | [log|update|audit] <args> |
| allowed-tools | ["Read","Write","Bash"] |
| model | inherit |
Decision Log โ Self-Calibrating Build Gate
Running for: $ARGUMENTS
Core Goal
- ๋ชจ๋ gate ๊ฒฐ์ ์
harness/decisions.jsonl์ append-only๋ก ๊ธฐ๋ก โ 3-6๊ฐ์ ๋ค audit์ผ๋ก hit_rate ์ธก์ .
- false_hold (hold ํ๋๋ฐ ์ธ๋ถ์์ ์ฑ๊ณตํจ) + missed_build (build ํ๋๋ฐ ์ฃฝ์)์ ์๋ ์ถ์ถ โ rubric ๋ณด์ ๋ฐ์ดํฐ.
- "๋ด ๊ฒ์ดํธ๊ฐ ์ ํํ๊ฐ?"๋ผ๋ ์ง๋ฌธ์ ๋ตํ ์ ์๋ ์ ์ผํ PM skill.
Trigger Gate
Use This Skill When
- ๋งค build/interview/pivot/hold/CONDITIONAL_GO ๊ฒฐ์ ์ ์ฆ์ ํธ์ถ (์๋ฌด)
- 3-6๊ฐ์ ๋ค outcome์ด ํ์ ๋์ ๋ backfill
- ๋ถ๊ธฐ๋ณ self-review โ "์ง๋ ๋ถ๊ธฐ ๊ฒฐ์ ์ค ์ ํํ๋ ๋น์จ์?"
Route to Other Skills When
- audit ๊ฒฐ๊ณผ false_hold ๋ค์ โ
evidence-rubric์ threshold ๊ฒํ
- missed_build ๋ค์ โ Evidence Gate ํต๊ณผ ๊ธฐ์ค ๊ฐํ
- decision =
hold + ์๊ตฌ ์ฌ์ โ exclusions add ๊ฐ์ด ํธ์ถ
- decision =
build โ handoff ๋ก ๋ผ์ฐํ
Boundary Checks
- โ ์๊ตฌ ์ญ์ ๋ถ๊ฐ (append-only). ์๋ชป๋ entry๋ ์ entry๋ก supersede.
- โ outcome backfill ์์ผ๋ฉด audit์ด ์๋ฏธ ์์ โ ์์ง ๋ง ๊ฒ.
Inputs
python3 hplan/scripts/decision_log.py log \
--project alpha-app --gate build --decision build --score 78 \
--reason "5/5 ๊ฐํ ์ ํธ" --reason "COGS GREEN"
python3 hplan/scripts/decision_log.py update --id dec-XXX --outcome shipped
python3 hplan/scripts/decision_log.py audit
Steps
- ๊ฒฐ์ ์ด ๋ด๋ ค์ง ์งํ
log ํธ์ถ (--reason ๋ค์ค ์ฌ์ฉ ๊ถ์ฅ).
- project name + gate (evidence/product/build) + decision ๋ช
์.
- ๋งค์ฃผ/๋งค์
audit ํธ์ถ โ pending decisions ํ์ธ.
- outcome์ด ํ์ ๋๋ฉด ์ฆ์
update --id <id> --outcome <state>.
- ๋ถ๊ธฐ๋ณ audit์ผ๋ก hit_rate trend ์ ๊ฒ.
Outputs
harness/decisions.jsonl (append-only)
- audit returns:
total, resolved, pending, by_decision, by_decision_outcome, hit_rate, false_holds, missed_builds, guidance
Decision vocabulary
| Decision | When |
|---|
build | All gates credible |
CONDITIONAL_GO | COGS CONDITIONAL + mitigations defined |
interview | Evidence thin |
pivot | Real problem, wedge broken |
hold | Differentiation + economics both weak |
Outcome vocabulary
| Outcome | Meaning |
|---|
shipped | Product is live and used |
killed | Project officially stopped |
alive_no_revenue | Live but no paid users (signal trouble) |
pivoted | Direction changed mid-flight |
external_success | Someone else built it and succeeded โ our hold was wrong |
PMF ์ธก์ ์ฐ๊ณ
์ถ์ ํ 30์ผ ๊ฒฝ๊ณผ, ์ ๋ฃ ์ ํ 10๋ช
๋๋ฌ, ๋๋ ์ค์ธก p90 margin์ด Build Gate ์์ธก ๋๋น ยฑ15pp ์ด์ ์ฐจ์ด๋ ๋ ๋ค์ ํ์ ๊ธฐ์ค์ decision-log์ ํจ๊ป ๊ธฐ๋กํ๋ค.
| ์กฐ๊ฑด | ํ์ | ๋ค์ action |
|---|
| Day-30 retention โฅ 30% + COGS GREEN + strong_push โฅ 3 | PMF_SIGNAL | evidence-rubric ๋ค์ ์ฌ์ดํด๋ก |
| ์ค์ธก p90 margin < 20% | ECONOMICS_MISS | cogs-sentinel ์ฌ์ฐ์ ํ pricing ์กฐ์ |
| Day-7 retention < 20% | RETENTION_MISS | ost ์ฌ๊ฒํ (opportunities ์ฌ์ฐ์ ์์) |
| strong_push_quotes < 3 | EVIDENCE_THIN | ์ธํฐ๋ทฐ ์ถ๊ฐ ์์ง |
| ์ ์กฐ๊ฑด ๋ณตํฉ | PIVOT | decision-log pivot ๊ธฐ๋ก ํ Evidence Gate ์ฌ์์ |
PMF ์ธก์ ๊ฒฐ๊ณผ๋ฅผ decision-log update --id <id> --outcome <verdict> ๋ก backfillํ๋ฉด hit_rate ๊ณ์ฐ์ ํฌํจ๋๋ค.