ARTEX 현재 시스템 문서
전체 문서
이 페이지 목차

데이터 모델과 저장 계약

ARTEX는 PostgreSQL 선언상 51개 table, traffic SQLite 일반 table 3개와 선택적 FTS5 virtual table 1개, 여러 filesystem tree를 결합한다. PostgreSQL core db/schema.sql은 49 table·520 final column·97 index·4 function·22 trigger이고, llm_records와 llm_usage가 2 table·31 column·5 index를 더한다. 두 startup Ensure*Table은 best-effort라 core가 떠도 보조 ledger가 없을 수 있다. 이 숫자는 고정 source revision의 선언 분모이며 운영 DB 상태를 뜻하지 않는다. Schema LLM records schema LLM usage schema

copied from

tasks

explorations

exploration_nodes

exploration_edges

exploration_anchors

assets

task_scope

task_asset_links

findings

finding_traffic_bindings

traffic_evidence_snapshots

Traffic SQLite exchanges

activity

task_llm_profiles

llm_profiles

그림 크게 보기
Mermaid 원문
flowchart LR
  Task[(tasks)] --> Exp[(explorations)]
  Exp --> Node[(exploration_nodes)]
  Node --> Edge[(exploration_edges)]
  Node --> Anchor[(exploration_anchors)]
  Anchor --> Asset[(assets)]
  Task --> Scope[(task_scope)]
  Task --> Link[(task_asset_links)]
  Link --> Asset
  Node --> Finding[(findings)]
  Finding --> Binding[(finding_traffic_bindings)]
  Binding --> Snap[(traffic_evidence_snapshots)]
  Snap -. copied from .-> Exchange[(Traffic SQLite exchanges)]
  Task --> Activity[(activity)]
  Task --> Profile[(task_llm_profiles)]
  Profile --> LLM[(llm_profiles)]

  click Task "db/task-exploration.md#table-tasks" "tasks"
  click Node "db/task-exploration.md#table-exploration-nodes" "exploration_nodes"
  click Asset "db/task-exploration.md#table-assets" "assets"
  click Finding "db/findings-operations.md#table-findings" "findings"
  click Snap "db/findings-operations.md#table-traffic-evidence-snapshots" "snapshots"
  click Exchange "db/traffic-sqlite.md#table-exchanges" "traffic exchanges"
  click LLM "db/agent-runtime.md#table-llm-profiles" "LLM profiles"

텍스트 관계: task는 exploration과 scope/asset/profile 연결을 소유한다. Exploration node는 edge와 asset anchor로 graph를 만들며 finding node는 별도 finding row와 이어진다. Finding traffic binding은 evidence snapshot을 가리키고, snapshot body의 원본은 capture 당시 Traffic store exchange다.

PostgreSQL 독립 진입

데이터 영역 객체 수 상세
태스크·자산·탐색 18 task/exploration 객체와 최종 DDL
Agent·LLM·도구·대화 18 agent runtime 객체와 최종 DDL
Finding·승인·알림·운영 15 finding/operations 객체와 최종 DDL
function·trigger·migration 4 function, 22 trigger table 밖 schema 동작
fresh table-level constraint 24 clause / 17 table composite 순서·invariant·delete/race 의미

각 객체 페이지는 CREATE 정의, 후속 ALTER, index와 저장소 경계를 원문 위치로 연결한다. Composite PK/UNIQUE와 cross-column CHECK는 24/24 table-level constraint matrix가 별도 분모로 소유한다. 51개 table·551개 field의 business meaning, type/null/default/FK, 민감도·encoding, production static SQL·정적으로 평가한 string expression·runtime template·닫힌 identifier allowlist의 reader/writer, index 비용과 retention/role 미확인은 필드·접근 의미 카탈로그가 별도로 소유한다. 임의 동적 identifier와 실제 call reachability는 U다. DO 블록의 조건부 constraint와 runtime transaction은 raw schema 및 해당 기능/모듈도 함께 대조한다.

Traffic SQLite·file 독립 진입

객체/저장소 역할 상세
exchanges HTTP exchange 검색·목록 metadata 정의
exchange_bodies inline body 또는 blob reference 정의
blob_refs exchange↔content-addressed blob 정의
ex_fts 선택적 contentless trigram FTS5 index 정의와 fallback
CAS blob/CA + legacy host tree 큰 body와 MITM 자원; host tree는 non-empty legacy path 호환만 Traffic 저장 계약

PostgreSQL 영역

논리 영역 root 공유/삭제 경계
task 실행 tasks→explorations task archive/delete 대상; global config는 제외
asset graph assets, companies 여러 task가 공유; task link 제거가 asset 삭제와 같지 않음
exploration graph node/edge/anchor/activity task exploration에 종속, intent soft/hard delete 규칙
agent configuration profiles/agents/prompts/tools/MCP/visibility global; task/profile binding으로 소비
finding/evidence finding/retest/snapshot/binding task와 graph node에 연결, body files와 함께 보존 필요
approval/notification rule/pending/event/delivery global/task 혼합, 외부 효과와 DB 상태 구분
conversation conversation/activity, side session/request task main session과 별도 retention

탐색 그래프

Node kind는 goal, intent, fact, finding, hint, digest 등이며 state/priority/payload/source/content version/cold round를 갖는다. Edge rel은 goal proof, intent lineage와 yields/derived relationships를 표현한다. Anchor는 node를 typed asset id에 연결한다. Exploration store

Frontier는 open intent를 priority DESC, id ASC로 읽고 conditional state update로 claim한다. Node/edge row가 graph 의미를 전부 강제하지 않으며 parent kind, finding transaction, goal proof 같은 불변조건은 application tool handler에도 있다.

실행을 잇는 최소 상태 단위

장기 실행의 최소 단위는 단순 URL이 아니라 다음 식별자를 연결한 기록이다.

필드군 예 필요한 이유
task/exploration task id, exploration id, source task 실행·상속·보존 경계
hypothesis/work intent node id, summary, priority, parents 왜 이 branch를 시작했는가
target asset ids, task scope, company/source 무엇을 어떤 허가 문맥에서 봤는가
action worker/session/tool-use id, input digest 무엇을 실제 실행했는가
observation activity/result, traffic exchange 무엇을 관찰했는가
conclusion fact/finding node, confidence/report status 다음 planner가 무엇을 믿는가
evidence snapshot/binding/hash/version 결론을 어떤 bytes로 검토하는가
lifecycle state, terminal reason, retry/delete/archive 계속·중단·재개·보존 기준

ARTEX는 이 필드군을 한 table에 합치지 않고 graph/asset/activity/finding/evidence에 분산한다. 관계를 유지해야 중복 탐색과 근거 없는 결론을 구별할 수 있다.

Finding의 이중 표현

Exploration finding node는 planner lineage와 goal proof를, findings row는 목록·status·severity·report·retest/evidence version을 소유한다. RecordFinding transaction이 둘과 source intent/yields/anchor를 함께 만든다. 한쪽만 읽으면 graph 문맥 또는 사용자 결과 metadata를 잃는다. Finding flow

Asset, task scope, coverage

assets.task_ids와 task_asset_links는 호환/세부 provenance가 겹치는 연결이고, task_scope는 authorization/coverage edge, exploration_anchors는 특정 node가 다룬 target이다. Company scope는 조직 귀속 규칙이다. 이들을 하나의 “scope”로 평탄화하지 않는다. 자산 기능

Activity와 SSE cursor

Task activity와 standalone conversation_activities는 session event를 append하고 sequence id로 history/SSE cursor를 제공한다. llm_records는 raw request/response와 session/profile/task metadata, llm_usage는 token/비용 계량을 별도로 저장한다. Activity delivery 성공과 model provider 원본 기록/usage insert 성공은 별도다.

주요 원자성 경계

동작 같은 transaction/lock에 포함 밖에 남는 효과
task create task/exploration/연결·일부 초기 상태 goal LLM call, Engine start
intent claim state conditional update worker의 외부 tool
finding record graph node/edge/anchor, finding, snapshot metadata/binding; notification event는 같은 transaction의 best-effort savepoint 시도 event insert rollback이 격리되면 finding은 event 없이 commit 가능; body file stage/후속 reporter·delivery
task scope batch 요청에 따라 asset/scope/link transaction 후속 worker/enrichment
archive restore 단계별 DB/file/traffic 설치와 journal 전체 인스턴스 rollback
notification claim delivery lease/state remote channel이 받았는지 결과 불명 가능

삭제·보존·복구 범위

Task archive는 선별된 task-owned rows와 workspace/transcript/traffic/evidence를 package로 만든다. Global 설정, profiles/tools/skills, JWT key, 모든 independent conversation과 archive query에 없는 기능 row는 포함되지 않을 수 있다. Task archive를 전체 backup으로 해석하지 않는다. 운영 archive

Schema·환경 미확인

상위 영역: ARTEX 현재 시스템 지도

전체로 돌아가기 · Markdown 원본

검색을 열면 색인을 읽습니다.

등록한 문서 본문에서 검색합니다.