Repository navigation
[Architecture] CWL-wide procedural graph adoption: owned guidance, offline evolution, evidence-gated rollout #2067
Description
요청과 근거
2026-09-10 사용자 요청: https://arxiv.org/abs/2609.09153 및 https://conanssam.com/posts/2026-09-10-procedural-graphs-self-evolving-llm-agents 를 CWL 전반에 계획하고 실제 반영한다. 후속 요청은 기존 Noema 이식을 유지하면서 ConceptWeave의 책임을 추가하는 것이다.
원 논문: Lu et al., Procedural Graphs: Self-Evolving Execution Structures for LLM Agents, arXiv:2609.09153v1, 2026-09-08. https://arxiv.org/html/2609.09153v1
채택 대상은 절차-관계-절차 표현, 현재 단계 주변의 상황 안내, 성공/실패 실행 관찰을 이용한 오프라인 수정 후보, 분리된 validation과 거절 기억이다. 추론 중 그래프를 고정한다. 논문의 평균 성능 비감소를 CWL의 보안·승인·배포 근거로 확대해석하지 않는다. 논문 결과는 CWL 재현 결과가 아니며, 아래 저장소 배치는 CWL의 아키텍처 결정이다.
ConceptWeave를 포함한 소유권 보완
최초 계획에서 누락했던 절차 지식의 저작·정합화·발행 책임을 ConceptWeave에 명시한다. Noema의 유효한 구현을 폐기하거나 복제하지 않는다.
- ConceptWeave: 기존
observe -> discover -> propose -> align -> validate -> review -> publish를 절차 모델로 확장한다. 절차 개념, 방향성 안내 관계, 조건/안내/주의점, 원문 근거, 기존 개념/도구 계약 정합화, 수정 후보와 맥락별 기각 이력, Rust 구조·의미 검증, steward 심사와 불변 모델 발행을 소유한다. 제품 업무 사실과 실행 승인 권한은 가져오지 않는다. 추적: ConceptWeave#42, 구현 후보 Refresh governance audit after clearfolio rollout #43. - Noema: Agent Runtime의 실행별 고정 graph/session projection, 현재 절차 국소화·부분 그래프 안내, 실행 상태·취소·중단과 실행 관찰을 유지한다. fix(review): 모델 풀 부트스트랩 교착 해소 #585/#586의 예비 산술 검사도 유지할 수 있으나 독립 평가 권위나 별도 모델 발행자가 아니다.
/exchange·GitHub OIDC/App 권한과 절차 지식의 발행을 섞지 않는다. - context-graph-contracts: graph, guidance context, evaluation receipt, candidate decision 및 release/projection의 언어 중립적 상호운용 계약. ConceptWeave의 로컬 draft와 Noema의 로컬 타입은 아직 공통 릴리스가 아니다. mutable sibling PR head를 운영 의존성으로 소비하지 않는다. [codex] Centralize PR branch update flow #28.
- enterprise-architecture-core: capability/owner·Context Map 및 제품별 adoption matrix. 사실/업무 truth, 행동 안내, 실행 상태, 정책 권한을 구별한다. Document non-actionable OpenCode finding ban #50.
- contextual-orchestrator: ConceptWeave의 후보 생성/오프라인 refiner와 Noema의 guide/solver에 기존 gateway 모델 호출·라우팅을 제공한다. 소비자에 provider key, 모델 목록, direct-provider fallback을 복제하지 않는다. fix(ci): download pinned uv 0.12.1 from GitHub Releases #1116.
- keyverse: 중앙 비밀정보 관리 owner. graph/trajectory/evaluation에 비밀값을 넣지 않고 권한 있는 capability reference를 사용한다.
.env런타임 의존을 추가하지 않는다. - PolicyWeave / governance-risk-compliance / Noema Policy-Approval: 정책 truth, 위험·승인 기록, 실행 승인 역할을 분리한다. 그래프가 정책·권한·승인·보호 workflow를 편집하거나 해제할 수 없다. 모델 발행은 실행 허가가 아니다.
- appguardrail / quarantine-sandbox-runtime / EgressWeave / wardnet: 각 owner의 검출·격리·외부 통신·단말 통제를 유지한다. 안내나 점수로 우회하지 않는다.
- OriginWeave / LineageWeave 및 원시 증거 owner: 승인·최소화된 관찰과 immutable artifact/계보를 제공한다. ConceptWeave/Noema가 raw product payload, 숨겨진 reasoning, foreign domain truth를 복제 저장하지 않는다. 스키마의 필드명이나 training 선언은 개인정보 제거·출처 검증을 대신하지 않는다.
- psychometrics-commons / 평가 owner: 과제 자극·문항·rubric·측정 조건, 분리된 holdout/final confirmation, paired evidence 및 독립 수용 기준. 후보 생성 LLM의 자기평가나 평균만으로 승인하지 않는다. test(security): avoid token-shaped fixtures #447.
- semantic-data-portal: 발행된 절차 모델의 catalog·검색·제공을 맡고 ConceptWeave의 저작 원장이나 제품 업무 사실을 복제하지 않는다.
- 제품: naruon, bandscope, TEPP, Orgmetra, accounting-information-platform, metering-billing-platform, supply-chain-control-plane, learning-management-platform, inkspan 등은 자체 절차·UL·도구 adapter·평가 기준·승인 권한을 소유한다. 모든 결정론적 계산 함수에 그래프를 강제하지 않고 제외 사유를 남긴다.
- .github: review -> finding verification -> RED -> causal fix -> exact-head GREEN -> review/merge -> 다음 gap의 공통 절차 profile과 적용 계획을 소유한다. 추가 cron, 조직 일괄 fanout, source/workflow 복제, 병합 우회는 만들지 않는다.
실제 구현 후보와 검증 범위
Noema의 기존 #585/#586은 그대로 유지한다. 해당 PR의 최신 source/check 상태는 각각 live 조회하며 이전 기록을 현재 승인 근거로 쓰지 않는다.
ConceptWeave#43은 Foundation #1 60f14a6e85a83d56c2eea43b34d52b3366bb1735 위의 Draft child다. 게시 head 300fed966643fa4bf2c4be29514b8796da764166에 로컬 0.1.0-draft.1 절차 모델 draft/revision 스키마, 46개 형식 사례, Node/AJV fixture driver, Proposed ADR-PG-20260910, PRD/TRD/Context Map/doctoring/Gap 문서를 추가했다. 기존 Rust/Cargo/일반 후보 스키마와 Noema 코드를 변경하지 않았다.
관측 검증은 독립 Python-jsonschema 46/46, Node fixture-runner 16/16, ECMAScript 식별자 패턴 14건이다. 줄바꿈을 허용하던 식별자/해시 패턴을 44/46 RED에서 46/46로 수정했다. Python은 작성 환경의 검증 도구일 뿐 제품 의존성으로 추가하지 않았다. Native AJV는 ENOTCACHED, Rust 1.98은 작성 환경에 없어 native Product/전체 CI를 통과했다고 주장하지 않는다. 네 형식상 통과 사례는 dangling endpoint/entry/중복 identity/증거·base·scope 인증의 의미 검증 공백을 명시적으로 남긴다.
단계별 실행과 종료 조건
- 실행 공통부 + 저작 입력 계약 안정화: Noema graph/session/lifecycle 및 ConceptWeave#43을 각 owner에서 exact-head로 검증·수리한다. 기존 Foundation/bootstrap/client/research의 유효 delta를 보존하고 부모부터 일반 병합한다. Draft와 소스 게시를 제품 릴리스로 표시하지 않는다.
- Rust 의미 검증 + 공통 계약: ConceptWeave가 entry/endpoint/evidence membership, 논리 ID/관계 중복, 정확한 tenant/task/base, strict parse/byte bound, profile별 cycle/reachability를 검증한다. CGC owner가 canonical digest·schema·conformance·consumer projection 계약을 발행하고 EAC가 owner/adoption matrix를 갱신한다.
requires를 자동 실행 조건·권한·OWL 제약으로 해석하지 않는다. - Read-only/shadow integration: released/versioned 계약을 통해 Noema와 기존 CO gateway에 연결한다. .github 개발 루프와 naruon 읽기 중심 과제에서 무그래프/고정/진화 그래프를 동일 과제·모델·도구 조건으로 비교한다. token·비용·성공률·오류 분모·순서 위반·중복 side effect·지연을 분리 보고한다.
- ConceptWeave offline evolution + publication: 승인된 학습 관찰로 후보 생성; 구조·의미·권한 불변식 검증; train/validation/final 분리; 독립 validator receipt 인증; base/과제/평가 조건에 결합한 기각 이력 보관; steward 심사; CAS 발행·supersession·철회·rollback. 캐시된 이전 모델 점수와 바뀐 조건을 직접 비교하거나 holdout 답을 refiner에 유출하지 않는다. confidence는 근거·방법 없이 임의 숫자로 채우지 않는다.
- 제품별 canary -> 활성화: 각 owner가 versioned consumer contract, 실제 호출과 도메인 회귀·tenant 격리·취소·철회·복구를 증명한 뒤 opt-in한다. 회계 전기·과금·채용/평가·삭제·배포는 별도 인간/정책 승인과 idempotency 경계를 유지한다. ontology label은 UI 번역 원장과 분리하고, UI가 구현될 때 여덟 언어의 Storybook/E2E·접근성을 검증한다.
필수 적대적 검증
Dangling/duplicate edges; malformed/proxy/duplicate-key inputs; graph/resource bounds; unknown node; tenant/task/base mismatch; graph swapping mid-run; prompt injection/tainted trajectory; credential/PII retention; digest/receipt mismatch; non-finite scores; train/holdout overlap; changed benchmark/model/tool/rubric; missing paired cases; safety regression despite score gain; privilege widening; stale evidence; unapproved publication/activation; rejected-candidate replay; failed rollback/CAS races.
운영·증거 경계
이 issue는 조직 적용 계획과 추적 anchor이며 전사 적용 완료 증거가 아니다. 소스 후보, 보호 브랜치, 릴리스, shadow, canary, 운영·rollback 검증을 별도 상태로 기록한다. 각 실제 구현·로그·PR·immutable release를 연결한다. 기존 writer가 있는 owner는 취지를 잇고 일반 병합/완전 승계로 통합하며 단순 Close하지 않는다. 예약·제품 배포는 실제 실행·확인 없이는 완료로 표시하지 않는다.
Activity
seonghobae commentedon Sep 9, 2026
Implementation progress, 2026-09-10 KST:
a351bff1167094b64fb51003126636ec3249debc, Draft/mergeable. Its predecessor native CI proved the repository toolchain/typecheck path and ran 4,444 tests: 4,443 passed; the sole failure was the repository-wide public TypeScript API documentation contract on the newly exported procedural APIs. The causal repair adds required adjacent JSDoc plus parameter/return contracts only; runtime/schema behavior is unchanged. Fresh exact-head CI/reviewer/patch-validator/Security runs are queued; predecessor results are not promoted.2ea14b980ffb7b2cdd81fcf5a22f1a2286da0365, Draft/mergeable on current fix(review): 모델 풀 부트스트랩 교착 해소 #585 head. It gates procedural advice through the existing lifecycle: no advice before start, during cancellation, or after terminal outcome; exact execution identity is required; advice remainsadvisory_only. Parent repair was inherited through an ordinary two-parent merge commit, not force-push, and the child public exports were documented against the known repository gate. Fresh exact-head checks are queued.Research revalidation: arXiv:2609.09153v1 (Lu, Chen, Wu, & Arık, submitted 2026-09-08) describes procedure–relation–procedure graphs, active-node localization and local guidance, offline LLM refinement from successful/failed trajectories, held-out non-regression gating, and retained rejected edits. CWL deliberately strengthens that proposal with exact scope/digest binding, lifecycle suppression, safety blocking, independent approval, and no activation authority in the graph/evaluator. Paper-reported gains are not treated as CWL performance evidence.
Do not close this parent until the valid Noema stack is integrated or fully succeeded, the released contract/adoption records exist, shadow evidence is collected, and remaining owner deltas are explicitly carried forward.
fix(agent-runtime): retain canonical execution identities in procedur…
fix(agent-runtime): preserve unavailable procedural guidance and roll…
seonghobae commentedon Sep 10, 2026
2026-09-10 추가 반영
새 계획이나 중복 PR을 만들지 않고 기존 Noema #585 → #586을 보강했습니다.
a99b8615c0959252e6fa78029203e9983f840356: 절차 그래프의 execution ID를 기존 Agent Runtime의isCanonicalExecutionId로 검사하도록 수정했습니다. 정상적인run@workflow+attempt=1,_run:attempt#1을 그래프 전용 식별자 문법이 잘못 거부하던 결함과 경계 사례를 테스트로 고정했습니다.513b9ef40413caf1da4e0ff8e2c3cb0163e3edfb: 알 수 없는 절차나 컨텍스트 한도 초과를 그래프가 보류했는데 상위 lifecycle adapter가available: true로 바꾸던 결함을 수정했습니다. 이제available: false, 원래 보류 사유,context: null을 반환합니다. 다른 세션이 먼저 게시한assertProceduralSession과 기존 child 테스트·CHANGELOG·ADR-0017은 그대로 승계했습니다.docs/doctoring/procedural_graph_adoption.md에 논문이 실제로 주장하는 방법, CWL이 추가한 통제, 저장소별 역할, 배포 단계별 종료 조건, APA 참고문헌을 분리해 기록했습니다. 이 문서는 Noema의 통합 계획이며 EAC의 권위 있는 조직 adoption matrix를 대신하지 않습니다.변경 소스·신규 테스트·문서 다섯 파일의 Git blob을 게시된 exact commit에서 다시 조회해 로컬 검증 바이트와 일치시켰습니다. 기존 child 구현은 새 140개 집중 검증 중 138개 통과·2개 실패였고, 수정 후 140개 모두 통과했습니다. 이 검증은 Node 22/TypeScript 5.8의 compiled-source + node:test adapter 및 lifecycle type-only shape를 사용한 진단입니다. native 전체 Vitest·실제 lifecycle 통합·Cloudflare·보안·독립 리뷰 통과가 아닙니다. 실제 GitHub 검사는 새 head에서 다시 실행 중이며 성공으로 간주하지 않았습니다.
조직 적용 순서
orchestrator/free, 공급자 선택·fallback은 CO 내부, 비밀정보는 Keyverse 경계를 유지합니다.추가로 명시한 미해결 경계: lifecycle adapter는 호출자가 전달한 최신 상태에 대해서만 억제할 수 있으며, 오래된 running snapshot의 재전송을 스스로 알아내는 영속 revocation store는 아닙니다. 그래프 저장소, 실제 guide/refiner 모델 호출, 서명된 평가자료 검증, 승격/rollback API, 제품 호출 증거가 아직 없으므로 전사 활성화나 성능 향상을 주장하지 않습니다.
Noema #583은 이제
748970213509d1383115c4196ed99fc9ee49742e로 병합됐고, 동시 작업자가 parent #585를80f96aeb1fe83370d09e45e4177eb95ebefc64b2로 일반 병합해 기존 수정을 보존했습니다. 해당 parent writer에게 새 절차 기능과 남은 gap을docs/product-technical-gap-baseline.md에 Proposed/source-only로 연결할 정확한 근거를 전달했습니다. root baseline에 이 항목이 이미 반영됐다고 주장하지 않습니다.seonghobae commentedon Sep 10, 2026
ConceptWeave owner-path 갱신: 구현 후보 #43은
61e08d597643a68515c126dbcca25c2495104adc로 전진했습니다. Foundation parent는 계속60f14a6e85a83d56c2eea43b34d52b3366bb1735입니다.300fed966...의 절차 계약 slice에서 실제 CI supply-chain finding이 확인됐습니다. Product/fixture validator가 manifest/lock 없이npx --yes ajv-cli@5.0.0을 실행하고 있었습니다. Current child는 foreign CLI chain을 유지하지 않고ajv@8.20.0direct library를 exact lockfile integrity로 고정했으며npm ci --ignore-scripts --no-audit --no-fund뒤 repository-owned in-process Draft 2020-12 validation만 수행합니다. Workflow/checker에서 dynamicnpx,ajv-cli,spawnSync실행은 제거됐고 regression으로 고정했습니다. ConceptWeave 외 owner source, Noema runtime, CGC/EAC/CO 계약은 변경하지 않았습니다.이 변경은 input-contract CI repair일 뿐 CWL-wide adoption/release evidence가 아닙니다. Exact-current native AJV/Rust/coverage/hosted security evidence는 아직 없고 #43은 Draft/Proposed입니다. Rust semantic validator와 released CGC projection 전에는 runtime connection/publication/activation을 주장하지 않습니다.
seonghobae commentedon Sep 10, 2026
ConceptWeave first-party self-application continuation — 2026-09-10
Published Draft child ConceptWeave#44, exact head
f63a2d68e64ae7398b3f5c8c863a2f17553edf99, above #432c6d3037acdeae2b152c335ee2f60a59b4472831. The body above's300fed966...is historical: current #43 retains later locked-AJV and Draft-CI/checker repairs. No parent/source delta was discarded or force-pushed.The adoption map needs TWO ConceptWeave uses:
#44 adds inferred source-bound authoring (8 nodes / 9 relations) and offline refinement (9 / 11) profiles, a manifest and native Rust topology/evidence-membership source candidate with 20 authored contract tests. New profile checks are wired into the existing package script and reuse the parent's locked validator. No dependency, lock, workflow, Noema, credential or operational route changed.
Evidence: 9/9 Node artifact tests and 2/2 independent schema/profile checks passed; all nine remote file blob identities match local bytes. The existing schema's three semantic gaps were reproduced as 3/3 failing rejection expectations. Rust compiler was unavailable: all 20 Rust tests, compiler/fmt/Clippy/docs/coverage, full native AJV and hosted acceptance remain unverified. The Rust module is intentionally not exported as a shipped API yet. No performance improvement or deployment is claimed.
Continuation: native exact-head validation and causal repair -> public domain API plus strict JSON/projection conformance -> authenticated evidence and released ConceptWeave/CGC projection -> actual Noema/CO read-only shadow. Add ConceptWeave itself alongside central review and Naruon to the shadow adoption matrix. Each keeps its domain evaluation criteria and approval/rollback boundaries. Model/schema existence does not establish active adoption. The runbook
docs/doctoring/procedural_self_application.mdrecords scope, failures, pending gates and exact commands.