← Index
Source: docs/history/2026-08-24-rabbit-history.md (auto-generated by scripts/generate-docs-html.mjs — edit the .md, not this file)

2026-08-24 — rabbit 작업 이력

소스 문서: 두 갈래. (1) PoC 카드 작업 — 소스 문서 없음, jay가 카드를 지목해 직접 지시. 대상은 lib/poc-cards.ts. (2) Agentic Settlement 계획 작업 — docs/tasks/08-24-task-agent.md를 구현 대상으로 docs/tasks/current-plan.md 갱신. 전날 항목은 2026-08-21-rabbit-history.md.

PoC 카드 agentic-intent-veto("한도는 틀린 불변식이다")를 done 으로

Cause: jay가 "The budget is the wrong invariant" 카드를 done 으로 바꾸라고 지시.

Reasoning: aqua-shared-liquidity 때와 같은 판단이다 — 상태 플래그만 뒤집으면 카드가 자기 배지와 모순된다. 이 카탈로그의 done 은 oz-relayer 패턴(사고가 완결됐다는 뜻이지 코드가 돈다는 뜻이 아니다)이고, done 카드는 ① 정렬 기준인 date(완결 선언일)를 갖고 ② howTo 가 "무엇을 시작할지"가 아니라 "무엇을 정리했는지" 한 줄 요약이다. 이 카드의 howTo"Not yet scoped — …" 로 시작하고 있었다. purpose·howItWorks 는 손대지 않았다 — 적대적 판매자 사례와 인텐트 거부 설계는 미완의 계획이 아니라 결과물이기 때문이다.

Change: status: "soon""done", date: "2026-08-24" 추가, howTo/howToKo 를 완결 요약으로 재작성 — "한도가 왜 묶어야 할 대상이 아닌가: 100달러 중 50달러를 엉뚱한 것에 쓴 에이전트는 모든 검사를 통과했고, 온체인에는 지급거절이 없다". 해커톤 출처(Google Cloud × Solana, 2026-08)는 보존하되 "적대적 판매자 사례는 논증으로 가는 단계가 아니라 논증 그 자체"로 시제를 바꿨다.

Result: tsc --noEmit 통과. 상태 분포 done 6→7, soon 44→43. 날짜가 가장 최신이라 done 묶음 맨 앞으로 이동 — 렌더 순서 agentic-intent-veto → aqua-shared-liquidity → rwa-multichain → agent → oz-relayer → dvt → stake-concentration. 작업 중 확인한 것: 다른 세션이 ca436dc·3e02f7f·c6d9b15 세 커밋을 main 에 올려 카드가 51→53장이 되어 있었다(L1 zkEVM optional proofs, governance capture cost). 이 브랜치는 그 위에서 갈라져 나왔으므로 충돌 없이 함께 올라간다.

인피닛블록 Pre-A 공지: 기존 카드의 낡은 주장 정정 + 새 카드 cap-table-ceiling

소스 문서: 없음 — jay가 인피닛블록 대표의 Pre-A 마무리 공지(LinkedIn, 2026-08-24)를 붙여넣고 지시. 나흘 전 같은 회사 뉴스로 만든 카드는 fisheries-receivable-rail(2026-08-21 이력 참조).

Cause: jay가 인피닛블록 Pre-A 공지를 PoC 항목으로 요청. 공지 내용 — 전략적 투자자 Sh수협은행·iM뱅크·HFR(KOSDAQ 230240), 국내 은행 지분 약 30%, SK증권 포함 시 40%에 육박.

Reasoning: 먼저 기존 카드가 틀려졌다. 나흘 전 fisheries-receivable-rail의 purpose는 "은행 한 곳이 14.95%"를 축으로 세워져 있었는데, 공지는 은행이 둘 이상이고 합계 약 30%라고 말한다. 그대로 두면 사실 오류가 되므로 해당 문단에 갱신 문단을 붙였다. 다만 새 사실은 기존 독해를 무너뜨리지 않고 날카롭게 만든다 — 은행 합계가 30%인데 그중 하나가 14.95%라면 나머지도 같은 한도 바로 아래에 앉아 있다는 뜻이다. 그리고 그게 새 질문이고, 서비스 설계 카드에 들어갈 내용이 아니라서 카드를 뗐다. 기존 카드는 무엇을 만들 수 있나, 새 카드는 누가 쥐고 있나다.

Change:fisheries-receivable-railpurpose/purposeKo에 "2026-08-24 갱신" 문단 추가, cap-table-ceiling로 연결. ② 새 카드 cap-table-ceiling — "한도는 보유자별이고, 지배력은 그렇지 않다", status: "soon", 기존 카드 바로 뒤(같은 회사에서 갈라진 두 질문이라 붙여 둠). 내용은 승인 층위 표(개별 14.95% → 심사 미발동 / 두 번째 은행 → 동일 / 합계 30% → 보는 절차 없음), 이 수탁사가 표준 레일이 됐을 때 40% 계층이 무엇인지의 표, stake-concentration 방법을 주주명부에 적용하는 측정 5단계.

Result: 카드 53→54장 렌더, 키 57개 중복 0, tsc --noEmit 통과. 카드가 이 카탈로그의 반복되는 형태에 또 하나를 더한다stake-concentration(검증인), aqua-shared-liquidity(오더북), dkg-resharing(키 위원회)에 이어 주주명부에서 같은 것을 찾았다: 겉보기엔 독립 단위 N개인데 실제 독립성의 단위는 더 작다. 의도적으로 넣은 안전장치 둘: 첫째, 담합 주장이 아님을 본문에 못 박았다 — 상관된 행동에 음모는 필요 없고 공유된 유인이면 충분하며, 같은 감독기관이 그것을 제공한다(검증인이 같은 클라우드를 쓰는 것과 같은 논리). 둘째, howTo의 첫 작업을 만들기가 아니라 질문으로 두었다 — 공동보유·동일인 같은 개념이 서로 무관한 은행들의 동일 대상 보유에 미치는지 먼저 확인해야 하고, 미친다면 이 카드가 말하는 빈칸은 존재하지 않는다. 약 30%가 공시가 아니라 회사 진술이라는 점도 열린 질문에 적어 두었다.

뉴스 저장소를 R-I로 1급 항목화 — 증거는 프롬프트가 아니라 행(row)에 있어야 한다

Cause: jay가 Setting & Review 페이지 요구를 확장했다 — 뉴스 입력창 + 입력한 뉴스 목록 UI + LLM이 참조할 수 있는 저장(DB 또는 파일). 논의 과정에서 LLM 추정을 유지하기로 확정하고(J2 fork #3 재확인), 뉴스가 그 추정의 입력이 되는 형태를 택했다.

Reasoning: 계획서의 estimate 단계는 원래 마켓 질문만 읽었다. 그러면 LLM의 p는 지식 컷오프에 얼어붙은 사전확률이고, 그 이후 모든 정보를 흡수한 라이브 호가와 경쟁한다 — 정의상 시장이 이기고, 규칙이 계산하는 edge는 사실상 모델이 얼마나 낡았는지의 측정치가 된다. 뉴스가 그 구멍을 닫는다. 구현 형태에서 한 가지를 명시적으로 갈랐다: 텍스트에어리어를 프롬프트에 붙이는 방식이 아니라 영속된 행에서 읽는 방식. 저널 행이 *"cited: Reuters 13:47"*이라고 적는 순간 그 증거는 일주일 뒤에도 해석돼야 하고, 프롬프트 문자열에만 있었다면 입력 박스를 비우는 순간 과거 추정 전부가 감사 불가능해진다 — 저널의 감사 가능성이 이 페이지 산출물의 전부다. 그리고 선을 하나 그었다: 헤드라인 입력 = 증거 제공(정당), 입장 입력 = 결론 조종(부당). 앞선 논의에서 나온 "Custom Context / Analyst Note" 반대 의견이 이 구분으로 해소된다. 부수 효과로 mandate 상한의 성격이 바뀐다 — 지금까지는 에이전트가 멍청한 것을 막았지만, 열린 뉴스를 읽으면 속는 것까지 막는다. 프롬프트 인젝션 표면이 결함이 아니라 논지의 실연이 된다.

Change: current-plan.md — ① Full matrix 재구성: Est. 컬럼 제거, 저장소별로 나뉜 Rabbit/Verex — what to implement 두 컬럼을 하나로 병합(# 접두사가 이미 저장소를 식별하므로), seam 쌍을 인접 배치(⇄ V-A / ⇄ R-B, ⇄ V-D / ⇄ R-G)하고 그 대가로 표가 작업 대기열이 아님을 머리말에 명시. ② R-I 신규(NewsItem 모델 + 입력 폼 + 목록, origin: operator | feed) — R-D2가 아니라 새 글자를 써서 기존 R-A…R-H 참조를 하나도 옮기지 않았다. ③ R-D는 { p, rationale, cited }로, R-E는 인용 증거를 행에 싣도록 수정. ④ The scenario 표의 Estimate·Record 행, At a glance 항목 수(8→9), Phase 2 빌드 순서(R-I 삽입, ~2–3d → ~3–4d)를 함께 갱신. ⑤ O7 신설(뉴스 스코프·노후화 — 마켓 단위인가 전역 태그인가, 항목이 만료되는가). ⑥ What this will not prove에 한 줄 추가 — 손으로 채운 저장소이므로 에이전트가 뉴스를 발견하는 것은 증명하지 않는다. 코드 변경 없음.

Result: matrix 15행(verex 6 / rabbit 9), 문서 diff +41/−30. J2 fork #3(하이브리드: LLM 추정 → 결정론적 규칙)은 유지·강화됐고, 앞서 검토했던 모멘텀 게이트("1시간 전 대비 10%")는 폐기가 아니라 Phase 3로 이동 — 무인 루프가 있어야 LLM 호출 비용을 막을 대상이 생기므로 Phase 2에서는 할 일이 없다. 남은 결정(jay): O7(뉴스 스코프·만료), 그리고 여전히 Phase 2를 막고 있는 O1(rabbit이 verex 주문 서명 코드를 얻는 경로).