Skip to content

Work-Lineage Optimization Loop

Work-Lineage Optimization Loop (자기최적화 리니지 폐루프)

Section titled “Work-Lineage Optimization Loop (자기최적화 리니지 폐루프)”

헌법은 FractalOps Constitution, 정규 서사는 Canonical Architecture에 있습니다. 이 문서는 그 위에서 개발·운영이 리니지를 통해 점점 최적화되는 폐루프를 서술합니다. (운영자 약칭 “money loop” — 정식 유비쿼터스 명칭은 Work-Lineage Optimization Loop.)

에이전트는 일을 시작하기 전에 자기 프로젝트의 리니지 그래프를 조회(READ) 해 “어떤 요청이 어떤 코드를 바꿨고 데이터가 어떻게 흘렀는지” 검증된 패턴을 재사용한다. 매 실행은 그 리니지를 기록(WRITE) 한다. 리니지가 쌓일수록 재스캔·충돌·반복실패가 줄어 토큰과 sandbox run(=실비용)이 절감되며, 절감량은 측정(MEASURE) 되어 Grafana 곡선으로 드러난다.

핵심 원칙: 신규 저장소를 만들지 않는다. 리니지는 DataHub 의미 그래프(portable URN)로, 에이전트용 컴팩트 브리프는 FeaturePlane로 (별도 그래프 저장소가 아니라 compact source-of-work 브리프), 어휘는 표준 온톨로지 번들로 이미 존재하는 SSOT만 조합한다. → 클러스터-로컬 상태가 없으므로 재현성이 보장된다.

DataHub는 의미 그래프 truth plane(카탈로그/리니지 enrichment) 이며 증명 권위가 아니다 — 장기 증명은 Chronicle evidence가 보관한다. 이 폐루프의 모든 WRITE는 enrichment projection이지 AI write path가 아니므로 Proposal Plane 변경 게이트를 건드리지 않는다. 모든 READ는 read-only다.

1. WRITE — 리니지 기록 (DataHub 의미 그래프)

Section titled “1. WRITE — 리니지 기록 (DataHub 의미 그래프)”

매 세션 종료 시 session_datahub_projection_operations (backend/src/fractalops/application/access/features/studio/lifecycle/datahub_projection.py) 가 프로젝트별 URN 노드에 aspect를 projection한다:

  • fopsRunAttemptAspect — 세션 outcome(status/failure_class/blocker)·provider·counts. (semantics/application/datahub_contracts.py:fops_run_attempt_projection)
  • fopsRequestCodeDataLineageAspect요청→코드→데이터 인과 엣지: 어떤 요청(proposal/issue/task)이 어떤 코드(PR)를 바꿨고 데이터가 어떻게 흘렀나(dataset URN). (semantics/application/datahub_contracts.py:fops_request_code_data_lineage_projection)
  • RDF turtle 스냅샷rdf_projection.build_rdf_projection_payload가 per-run turtle 팩트를 만들고 datahub_publish_executor.publish_rdf_ontology_snapshotfops.rdf.turtle/digest/fact_uris로 발행한다. 어휘는 표준 온톨로지 번들의 OWL 클래스.
  • FeaturePlane feature→lineage 바인딩datahub_publish_executor.publish_feature_lineage_binding.

모든 URN은 tenant_id+project_slug로 스코프되어 프로젝트별 격리 + 이식 가능하다.

2. READ — 에이전트가 리니지를 조회 (온톨로지 MCP + FeaturePlane 브리프)

Section titled “2. READ — 에이전트가 리니지를 조회 (온톨로지 MCP + FeaturePlane 브리프)”

에이전트는 실행 시작 전에 그래프를 조회해 재스캔 대신 재사용한다:

  • per-project 온톨로지 MCP (/mcp/ontology, semantics/presentation/ontology_mcp.py) — project_context/dataset_brief/ lineage_gaps/ontology_summary/ontology_vocabulary/scope. 프로젝트는 신뢰 헤더(gateway_project_slug)에서만 유도되어 fail-closed 격리된다. ontology_vocabulary는 공유 OWL 개념 용어 + runtime→evidence RDF 축을 노출해 에이전트가 온톨로지 어휘를 재사용(그래프 수렴 유지)하게 한다.
  • read 스코핑DataHubCompactContextService/GraphQueryService가 프로젝트 서브그래프로 스코프된다(공유 authority hub에서 정지, sibling 프로젝트 미침투).
  • FeaturePlane 컴팩트 브리프 — launch 시 FeaturePlaneAgentContextService.compile_context가 “raw 리니지 blob 재read를 없애는” 컴팩트 브리프(DataHub lineage_refs 포함)를 프롬프트에 주입한다. (access/.../features/team/feature_plane_brief.py)
  • github MCP (/mcp/github) — 프로젝트 source_ref_repos의 PR/diff를 조회해 형제 에이전트와 충돌을 피한다(work_radar가 in-flight PR을 launch에 주입).
  • launch READ 지시launch_prompt_builder가 “일 시작 전 리니지를 조회하고 검증된 패턴을 재사용하라(이미 done은 skip, 실패한 접근은 반복 금지)“를 주입한다.

3. MEASURE — 절감 곡선 (OTel → Mimir → Grafana)

Section titled “3. MEASURE — 절감 곡선 (OTel → Mimir → Grafana)”

절감은 주장이 아니라 곡선으로 증명된다(foundation/observability.py OTel, X-Scope-OrgID=project_slug):

  • fops_feature_plane_tokens_saved / fops_feature_plane_brief_tokens / fops_feature_plane_lineage_refs — FeaturePlane estimate_token_savings 기반.
  • fops_work_radar_open_prs / fops_work_radar_injected_total — 충돌 표면.
  • fops.studio.work_lineagefopsRunAttemptAspect 메트릭 계약 — outcome 추이.

리니지가 쌓일수록 프로젝트별 run당 토큰/낭비런이 내려가는 곡선이 “돈이 보이는” 증거다.

다리메커니즘코드
WRITE 리니지fopsRunAttemptAspectsemantics/application/datahub_contracts.py
WRITE 인과엣지fopsRequestCodeDataLineageAspect (요청→코드→데이터)datahub_contracts.py + lifecycle/datahub_projection.py
WRITE RDFturtle 스냅샷 → fops.rdf.*semantics/infrastructure/rdf_projection.py
READ 온톨로지/mcp/ontology (+ ontology_vocabulary)semantics/presentation/ontology_mcp.py
READ 스코핑per-project 서브그래프datahub_compact_context.py / graph_query.py
READ 브리프FeaturePlane compact brieffeature_plane/application/agent_context.py
READ PR/diffgithub MCPaccess/presentation/github_mcp.py
READ 트리거launch 지시access/application/studio/launch_prompt_builder.py
MEASUREOTel→Mimir 게이지/카운터foundation/observability.py