Skip to Content
플랫폼 아키텍처Artifact 모델 · PARA 지식

Artifact 모델 · PARA 지식 레이어

[2026-06-06 방향 갱신] PARA 의 상위 설계 철학은 /architecture/para-os 로 정리됨 (PARA=조직론, dispatch=“집”/link-default, governance 결정로그, 죽은 딜 본질). 본 페이지의 dispatch copy-with-provenancelink-default 로 revise (D-bp-para-1), Area=workspace-container → 조직론 노드 + R/A 내포. 단 저장·citation·schema discovery 세부는 본 페이지가 유효한 reference.

[2026-06-06 구현 토폴로지 — D-bp-rust-1] Artifact 레이어는 Blueprint 의 첫 Rust organ 으로 이관된다 (TS→Rust strangler-fig). 신규 substrate 서비스(Rust+axum)가 blueprint-postgressubstrate schema 에서 artifact/artifact_link/mcp_schema 를 소유 — workspace_id·entity_id 는 opaque 외부 ref(Artifact-scoped 경계), Workspace+paraLayer SoR 는 Prisma public 잔류. 모델 교정(처음부터 1급): home/link(“집”) = artifact_link 가 멤버십 본체 + annotation(Area별 해석), parent_artifact_idderived_from_id(진짜 파생만), 2-level scope(personal/shared), citation 8종(아래 7종 + gate.decision D-gate-2). 아래 본문의 Prisma SQL·“copy default”·“7 kind” 서술은 현 TS(M6 Stage-1) 기록이며 cutover(ADR §6 S3) 전까지 병존 — 권위 = D-bp-rust-1 + ADR docs/adr/blueprint-rust-migration.md.

한 줄 정의

Artifact = Blueprint 의 typed fact unit. source 문서가 아니라 agent 가 직접 read 하는, 사전 추출된 사실 한 조각. per-field schema + per-field citation + confidence + audit trail + paraLayer scope 를 갖춤. Blueprint Postgres 거주 (D-config-16), large content / 원본 파일은 OneDrive · frame · hive · Teams · mail 등 원위치 유지하고 artifact 는 stable ID 로만 참조 — data 중복 0.

왜 필요한가

현재 Blueprint 의 knowledge layer 는 ctx skill  의 markdown PKM 한 단계뿐. agent 가 grep + cat 으로 markdown 본문을 읽어 사실을 추출하는 방식이라 다음이 모두 불가능:

격차현재 (markdown only)결과
Cross-functional query”portfolio cos 중 Q4 churn > 15%” 를 grep 으로 못 풀음Area query 가 LLM 토큰 폭증
Field-level provenance사실 한 줄의 출처 추적 불가 (markdown 안에 인용 표기 의무 X)citation chain 끊김, IC 결정의 audit 불가능
Time-travel”Project Deal X 가 지난 주 이후 무엇 바뀌었나” 답 불가의사결정의 시점형 archaeology 불가
결정론적 충돌 해소두 agent 가 같은 markdown 동시 편집 시 last-write-wins사실 무결성 보장 X
Multi-agent concurrent read-writemarkdown lock 없음동시 작업 시 race

격차의 본질: 인프라는 dev-co level (per-customer macmini isolation · blue/green deploy · OAuth-RP · restic backup · 7-stack 응집) 이지만 knowledge layer 만 single-operator PKM tool 수준에 머문다. AI-native fund 가 자기 의사결정의 SOT 로 쓰려면 typed fact layer 가 필요.

PARA 와의 관계

PARA (Tiago Forte) 의 Project / Area / Resource / Archive 4 layer 각각에 typed artifact 집합이 거주. PARA layer 가 artifact 의 lifecycle 과 visibility 를 결정.

Layer역할대표 artifact 유형
Project기한 + goal cross-functional 컨테이너 (IC for Deal X, Fund 2 fundraising, 2026 Q3 LP report)ICMemoArtifact · BoardMeetingNotesArtifact · LPCapitalCallArtifact
Areafunction 별 지속 reference state (CFO · IR · Sourcing · Portfolio). read 빈도 높음, 끊임없는 갱신PortcoBoardKPIArtifact (Portfolio Monitoring)
Resource재사용 가능한 versioned framework + templateSectorFrameworkArtifact
Archive기한 지난 Project + outdated resource. pattern detection corpus위 모든 종류의 frozen snapshot

Project 가 closeout 되면 그 안의 artifact 들이 typed fact 단위로 Area / Resource / Archive 로 field-level dispatch. M3 PARA Dispatch 가 현재 workspace-level (file-level) provenance (sourceWorkspaceId / sourceArtifactPath / copiedAt, D-bp-entity-2) 까지 land — Artifact 는 그 위에서 field-level 진화.

Cross-PARA query 예시

현재 ctx markdown 으로 불가능하지만 artifact layer 위에서 자연:

  • “portfolio cos 중 Q4 churn > 15%” — Area query (PortcoBoardKPIArtifact.confidence ≥ 0.8)
  • “과거 deal 중 현재 Sentry 와 IRR trajectory 비슷한 것” — Archive cross-Project pattern match
  • “portco Y 가장 최근 revenue, citation 포함” — Area lookup with citation chain
  • “Project Deal X 가 지난 주 이후 무엇 바뀌었나” — time-travel diff
  • “LP X 와 마지막 comm 후 변한 portfolio fact” — IR Area × Portfolio Area cross-query

데이터 모델

Blueprint Postgres 의 Artifact + Citation 테이블 (Prisma). schema 는 versioned (schema_id FK), content 는 JSONB (schema 별 typed field), citations 는 JSONB array.

CREATE TABLE artifact ( id uuid PRIMARY KEY, schema_id text NOT NULL REFERENCES artifact_schema(id), -- MCP discovery schema (e.g., `[email protected]`, `[email protected]`) 또는 free-form (`freeform.llm@auto`). MCP authority — Blueprint 는 registry 아니라 discovery/mirror workspace_id uuid NOT NULL REFERENCES workspace(id), entity_id text NOT NULL REFERENCES entity(slug), -- D-bp-entity-3 NOT NULL para_layer text NOT NULL CHECK (para_layer IN ('PROJECT','AREA','RESOURCE','ARCHIVE')), content jsonb NOT NULL, -- schema 별 typed field citations jsonb NOT NULL DEFAULT '[]'::jsonb, -- per-field citation array confidence numeric(3,2) NOT NULL DEFAULT 1.0, -- 0.00 ~ 1.00 audit_trail jsonb NOT NULL DEFAULT '[]'::jsonb, -- propose/review/confirm/edit events parent_artifact_id uuid REFERENCES artifact(id), -- PARA dispatch fork chain created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now(), archived_at timestamptz -- soft delete (Archive 진입 시 set) ); CREATE INDEX artifact_workspace_idx ON artifact (workspace_id); CREATE INDEX artifact_entity_para_idx ON artifact (entity_id, para_layer); CREATE INDEX artifact_schema_idx ON artifact (schema_id); CREATE INDEX artifact_parent_idx ON artifact (parent_artifact_id) WHERE parent_artifact_id IS NOT NULL;

audit_trail 의 한 entry 는 { event, actor, ts, diff?, prompt? } 형식. 변경 history 가 row 안에 누적되며 updated_at 만 갱신 — pg_jsonschema validation 으로 무결성 가드 (확장 add-on).

Citation 형태

Citation 은 외부 source 의 stable ID 만 가짐. data 자체는 원위치 (OneDrive driveItem / frame query / hive ID / index DB ref / gate decision cert / Teams chat+msg / mail thread+msg / external URL) — artifact 에 중복 0. 8 kind:

// content 의 field 별 1+ citation { "field": "revenue_q4_2025", "citations": [ // 1) OneDrive Excel cell { "kind": "onedrive", "drive_item_id": "01ABCD...", "version": "v3", "sheet": "Q4 Recurring", "cell": "B14" }, // 2) frame typed query (회계 도메인) { "kind": "frame.balance", "entity": "axec", "account": "4001", "period": "2025-Q4", "queried_at": "2026-05-22T03:14:00Z" }, // 3) hive employee record (HR 도메인) { "kind": "hive.employee", "entity": "axev", "employee_id": "uuid-...", "queried_at": "2026-05-22T03:14:00Z" }, // 4) Teams chat message { "kind": "teams.message", "chat_id": "19:...", "message_id": "1700000000000" }, // 5) Mail thread message { "kind": "mail.thread", "thread_id": "AAMkAD...", "message_id": "AAMkAD...." }, // 6) External web fetch (snapshot 시점 명시) { "kind": "external.web", "url": "https://...", "fetched_at": "2026-05-22T03:14:00Z" }, // 7) index typed query (투자 도메인 — D-index-6) { "kind": "index.financial_output", "deal_id": "uuid-iippo", "model_id": "uuid-iippo-v7-base", "scenario_code": "weighted", "output_code": "irr_loss_included", "computed_at": "2026-05-06T10:00:00Z" }, // 기타 index.* sub-kinds: index.deal · index.fund_investment · // index.dd_finding · index.ic_decision · index.portfolio_kpi · // index.financial_model · index.valuation · index.lp_comm 등 // 8) gate 거버넌스 결정 (gate.decision SoR 의 mirror — D-gate-2) { "kind": "gate.decision", "decision_id": "uuid-...", "cert_id": "modusign-...", // 모두싸인 서명완료 cert (citation only) "decided_at": "2026-06-06T01:00:00Z" } ] }

각 kind 에 대응하는 citation resolver (src/lib/artifact/citations/) 가 stable ID 로 실 데이터를 fetch + cache. Trinity dashboard (Workspace × OneDrive × TeamsChat) 의 진화형 — 기존 GUID 3축 → field 단위 citation chain.

MCPs 와의 분리

별 트랙. MCP = domain-specific data system, Artifact + PARA = Blueprint 내부 work/knowledge organization meta-layer.

Layer책임
frame MCP회계 도메인 데이터 (journal, balance, period) — schema-per-entity Postgres
hive MCPHR 도메인 데이터 (employee, payroll, leave) — frame mirror
magnet / stream / 기타 MCP각 도메인 데이터 시스템
Artifact + PARA (Blueprint)위 MCP 들이 발행하는 사실을 typed fact 로 organize. citation 으로 stable ID 참조

Artifact 가 frame 의 query_balance 결과를 자기 안에 복사하지 않음. citation { kind: "frame.balance", entity, account, period, queried_at } 만 보유. agent 가 artifact read 시 resolver 가 frame MCP 를 다시 호출하거나 cache 사용. MCP backend 가 sole owner — artifact 는 reference + interpretation 의 home.

Schema authority 분산

Schema 의 권위는 MCP service (frame · hive · magnet · stream · Matrix · …). 각 MCP 가 자기 도메인 schema 를 정의하고 /schemas endpoint 로 노출. Blueprint 는 그 schema 들을 discovery / mirror — fetch + cache + version. registry 아님. 새 MCP 추가 시 자기 schema 를 가지고 들어오므로 Blueprint 측 변경 0.

MCP 가 정한 규칙이 없는 영역 (IC memo / Board meeting / Trip / LP comm / Sector framework 등 free-form) 은 LLM 자율 — extract 시점에 ad-hoc typed structure 결정하거나 free-form content + citation/confidence wrap 으로 보존. AXE 가 미리 schema 다 정의할 필요 없음.

영역Schema authority예 schema_id
회계 (journal, balance, period, account)frame MCP[email protected] · [email protected]
HR (employee, payroll, leave, compensation)hive MCP[email protected] · [email protected]
투자 (deal, fund_investment, financial_model, dd_finding, ic_decision, portfolio_kpi, valuation, lp_comm)index MCP[email protected] · [email protected] · [email protected] (14 schemas)
마케팅 (campaign, channel, lead)magnet MCP[email protected]
S&OP (forecast, plan)stream MCP[email protected]
모니터링 (health, alert)Matrix MCP[email protected]
관계망 (person, interaction, relationship)cortex MCP[email protected] · [email protected]
Board meeting / Trip / Sector framework (도메인 외 free-form)LLM 자율freeform.llm@auto 또는 skill-defined ([email protected])

/schemas endpoint contract (각 MCP 가 표준화):

GET /schemas { "service": "frame", "version": "1.2.0", "schemas": [ { "id": "[email protected]", "fields": { ... }, "description": "..." }, { "id": "[email protected]", "fields": { ... }, "description": "..." } ] }

Blueprint 의 src/lib/artifact/schemas/ 가 각 MCP 의 /schemas 를 주기적으로 fetch → artifact_schema 테이블 upsert. 변경 감지 시 새 version row 추가 (기존 row 미변경 — 기존 artifact 의 citation chain 보존).

ctx skill 의 진화

대체 아님, 진화. 기존 ctx (agent session delta → markdown append + parent KB propagation) 는 artifact store 의 curation interface 로 재정의.

source (OneDrive doc / frame query / Teams chat / mail thread / web fetch) ingest (skill: ingest, 별도 skill 신설 가능) typed extraction (schema-aware LLM extract, e.g., ICMemoArtifact §재무) proposed fact (audit_trail entry: { event: "propose", actor: "agent", ... }) ctx review (user confirm / edit / reject — UX 가 markdown diff + citation hover) confirmed fact + audit (audit_trail entry: { event: "confirm", actor: "user", ... }) agent reads via Query API (grep 안 함 — typed query + citation chain)

Markdown 은 보조 — review UX 의 diff 표면 + archive 보존 + emergency cat (DB 장애 시). primary read path 는 Query API.

Markdown → artifact 점진 migration (AI-assisted)

기존 markdown PKM (ctx/MEMORY.md 의 누적 entry, project_.md, feedback_.md 등) 은 목표는 전면 artifact 화. 단 mass migration 안 함 — 항목 단위 AI-assisted ctx review 로 점진:

기존 markdown 파일 1개 (예: ctx/MEMORY.md 의 한 entry) LLM 이 read → typed extract 시도 (MCP discovery schema 매칭 또는 LLM 자율 free-form) proposed artifact (audit_trail: { event: "migration_propose", actor: "agent", source_markdown: "ctx/MEMORY.md#L42-58", ts: "..." }) ctx review (사용자 confirm / edit / reject — UX 가 source markdown 발췌 + extracted typed fact 나란히) confirmed artifact + 기존 markdown entry 에 `<!-- migrated: <artifact_id> -->` archive 마킹 markdown 파일 전체 entry 가 모두 migrate 되면 그 파일 자체 deprecation 신규 fact 는 처음부터 artifact 로 — markdown append 안 함

핵심 원칙:

  • 점진 — 1주에 1 파일 또는 1 batch (10 entry) 수준. 인간 정비 cadence 안에서
  • AI-assisted — LLM 이 자동 extract, 사람은 confirm 만 (인간 개입 최소화)
  • archive 마킹 — migrated entry 가 어떤 artifact 로 변환됐는지 trace 보존 (<!-- migrated: <artifact_id> -->). 이후 audit / 재migration 가능
  • 신규 fact = artifact 처음부터 — 마이그레이션 완료 전이라도 새 사실은 artifact 로 직접 들어옴 (markdown append 옵션 안 줌)

Workspace lifecycle

PARA 4 layer 는 Workspace 의 paraLayer 컬럼 (PROJECT / AREA / RESOURCE / ARCHIVE) 으로 표현. 각 Workspace 는 정확히 1 paraLayer 보유. lifecycle 의 핵심: Dispatch ≠ Close — 두 활동 분리.

4 paraLayer transition

create(paraLayer=PROJECT|AREA|RESOURCE) ┌──────── PROJECT (working) ─────────┐ │ │ │ dispatch (anytime — copy/link) │ │ artifact/file 을 다른 Workspace 로 │ │ reclassify (any-to-any) │ │ │ └────── close (paraLayer 변경 1회) ────┘ ┌─────────────────┼─────────────────┐ ▼ ▼ ▼ AREA RESOURCE ARCHIVE (현재형) (재사용) (시점형) │ │ │ │ reclassify bidirectional 가능 │ │ (ARCHIVE resurrect 포함) │ └─────────────────┴─────────────────┘

규칙:

  • create — paraLayer 선택 (PROJECT 가 default, AREA/RESOURCE 도 직접 가능)
  • dispatch (anytime) — Project 진행 중에도 file/artifact 를 다른 Workspace 로 흘려보냄. 3 mode: link(기본, 집 배정) / copy_curate(재사용본 저작→Resource) / move(소모성→Archive) — 아래 §Dispatch 3 mode
  • close (한 번)workspace.paraLayer 를 한 번 변경. PROJECT → ARCHIVE (보통) 또는 PROJECT → AREA/RESOURCE (reclassify). audit trail 에 close event 기록
  • reclassify (bidirectional) — ARCHIVE → AREA 도 가능 (resurrect). 단 audit_trail 보존 — 누가 언제 왜 resurrect 했는지

Dispatch 3 mode — link(기본) / copy-curate / move (D-bp-para-1)

dispatch = “집(home)” 배정 (para-os §6). link 가 기본 (artifact 몸통 1 + 집 N). 구 “copy-default”(copy-with-provenance)는 폐기 — copy 는 재사용본 저작 예외만.

Mode의미사용 사례
link (기본)artifact_link 에 (artifact_id, workspace_id, link_type, annotation, linked_at, linked_by) row 추가. artifact 본문 1 row, 여러 Workspace 가 share. annotation = Area별 해석 레이어같은 PortcoBoardKPI 를 Portfolio Area + IC Project + LP Project 가 동시 참조 (각 Area 다른 annotation)
copy-curatemethod/지식을 새 Resource artifact 로 저작 (사실 복제 아님). lineage 는 derived_from_id(진짜 파생만, 구 parent_artifact_id)죽은 딜 경쟁분석 → 섹터 Resource 큐레이션, 펀드 결성 템플릿 1호→2호
move소모성 working corpus → Archive → 폐기 (workspace 레벨 + OneDrive trinity-sync)LoI 초안 v1~v5, dataroom 원본, 회의 스크래치

artifact_link 테이블:

CREATE TABLE artifact_link ( artifact_id uuid NOT NULL REFERENCES artifact(id) ON DELETE CASCADE, workspace_id uuid NOT NULL REFERENCES workspace(id) ON DELETE CASCADE, link_type text NOT NULL CHECK (link_type IN ('reference', 'sub_project', 'cross_link')), linked_at timestamptz NOT NULL DEFAULT now(), linked_by text NOT NULL, -- user.id or agent.id PRIMARY KEY (artifact_id, workspace_id) ); CREATE INDEX artifact_link_workspace_idx ON artifact_link (workspace_id);

dispatch API (substrate, ADR §6 S1):

  • dispatch_artifact(artifact_id, to_workspace_id, mode="link"|"copy_curate"|"move", annotation?)link(기본) = artifact_link row INSERT(+annotation), copy_curate = 새 Resource artifact + derived_from_id, move = workspace 레벨 + OneDrive 이동
  • unlink_artifact(artifact_id, workspace_id) → link 해제 (artifact_link row DELETE). copy_curate 산출은 별 artifact 라 unlink 대상 아님

Area cardinality + AXEV 현재 seed

Area 1개 / function: 중복 function 의 Area 가 둘 생기지 않도록 UI/LLM 가드. 새 Area 만들기 시도 시 기존 Area 와 function overlap 검출 → “기존 <Area name> 와 merge 권고” 모달. operator 가 override 시도 시 audit 기록.

AXEV 현재 Area seed (2026-05-23):

AreaFunction비고
Finance회계 / 재무 / cash flow / 예산frame MCP 의 data 가 주
BOD이사회 / 결의 / 거버넌스resolution + meeting note
Legal계약 / 컴플라이언스 / 등기법무 사항
LicenseAC (Advisory Committee) 라이센스 관리AC 관련

Resource = 0 (아직 없음). naturally emerge — 첫 Project close 시점 또는 첫 framework consolidate 시점에 생성.

UX 흐름 4 페이지 분리

UI 측면에서 paraLayer 별 entry point 를 분리 (cross-PARA query 는 별 surface):

URL역할표시
/axe/projects진행 중 Project 리스트 + close buttonPROJECT only
/axe/areasfunction 별 living knowledge 그리드 + last-updated heatmapAREA only
/axe/resourcesreusable template/frameworkRESOURCE only
/axe/archive시점형 의사결정 archaeology + searchARCHIVE only

각 page 에 “+New Workspace” 시 paraLayer 가 그 page 에 fix (PROJECT page = 새 PROJECT, AREA page = 새 AREA …). 4 page 위에 cross-PARA query 는 Knowledge Overview dashboard 에서 진입.

Workspace create 시 paraLayer 선택 UI (mock):

┌─ New Workspace ──────────────────────────────┐ │ Name: [_______________________________] │ │ Entity: [axev ▾] │ │ paraLayer: ( ) Project ( ) Area │ │ ( ) Resource ( ) Archive │ │ │ │ ▶ Target close date (optional, PROJECT only) │ │ [____________] │ │ │ │ [Cancel] [Create] │ └──────────────────────────────────────────────┘

OneDrive 폴더 mirror

trinity-sync 가 Workspace 의 paraLayer 변경을 OneDrive 폴더 이동으로 mirror. 2 시점 에 file move 발생:

시점동작
dispatch (file 별)artifact 에 attached 된 file 1개를 다른 Workspace 로 dispatch 시, 그 file 만 destination Workspace 의 OneDrive 폴더로 부분 이동 (copy mode = OneDrive copy, link mode = OneDrive shortcut/symlink)IC artifact 의 spreadsheet 1개를 Portfolio Area 로 link
close (workspace 전체)Workspace.paraLayer 변경 시 그 Workspace 의 OneDrive 폴더 전체가 destination paraLayer 의 root 로 이동/Ventures/1. Project/Deal X//Ventures/4. Archive/Deal X/

trinity-sync 가 OneDrive driveItem 이동 trigger + Blueprint Workspace.drivePath 업데이트. paraLayer 변경 자동 propagation.

Knowledge Overview dashboard

회사 지식체계 P → A/R → A 흐름을 한눈에 조망하는 별도 page (/axe/knowledge). 4 paraLayer page 위에 cross-PARA view.

3-pane layout

┌─────────────────────────────────────────────────────────────┐ │ Knowledge Overview (axev) │ ├──────────────────┬──────────────────┬───────────────────────┤ │ Layer counts + │ Sankey: PARA │ Cross-PARA query 입력 │ │ state │ flow (지난 30일) │ │ │ │ │ "portfolio cos 중 │ │ PROJECT: 12 │ PROJECT │ Q4 churn > 15%" │ │ - active: 8 │ ↓ dispatch │ │ │ - closing: 2 │ copy: 23 │ [Query] [Save] │ │ - stale: 2 │ link: 15 │ │ │ │ ↓ │ 결과: 3 artifact │ │ AREA: 4 │ AREA RESOURCE │ - portco Y (0.18) │ │ - Finance │ ↓ │ - portco Z (0.17) │ │ - BOD │ ↓ reclassify │ - portco W (0.16) │ │ - Legal │ 3 (manual) │ [view citation] │ │ - License │ │ │ │ │ ARCHIVE: │ │ │ RESOURCE: 0 │ close: 5 │ │ │ ARCHIVE: 27 │ resurrect: 1 │ │ └──────────────────┴──────────────────┴───────────────────────┘

Area health alert

각 Area 의 last-updated timestamp 기반:

  • stale (30일 무변경) — Area 카드에 yellow ⚠ banner
  • inactive (90일 무변경) — Area 카드에 red ⏸ banner + “이 Area 가 living 인지 재평가” 알림

운영자 review queue 에 자동 추가.

추가 view (drill-down)

View표시
PARA flow over time월 별 P→A/R/A dispatch count 추세 (lifecycle 활성도)
Artifact graphcitation chain 의 graph 시각화 (artifact ↔ citation source) — 의존성 spot
Provenance trace1 artifact 선택 → 그 artifact 의 모든 dispatch / link / migration history (audit_trail timeline)

의도

Knowledge Overview 의 자체 가치 — 회사의 fact health 가 한눈에. PARA OS 가 단지 “파일 정리” 가 아니라 살아있는 지식체계라는 것을 운영자/직원이 daily 로 확인할 surface. inactive Area, dispatch 끊긴 흐름, citation chain 깨진 artifact 가 시각적으로 detect 됨.

MCP tool 분리 (paraLayer 별)

UI 4 page 분리와 같은 원칙으로 MCP tool 도 paraLayer 별 분리. LLM intent clarity — tool name 자체에 paraLayer 의도 드러남.

Workspace level tools

Tool역할
list_projects(entity?, state?)PROJECT only, state = active / closing / stale
list_areas(entity?)AREA only, last_updated 정렬 default
list_resources(entity?)RESOURCE only
search_archive(entity?, query, since?, until?)ARCHIVE only, time-travel + full-text
create_workspace(paraLayer, name, entity, target_close_date?)신규 (4 paraLayer 어디든)
close_workspace(id, dispatch_plan?)paraLayer 변경 1회 + 동시 dispatch 가능
reclassify_workspace(id, new_paraLayer)bidirectional reclassify (ARCHIVE resurrect 포함)

Artifact level tools

Tool역할
get_artifact(id)단일 artifact + citations + audit_trail
list_artifacts(workspaceId, schema_id?, paraLayer?)filter by workspace / schema / paraLayer
propose_artifact(workspaceId, schema_id, content, citations, confidence?)agent propose (audit_trail event: “propose”)
dispatch_artifact(artifact_id, to_workspace_id, mode="copy" | "link")copy or link
unlink_artifact(artifact_id, workspace_id)link 해제 (copy 는 별 artifact 가 됐기 때문 미적용)

Knowledge query

Tool역할
query_knowledge(query, paraLayers?, entity?, since?)KnowQL-lite — cross-PARA / time-travel / confidence filter. agent 가 grep 안 함

이유: list_workspaces(paraLayer=PROJECT) 같은 generic tool 보다 list_projects 가 LLM 의 intent 명확. plan 단계 토큰 절감 + 잘못된 paraLayer 호출 가능성 차단.

LLM 호출 + Access 정책

artifact 의 두 가지 access pattern 결정:

Layer 1: LLM 호출 = Max plan OAuth 우선

Artifact extraction / proposing / review 의 LLM 호출은 Claude Code OAuth token (Anthropic Max plan) 우선. Anthropic API direct (per-token billing) 은 fallback / 대량 batch 용.

Surface호출 방식
Teams botClaude Code OAuth (Max plan session)
로컬 Claude Code CLIOAuth (operator session)
웹 UI (review queue, ctx review)OAuth (Max plan, 사용자 본인 session)
대량 batch (한 번에 1000+ artifact extraction)Anthropic API direct fallback
vision-heavy ingest (pdf/pptx 대량)Anthropic API direct (기존 패턴 vision_ingest.py)

비용 측면 — per-token incremental cost 0 (Max plan 안 무제한). 대량 batch / vision-heavy 만 per-token billing 노출.

기존 패턴 정합vision_ingest.py 의 API direct 호출은 대량 vision 처리 한정. 같은 원칙을 artifact extraction 으로 확장.

Layer 2: Access = MCP tool 위주, REST 최소화

Artifact access 의 primary layer 는 Blueprint MCP tool (위의 query_knowledge / get_artifact / dispatch_artifact 등). 별도 REST endpoint proliferation 회피.

SurfaceAccess
Claude Code (CLI / Teams bot / 웹 agent)Blueprint MCP tool
외부 agent (third-party MCP client)Blueprint MCP tool (OAuth-RP)
웹 UI (Blueprint Next.js)최소 REST endpoint (curation UX 용)
Cross-service backend (frame ↔ Blueprint event consumer)Postgres direct (격리 X — 같은 instance)

이유: MCP tool surface 한 곳으로 통합 = audit 한 곳, OAuth-RP 한 번 (D-bp-mcp-1), 권한 모델 한 번 (D-bp-entity-17 EntityRole). REST endpoint 가 늘면 권한 모델 중복 + audit silo + version drift.

저장 결정 + 대안 비교

Primary storage = Blueprint Postgres 16 (D-config-16 cutover 완료). 신규 인프라 0. per-customer macmini isolation (D1) 안에서 Blueprint Postgres 동거.

Monolith first — 별도 KnowledgeStore service 분리 안 함. Blueprint 가 이미 PARA OS home, surface 분리는 추출 필요 시 나중.

대안거절 사유
Graph DB (Neo4j)citation chain 이 graph 형태이긴 하나 query workload 가 hash-lookup + filter 위주. Postgres JSONB GIN index 로 충분. 신규 dependency 추가만 부담
Vector DB (Qdrant) primary의미 검색은 필요 시 pgvector extension 으로. primary 로 두면 trans actional consistency / FK constraint / audit trail 다 잃음
ClickHouseanalytical query OLAP 강점은 있으나 artifact 는 row count < 100k 수준의 transactional/curation workload. column-store 이점 X
MongoDBJSONB 의 동등 기능 + sharding 미필요 + frame/hive 와 Postgres 일관성. 별 DB 추가 부담
SQLite (file-per-workspace)concurrent read-write 모델 (multi-agent) 미적합. Postgres advisory lock 으로 자연

확장 (필요 시 add-on)

기본 Postgres 위에 Phase 별 add-on 가능. 모두 신규 인프라 없이 extension install 수준.

확장활성화 조건
pgvectorsemantic search (artifact content / citation text embedding) 필요 시. Stage 2 의 cross-PARA query 가 정확도 부족하면 도입
pg_jsonschemacontent + audit_trail JSONB validation 강제 시. schema_id 별로 JSON Schema 등록 → INSERT/UPDATE 시 reject
temporal_tables (또는 timestamptz column + soft archive)time-travel query 정확도 필요 시. Stage 1 까지는 updated_at + archived_at 으로 충분

단계 (활성화 조건 충족 시 — 활성화 자체는 다음 결정)

M3 PARA Dispatch land + M1 multi-tenant 종료 가 자연스러운 entry. 단 평행 진행 가능 — 외부 surface 영향 0.

Stage산출기간
0. PoCfilesystem-only 첫 schema (ICMemoArtifact §재무) — DB 변화 0. ctx 의 markdown diff UX 위에 typed extraction proof~3일
1. DB 진입Artifact + Citation Prisma migration, KnowQL-lite HTTP endpoint, Blueprint UI 탭 1개~3-4주
2. Full integration5종 schema (IC / Board / LP / Sector / KPI) active, PARA dispatch field-level engine, ctx 진화 (curation mode)~3-4주

Open implementation decisions

본 페이지의 design 위에 implementation 단계에서 결정할 항목들. 각 항목마다 framework (방향성) 만 명시, 구체 결정은 deferred. Implementation 단계에서 각 항목 결정 시 D-bp-artifact-N 추가 등재.

#항목Framework (방향성)
B1Agent ↔ artifact API contractAgent (Claude / Teams bot) 의 artifact propose 권한은 implementation 시 D-bp-entity-17 EntityRole 위에 layer 추가 검토. propose 는 ctx review queue 경유 default — 직접 confirmed 진입은 별 권한 grant 필요
B2Schema evolution 호환성Schema versioning: MCP source schema 변경 = MCP 의 도메인 정책 따름 (frame/hive 각자 backward compat 책임). free-form artifact 는 schema_id 마다 append-only 보존 (freeform.llm@auto-2026-05 같은 timestamped variant). forced migration 도구는 implementation 시 결정
B3Concurrent write 정책optimistic lock (updated_at version check) + audit_trail conflict event. detail TBD — 첫 multi-agent concurrent write 발견 시 결정
B4Time-travel 정확도Stage 1 = updated_at filter (근사). Stage 2 = audit_trail event replay. snapshot table 신설 여부는 정확도 정당화 시점에 결정 (e.g., IRR 결정론 검증이 시점 정확도 요구할 때)
B5Failure modes (degradation)graceful degradation 원칙: (a) LLM extraction 실패 → markdown fallback (raw content + warning); (b) Citation resolver 실패 → cached value + warning chip; (c) Dispatch partial fail → savepoint rollback (all-or-nothing). detail TBD
C1Cross-customer aggregationper-customer macmini isolation (D1) 의도된 격리 유지. meta-layer aggregation (예: AXE 가 운영하는 N customer 의 PARA flow 집계) 미설계. 외부 GP 명시 요구 시 재검토
C2axec PARA 구조axec / axev / sys entity 각각 자체 PARA tree. axec Area 정의는 axec workflow 진행 시 자연 emerge (현재 axec workflow 비중 낮음 — axev 가 primary)
C3Resource 외부 import외부 framework (e.g., Atomico VC playbook, McKinsey portfolio template) 의 RESOURCE 등재는 implementation 시 IP / license 정책 합의 후 결정. v1 = AXE 내부 사용만
C4Multi-language artifactv1 = 한국어 우선 (모든 schema 정의 + UI 한국어). content 안 영문 field 가 자연 등장 시 (예: 외국인 employee record, 영문 LP comm) schema 별 multi-lang 결정

각 항목은 implementation PR 시점에 D-bp-artifact-N 으로 등재 + 본 표 update. framework 만으로 시작 가능 (구체 결정 deferred 가 작업 정체 trigger 아님).

관련 결정

  • D-bp-artifact-1~7 (본 페이지 등재 동반, 2026-05-23)
  • D-bp-entity-1 (Blueprint entity 개념 + PARA 4 layer schema)
  • D-bp-entity-2 (PARA dispatch workspace-level provenance — 본 페이지가 field-level 진화)
  • D-bp-entity-17 (EntityRole — propose/review 권한 layer 의 base)
  • D-config-16 (Blueprint Postgres — artifact 거주지)

관련 페이지

Last updated on