이 스킬
Thesis Kill-Chain Deep Dive
thesis intake, evidence coverage, assumption ledger, fragility map, trigger catalog, propagation path, tripwire, falsifier, scenario storyboard, visual gate, premortem quality gate를 한 번에 실행하는 pre-mortem 시나리오 최종 절차다.
이어 가기
- Thesis Kill-Chain Thesis Intake
recipes.meta.thesisKillChain.thesisIntake - Thesis Kill-Chain Evidence Coverage Audit
recipes.meta.thesisKillChain.evidenceCoverageAudit - Thesis Kill-Chain Assumption Ledger
recipes.meta.thesisKillChain.assumptionLedger - Thesis Kill-Chain Fragility Map
recipes.meta.thesisKillChain.fragilityMap - Thesis Kill-Chain Trigger Catalog
recipes.meta.thesisKillChain.triggerCatalog - Thesis Kill-Chain Propagation Path
recipes.meta.thesisKillChain.propagationPath - Thesis Kill-Chain Tripwire Monitor
recipes.meta.thesisKillChain.tripwireMonitor - Thesis Kill-Chain Falsifier Ledger
recipes.meta.thesisKillChain.falsifierLedger - Thesis Kill-Chain Scenario Storyboard
recipes.meta.thesisKillChain.scenarioStoryboard - Thesis Kill-Chain Visual Decision Pack
recipes.meta.thesisKillChain.visualDecisionPack - Thesis Kill-Chain Premortem Quality Gate
recipes.meta.thesisKillChain.premortemQualityGate
절차
실행 순서
- 1
`premortemQualityGate`의 risk row가 있으면 결론보다 차단 사유와 nextAction을 먼저 쓴다.
- 2
`qualityGateStatus == "weak"`이면 `decisionStatus == "usable"`이 될 수 없다.
- 3
`operatorReview`이면 확정 결론 대신 보강할 EngineCall 목록과 어떤 gate가 막혔는지 답한다.
- 4
공개 호출 블록은 AST parse가 되어야 한다.
- 5
공개 호출 블록은 L2/L3 호출 문자열을 포함하면 실패다.
- 6
scenarioStoryboard에는 baseIntact, erosionCase, killChainCase가 모두 있어야 한다.
- 7
premortemQualityGate는 10개 gate를 반환해야 한다.
- 8
ready가 아닌 visualRef는 차트로 emit하지 않는다.
예시
이런 질문이 들어오면 이 skill 을 쓴다
- 삼성전자 thesis kill-chain deep dive
- 투자 논리 pre-mortem 전체 실행
출력
기대 결과
- 12단계 deepDive ledger
- killRiskScore와 openTripwireCount
- premortemQualityScore와 qualityGateStatus
- propagationPath와 scenarioStoryboard
- visualDecisionPack
공개 호출 방식
AI 도구 실행 순서는 EngineCall 우선이다. Company.show, Company.disclosure, Company.gather, scan.market, scan.audit, scan.quality는 엔진 호출로 근거를 먼저 확보한다. 아래 Python 블록은 확보한 L1/L1.5 근거를 buildThesisKillChainMemo로 묶는 RunPython fallback 절차다.
import dartlab
from dartlab.synth.thesisKillChain import buildThesisKillChainMemo
target = "005930"
thesis = "매출 성장과 현금 전환이 유지되어 valuation discount가 해소된다"
c = dartlab.Company(target)
def rows(value, limit=30):
if hasattr(value, "head") and hasattr(value, "to_dicts"):
return value.head(limit).to_dicts()
if isinstance(value, list):
return value[:limit]
return []
def gather_rows(axis, limit=30):
try:
return rows(c.gather(axis), limit=limit)
except Exception:
try:
return rows(dartlab.gather(axis, target=target), limit=limit)
except Exception:
return []
statements = {}
for topic in ("IS", "BS", "CF"):
try:
statements[topic] = c.show(topic, freq="Y")
except TypeError:
statements[topic] = c.show(topic)
except Exception:
pass
try:
filings = rows(c.disclosure(), limit=50)
except Exception:
filings = []
memo = buildThesisKillChainMemo(
target=target,
thesis=thesis,
market=str(getattr(c, "market", "KR")),
companyName=str(getattr(c, "corpName", target)),
statements=statements,
filings=filings,
priceRows=gather_rows("price", limit=40),
flowRows=gather_rows("flow", limit=40),
consensusRows=gather_rows("consensus", limit=12),
)
emit_result(
table=memo["tables"]["deepDive"],
values={
"target": target,
"killRiskScore": memo["headline"]["killRiskScore"],
"openTripwires": memo["headline"]["openTripwireCount"],
"openFalsifiers": memo["headline"]["openFalsifierCount"],
"premortemQualityScore": memo["headline"]["premortemQualityScore"],
"qualityGateStatus": memo["headline"]["qualityGateStatus"],
"decisionStatus": memo["headline"]["decisionStatus"],
},
date=memo["asOf"],
sources=memo["sources"],
) 호출 동작
1. 결론 도출
finalDecision row 의 killRiskScore + qualityGateStatus + decisionStatus 3 축 단정. 예: “killRiskScore=0.6, qualityGate=acceptable, decisionStatus=usable — thesis 유효하지만 propagationPath 2 단계 + tripwire X 활성 필요.”
2. 핵심 근거 수집
- IS/BS/CF 시계열 (Company.show)
- 공시 row 50 건 (Company.disclosure)
- L1.5 ledger 11 단계 (thesisIntake → evidenceCoverageAudit → assumptionLedger → fragilityMap → triggerCatalog → propagationPath → tripwireMonitor → falsifierLedger → scenarioStoryboard → visualDecisionPack → premortemQualityGate)
3. 메커니즘 분석
thesis 입력 → buildThesisKillChainMemo
↓
thesisIntake → assumption 추출 → fragilityMap (가정 깨질 조건)
↓
triggerCatalog (외부 충격 후보) → propagationPath (충격 → 결론 전파)
↓
tripwireMonitor (조기 경보 임계) + falsifierLedger (open 반증)
↓
scenarioStoryboard (baseIntact / erosionCase / killChainCase 3 시나리오)
↓
visualDecisionPack + premortemQualityGate (10 gate 검증)
↓
finalDecision: killRiskScore + qualityGateStatus + decisionStatus 각 ledger 의 status (missing/ok/watch/risk) 가 누적돼 killRiskScore 산출. qualityGate weak 이면 decisionStatus=usable 진입 불가.
4. 반례·한계
- thesis 가 모호하면 (예: “좋아 보임”) fragilityMap 추출 실패 → assumption ledger 빈약.
- propagationPath 가 정량 ref 없이 순수 narrative 면 추적 불가능 — qualityGate 가 weak 판정.
- L2/L3 엔진 (c.analysis/c.credit/c.quant/c.macro 등) 호출 금지 — 호출 시 본 recipe 의 원자료 trace 정체성 위반.
- premortemQualityGate risk row 가 있으면 결론보다 차단 사유 우선 답안.
5. 후속 모니터링
- decisionStatus=operatorReview 시: 보강할 EngineCall 목록 + 막힌 gate 명시 후 다음 turn 에 보강 (
recipes.meta.thesisKillChain.evidenceCoverageAudit). - killRiskScore > 0.5:
recipes.meta.thesisKillChain.tripwireMonitor임계 활성 추적. - open falsifier 1+ 건:
recipes.meta.thesisKillChain.falsifierLedger매 분기 재측정.
대표 반환 형태
deepDive : list[dict]
| column | 의미 |
|---|---|
order | 실행 순서 |
step | 세부 ledger 이름 |
status | missing/ok/watch/risk |
rowCount | 해당 ledger row 수 |
evidence | 대표 근거 |
nextAction | 다음 조치 |
연계 절차
- recipes.meta.thesisKillChain.thesisIntake - thesis intake.
- recipes.meta.thesisKillChain.evidenceCoverageAudit - evidence coverage.
- recipes.meta.thesisKillChain.assumptionLedger - assumption ledger.
- recipes.meta.thesisKillChain.fragilityMap - fragility map.
- recipes.meta.thesisKillChain.triggerCatalog - trigger catalog.
- recipes.meta.thesisKillChain.propagationPath - propagation path.
- recipes.meta.thesisKillChain.tripwireMonitor - tripwire monitor.
- recipes.meta.thesisKillChain.falsifierLedger - falsifier ledger.
- recipes.meta.thesisKillChain.scenarioStoryboard - scenario storyboard.
- recipes.meta.thesisKillChain.visualDecisionPack - visual gate.
- recipes.meta.thesisKillChain.premortemQualityGate - final answer gate.
타협 없는 사용 기준
premortemQualityGate의 risk row가 있으면 결론보다 차단 사유와 nextAction을 먼저 쓴다.qualityGateStatus == "weak"이면decisionStatus == "usable"이 될 수 없다.operatorReview이면 확정 결론 대신 보강할 EngineCall 목록과 어떤 gate가 막혔는지 답한다.
기본 검증
- 공개 호출 블록은 AST parse가 되어야 한다.
- 공개 호출 블록은 L2/L3 호출 문자열을 포함하면 실패다.
- scenarioStoryboard에는 baseIntact, erosionCase, killChainCase가 모두 있어야 한다.
- premortemQualityGate는 10개 gate를 반환해야 한다.
- ready가 아닌 visualRef는 차트로 emit하지 않는다.
런타임
실행 환경별 호환성
| 환경 | 상태 | 비고 / 제한 |
|---|---|---|
| Local Python | supported | — |
| Server | supported | — |
| MCP | supported | — |
| Web AI | supported | — |
| Pyodide | limited | — |
실패 회피
흔한 실패 · 절대 금지
- 기존 companyDeepAnalysis로 우회
- scenarioStoryboard만 있고 tripwire가 없음
- open falsifier를 숨김
- c.analysis, c.credit, c.quant, c.macro, c.industry, c.story를 호출하지 않는다.
- thesis 지지 결론으로 답변을 시작하지 않는다.
- premortemQualityGate가 weak이면 final conclusion을 쓰지 않는다.
- blocked visualRef를 emit하지 않는다.