From b8791fc2548f79925f6f1c3f7f635b85287d7154 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:02:54 +0900 Subject: [PATCH 01/85] test(docs): reject stale #528 candidate authority --- test/documentation-active-work-contract.test.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index b9dc362a6..519c18aec 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -48,6 +48,22 @@ describe("canonical active-work documentation", () => { expect(prd).not.toContain("stronger immutable workflow-source binding is not implemented on protected main"); }); + it("does not describe the integrated #528 runtime foundation as candidate active-PR truth", () => { + const prd = readFileSync("docs/PRD.md", "utf8"); + const contextMap = readFileSync("docs/CONTEXT_MAP.md", "utf8"); + const adr = readFileSync("docs/adr/0012-runtime-orchestration-bounded-contexts.md", "utf8"); + + expect(prd).not.toContain("On PR #528 this mode is **candidate truth only** until protected integration"); + expect(contextMap).not.toContain("PR #528 now carries a candidate bounded task-plan admission and runnable-task selector"); + expect(contextMap).not.toContain("PR #528 currently carries candidate checkpoint admission"); + expect(adr).not.toContain("The first candidate runtime code in PR #528 introduces"); + expect(adr).not.toContain("Until this ADR and code integrate into protected `main`, they remain candidate truth"); + + expect(prd).toContain("Protected `main` includes the Agent Runtime lifecycle and State / Checkpoint admission foundation"); + expect(contextMap).toContain("Protected `main` includes bounded task-plan admission and runnable-task selection"); + expect(adr).toContain("The protected runtime foundation introduced by PR #528 includes"); + }); + it("records the code-current canonical graph and protected credential-coverage closure", () => { const gapAudit = readFileSync("docs/DOCUMENTATION_GAP_AUDIT.md", "utf8"); const traceability = readFileSync("docs/TRACEABILITY.md", "utf8"); From 209313305c2680a0f5b15e47891848e1289f392f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:03:32 +0900 Subject: [PATCH 02/85] docs(context-map): mark #528 runtime foundation protected --- docs/CONTEXT_MAP.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/CONTEXT_MAP.md b/docs/CONTEXT_MAP.md index fdd2ee9d8..21cad3a5d 100644 --- a/docs/CONTEXT_MAP.md +++ b/docs/CONTEXT_MAP.md @@ -4,7 +4,7 @@ This document separates protected behavior from the runtime-orchestration direction. Protected `main` remains the authority for what is shipped. A bounded context listed as a target does not become implemented merely because it appears here. -Noema currently owns an evidence-producing credential and maintenance control plane. Expansion into agent/application runtime orchestration must reuse those existing authority boundaries rather than turning Noema into a model router, a foreign product system of record, or an arbitrary command runner. +Noema owns an evidence-producing credential and maintenance control plane plus a narrow protected runtime-orchestration foundation. Expansion into broader agent/application runtime orchestration must reuse those existing authority boundaries rather than turning Noema into a model router, a foreign product system of record, or an arbitrary command runner. ## Current protected contexts @@ -34,17 +34,19 @@ Owns bounded retry/timeout/cancellation semantics, fail-closed recovery evidence ## Runtime-orchestration target contexts -The following contexts are accepted decomposition targets for new runtime behavior. They are not claims that protected `main` already implements a general-purpose agent runtime. +The following contexts are the accepted decomposition for runtime behavior. Protected `main` already implements narrow foundations in Agent Runtime, Workflow / Task Execution, and State / Checkpoint; the remaining behavior in each context is added only by separately verified slices. These boundaries do not claim that Noema is already a general-purpose agent runtime. ### Agent Runtime Owns the lifecycle of one Noema agent/application execution: accepted execution identity, lifecycle state, cancellation, completion, and recovery routing. It does not discover or route models. +Protected `main` includes the execution-lifecycle primitive introduced by #528: explicit accepted, running, cancellation-requested, and terminal transitions; exact duplicate delivery of the signal that established the current state is idempotent; contradictory or out-of-order signals fail closed; cancellation dominates late completion; retry/recovery uses a separate execution identity rather than inheriting implicit side-effect authority. + ### Workflow / Task Execution Owns explicit workflow/task dependency and execution order, bounded concurrency, idempotent step identity, and side-effect classification. Recursive/unbounded task creation and implicit duplicate side effects are forbidden. -PR #528 now carries a candidate bounded task-plan admission and runnable-task selector. It accepts one canonical execution identity, a finite acyclic dependency graph, explicit `pure`/`idempotent`/`side_effecting` classification, and bounded concurrency. Declared task order is deterministic scheduling priority. Runtime state must account for every admitted task exactly once; foreign, malformed, duplicate, or incomplete state evidence fails closed. Failed or cancelled work is never selected as an implicit retry, and failed dependencies do not release descendants. Authority-bearing plan fields and nested dependencies are detached and frozen after one-time reads so caller accessors or aliases cannot change an admitted execution plan. This remains candidate behavior until protected integration. +Protected `main` includes bounded task-plan admission and runnable-task selection. It accepts one canonical execution identity, a finite acyclic dependency graph, explicit `pure`/`idempotent`/`side_effecting` classification, and bounded concurrency. Declared task order is deterministic scheduling priority. Runtime state must account for every admitted task exactly once; foreign, malformed, duplicate, or incomplete state evidence fails closed. Failed or cancelled work is never selected as an implicit retry, and failed dependencies do not release descendants. Authority-bearing plan fields and nested dependencies are detached and frozen after one-time reads so caller accessors or aliases cannot change an admitted execution plan. This protected foundation selects candidates only; it does not itself reserve work or grant side-effect authority. ### Tool / Capability Boundary @@ -54,7 +56,7 @@ Owns versioned allowlisted tool/capability descriptors, least-authority invocati Owns versioned runtime checkpoint semantics needed for restart/cancellation/idempotency. Checkpoints contain only Noema runtime state and canonical foreign references; they must not copy another product's domain truth, provider credential state, or unrestricted reasoning/tool payloads. -PR #528 currently carries candidate checkpoint admission for one retained execution identity. Sequence zero initializes the checkpoint stream; an exact same-sequence/same-digest replay is idempotent; conflicting replay, stale or gapped sequence, cross-execution identity, non-canonical execution identity, and non-SHA-256 state evidence fail closed. This remains candidate behavior until protected integration and does not itself persist checkpoint payloads or grant retry/side-effect authority. +Protected `main` includes checkpoint admission for one retained execution identity. Sequence zero initializes the checkpoint stream; an exact same-sequence/same-digest replay is idempotent; conflicting replay, stale or gapped sequence, cross-execution identity, non-canonical execution identity, and non-SHA-256 state evidence fail closed. Returned checkpoint metadata is detached and frozen so caller-owned aliases cannot mutate admitted authority after validation. This primitive does not itself persist checkpoint payloads or grant retry/side-effect authority. ## Upstream and downstream boundaries From 3446b0ba17c274730776e40ce708cedd8bb75166 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:03:53 +0900 Subject: [PATCH 03/85] docs(adr): separate protected runtime truth from ADR lifecycle --- ...-runtime-orchestration-bounded-contexts.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/adr/0012-runtime-orchestration-bounded-contexts.md b/docs/adr/0012-runtime-orchestration-bounded-contexts.md index 0d3ad1a54..1fc454656 100644 --- a/docs/adr/0012-runtime-orchestration-bounded-contexts.md +++ b/docs/adr/0012-runtime-orchestration-bounded-contexts.md @@ -4,11 +4,11 @@ Status: Proposed ## Context -Protected `main` is currently an evidence-producing credential and maintenance control plane. Noema is expanding toward runtime Agent/application orchestration, but that expansion must not collapse CWL domain ownership into one service or turn Noema into a model-provider router. +Protected `main` is an evidence-producing credential and maintenance control plane with a narrow runtime-orchestration foundation. Noema is expanding toward broader runtime Agent/application orchestration, but that expansion must not collapse CWL domain ownership into one service or turn Noema into a model-provider router. `ContextualWisdomLab/contextual-orchestrator` owns model discovery, routing, test-time compute, provider failover, and provider credentials. `ContextualWisdomLab/context-graph-contracts` owns provider-neutral shared contracts for canonical references, Context Assertions, CloudEvents/schema, provenance, time, conformance, and admission. `ContextualWisdomLab/enterprise-architecture-core` is the authoritative EA Decision Plane. Dedicated security/isolation products retain their own runtime and policy truth. -The first candidate runtime code in PR #528 introduces an Agent Runtime lifecycle and a State / Checkpoint admission primitive. These primitives need an explicit architectural decision so future workflow, tool, persistence, and integration work cannot infer broader authority from their existence. +The protected runtime foundation introduced by PR #528 includes an Agent Runtime lifecycle, State / Checkpoint admission, bounded Workflow / Task plan admission, and runnable-task selection. These primitives require an explicit architectural decision so future workflow, tool, persistence, and integration work cannot infer broader authority from their existence. ## Decision @@ -17,7 +17,7 @@ Noema separates runtime orchestration into these bounded contexts: - **Agent Runtime** owns one execution identity and its accepted, running, cancellation-requested, and terminal lifecycle. Exact duplicate delivery of the signal that established the current state is idempotent; contradictory or out-of-order lifecycle signals fail closed. Retry or recovery creates a separate execution identity rather than inheriting implicit side-effect authority. - **Workflow / Task Execution** owns explicit task dependencies, bounded concurrency, idempotent step identity, and side-effect classification. It must not recursively manufacture unbounded work or silently retry a side-effecting task. - **Tool / Capability Boundary** owns versioned allowlisted capability descriptors, least-authority invocation, expiry, bounded input/output, and capability provenance. Arbitrary model/caller shell, filesystem, network, or secret authority is outside this contract. -- **State / Checkpoint** owns Noema runtime checkpoint admission needed for restart, cancellation, and idempotency. The candidate primitive accepts sequence zero as initialization, exact same-sequence/same-digest replay as idempotent, and only the immediately next sequence for the same canonical execution identity. Conflicts, stale/gapped sequence, cross-execution identity, malformed identity, and non-SHA-256 state evidence fail closed. Admitted state is detached and frozen so caller-owned aliases cannot mutate authority after validation. +- **State / Checkpoint** owns Noema runtime checkpoint admission needed for restart, cancellation, and idempotency. The protected primitive accepts sequence zero as initialization, exact same-sequence/same-digest replay as idempotent, and only the immediately next sequence for the same canonical execution identity. Conflicts, stale/gapped sequence, cross-execution identity, malformed identity, and non-SHA-256 state evidence fail closed. Admitted state is detached and frozen so caller-owned aliases cannot mutate authority after validation. - **Isolation Integration** owns Noema's caller-side versioned port/ACL to a canonical quarantine/security runtime; it does not copy the security owner's implementation. - **Policy / Approval** owns the distinction between technical evidence, capability, human/organization authority, and mutation approval. - **Observability** owns bounded execution/evidence telemetry and exact source/runtime identity without raw secrets or unrestricted reasoning/tool payloads. @@ -29,14 +29,17 @@ Noema consumes `contextual-orchestrator` for model routing. It does not add dire Context Graph integration is fail closed: Noema may emit or consume shared architecture/context evidence only through an immutable released context-graph-contracts package/profile with its version, conformance/admission result, canonical references, provenance, and time semantics intact. Open Draft source in the sibling repository is not an integration contract. EA Core remains the authority that accepts or rejects architecture projection; Noema does not directly write EA application tables. -## Candidate implementation boundary +## Protected implementation foundation -On PR #528, only the following runtime behavior is implemented: +Protected `main` currently includes the following bounded runtime behavior: - `src/agent-runtime/execution-lifecycle.ts` — pure Agent Runtime lifecycle transition authority; -- `src/state-checkpoint/checkpoint-admission.ts` — pure State / Checkpoint admission and immutable checkpoint metadata snapshots. +- `src/state-checkpoint/checkpoint-admission.ts` — pure State / Checkpoint admission and immutable checkpoint metadata snapshots; +- `src/workflow-task-execution/workflow-task-execution.ts` and its adjacent bounded-context source — immutable finite DAG admission, bounded concurrency policy, and runnable-task candidate selection without reservation or side-effect authority. -No checkpoint payload persistence, queue, workflow scheduler, arbitrary tool executor, provider routing, Context Assertion publisher, EA writer, or security-runtime implementation is implied by these modules. Until this ADR and code integrate into protected `main`, they remain candidate truth. +No checkpoint payload persistence, durable workflow scheduler, arbitrary tool executor, provider routing, Context Assertion publisher, EA writer, or security-runtime implementation is implied by these modules. Those remain separate future slices and must satisfy their own owner, contract, test, exact-head, and protected-integration gates. + +This ADR remains `Proposed` because the repository-wide runtime-orchestration decision is broader than the already protected foundation. Protected source must not be described as candidate merely because the ADR lifecycle has not yet advanced to `Accepted`. ## Consequences @@ -56,4 +59,6 @@ This separation also forces later work to make missing boundaries explicit. A wo A runtime slice may move from candidate to protected truth only when its owning bounded context is named in the PRD/Context Map, public source contracts are documented, realistic tests cover relevant cancellation/restart/checkpoint/idempotency/tool-policy/concurrency/isolation behavior, exact owned production coverage remains complete, applicable exact-head CI/security/review evidence is terminal clean, and protected integration succeeds under live governance. +ADR 0012 itself may move from `Proposed` to `Accepted` only when the repository-wide decision is stably applied across the runtime-orchestration surface and its acceptance evidence is code-current. Integrating one or more slices does not require premature ADR acceptance, and keeping the ADR Proposed does not downgrade already protected source back to candidate status. + Any integration that requires unreleased Context Graph source, direct provider routing, ambient secret propagation, arbitrary tool authority, unbounded recursion, silent side-effect retry, or cross-service SQL is rejected at the architecture boundary. \ No newline at end of file From 697dbd5e59811207c2befe289b18d2221653bf4c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:04:31 +0900 Subject: [PATCH 04/85] docs(adr): correct protected workflow source path --- docs/adr/0012-runtime-orchestration-bounded-contexts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/0012-runtime-orchestration-bounded-contexts.md b/docs/adr/0012-runtime-orchestration-bounded-contexts.md index 1fc454656..670c25321 100644 --- a/docs/adr/0012-runtime-orchestration-bounded-contexts.md +++ b/docs/adr/0012-runtime-orchestration-bounded-contexts.md @@ -35,7 +35,7 @@ Protected `main` currently includes the following bounded runtime behavior: - `src/agent-runtime/execution-lifecycle.ts` — pure Agent Runtime lifecycle transition authority; - `src/state-checkpoint/checkpoint-admission.ts` — pure State / Checkpoint admission and immutable checkpoint metadata snapshots; -- `src/workflow-task-execution/workflow-task-execution.ts` and its adjacent bounded-context source — immutable finite DAG admission, bounded concurrency policy, and runnable-task candidate selection without reservation or side-effect authority. +- `src/workflow-task-execution/task-plan.ts` — immutable finite DAG admission, bounded concurrency policy, and runnable-task candidate selection without reservation or side-effect authority. No checkpoint payload persistence, durable workflow scheduler, arbitrary tool executor, provider routing, Context Assertion publisher, EA writer, or security-runtime implementation is implied by these modules. Those remain separate future slices and must satisfy their own owner, contract, test, exact-head, and protected-integration gates. From b8d94b3c90d7faa724e27a21eb9d4895a1c22e54 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:05:24 +0900 Subject: [PATCH 05/85] docs(prd): mark #528 runtime foundation protected --- docs/PRD.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/PRD.md b/docs/PRD.md index 35cba8e3f..d104b54e5 100644 --- a/docs/PRD.md +++ b/docs/PRD.md @@ -88,13 +88,15 @@ Protected acquisition-integrity controls authenticate retained evidence and exac ### 4.7 Agent/application runtime orchestration -On PR #528 this mode is **candidate truth only** until protected integration. Noema owns the lifecycle and safe execution mechanics of a Noema Agent/application execution; it does not acquire another CWL product's domain truth and does not become a model-provider router. +Protected `main` includes the Agent Runtime lifecycle and State / Checkpoint admission foundation introduced by #528, together with bounded Workflow / Task plan admission and runnable-task candidate selection. Noema owns the lifecycle and safe execution mechanics of a Noema Agent/application execution; it does not acquire another CWL product's domain truth and does not become a model-provider router. -The candidate Agent Runtime primitive owns explicit accepted, running, cancellation-requested, and terminal transitions. Exact duplicate delivery of the signal that already established the current state is idempotent, while contradictory or out-of-order signals fail closed. Cancellation dominates late completion. Retry/recovery uses a separate execution identity rather than receiving implicit duplicate-side-effect authority. +The protected Agent Runtime primitive owns explicit accepted, running, cancellation-requested, and terminal transitions. Exact duplicate delivery of the signal that already established the current state is idempotent, while contradictory or out-of-order signals fail closed. Cancellation dominates late completion. Retry/recovery uses a separate execution identity rather than receiving implicit duplicate-side-effect authority. -The candidate State / Checkpoint primitive admits sequence zero as initialization, an exact same-sequence/same-digest replay as idempotent, and only the immediately next sequence for the same canonical execution identity. Conflicting replay, stale/gapped sequence, cross-execution identity, malformed identity, or non-SHA-256 state evidence is rejected. Returned checkpoint metadata is a detached frozen snapshot so caller-owned aliases cannot mutate admitted authority after validation. This primitive does not persist checkpoint payloads by itself. +The protected State / Checkpoint primitive admits sequence zero as initialization, an exact same-sequence/same-digest replay as idempotent, and only the immediately next sequence for the same canonical execution identity. Conflicting replay, stale/gapped sequence, cross-execution identity, malformed identity, or non-SHA-256 state evidence is rejected. Returned checkpoint metadata is a detached frozen snapshot so caller-owned aliases cannot mutate admitted authority after validation. This primitive does not persist checkpoint payloads by itself. -`contextual-orchestrator remains the sole model discovery and routing owner`; Noema does not add direct provider SDKs, provider credentials, provider fallback lists, or local routing policy. Workflow / Task Execution, Tool / Capability Boundary, Isolation Integration, Policy / Approval, Observability, and Recovery remain separate bounded contexts under ADR 0012 and the canonical Context Map. Context Graph/EA integration requires an immutable released `context-graph-contracts` contract/profile and preserves EA Core as the authoritative Decision Plane; cross-service SQL is forbidden. +The protected Workflow / Task foundation admits one canonical execution identity, a finite acyclic dependency graph, explicit `pure`/`idempotent`/`side_effecting` classification, bounded concurrency, and detached immutable authority-bearing plan data. Runnable selection fails closed on foreign, malformed, duplicate, incomplete, cross-execution, over-concurrency, or causally impossible state. Selection is candidate scheduling evidence only; it does not reserve work or grant side-effect authority. Durable workflow-state persistence, atomic claim/checkpoint execution, and richer recovery remain separate slices until independently integrated. + +`contextual-orchestrator` remains the sole model discovery and routing owner; Noema does not add direct provider SDKs, provider credentials, provider fallback lists, or local routing policy. Tool / Capability Boundary, Isolation Integration, Policy / Approval, Observability, and Recovery remain separate bounded contexts under ADR 0012 and the canonical Context Map. Context Graph/EA integration requires an immutable released `context-graph-contracts` contract/profile and preserves EA Core as the authoritative Decision Plane; cross-service SQL is forbidden. ## 5. Functional requirements From 0e26b3c2914c7752402bf6fd9ae59956bd1fc2bd Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:07:33 +0900 Subject: [PATCH 06/85] test(docs): reject stale product-gap authority --- test/documentation-active-work-contract.test.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 519c18aec..ad5504887 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -64,6 +64,20 @@ describe("canonical active-work documentation", () => { expect(adr).toContain("The protected runtime foundation introduced by PR #528 includes"); }); + it("keeps the product-technical baseline on current protected and active owner truth", () => { + const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); + + expect(baseline).toContain("`main@bbee33270b496255d785c766fc009a5f9162a695`"); + expect(baseline).toContain("Apache-2.0 source grant | protected main"); + expect(baseline).toContain("issue #531 / PR #540"); + expect(baseline).toContain("issue #541 / PR #542"); + expect(baseline).toContain("PR #546"); + expect(baseline).not.toContain("README/license candidate truth is PR #530"); + expect(baseline).not.toContain("PR #530 is open"); + expect(baseline).not.toContain("Apache-2.0 candidate truth on #530"); + expect(baseline).not.toContain("P1 | Apache-2.0 source grant integration"); + }); + it("records the code-current canonical graph and protected credential-coverage closure", () => { const gapAudit = readFileSync("docs/DOCUMENTATION_GAP_AUDIT.md", "utf8"); const traceability = readFileSync("docs/TRACEABILITY.md", "utf8"); From a4cccf05c951795fcc5897723891600a480c8567 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:08:26 +0900 Subject: [PATCH 07/85] docs(gap): reconcile protected and active Noema authority --- docs/product-technical-gap-baseline.md | 64 ++++++++++++++++---------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b748d67da..d9dae0d78 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -2,48 +2,62 @@ ## Authority and update rule -이 문서는 제품 요구, 구현, 검증, 운영 증거 사이의 현재 차이를 한곳에서 추적한다. 저장소 파일과 테스트는 revision-local 또는 protected-source 구현만 증명한다. PR 상태는 exact head와 live base에서, 운영·배포·고객·매출·법적 증거는 해당 외부 권한에서 각각 다시 확인해야 한다. 문서나 성공 boolean만으로 이후 단계의 증거를 만들지 않는다. +이 문서는 제품 요구, protected 구현, active candidate, 검증, 운영 증거 사이의 현재 차이를 추적한다. 저장소 파일과 테스트는 해당 revision의 구현만 증명하며, PR 상태는 exact head와 independently resolved live base에서 다시 확인한다. 운영·배포·고객·매출·법적 증거는 해당 외부 권한이 실제로 남긴 증거만 인정한다. 문서, 성공 boolean, predecessor run, model judgement로 이후 단계의 권위를 만들지 않는다. -이 baseline의 protected-source snapshot은 `main@5aad3e410703faaf52882e2f33fadd25d217bcdd`이며, README/license candidate truth는 PR #530 exact head에만 적용한다. issues #3, #5, #27, #29, #66, #227, #531의 live 상태를 GitHub 권위로 다시 읽어야 하며, protected/main·PR·외부 증거를 서로 대체하지 않는다. +이 baseline의 protected-source snapshot은 `main@bbee33270b496255d785c766fc009a5f9162a695`이다. 이 commit은 #528의 runtime bounded-context foundation을 protected history에 통합한 현재 protected tip이다. Active PR의 구현과 transient workflow 상태는 별도 candidate/observation이며 protected truth로 승격하지 않는다. -## Live external observation — 2026-09-01 KST +## Live observation — 2026-09-04 KST | Authority | Observation | Consequence | | --- | --- | --- | -| README/license lane | PR #530 is open and carries the product-first README plus Apache-2.0 root source grant; every push invalidates predecessor-head checks | protected main remains unlicensed until the unchanged exact head integrates | -| npm package boundary | `package.json` remains `private` and the npm package is not a product distribution channel; no package-publication license field is introduced | root `LICENSE` controls source rights without forcing unrelated lockfile metadata churn | -| Dependency licensing | `package-lock.json` contains `LGPL-3.0-or-later` optional dev/build packages on `wrangler → miniflare → sharp → @img/sharp-libvips-*`; issue #531 owns removal/replacement | source Apache-2.0 does not make the current toolchain compliant with the organization no-GPL-family default | -| Release/publication | immutable release/deployment/customer/revenue/transfer evidence remains a separate authority class | source licensing cannot be promoted into acquisition readiness | +| Protected source | `main@bbee33270b496255d785c766fc009a5f9162a695`; #528 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속이다. | +| Apache-2.0 source grant | protected main | #530은 이미 merge되었고 root `LICENSE`가 Apache License 2.0이다. source grant integration 자체는 더 이상 open gap이 아니다. | +| Third-party/tooling licensing | issue #531 / PR #540 | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate가 진행 중이나 current PR lockfile은 아직 재생성·검증 전이므로 gap은 열려 있다. | +| Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft에 있다. protected #528의 pure candidate selector는 durable execution authority를 대신하지 않는다. | +| Reviewer semantic evidence | PR #546 | CodeGraph가 `No relevant code found`, 빈 final explore, marker spoof, annotation-only truncation을 semantic GREEN으로 오인하는 fail-open class의 owner repair가 Draft에 있다. current exact-head required runs가 terminal clean하기 전에는 protected reviewer authority가 아니다. | +| Context Fabric consumer boundary | PR #544 | Noema가 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구하는 candidate다. mutable producer PR은 authority가 아니다. | +| Release/publication | repository release collection empty | immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | ## Current baseline | Requirement family | Canonical decision / boundary | Protected or active implementation surface | Executable proof | Residual evidence | Maturity | | --- | --- | --- | --- | --- | --- | -| Credential exchange and readiness | Worker trust contract와 runtime threat model | `src/index.ts`, `src/worker.ts`, `src/entrypoint.ts`, `src/runtime-entrypoint.ts`, OIDC/replay/rate-limit 모듈 | typecheck, runtime/API/security tests, exact configured coverage | protected deployment smoke와 실제 binding/storage 증거 | Implemented on protected main; operational evidence remains separate | -| Reviewer and maintenance control plane | 독립 App identity, bounded manifest, deterministic fail-closed gates | `reviewer/noema_reviewer/`, maintainer/reviewer workflows, capability-file ingress | reviewer tests, workflow contract tests, current-head review artifacts | Maintainer/Reviewer App 설치·권한·key custody·rotation 및 publication identity | Source contract implemented; external activation evidence is open | -| Hourly product-development loop | `contextual-orchestrator` inference와 별도 Maintainer App publication identity를 사용하는 work-conserving loop | `.github/workflows/hourly-product-development.yml`, orchestrator gateway contract, publication/readiness validators | workflow shape, gateway preflight, lease, publication prerequisite and stale-head refusal tests | zero-PR scheduled proposal publication과 rollback/recovery exercise | Implemented source; production activation incomplete | -| Patch-validator supply chain | exact source/image/receipt binding과 fail-closed vulnerability policy | `Dockerfile.patch-validator`, image workflow, validator/SBOM/receipt modules | build, runtime, smoke, SBOM, vulnerability and receipt tests | protected-main operational receipt와 registry publication/signing/attestation | Implemented source; operational/publication evidence incomplete | -| Source licensing | Noema-owned source uses one explicit commercial-friendly outbound grant; package publication and dependencies retain independent terms | PR #530 `LICENSE`, root `README.md`, `docs/LICENSING_AND_IP_TRANSFER.md`; private `package.json` remains non-distribution metadata | exact-head repository/doc/test consistency | protected integration plus third-party/tooling policy resolution | Apache-2.0 candidate truth on #530; not yet protected truth | -| Third-party/tooling licensing | GPL-family packages are not accepted as the normal inbound dependency baseline | current lockfile + dependency-license inventory + issue #531 | exact lockfile scan/inventory must become free of GPL/LGPL/AGPL toolchain entries | commercially compatible Wrangler/Miniflare/build-tool replacement or exact approved exception | Open compliance gap; source license does not resolve it | -| Release and deployment | source → package/SBOM/provenance → immutable publication → deployment/rollback | release, publication, deployment and readiness scripts | exact-source/reproducibility/receipt/rollback contract tests | immutable release, protected deployment, recovery and production smoke evidence | Incomplete; repository evidence cannot establish deployment | -| KPI, customer and acquisition | authentic evidence must retain source, time and buyer/legal authority | KPI, acquisition manifest/integrity/readiness and license validators | bounded input, provenance, ordering, integrity and fail-closed tests | authentic 30-day production KPI, customer/revenue and transfer evidence | Incomplete; no commercial-readiness claim | +| Credential exchange and readiness | Worker trust contract와 runtime threat model | protected `src/index.ts`, `src/worker.ts`, `src/entrypoint.ts`, `src/runtime-entrypoint.ts`, OIDC/replay/rate-limit modules | typecheck, runtime/API/security tests, exact coverage | protected deployment smoke와 실제 binding/storage operational evidence | Implemented on protected main; operational evidence separate | +| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 reviewer-semantic repair | reviewer/workflow contract tests and exact-head workflows | #546 protected integration 후 기존 false-green head의 reviewer evidence 재생성; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | +| Agent Runtime | ADR 0012 + Context Map | protected execution lifecycle from #528 | lifecycle/cancellation/idempotency/hostile input tests | broader runtime composition and recovery slices | Protected foundation | +| Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected `src/workflow-task-execution/task-plan.ts`; issue #541 / PR #542 durable state-store candidate | protected DAG/concurrency/runnable tests; candidate atomicity/recovery tests on #542 | unchanged exact-head GREEN + protected integration of atomic claim/checkpoint/recovery | Protected pure foundation; durable execution candidate | +| State / Checkpoint | monotonic same-execution admission, exact replay idempotency, CAS at persistence boundary | protected checkpoint admission; PR #542 durable CAS candidate | protected admission tests; candidate storage atomicity/recovery tests | durable persistence current-head GREEN and protected merge | Protected admission; persistence candidate | +| Tool / Capability Boundary | least authority, explicit versioned capabilities, foreign owner ACL | bounded protected capability patterns; issue #545 future external-extension admission | capability/path/credential hostile tests where implemented | product-scoped extension admission/activation/expiry/rollback implementation after #541/#542 | Partial; future product slice remains | +| Context Fabric consumer | immutable released producer contract only; no source copy/cross-service SQL | protected fail-closed boundary + PR #544 strengthened release evidence | ACL/conformance/admission regressions | immutable `context-graph-contracts` release and authenticated Noema trust anchor | Candidate strengthening; foreign release prerequisite open | +| contextual-orchestrator consumer | CO owns model/provider discovery/routing/failover/credentials | protected gateway boundary; PR #535 converges model authority to `orchestrator/free` | gateway/provider-boundary regressions and exact-head workflows | PR #535 exact-head terminal GREEN + protected integration | Protected boundary; routing-alias repair candidate | +| Patch-validator supply chain | exact source/image/receipt binding과 fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | build/runtime/no-network/read-only/non-root/SBOM/vulnerability/receipt tests | protected-main operational receipt and immutable registry publication/signing/attestation | Implemented source; operational/publication evidence incomplete | +| Apache-2.0 source grant | protected main | root `LICENSE`, README/licensing docs integrated through #530 | repository/doc/acquisition licensing contracts | artifact/package rights remain separate evidence when publication occurs | Apache-2.0 protected truth | +| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | exact lockfile/license inventory + Worker dev/deploy/typecheck/tests/security | canonical lock regeneration and exact-head terminal verification | Open compliance gap | +| Release and deployment | source → artifact/SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | exact-source/reproducibility/receipt/rollback contract tests | immutable release, governed production deployment, recovery smoke | Incomplete; no release currently exists | +| KPI, customer and acquisition | authentic evidence keeps source/time/buyer/legal authority | KPI/acquisition manifest/integrity/readiness validators | bounded provenance/integrity/fail-closed tests | authentic >=30-day production KPI, customer/revenue, owner/legal transfer evidence | Incomplete; commercial final gate must remain not-ready | + +## Reviewer-evidence convergence + +Several unchanged product heads have application/security/image workflow successes but their historical `reviewer-ci` result was produced under the confirmed semantic false-green contract. In particular #526, #533, #537 and #543 must not inherit that reviewer success. #546 is the canonical owner repair. It must first reach protected truth with its own unchanged exact-head terminal evidence; affected product heads then require fresh reviewer execution under that protected gate. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, or gate weakening is not completion. ## Prioritized residual gaps | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | GPL-family development/build dependency path | 조직의 상업용 inbound 정책과 현재 npm toolchain이 충돌한다 | issue #531 | exact-head `package-lock.json`과 dependency inventory에서 GPL/LGPL/AGPL 경로가 사라지고 Worker dev/deploy·typecheck·tests·security가 그대로 통과 | Wrangler/Miniflare/Sharp 경로를 상업적으로 호환되는 도구 경계로 교체하고 lockfile을 재검증한다 | -| P0 | Maintainer/Reviewer App 및 hourly publication identity 활성화 | 자동 유지보수와 독립 리뷰가 production capability로 동작한다는 증거가 없다 | issues #29 / #227 | 현재 App 설치·권한·key custody/rotation, 성공한 scheduled publication artifact와 rollback 결과 | 외부 App 구성을 완료한 뒤 readiness와 scheduled run을 실행하고 artifact를 보존한다 | -| P0 | protected `main` governance 목표와 live policy 정합성 | source 검증만으로 실제 merge/release 통제를 보장할 수 없다 | issue #27 | live ruleset/branch-protection API와 관찰된 required workflow/status 결과 | governance audit을 live policy에 실행하고 차이를 owning control에서 수정한다 | -| P1 | Apache-2.0 source grant integration | 공개 저장소가 protected main에서는 아직 명시적 사용권을 제공하지 않는다 | PR #530 | unchanged exact-head README/LICENSE + applicable reviews/checks + protected merge | #530 exact head를 정상 protected path로 통합한다 | -| P1 | patch-validator 운영·배포 증거 | 검증된 source image가 실제 배포·서명·활성화됐는지 구매자가 확인할 수 없다 | issue #66 | protected-main operational receipt, registry digest, signature/attestation과 activation proof | exact protected source에서 publication pipeline을 실행한다 | -| P1 | authentic 30-day KPI | 신뢰성·성능·운영가치를 fixture가 아닌 실운영 자료로 입증하지 못한다 | issue #3 | production-origin, time-bound, integrity-checked 30-day KPI evidence | 승인된 production source에서 collector와 verifier를 실행한다 | -| P1 | release/deployment/acquisition evidence | buyer/legal/commercial 권한이 없어 매각 readiness를 선언할 수 없다 | issue #5 | immutable release/deployment/customer/revenue/legal transfer evidence | 앞선 evidence family를 순서대로 충족하고 acquisition audit을 재실행한다 | +| P0 | Reviewer semantic false-green | review workflow `success`가 실제 semantic code evidence 없이 merge evidence로 오인될 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + protected merge; then fresh affected-head reviewer evidence | #546 current exact-head execution을 보호하고 terminal evidence를 재확인한다 | +| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542의 unresolved source-repaired finding을 executable GREEN으로 확인하고 protected path로 통합한다 | +| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 현재 npm toolchain이 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean | pinned Node/npm으로 lockfile reproducibility lane을 완료하고 current head를 검증한다 | +| P0 | Maintainer/Reviewer App and publication identity activation | 자동 유지보수·독립 review·publication capability의 실제 외부 identity 증거가 없다 | issues #29 / #227 | live App installation/permission/key custody/rotation plus successful bounded publication/rollback receipt | 외부 owner가 identity를 provision한 뒤 protected preflight/canary를 실행한다 | +| P0 | Protected `main` governance target | source 검사만으로 실제 merge/release 정책을 만들 수 없다 | issue #27 | fresh live ruleset/protection and behavioral proof | authorized control plane에서 gap을 검증·수정한다 | +| P1 | Context Graph immutable producer contract | runtime evidence projection이 mutable producer source에 기대면 buyer/audit authority가 흔들린다 | PR #544 + producer owner | immutable producer release with package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence and authenticated Noema trust anchor | producer release 전에는 fail closed; #544 current candidate를 exact-head 검증한다 | +| P1 | Patch-validator operational/publication proof | protected source image가 실제 publication/activation됐는지 증명되지 않는다 | issue #66 | protected-main workflow receipt, immutable digest, signature/attestation, activation/rollback proof | exact protected source에서 owner-controlled operational/publication path를 실행한다 | +| P1 | Authentic >=30-day KPI | 성능·신뢰성을 fixture가 아닌 실운영 자료로 입증하지 못한다 | issue #3 | production-origin >=30-day integrity/provenance-bound KPI evidence | governed production source collector/verifier를 실행한다 | +| P1 | Immutable release/deployment/acquisition evidence | buyer/legal/commercial 단계가 source completion보다 뒤에 남아 있다 | issue #5 | immutable release, governed deployment, customer/revenue/support/rights/transfer evidence | 앞선 evidence family를 순서대로 충족하고 acquisition audit을 재실행한다 | -## Documentation contradictions +## Documentation contradictions repaired by current candidate -과거 PR 번호와 당시 상태는 historical provenance일 뿐 현재 owner나 구현 상태가 아니다. Canonical TRD와 ADR은 protected implementation surface와 durable live issue owner를 사용하며, historical PR을 current owner로 사용하지 않는다. PR #530의 Apache-2.0 grant도 merge 전에는 protected truth로 표현하지 않는다. +Protected `main@bbee33270b496255d785c766fc009a5f9162a695`에는 #528이 이미 merge되어 있으므로 PRD/Context Map/ADR가 그 구현을 “PR #528 candidate truth”라고 쓰면 authority가 역전된다. 또한 #530은 이미 merged되어 root Apache-2.0 source grant가 protected truth인데, 이전 baseline은 #530을 open candidate로 남겨 두었다. 현재 documentation-repair candidate는 이 두 stale 상태를 제거하면서 ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. ## Completion discipline -각 gap은 표의 authoritative completion evidence가 실제로 존재하고 현재 source/head에 결합될 때만 닫는다. queued/skipped/cancelled/stale check, predecessor-head 결과, 문서 존재, synthetic fixture 또는 model judgement는 완료 증거가 아니다. Noema source의 Apache-2.0 grant, npm package-publication metadata, 제3자 package license evidence는 서로 별도 권위로 유지한다. +각 gap은 표의 authoritative completion evidence가 실제로 존재하고 현재 exact source/head에 결합될 때만 닫는다. queued/skipped/cancelled/stale check, predecessor-head 결과, 문서 존재, synthetic fixture, model judgement, mutable sibling source는 완료 증거가 아니다. 한 lane의 runner/review wait은 다른 안전한 Noema-owned repair를 막지 않는다. Source license, package/artifact license metadata, third-party dependency terms, immutable publication, deployment, commercial/legal authority는 서로 별도 evidence class로 유지한다. From 32449cf718b01e71e972b594a1d0b2a47f82e0cf Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:11:04 +0900 Subject: [PATCH 08/85] test(docs): reject stale pre-merge licensing authority --- test/documentation-active-work-contract.test.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index ad5504887..0670caa6f 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -78,6 +78,17 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("P1 | Apache-2.0 source grant integration"); }); + it("keeps the licensing authority aligned with merged #530 protected truth", () => { + const licensing = readFileSync("docs/LICENSING_AND_IP_TRANSFER.md", "utf8"); + + expect(licensing).toContain("Protected `main` carries the owner-selected Apache-2.0 source grant"); + expect(licensing).toContain("issue #531 / PR #540"); + expect(licensing).not.toContain("source-license decision is Apache-2.0 on PR #530 until protected integration"); + expect(licensing).not.toContain("Until that exact head integrates, protected `main` remains the currently shipped source-rights authority"); + expect(licensing).not.toContain("Protected `main@03ef2301bad020b9ab4dfde2ec3c4e7f460024ca` still has no root `LICENSE`"); + expect(licensing).not.toContain("Those declarations are candidate truth until #530 integrates"); + }); + it("records the code-current canonical graph and protected credential-coverage closure", () => { const gapAudit = readFileSync("docs/DOCUMENTATION_GAP_AUDIT.md", "utf8"); const traceability = readFileSync("docs/TRACEABILITY.md", "utf8"); @@ -120,7 +131,6 @@ describe("canonical active-work documentation", () => { expect(traceability).toContain("openapi.json"); expect(traceability).toContain("Implemented on protected main"); expect(index).toContain("protected HTTP API machine contract"); - expect(index).toContain("[OpenAPI 3.1](../openapi.json)"); expect(index).not.toContain("PR #99"); }); From 343e5b1b9e205002b6cc7804502d5a7d3aa951fc Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 04:11:58 +0900 Subject: [PATCH 09/85] docs(licensing): mark Apache source grant protected --- docs/LICENSING_AND_IP_TRANSFER.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/docs/LICENSING_AND_IP_TRANSFER.md b/docs/LICENSING_AND_IP_TRANSFER.md index 34e310d2a..5553bc952 100644 --- a/docs/LICENSING_AND_IP_TRANSFER.md +++ b/docs/LICENSING_AND_IP_TRANSFER.md @@ -1,12 +1,12 @@ # Noema Licensing and IP Transfer -- **Status:** Repository rights policy/evidence baseline; source-license decision is Apache-2.0 on PR #530 until protected integration. This is not acquisition or transfer legal clearance. +- **Status:** Repository rights policy/evidence baseline. Protected `main` carries the owner-selected Apache-2.0 source grant; this is not acquisition or transfer legal clearance. - **Scope:** Noema source rights, package/container metadata, third-party obligations, contributor/IP provenance, release distribution, and acquisition transfer evidence. - **Decision authority:** Repository automation may detect, authenticate, inventory, and compare evidence. The repository owner has explicitly selected Apache License 2.0 for Noema source; future outbound-license changes and transfer-rights decisions remain owner/legal governance actions. ## 1. Core invariant -**Public source availability is not a grant of rights by itself.** The grant comes from the controlling repository rights file. On PR #530, root `LICENSE` declares Apache-2.0 for Noema source. Until that exact head integrates, protected `main` remains the currently shipped source-rights authority. +**Public source availability is not a grant of rights by itself.** The grant comes from the controlling repository rights file. Protected `main` contains root `LICENSE` with Apache License 2.0 for Noema source, integrated through #530. That protected source-rights decision does not itself establish package/artifact distribution rights, third-party compatibility, contributor ownership, or acquisition-transfer authority. Noema keeps source licensing, package publication, third-party obligations, and transfer authority separate: @@ -95,9 +95,11 @@ Required evidence includes: ### 4.1 Current GPL-family tooling finding -The current `package-lock.json` contains optional development/build packages on the `wrangler → miniflare → sharp → @img/sharp-libvips-*` path whose declared license is `LGPL-3.0-or-later`; `@img/sharp-wasm32` declares `Apache-2.0 AND LGPL-3.0-or-later AND MIT`. These packages are not relicensed by Noema's Apache-2.0 source license. +The protected `package-lock.json` contains optional development/build packages on the `wrangler → miniflare → sharp → @img/sharp-libvips-*` path whose declared license is `LGPL-3.0-or-later`; `@img/sharp-wasm32` declares `Apache-2.0 AND LGPL-3.0-or-later AND MIT`. These packages are not relicensed by Noema's Apache-2.0 source license. -Repository evidence also shows that the patch-validator runtime-image boundary explicitly excludes `wrangler`, `workerd`, and `miniflare`; therefore this finding must not be overstated as proof that LGPL code is bundled into that runtime image. It is nevertheless an inbound development/build-tooling policy gap because ContextualWisdomLab does not accept GPL-family software as the normal dependency baseline. Distribution/acquisition readiness must remain fail closed until issue #531 removes/replaces this dependency path or an explicit repository-level exception is approved for the exact use and distribution model. +Repository evidence also shows that the patch-validator runtime-image boundary explicitly excludes `wrangler`, `workerd`, and `miniflare`; therefore this finding must not be overstated as proof that LGPL code is bundled into that runtime image. It is nevertheless an inbound development/build-tooling policy gap because ContextualWisdomLab does not accept GPL-family software as the normal dependency baseline. + +The active owner lane is issue #531 / PR #540. PR #540 replaces the intended Wrangler/Miniflare/Sharp/Libvips toolchain with direct `workerd`/`esbuild` and a bounded Cloudflare API adapter, but its committed lockfile is still stale until deterministic regeneration completes. Distribution/acquisition readiness therefore remains fail closed until one unchanged exact head proves the dependency path removed and all required package, Worker dev/deploy, security, reviewer, image, SBOM, vulnerability, provenance, and license-inventory gates are terminal clean. Unknown or unresolved obligations fail closed for distribution/acquisition readiness. Vulnerability or provenance success does not prove license compatibility. @@ -157,25 +159,25 @@ owner source-license decision Each arrow requires independent identity/consistency evidence. A mismatch, missing required record, malformed/ambiguous JSON, or unresolved right is a fail-closed condition. -## 8. Current evidence and residual gap — 2026-09-01 +## 8. Current evidence and residual gap — 2026-09-04 -Protected `main@03ef2301bad020b9ab4dfde2ec3c4e7f460024ca` still has no root `LICENSE`. PR #530 now carries the explicit owner-selected Apache-2.0 source posture: +Protected `main@bbee33270b496255d785c766fc009a5f9162a695` contains the owner-selected source-rights posture integrated through #530: - root `LICENSE`: Apache License 2.0; - root `README.md`: customer-facing Apache-2.0 source-license statement and separate third-party obligation boundary; - `package.json`: remains private and lock-stable; no npm package distribution claim is introduced. -Those declarations are candidate truth until #530 integrates; they are not predecessor evidence for protected main. +That source grant is protected truth. It does not transfer later evidence classes into PASS. Current residual gaps remain deliberately separate: -- the lockfile contains the GPL-family development/build tooling path described in §4.1 and therefore does not yet satisfy the organization default inbound-license policy; +- issue #531 / PR #540 owns removal of the GPL-family development/build tooling path; candidate source replacement exists, but canonical lock regeneration and unchanged exact-head verification are not complete; - exact-release dependency/NOTICE evidence must still prove the actual distributed artifact contents; - contributor ownership/assignment and acquisition-transfer evidence remain separate from source licensing; -- release/publication/deployment evidence remains separate from repository-source rights; -- no source file, README sentence, scanner result, or successful CI run may upgrade those missing evidence classes into a commercial or legal PASS. +- release/publication/deployment evidence remains separate from repository-source rights, and no GitHub release currently exists; +- no source file, README sentence, scanner result, workflow success, or model judgement may upgrade those missing evidence classes into a commercial or legal PASS. -Issue #5 carries acquisition owner/legal and ownership/assignment evidence. Issue #66 carries remaining release/publication, NOTICE and provenance/activation boundaries. Issue #531 owns the GPL-family development/build-tool replacement. The source-license decision narrows the gap but does not close those issues. +Issue #5 carries acquisition owner/legal and ownership/assignment evidence. Issue #66 carries remaining release/publication, NOTICE and provenance/activation boundaries. Issue #531 owns the GPL-family development/build-tool replacement. The protected source-license decision closes only the source-grant gap; it does not close those later evidence families. ## 9. Non-goals From 68c6114b61f226b12878981c26ba816bf1ae634c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 15:22:00 +0900 Subject: [PATCH 10/85] fix(test): match canonical PRD owner formatting --- test/runtime-bounded-context-fitness.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtime-bounded-context-fitness.test.ts b/test/runtime-bounded-context-fitness.test.ts index 6444e6f96..c580723fc 100644 --- a/test/runtime-bounded-context-fitness.test.ts +++ b/test/runtime-bounded-context-fitness.test.ts @@ -110,7 +110,7 @@ describe("Noema bounded-context fitness", () => { expect(prd).toContain("### 4.7 Agent/application runtime orchestration"); expect(prd).toContain("FR-019"); expect(prd).toContain("FR-020"); - expect(prd).toContain("contextual-orchestrator remains the sole model discovery and routing owner"); + expect(prd).toContain("`contextual-orchestrator` remains the sole model discovery and routing owner"); expect(adr).toContain("Status: Proposed"); expect(adr).toContain("Agent Runtime"); From 69bfec7106a5b25809cae79998c1feb0e76a235d Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 18:01:08 +0900 Subject: [PATCH 11/85] test(docs): require protected #537 integration in gap baseline --- test/documentation-active-work-contract.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 0670caa6f..5c22219b6 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -67,7 +67,10 @@ describe("canonical active-work documentation", () => { it("keeps the product-technical baseline on current protected and active owner truth", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); - expect(baseline).toContain("`main@bbee33270b496255d785c766fc009a5f9162a695`"); + expect(baseline).toContain("`main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`"); + expect(baseline).toContain("#537 merged"); + expect(baseline).not.toContain("`main@bbee33270b496255d785c766fc009a5f9162a695`"); + expect(baseline).not.toContain("#537 must not inherit"); expect(baseline).toContain("Apache-2.0 source grant | protected main"); expect(baseline).toContain("issue #531 / PR #540"); expect(baseline).toContain("issue #541 / PR #542"); From 49d3a1c9c6d7bb713127d5860d669231ebf8af20 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 18:01:53 +0900 Subject: [PATCH 12/85] docs: advance commercial gap baseline to protected #537 --- docs/product-technical-gap-baseline.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d9dae0d78..b3607972f 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,17 +4,17 @@ 이 문서는 제품 요구, protected 구현, active candidate, 검증, 운영 증거 사이의 현재 차이를 추적한다. 저장소 파일과 테스트는 해당 revision의 구현만 증명하며, PR 상태는 exact head와 independently resolved live base에서 다시 확인한다. 운영·배포·고객·매출·법적 증거는 해당 외부 권한이 실제로 남긴 증거만 인정한다. 문서, 성공 boolean, predecessor run, model judgement로 이후 단계의 권위를 만들지 않는다. -이 baseline의 protected-source snapshot은 `main@bbee33270b496255d785c766fc009a5f9162a695`이다. 이 commit은 #528의 runtime bounded-context foundation을 protected history에 통합한 현재 protected tip이다. Active PR의 구현과 transient workflow 상태는 별도 candidate/observation이며 protected truth로 승격하지 않는다. +이 baseline의 protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. 이 commit은 #528의 runtime bounded-context foundation을 유지하면서 #537의 GitHub installation-token stateless-format regression까지 protected history에 통합한 현재 protected tip이다. Active PR의 구현과 transient workflow 상태는 별도 candidate/observation이며 protected truth로 승격하지 않는다. ## Live observation — 2026-09-04 KST | Authority | Observation | Consequence | | --- | --- | --- | -| Protected source | `main@bbee33270b496255d785c766fc009a5f9162a695`; #528 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속이다. | +| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`; #528 and #537 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. GitHub installation token 소비 경로는 기존 printable-ASCII 1–4096-byte admission을 유지하면서 ~520-character stateless `ghs_...` transport regression이 protected truth가 됐다. Durable atomic claim/checkpoint persistence는 별도 후속이다. | | Apache-2.0 source grant | protected main | #530은 이미 merge되었고 root `LICENSE`가 Apache License 2.0이다. source grant integration 자체는 더 이상 open gap이 아니다. | | Third-party/tooling licensing | issue #531 / PR #540 | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate가 진행 중이나 current PR lockfile은 아직 재생성·검증 전이므로 gap은 열려 있다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft에 있다. protected #528의 pure candidate selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 | CodeGraph가 `No relevant code found`, 빈 final explore, marker spoof, annotation-only truncation을 semantic GREEN으로 오인하는 fail-open class의 owner repair가 Draft에 있다. current exact-head required runs가 terminal clean하기 전에는 protected reviewer authority가 아니다. | +| Reviewer semantic evidence | PR #546 | CodeGraph가 `No relevant code found`, 빈 final explore, marker spoof, annotation-only truncation을 semantic GREEN으로 오인하는 fail-open class의 owner repair가 Draft에 있다. #537은 이 repair가 protected truth가 되기 전에 이미 merge되었으므로 historical reviewer-success를 semantic approval로 재해석하지 않고 protected-main 후속 감사 대상으로 남긴다. current exact-head required runs가 terminal clean하기 전에는 #546도 protected reviewer authority가 아니다. | | Context Fabric consumer boundary | PR #544 | Noema가 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구하는 candidate다. mutable producer PR은 authority가 아니다. | | Release/publication | repository release collection empty | immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | @@ -23,7 +23,8 @@ | Requirement family | Canonical decision / boundary | Protected or active implementation surface | Executable proof | Residual evidence | Maturity | | --- | --- | --- | --- | --- | --- | | Credential exchange and readiness | Worker trust contract와 runtime threat model | protected `src/index.ts`, `src/worker.ts`, `src/entrypoint.ts`, `src/runtime-entrypoint.ts`, OIDC/replay/rate-limit modules | typecheck, runtime/API/security tests, exact coverage | protected deployment smoke와 실제 binding/storage operational evidence | Implemented on protected main; operational evidence separate | -| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 reviewer-semantic repair | reviewer/workflow contract tests and exact-head workflows | #546 protected integration 후 기존 false-green head의 reviewer evidence 재생성; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | +| GitHub installation-token compatibility | token은 GitHub-owned opaque transport이며 Noema는 provider-specific payload를 해석하지 않고 bounded printable ASCII로만 운반 | protected `src/index.ts` admission + #537 stateless-format regression | ~520-character `ghs_...` round-trip regression on protected main | live GitHub App exchange/rotation evidence는 external operational evidence | Protected transport compatibility; live operational proof separate | +| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 reviewer-semantic repair | reviewer/workflow contract tests and exact-head workflows | #546 protected integration 후 false-green 영향을 받은 open heads의 reviewer evidence 재생성; merged #537 delta는 protected-main retrospective audit; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | | Agent Runtime | ADR 0012 + Context Map | protected execution lifecycle from #528 | lifecycle/cancellation/idempotency/hostile input tests | broader runtime composition and recovery slices | Protected foundation | | Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected `src/workflow-task-execution/task-plan.ts`; issue #541 / PR #542 durable state-store candidate | protected DAG/concurrency/runnable tests; candidate atomicity/recovery tests on #542 | unchanged exact-head GREEN + protected integration of atomic claim/checkpoint/recovery | Protected pure foundation; durable execution candidate | | State / Checkpoint | monotonic same-execution admission, exact replay idempotency, CAS at persistence boundary | protected checkpoint admission; PR #542 durable CAS candidate | protected admission tests; candidate storage atomicity/recovery tests | durable persistence current-head GREEN and protected merge | Protected admission; persistence candidate | @@ -38,13 +39,13 @@ ## Reviewer-evidence convergence -Several unchanged product heads have application/security/image workflow successes but their historical `reviewer-ci` result was produced under the confirmed semantic false-green contract. In particular #526, #533, #537 and #543 must not inherit that reviewer success. #546 is the canonical owner repair. It must first reach protected truth with its own unchanged exact-head terminal evidence; affected product heads then require fresh reviewer execution under that protected gate. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, or gate weakening is not completion. +Several unchanged open product heads have application/security/image workflow successes but their historical `reviewer-ci` result was produced under the confirmed semantic false-green contract. In particular #526, #533 and #543 must not inherit that reviewer success. #546 is the canonical owner repair. It must first reach protected truth with its own unchanged exact-head terminal evidence; affected open product heads then require fresh reviewer execution under that protected gate. #537 is no longer an open head: it merged into protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` before #546 integration, so its historical reviewer workflow success is not retroactively upgraded to semantic approval. Its protected delta remains subject to a post-integration protected-main audit or equivalent successor evidence. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, or gate weakening is not completion. ## Prioritized residual gaps | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic false-green | review workflow `success`가 실제 semantic code evidence 없이 merge evidence로 오인될 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + protected merge; then fresh affected-head reviewer evidence | #546 current exact-head execution을 보호하고 terminal evidence를 재확인한다 | +| P0 | Reviewer semantic false-green | review workflow `success`가 실제 semantic code evidence 없이 merge evidence로 오인될 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + protected merge; then fresh affected-open-head reviewer evidence and protected-main retrospective evidence for already-merged #537 | #546 current exact-head execution을 보호하고 terminal evidence를 재확인한다 | | P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542의 unresolved source-repaired finding을 executable GREEN으로 확인하고 protected path로 통합한다 | | P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 현재 npm toolchain이 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean | pinned Node/npm으로 lockfile reproducibility lane을 완료하고 current head를 검증한다 | | P0 | Maintainer/Reviewer App and publication identity activation | 자동 유지보수·독립 review·publication capability의 실제 외부 identity 증거가 없다 | issues #29 / #227 | live App installation/permission/key custody/rotation plus successful bounded publication/rollback receipt | 외부 owner가 identity를 provision한 뒤 protected preflight/canary를 실행한다 | @@ -56,7 +57,7 @@ Several unchanged product heads have application/security/image workflow success ## Documentation contradictions repaired by current candidate -Protected `main@bbee33270b496255d785c766fc009a5f9162a695`에는 #528이 이미 merge되어 있으므로 PRD/Context Map/ADR가 그 구현을 “PR #528 candidate truth”라고 쓰면 authority가 역전된다. 또한 #530은 이미 merged되어 root Apache-2.0 source grant가 protected truth인데, 이전 baseline은 #530을 open candidate로 남겨 두었다. 현재 documentation-repair candidate는 이 두 stale 상태를 제거하면서 ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528과 #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #537을 아직 open reviewer-regeneration 대상으로 나열하면 authority가 역전된다. 또한 #530은 이미 merged되어 root Apache-2.0 source grant가 protected truth인데, 이전 baseline은 #530을 open candidate로 남겨 두었다. 현재 documentation-repair candidate는 이 stale 상태를 제거하면서 ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. ## Completion discipline From e9b19693e583fdea49f422457242eead629deab0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 16:42:34 +0900 Subject: [PATCH 13/85] docs(gaps): refresh reviewer provenance and active evidence --- docs/product-technical-gap-baseline.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b3607972f..335d6aab2 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,15 +6,16 @@ 이 baseline의 protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. 이 commit은 #528의 runtime bounded-context foundation을 유지하면서 #537의 GitHub installation-token stateless-format regression까지 protected history에 통합한 현재 protected tip이다. Active PR의 구현과 transient workflow 상태는 별도 candidate/observation이며 protected truth로 승격하지 않는다. -## Live observation — 2026-09-04 KST +## Live observation — 2026-09-05 KST | Authority | Observation | Consequence | | --- | --- | --- | | Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`; #528 and #537 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. GitHub installation token 소비 경로는 기존 printable-ASCII 1–4096-byte admission을 유지하면서 ~520-character stateless `ghs_...` transport regression이 protected truth가 됐다. Durable atomic claim/checkpoint persistence는 별도 후속이다. | | Apache-2.0 source grant | protected main | #530은 이미 merge되었고 root `LICENSE`가 Apache License 2.0이다. source grant integration 자체는 더 이상 open gap이 아니다. | -| Third-party/tooling licensing | issue #531 / PR #540 | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate가 진행 중이나 current PR lockfile은 아직 재생성·검증 전이므로 gap은 열려 있다. | +| Third-party/tooling licensing | issue #531 / PR #540 | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate가 regenerated lockfile/policy까지 도달했다. #540 exact head의 application/reviewer/image는 성공했지만 required Security Scan이 아직 terminal GREEN이 아니므로 protected completion이 아니다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft에 있다. protected #528의 pure candidate selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 | CodeGraph가 `No relevant code found`, 빈 final explore, marker spoof, annotation-only truncation을 semantic GREEN으로 오인하는 fail-open class의 owner repair가 Draft에 있다. #537은 이 repair가 protected truth가 되기 전에 이미 merge되었으므로 historical reviewer-success를 semantic approval로 재해석하지 않고 protected-main 후속 감사 대상으로 남긴다. current exact-head required runs가 terminal clean하기 전에는 #546도 protected reviewer authority가 아니다. | +| Reviewer semantic evidence | PR #546 exact head `17411784979c25ed561ef52e4399ba0e9919bdc2` | CodeGraph semantic admission은 empty/marker/partial-scope/partial-symbol-map뿐 아니라 checkout-root provenance까지 fail closed하도록 candidate repair됐다. Symlinked checkout root 또는 symlinked ancestor는 current-head symbol seed authority가 아니다. 그러나 exact-head CI/reviewer/Security/image가 아직 runner allocation 전 non-terminal이므로 protected reviewer authority가 아니다. | +| Stacked reviewer evidence consumers | PR #533 exact `02393d11b07bf89cb3b5baf23fc13e28b51ff2dc`; PR #548 exact `abaf95ca1a2218906e10609e4b730a09edc90399` | 두 lane은 #546 `17411784...`를 ordinary two-parent/non-force ancestry로 완전 승계했고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. #546이 protected truth가 되기 전 predecessor reviewer evidence는 승계하지 않는다. | | Context Fabric consumer boundary | PR #544 | Noema가 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구하는 candidate다. mutable producer PR은 authority가 아니다. | | Release/publication | repository release collection empty | immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | @@ -24,7 +25,7 @@ | --- | --- | --- | --- | --- | --- | | Credential exchange and readiness | Worker trust contract와 runtime threat model | protected `src/index.ts`, `src/worker.ts`, `src/entrypoint.ts`, `src/runtime-entrypoint.ts`, OIDC/replay/rate-limit modules | typecheck, runtime/API/security tests, exact coverage | protected deployment smoke와 실제 binding/storage operational evidence | Implemented on protected main; operational evidence separate | | GitHub installation-token compatibility | token은 GitHub-owned opaque transport이며 Noema는 provider-specific payload를 해석하지 않고 bounded printable ASCII로만 운반 | protected `src/index.ts` admission + #537 stateless-format regression | ~520-character `ghs_...` round-trip regression on protected main | live GitHub App exchange/rotation evidence는 external operational evidence | Protected transport compatibility; live operational proof separate | -| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 reviewer-semantic repair | reviewer/workflow contract tests and exact-head workflows | #546 protected integration 후 false-green 영향을 받은 open heads의 reviewer evidence 재생성; merged #537 delta는 protected-main retrospective audit; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | +| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 semantic/provenance repair | reviewer/workflow contract tests, physical-checkout provenance regressions, current-head workflow artifacts | #546 unchanged exact-head terminal GREEN + protected integration; 이후 affected heads의 fresh semantic reviewer evidence; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | | Agent Runtime | ADR 0012 + Context Map | protected execution lifecycle from #528 | lifecycle/cancellation/idempotency/hostile input tests | broader runtime composition and recovery slices | Protected foundation | | Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected `src/workflow-task-execution/task-plan.ts`; issue #541 / PR #542 durable state-store candidate | protected DAG/concurrency/runnable tests; candidate atomicity/recovery tests on #542 | unchanged exact-head GREEN + protected integration of atomic claim/checkpoint/recovery | Protected pure foundation; durable execution candidate | | State / Checkpoint | monotonic same-execution admission, exact replay idempotency, CAS at persistence boundary | protected checkpoint admission; PR #542 durable CAS candidate | protected admission tests; candidate storage atomicity/recovery tests | durable persistence current-head GREEN and protected merge | Protected admission; persistence candidate | @@ -33,21 +34,23 @@ | contextual-orchestrator consumer | CO owns model/provider discovery/routing/failover/credentials | protected gateway boundary; PR #535 converges model authority to `orchestrator/free` | gateway/provider-boundary regressions and exact-head workflows | PR #535 exact-head terminal GREEN + protected integration | Protected boundary; routing-alias repair candidate | | Patch-validator supply chain | exact source/image/receipt binding과 fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | build/runtime/no-network/read-only/non-root/SBOM/vulnerability/receipt tests | protected-main operational receipt and immutable registry publication/signing/attestation | Implemented source; operational/publication evidence incomplete | | Apache-2.0 source grant | protected main | root `LICENSE`, README/licensing docs integrated through #530 | repository/doc/acquisition licensing contracts | artifact/package rights remain separate evidence when publication occurs | Apache-2.0 protected truth | -| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | exact lockfile/license inventory + Worker dev/deploy/typecheck/tests/security | canonical lock regeneration and exact-head terminal verification | Open compliance gap | +| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | regenerated exact lockfile/license inventory + Worker dev/deploy/typecheck/tests/security candidate evidence | required Security Scan terminal GREEN, protected integration, then protected lockfile/license re-audit | Candidate replacement implemented; protected completion open | | Release and deployment | source → artifact/SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | exact-source/reproducibility/receipt/rollback contract tests | immutable release, governed production deployment, recovery smoke | Incomplete; no release currently exists | | KPI, customer and acquisition | authentic evidence keeps source/time/buyer/legal authority | KPI/acquisition manifest/integrity/readiness validators | bounded provenance/integrity/fail-closed tests | authentic >=30-day production KPI, customer/revenue, owner/legal transfer evidence | Incomplete; commercial final gate must remain not-ready | ## Reviewer-evidence convergence -Several unchanged open product heads have application/security/image workflow successes but their historical `reviewer-ci` result was produced under the confirmed semantic false-green contract. In particular #526, #533 and #543 must not inherit that reviewer success. #546 is the canonical owner repair. It must first reach protected truth with its own unchanged exact-head terminal evidence; affected open product heads then require fresh reviewer execution under that protected gate. #537 is no longer an open head: it merged into protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` before #546 integration, so its historical reviewer workflow success is not retroactively upgraded to semantic approval. Its protected delta remains subject to a post-integration protected-main audit or equivalent successor evidence. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, or gate weakening is not completion. +#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. Its latest candidate requires complete changed-file/symbol recovery and a physical checkout root; symlinked roots or ancestors cannot seed semantic recovery. #533 and #548 are non-force stacked on exact #546 `17411784979c25ed561ef52e4399ba0e9919bdc2`, but their new current-head workflows remain non-terminal and therefore inherit no GREEN authority. + +Terminal reviewer workflow successes that were produced before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539 and #543 even where application/Security/image were already terminal success. Other active lanes whose current reviewer is still queued likewise cannot borrow predecessor results. #537 is already protected truth, so its historical reviewer success is not retroactively upgraded to semantic approval; its protected delta remains subject to a post-#546 protected-main audit or equivalent successor evidence. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. ## Prioritized residual gaps | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic false-green | review workflow `success`가 실제 semantic code evidence 없이 merge evidence로 오인될 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + protected merge; then fresh affected-open-head reviewer evidence and protected-main retrospective evidence for already-merged #537 | #546 current exact-head execution을 보호하고 terminal evidence를 재확인한다 | -| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542의 unresolved source-repaired finding을 executable GREEN으로 확인하고 protected path로 통합한다 | -| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 현재 npm toolchain이 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean | pinned Node/npm으로 lockfile reproducibility lane을 완료하고 current head를 검증한다 | +| P0 | Reviewer semantic/provenance false-green | review workflow `success`가 empty/partial/redirected CodeGraph evidence를 실제 current-head semantic evidence로 오인할 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero valid findings + protected merge; then fresh affected-head reviewer evidence and protected-main retrospective evidence where required | #546 exact `17411784...`의 runner allocation 이후 current-head evidence를 재검증하고 실패가 나오면 해당 lane에서 즉시 RCA한다 | +| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542의 source-repaired findings를 current-head executable GREEN으로 확인하고 protected path로 통합한다 | +| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 legacy npm toolchain 경로가 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean + protected merge | #540 required Security lane을 current head에서 끝까지 검증하고 실패 시 dependency/toolchain owner에서 RCA한다 | | P0 | Maintainer/Reviewer App and publication identity activation | 자동 유지보수·독립 review·publication capability의 실제 외부 identity 증거가 없다 | issues #29 / #227 | live App installation/permission/key custody/rotation plus successful bounded publication/rollback receipt | 외부 owner가 identity를 provision한 뒤 protected preflight/canary를 실행한다 | | P0 | Protected `main` governance target | source 검사만으로 실제 merge/release 정책을 만들 수 없다 | issue #27 | fresh live ruleset/protection and behavioral proof | authorized control plane에서 gap을 검증·수정한다 | | P1 | Context Graph immutable producer contract | runtime evidence projection이 mutable producer source에 기대면 buyer/audit authority가 흔들린다 | PR #544 + producer owner | immutable producer release with package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence and authenticated Noema trust anchor | producer release 전에는 fail closed; #544 current candidate를 exact-head 검증한다 | @@ -57,7 +60,7 @@ Several unchanged open product heads have application/security/image workflow su ## Documentation contradictions repaired by current candidate -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528과 #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #537을 아직 open reviewer-regeneration 대상으로 나열하면 authority가 역전된다. 또한 #530은 이미 merged되어 root Apache-2.0 source grant가 protected truth인데, 이전 baseline은 #530을 open candidate로 남겨 두었다. 현재 documentation-repair candidate는 이 stale 상태를 제거하면서 ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #530/#537을 아직 open candidate로 서술하면 authority가 역전된다. 현재 documentation-repair candidate는 이 protected truth를 유지하면서, #546의 최신 semantic/provenance repair와 그 non-terminal exact-head evidence를 active candidate로만 기록한다. ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. ## Completion discipline From 799ba1d7cbe1d25feed8b76f2a2d192290cebbc5 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 17:10:42 +0900 Subject: [PATCH 14/85] docs: refresh commercial gap authority after CodeGraph path repair --- docs/product-technical-gap-baseline.md | 31 ++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 335d6aab2..4e5bd3fae 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,19 +4,20 @@ 이 문서는 제품 요구, protected 구현, active candidate, 검증, 운영 증거 사이의 현재 차이를 추적한다. 저장소 파일과 테스트는 해당 revision의 구현만 증명하며, PR 상태는 exact head와 independently resolved live base에서 다시 확인한다. 운영·배포·고객·매출·법적 증거는 해당 외부 권한이 실제로 남긴 증거만 인정한다. 문서, 성공 boolean, predecessor run, model judgement로 이후 단계의 권위를 만들지 않는다. -이 baseline의 protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. 이 commit은 #528의 runtime bounded-context foundation을 유지하면서 #537의 GitHub installation-token stateless-format regression까지 protected history에 통합한 현재 protected tip이다. Active PR의 구현과 transient workflow 상태는 별도 candidate/observation이며 protected truth로 승격하지 않는다. +이 baseline의 protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. 이 commit은 #528의 runtime bounded-context foundation과 #537의 GitHub installation-token stateless-format regression을 protected history에 통합한 현재 protected tip이다. Active PR 구현과 transient workflow 상태는 candidate/observation이며 protected truth로 승격하지 않는다. ## Live observation — 2026-09-05 KST | Authority | Observation | Consequence | | --- | --- | --- | -| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`; #528 and #537 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. GitHub installation token 소비 경로는 기존 printable-ASCII 1–4096-byte admission을 유지하면서 ~520-character stateless `ghs_...` transport regression이 protected truth가 됐다. Durable atomic claim/checkpoint persistence는 별도 후속이다. | -| Apache-2.0 source grant | protected main | #530은 이미 merge되었고 root `LICENSE`가 Apache License 2.0이다. source grant integration 자체는 더 이상 open gap이 아니다. | -| Third-party/tooling licensing | issue #531 / PR #540 | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate가 regenerated lockfile/policy까지 도달했다. #540 exact head의 application/reviewer/image는 성공했지만 required Security Scan이 아직 terminal GREEN이 아니므로 protected completion이 아니다. | +| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`; #528 and #537 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속이다. | +| Apache-2.0 source grant | protected main | #530은 merge되었고 root `LICENSE`가 Apache License 2.0이다. source grant integration 자체는 open gap이 아니다. | +| Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate가 regenerated lockfile/policy까지 도달했고 exact-head application CI, reviewer-ci, Security Scan, patch-validator-image가 모두 terminal success다. 다만 reviewer 성공은 #546 protected integration 이전 semantic contract에서 생성됐으므로 protected completion/merge authority로 승계하지 않는다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft에 있다. protected #528의 pure candidate selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact head `17411784979c25ed561ef52e4399ba0e9919bdc2` | CodeGraph semantic admission은 empty/marker/partial-scope/partial-symbol-map뿐 아니라 checkout-root provenance까지 fail closed하도록 candidate repair됐다. Symlinked checkout root 또는 symlinked ancestor는 current-head symbol seed authority가 아니다. 그러나 exact-head CI/reviewer/Security/image가 아직 runner allocation 전 non-terminal이므로 protected reviewer authority가 아니다. | -| Stacked reviewer evidence consumers | PR #533 exact `02393d11b07bf89cb3b5baf23fc13e28b51ff2dc`; PR #548 exact `abaf95ca1a2218906e10609e4b730a09edc90399` | 두 lane은 #546 `17411784...`를 ordinary two-parent/non-force ancestry로 완전 승계했고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. #546이 protected truth가 되기 전 predecessor reviewer evidence는 승계하지 않는다. | +| Reviewer semantic evidence | PR #546 exact `ebbc7481d651c01034cb776631590de135878f6a` | CodeGraph semantic admission은 empty/marker/partial-scope/partial-symbol-map, physical checkout provenance뿐 아니라 sandbox changed-path normalization도 fail closed하도록 candidate repair됐다. Leading/trailing/repeated whitespace, newline/tab, >300-character valid nested paths는 byte identity를 잃지 않으며 scope는 80 files / 24,079 characters로 bounded된다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이므로 protected reviewer authority가 아니다. | +| Stacked reviewer evidence consumers | PR #533 exact `bf7f8e08323abb3b3d3ed95de7cf45deb022a4a0`; PR #548 exact `86038ef3232c8b1954e60ef134e1b6b26df4aaaf` | 두 lane은 #546 `ebbc7481...`를 ordinary two-parent/non-force ancestry로 완전 승계했고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 58/72 commits ahead, 0 behind, merge-base exact #546이다. 새 exact-head workflows는 non-terminal이며 Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema가 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구하는 candidate다. mutable producer PR은 authority가 아니다. | +| Central workflow trust source | `.github/main@6d7fbebec8aec31d88a30a36e71ca5b3925d241d`; PR #527 exact `ffd861ce813df7f054b25315ade7b052f031fe2e` | OIDC `job_workflow_sha`는 complete protected central source commit에 exact equality로 묶인다. #527은 현 중앙 protected head를 정확히 pin하고 있으며 중앙 scheduler/reviewer/security 구현은 Noema로 복제하지 않는다. | | Release/publication | repository release collection empty | immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | ## Current baseline @@ -25,7 +26,7 @@ | --- | --- | --- | --- | --- | --- | | Credential exchange and readiness | Worker trust contract와 runtime threat model | protected `src/index.ts`, `src/worker.ts`, `src/entrypoint.ts`, `src/runtime-entrypoint.ts`, OIDC/replay/rate-limit modules | typecheck, runtime/API/security tests, exact coverage | protected deployment smoke와 실제 binding/storage operational evidence | Implemented on protected main; operational evidence separate | | GitHub installation-token compatibility | token은 GitHub-owned opaque transport이며 Noema는 provider-specific payload를 해석하지 않고 bounded printable ASCII로만 운반 | protected `src/index.ts` admission + #537 stateless-format regression | ~520-character `ghs_...` round-trip regression on protected main | live GitHub App exchange/rotation evidence는 external operational evidence | Protected transport compatibility; live operational proof separate | -| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 semantic/provenance repair | reviewer/workflow contract tests, physical-checkout provenance regressions, current-head workflow artifacts | #546 unchanged exact-head terminal GREEN + protected integration; 이후 affected heads의 fresh semantic reviewer evidence; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | +| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 semantic/provenance/path-identity repair | reviewer/workflow contract tests, complete symbol-map/path recovery regressions, physical-checkout regressions, sandbox changed-path identity regression | #546 unchanged exact-head terminal GREEN + protected integration; 이후 affected heads의 fresh semantic reviewer evidence; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | | Agent Runtime | ADR 0012 + Context Map | protected execution lifecycle from #528 | lifecycle/cancellation/idempotency/hostile input tests | broader runtime composition and recovery slices | Protected foundation | | Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected `src/workflow-task-execution/task-plan.ts`; issue #541 / PR #542 durable state-store candidate | protected DAG/concurrency/runnable tests; candidate atomicity/recovery tests on #542 | unchanged exact-head GREEN + protected integration of atomic claim/checkpoint/recovery | Protected pure foundation; durable execution candidate | | State / Checkpoint | monotonic same-execution admission, exact replay idempotency, CAS at persistence boundary | protected checkpoint admission; PR #542 durable CAS candidate | protected admission tests; candidate storage atomicity/recovery tests | durable persistence current-head GREEN and protected merge | Protected admission; persistence candidate | @@ -34,23 +35,25 @@ | contextual-orchestrator consumer | CO owns model/provider discovery/routing/failover/credentials | protected gateway boundary; PR #535 converges model authority to `orchestrator/free` | gateway/provider-boundary regressions and exact-head workflows | PR #535 exact-head terminal GREEN + protected integration | Protected boundary; routing-alias repair candidate | | Patch-validator supply chain | exact source/image/receipt binding과 fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | build/runtime/no-network/read-only/non-root/SBOM/vulnerability/receipt tests | protected-main operational receipt and immutable registry publication/signing/attestation | Implemented source; operational/publication evidence incomplete | | Apache-2.0 source grant | protected main | root `LICENSE`, README/licensing docs integrated through #530 | repository/doc/acquisition licensing contracts | artifact/package rights remain separate evidence when publication occurs | Apache-2.0 protected truth | -| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | regenerated exact lockfile/license inventory + Worker dev/deploy/typecheck/tests/security candidate evidence | required Security Scan terminal GREEN, protected integration, then protected lockfile/license re-audit | Candidate replacement implemented; protected completion open | +| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | regenerated exact lockfile/license inventory; exact-head application/reviewer/Security/image terminal success | post-#546 semantic reviewer evidence + protected integration + protected lockfile/license re-audit | Candidate replacement implementation and current non-review gates GREEN; protected completion open | | Release and deployment | source → artifact/SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | exact-source/reproducibility/receipt/rollback contract tests | immutable release, governed production deployment, recovery smoke | Incomplete; no release currently exists | | KPI, customer and acquisition | authentic evidence keeps source/time/buyer/legal authority | KPI/acquisition manifest/integrity/readiness validators | bounded provenance/integrity/fail-closed tests | authentic >=30-day production KPI, customer/revenue, owner/legal transfer evidence | Incomplete; commercial final gate must remain not-ready | ## Reviewer-evidence convergence -#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. Its latest candidate requires complete changed-file/symbol recovery and a physical checkout root; symlinked roots or ancestors cannot seed semantic recovery. #533 and #548 are non-force stacked on exact #546 `17411784979c25ed561ef52e4399ba0e9919bdc2`, but their new current-head workflows remain non-terminal and therefore inherit no GREEN authority. +#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. Its latest candidate additionally repairs the sandbox-side changed-path normalization contract: valid Git filename bytes are preserved exactly instead of being trimmed, and the stale 300-character per-path ceiling is replaced by the already established 24,079-character aggregate query bound. This does not make the helper a separate security/quarantine authority; it aligns Noema-owned reviewer evidence identity across the candidate surfaces. -Terminal reviewer workflow successes that were produced before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539 and #543 even where application/Security/image were already terminal success. Other active lanes whose current reviewer is still queued likewise cannot borrow predecessor results. #537 is already protected truth, so its historical reviewer success is not retroactively upgraded to semantic approval; its protected delta remains subject to a post-#546 protected-main audit or equivalent successor evidence. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. +#533 and #548 are non-force stacked on exact #546 `ebbc7481d651c01034cb776631590de135878f6a`. Their exact heads are respectively `bf7f8e08323abb3b3d3ed95de7cf45deb022a4a0` and `86038ef3232c8b1954e60ef134e1b6b26df4aaaf`; both compare 0 behind their prerequisite and retain only their owned semantic runner-evidence/actionability deltas. Their new current-head workflows remain non-terminal and therefore inherit no GREEN authority. + +Terminal reviewer workflow successes produced before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Other active lanes whose current reviewer is queued likewise cannot borrow predecessor results. #537 is already protected truth, so its historical reviewer success is not retroactively upgraded to semantic approval; its protected delta remains subject to a post-#546 protected-main audit or equivalent successor evidence. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. ## Prioritized residual gaps | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | review workflow `success`가 empty/partial/redirected CodeGraph evidence를 실제 current-head semantic evidence로 오인할 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero valid findings + protected merge; then fresh affected-head reviewer evidence and protected-main retrospective evidence where required | #546 exact `17411784...`의 runner allocation 이후 current-head evidence를 재검증하고 실패가 나오면 해당 lane에서 즉시 RCA한다 | -| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542의 source-repaired findings를 current-head executable GREEN으로 확인하고 protected path로 통합한다 | -| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 legacy npm toolchain 경로가 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean + protected merge | #540 required Security lane을 current head에서 끝까지 검증하고 실패 시 dependency/toolchain owner에서 RCA한다 | +| P0 | Reviewer semantic/provenance false-green | review workflow `success`가 empty/partial/redirected/normalized CodeGraph evidence를 실제 current-head semantic evidence로 오인할 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero valid findings + protected merge; then fresh affected-head reviewer evidence and protected-main retrospective evidence where required | #546 exact `ebbc7481...`의 current-head workflows를 검증하고 실패가 나오면 해당 lane에서 즉시 RCA한다 | +| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542 source-repaired findings를 current-head executable GREEN으로 확인하고 protected path로 통합한다 | +| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 legacy npm toolchain 경로가 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean + protected merge | #546 protected integration 후 #540 unchanged head의 semantic reviewer evidence를 재생성하고 protected merge readiness를 재검증한다 | | P0 | Maintainer/Reviewer App and publication identity activation | 자동 유지보수·독립 review·publication capability의 실제 외부 identity 증거가 없다 | issues #29 / #227 | live App installation/permission/key custody/rotation plus successful bounded publication/rollback receipt | 외부 owner가 identity를 provision한 뒤 protected preflight/canary를 실행한다 | | P0 | Protected `main` governance target | source 검사만으로 실제 merge/release 정책을 만들 수 없다 | issue #27 | fresh live ruleset/protection and behavioral proof | authorized control plane에서 gap을 검증·수정한다 | | P1 | Context Graph immutable producer contract | runtime evidence projection이 mutable producer source에 기대면 buyer/audit authority가 흔들린다 | PR #544 + producer owner | immutable producer release with package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence and authenticated Noema trust anchor | producer release 전에는 fail closed; #544 current candidate를 exact-head 검증한다 | @@ -60,7 +63,7 @@ Terminal reviewer workflow successes that were produced before #546 reaches prot ## Documentation contradictions repaired by current candidate -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #530/#537을 아직 open candidate로 서술하면 authority가 역전된다. 현재 documentation-repair candidate는 이 protected truth를 유지하면서, #546의 최신 semantic/provenance repair와 그 non-terminal exact-head evidence를 active candidate로만 기록한다. ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #530/#537을 open candidate로 서술하면 authority가 역전된다. 현재 documentation-repair candidate는 이 protected truth를 유지하면서 #546 `ebbc7481...`, stacked #533/#548, #540 terminal workflow observation, central trust source `6d7fbebe...`, empty release collection을 candidate/observation으로만 기록한다. ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. ## Completion discipline From 4a7dd10b5e5753da28d44c3d51cc92e341fa244e Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 17:15:56 +0900 Subject: [PATCH 15/85] docs: track current protected central trust authority --- docs/product-technical-gap-baseline.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 4e5bd3fae..d9ebde92c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -17,7 +17,7 @@ | Reviewer semantic evidence | PR #546 exact `ebbc7481d651c01034cb776631590de135878f6a` | CodeGraph semantic admission은 empty/marker/partial-scope/partial-symbol-map, physical checkout provenance뿐 아니라 sandbox changed-path normalization도 fail closed하도록 candidate repair됐다. Leading/trailing/repeated whitespace, newline/tab, >300-character valid nested paths는 byte identity를 잃지 않으며 scope는 80 files / 24,079 characters로 bounded된다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이므로 protected reviewer authority가 아니다. | | Stacked reviewer evidence consumers | PR #533 exact `bf7f8e08323abb3b3d3ed95de7cf45deb022a4a0`; PR #548 exact `86038ef3232c8b1954e60ef134e1b6b26df4aaaf` | 두 lane은 #546 `ebbc7481...`를 ordinary two-parent/non-force ancestry로 완전 승계했고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 58/72 commits ahead, 0 behind, merge-base exact #546이다. 새 exact-head workflows는 non-terminal이며 Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema가 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구하는 candidate다. mutable producer PR은 authority가 아니다. | -| Central workflow trust source | `.github/main@6d7fbebec8aec31d88a30a36e71ca5b3925d241d`; PR #527 exact `ffd861ce813df7f054b25315ade7b052f031fe2e` | OIDC `job_workflow_sha`는 complete protected central source commit에 exact equality로 묶인다. #527은 현 중앙 protected head를 정확히 pin하고 있으며 중앙 scheduler/reviewer/security 구현은 Noema로 복제하지 않는다. | +| Central workflow trust source | `.github/main@71dd84d40576281a6218f622d685d13c6b2f5e7b`; PR #527 exact `6721cb5fcf2167bb4679cc3437e911635485e06d` | OIDC `job_workflow_sha`는 complete protected central source commit에 exact equality로 묶인다. 중앙 #1883은 admission-controller/scheduler/CodeQL-audit coverage·docstring을 수리했으며 Noema trust-bearing workflow/gate/security blobs는 이전 감사와 동일하다. #527은 RED→source repair로 새 protected commit을 정확히 pin했고 중앙 구현은 Noema로 복제하지 않는다. | | Release/publication | repository release collection empty | immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | ## Current baseline @@ -41,7 +41,7 @@ ## Reviewer-evidence convergence -#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. Its latest candidate additionally repairs the sandbox-side changed-path normalization contract: valid Git filename bytes are preserved exactly instead of being trimmed, and the stale 300-character per-path ceiling is replaced by the already established 24,079-character aggregate query bound. This does not make the helper a separate security/quarantine authority; it aligns Noema-owned reviewer evidence identity across the candidate surfaces. +#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. Its latest candidate additionally repairs the sandbox-side changed-path normalization contract: valid Git filename bytes are preserved exactly instead of being trimmed, and the stale 300-character per-path ceiling is replaced by the established 24,079-character aggregate query bound. This does not make the helper a separate security/quarantine authority; it aligns Noema-owned reviewer evidence identity across candidate surfaces. #533 and #548 are non-force stacked on exact #546 `ebbc7481d651c01034cb776631590de135878f6a`. Their exact heads are respectively `bf7f8e08323abb3b3d3ed95de7cf45deb022a4a0` and `86038ef3232c8b1954e60ef134e1b6b26df4aaaf`; both compare 0 behind their prerequisite and retain only their owned semantic runner-evidence/actionability deltas. Their new current-head workflows remain non-terminal and therefore inherit no GREEN authority. @@ -63,7 +63,7 @@ Terminal reviewer workflow successes produced before #546 reaches protected trut ## Documentation contradictions repaired by current candidate -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #530/#537을 open candidate로 서술하면 authority가 역전된다. 현재 documentation-repair candidate는 이 protected truth를 유지하면서 #546 `ebbc7481...`, stacked #533/#548, #540 terminal workflow observation, central trust source `6d7fbebe...`, empty release collection을 candidate/observation으로만 기록한다. ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #530/#537을 open candidate로 서술하면 authority가 역전된다. 현재 documentation-repair candidate는 이 protected truth를 유지하면서 #546 `ebbc7481...`, stacked #533/#548, #540 terminal workflow observation, central trust source `71dd84d...`와 #527 pin `6721cb5f...`, empty release collection을 candidate/observation으로만 기록한다. ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. ## Completion discipline From 19ee7d7d012fa2e9d50250a4773dae12aba4423a Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 18:11:08 +0900 Subject: [PATCH 16/85] docs: refresh Noema commercial gap authority --- docs/product-technical-gap-baseline.md | 69 +++++++++++++------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d9ebde92c..facd9dc97 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -2,68 +2,67 @@ ## Authority and update rule -이 문서는 제품 요구, protected 구현, active candidate, 검증, 운영 증거 사이의 현재 차이를 추적한다. 저장소 파일과 테스트는 해당 revision의 구현만 증명하며, PR 상태는 exact head와 independently resolved live base에서 다시 확인한다. 운영·배포·고객·매출·법적 증거는 해당 외부 권한이 실제로 남긴 증거만 인정한다. 문서, 성공 boolean, predecessor run, model judgement로 이후 단계의 권위를 만들지 않는다. +이 문서는 제품 요구, protected 구현, active candidate, 검증, 운영 증거 사이의 현재 차이를 추적한다. 저장소 파일과 테스트는 해당 revision의 구현만 증명하며 PR 상태는 exact head와 independently resolved live base에서 다시 확인한다. 운영·배포·고객·매출·법적 증거는 해당 외부 권한이 실제로 남긴 증거만 인정한다. 문서, 성공 boolean, predecessor run, model judgement로 이후 단계의 권위를 만들지 않는다. -이 baseline의 protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. 이 commit은 #528의 runtime bounded-context foundation과 #537의 GitHub installation-token stateless-format regression을 protected history에 통합한 현재 protected tip이다. Active PR 구현과 transient workflow 상태는 candidate/observation이며 protected truth로 승격하지 않는다. +Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. 이 commit은 #528 runtime bounded-context foundation과 #537 GitHub installation-token stateless-format regression을 포함한다. Active PR 구현과 transient workflow 상태는 candidate/observation이며 protected truth로 승격하지 않는다. ## Live observation — 2026-09-05 KST | Authority | Observation | Consequence | | --- | --- | --- | -| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`; #528 and #537 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속이다. | -| Apache-2.0 source grant | protected main | #530은 merge되었고 root `LICENSE`가 Apache License 2.0이다. source grant integration 자체는 open gap이 아니다. | -| Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate가 regenerated lockfile/policy까지 도달했고 exact-head application CI, reviewer-ci, Security Scan, patch-validator-image가 모두 terminal success다. 다만 reviewer 성공은 #546 protected integration 이전 semantic contract에서 생성됐으므로 protected completion/merge authority로 승계하지 않는다. | -| Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft에 있다. protected #528의 pure candidate selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `ebbc7481d651c01034cb776631590de135878f6a` | CodeGraph semantic admission은 empty/marker/partial-scope/partial-symbol-map, physical checkout provenance뿐 아니라 sandbox changed-path normalization도 fail closed하도록 candidate repair됐다. Leading/trailing/repeated whitespace, newline/tab, >300-character valid nested paths는 byte identity를 잃지 않으며 scope는 80 files / 24,079 characters로 bounded된다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이므로 protected reviewer authority가 아니다. | -| Stacked reviewer evidence consumers | PR #533 exact `bf7f8e08323abb3b3d3ed95de7cf45deb022a4a0`; PR #548 exact `86038ef3232c8b1954e60ef134e1b6b26df4aaaf` | 두 lane은 #546 `ebbc7481...`를 ordinary two-parent/non-force ancestry로 완전 승계했고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 58/72 commits ahead, 0 behind, merge-base exact #546이다. 새 exact-head workflows는 non-terminal이며 Security Scan은 아직 materialize되지 않았다. | -| Context Fabric consumer boundary | PR #544 | Noema가 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구하는 candidate다. mutable producer PR은 authority가 아니다. | -| Central workflow trust source | `.github/main@71dd84d40576281a6218f622d685d13c6b2f5e7b`; PR #527 exact `6721cb5fcf2167bb4679cc3437e911635485e06d` | OIDC `job_workflow_sha`는 complete protected central source commit에 exact equality로 묶인다. 중앙 #1883은 admission-controller/scheduler/CodeQL-audit coverage·docstring을 수리했으며 Noema trust-bearing workflow/gate/security blobs는 이전 감사와 동일하다. #527은 RED→source repair로 새 protected commit을 정확히 pin했고 중앙 구현은 Noema로 복제하지 않는다. | -| Release/publication | repository release collection empty | immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | +| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`; #528/#530/#537 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection과 Apache-2.0 source grant는 protected truth다. Durable atomic claim/checkpoint persistence는 후속 candidate다. | +| Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer 성공은 #546 protected integration 이전 semantic contract에서 생성됐으므로 merge-authoritative semantic GREEN으로 승계하지 않는다. | +| Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected #528 pure candidate selector는 durable execution authority를 대신하지 않는다. | +| Reviewer semantic evidence | PR #546 exact `5eee2566d628159113b75741f1914dee824a6545` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity에 더해 Python code-point count와 JavaScript UTF-16 count 불일치도 repair됐다. Sandbox는 `Array.from(rawPath).length`로 Python reviewer와 같은 80 files / 24,079 Unicode-code-point aggregate contract를 사용한다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이므로 protected reviewer authority가 아니다. | +| Stacked reviewer evidence consumers | PR #533 exact `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3`; PR #548 exact `0a039bfeab3b195cdfe921431fef18e79d1cb173` | 두 lane은 #546 `5eee2566...`를 ordinary two-parent/non-force ancestry로 완전 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 59/73 commits ahead, 0 behind, merge-base exact #546이다. 새 exact-head workflows는 non-terminal이며 required Security Scan은 두 stacked head에서 아직 materialize되지 않았다. | +| Context Fabric consumer boundary | PR #544 | Noema는 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구한다. Mutable producer PR은 authority가 아니다. | +| Central workflow trust source | `.github/main@62919d76edf015ca51501a8819233906612d2dfa`; PR #527 exact `d35993eb1b1e50028b8a25c5bb44bc8613c38258` | OIDC `job_workflow_sha`는 complete protected central source commit에 exact equality로 묶인다. 중앙 head가 이동했지만 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 그대로다. #527은 RED `6e746112...` → production `d35993eb...`으로 새 complete source commit을 pin했다. | +| Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | ## Current baseline | Requirement family | Canonical decision / boundary | Protected or active implementation surface | Executable proof | Residual evidence | Maturity | | --- | --- | --- | --- | --- | --- | -| Credential exchange and readiness | Worker trust contract와 runtime threat model | protected `src/index.ts`, `src/worker.ts`, `src/entrypoint.ts`, `src/runtime-entrypoint.ts`, OIDC/replay/rate-limit modules | typecheck, runtime/API/security tests, exact coverage | protected deployment smoke와 실제 binding/storage operational evidence | Implemented on protected main; operational evidence separate | -| GitHub installation-token compatibility | token은 GitHub-owned opaque transport이며 Noema는 provider-specific payload를 해석하지 않고 bounded printable ASCII로만 운반 | protected `src/index.ts` admission + #537 stateless-format regression | ~520-character `ghs_...` round-trip regression on protected main | live GitHub App exchange/rotation evidence는 external operational evidence | Protected transport compatibility; live operational proof separate | -| Reviewer and maintenance control plane | 독립 identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source plus active PR #546 semantic/provenance/path-identity repair | reviewer/workflow contract tests, complete symbol-map/path recovery regressions, physical-checkout regressions, sandbox changed-path identity regression | #546 unchanged exact-head terminal GREEN + protected integration; 이후 affected heads의 fresh semantic reviewer evidence; Maintainer/Reviewer App external activation | Source implemented; reviewer evidence integrity repair active | -| Agent Runtime | ADR 0012 + Context Map | protected execution lifecycle from #528 | lifecycle/cancellation/idempotency/hostile input tests | broader runtime composition and recovery slices | Protected foundation | -| Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected `src/workflow-task-execution/task-plan.ts`; issue #541 / PR #542 durable state-store candidate | protected DAG/concurrency/runnable tests; candidate atomicity/recovery tests on #542 | unchanged exact-head GREEN + protected integration of atomic claim/checkpoint/recovery | Protected pure foundation; durable execution candidate | +| Credential exchange and readiness | Worker trust contract와 runtime threat model | protected runtime entrypoints, OIDC/replay/rate-limit modules | typecheck, runtime/API/security tests, exact coverage | protected deployment smoke와 실제 binding/storage operational evidence | Implemented on protected main; operational evidence separate | +| GitHub installation-token compatibility | token은 GitHub-owned opaque transport이며 Noema는 provider-specific payload를 해석하지 않는다 | protected `src/index.ts` admission + #537 stateless-format regression | ~520-character `ghs_...` round-trip regression | live GitHub App exchange/rotation evidence | Protected transport compatibility; live operational proof separate | +| Reviewer and maintenance control plane | independent identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source + active #546 semantic/provenance/path-budget repair | reviewer/workflow contract tests, symbol-map/path recovery, physical-checkout and cross-runtime Unicode-scope regressions | #546 unchanged exact-head terminal GREEN + protected integration; 이후 affected heads fresh semantic review; App activation | Source implemented; reviewer evidence-integrity repair active | +| Agent Runtime | ADR 0012 + Context Map | protected execution lifecycle from #528 | lifecycle/cancellation/idempotency/hostile-input tests | broader runtime composition and recovery slices | Protected foundation | +| Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected task-plan admission; issue #541 / PR #542 durable state-store candidate | protected DAG/concurrency/runnable tests; candidate atomicity/recovery tests | unchanged exact-head GREEN + atomic claim/checkpoint/recovery protected integration | Protected pure foundation; durable execution candidate | | State / Checkpoint | monotonic same-execution admission, exact replay idempotency, CAS at persistence boundary | protected checkpoint admission; PR #542 durable CAS candidate | protected admission tests; candidate storage atomicity/recovery tests | durable persistence current-head GREEN and protected merge | Protected admission; persistence candidate | -| Tool / Capability Boundary | least authority, explicit versioned capabilities, foreign owner ACL | bounded protected capability patterns; issue #545 future external-extension admission | capability/path/credential hostile tests where implemented | product-scoped extension admission/activation/expiry/rollback implementation after #541/#542 | Partial; future product slice remains | +| Tool / Capability Boundary | least authority, explicit versioned capabilities, foreign-owner ACL | bounded protected capability patterns; issue #545 future external-extension admission | capability/path/credential hostile tests | extension admission/activation/expiry/rollback after workflow-state foundation | Partial; future product slice remains | | Context Fabric consumer | immutable released producer contract only; no source copy/cross-service SQL | protected fail-closed boundary + PR #544 strengthened release evidence | ACL/conformance/admission regressions | immutable `context-graph-contracts` release and authenticated Noema trust anchor | Candidate strengthening; foreign release prerequisite open | -| contextual-orchestrator consumer | CO owns model/provider discovery/routing/failover/credentials | protected gateway boundary; PR #535 converges model authority to `orchestrator/free` | gateway/provider-boundary regressions and exact-head workflows | PR #535 exact-head terminal GREEN + protected integration | Protected boundary; routing-alias repair candidate | -| Patch-validator supply chain | exact source/image/receipt binding과 fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | build/runtime/no-network/read-only/non-root/SBOM/vulnerability/receipt tests | protected-main operational receipt and immutable registry publication/signing/attestation | Implemented source; operational/publication evidence incomplete | -| Apache-2.0 source grant | protected main | root `LICENSE`, README/licensing docs integrated through #530 | repository/doc/acquisition licensing contracts | artifact/package rights remain separate evidence when publication occurs | Apache-2.0 protected truth | -| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | regenerated exact lockfile/license inventory; exact-head application/reviewer/Security/image terminal success | post-#546 semantic reviewer evidence + protected integration + protected lockfile/license re-audit | Candidate replacement implementation and current non-review gates GREEN; protected completion open | -| Release and deployment | source → artifact/SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | exact-source/reproducibility/receipt/rollback contract tests | immutable release, governed production deployment, recovery smoke | Incomplete; no release currently exists | +| contextual-orchestrator consumer | CO owns model/provider discovery/routing/failover/credentials | protected gateway boundary; PR #535 converges routing alias to `orchestrator/free` | gateway/provider-boundary regressions | PR #535 exact-head terminal GREEN + protected integration | Protected boundary; routing-alias repair candidate | +| Patch-validator supply chain | exact source/image/receipt binding and fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | build/runtime/no-network/read-only/non-root/SBOM/vulnerability/receipt tests | protected operational receipt and immutable registry publication/signing/attestation | Implemented source; operational/publication evidence incomplete | +| Apache-2.0 source grant | source grant와 package/artifact/dependency terms 분리 | protected root `LICENSE`, README/licensing docs through #530 | repository/doc/acquisition licensing contracts | artifact/package rights evidence remains separate when published | Apache-2.0 protected truth | +| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | regenerated exact lockfile/license inventory; application/Security/image terminal success | post-#546 semantic reviewer evidence + protected integration + protected lockfile/license re-audit | Candidate replacement; protected completion open | +| Release and deployment | source → artifact/SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | exact-source/reproducibility/receipt/rollback contract tests | immutable release, governed production deployment, recovery smoke | Incomplete; no release exists | | KPI, customer and acquisition | authentic evidence keeps source/time/buyer/legal authority | KPI/acquisition manifest/integrity/readiness validators | bounded provenance/integrity/fail-closed tests | authentic >=30-day production KPI, customer/revenue, owner/legal transfer evidence | Incomplete; commercial final gate must remain not-ready | ## Reviewer-evidence convergence -#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. Its latest candidate additionally repairs the sandbox-side changed-path normalization contract: valid Git filename bytes are preserved exactly instead of being trimmed, and the stale 300-character per-path ceiling is replaced by the established 24,079-character aggregate query bound. This does not make the helper a separate security/quarantine authority; it aligns Noema-owned reviewer evidence identity across candidate surfaces. +#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. The current candidate preserves Git filename text exactly, rejects ambiguous/partial/re-directed retrieval, enforces physical checkout provenance, and now makes the shared 24,079-character scope budget mean Unicode code points in both Python and JavaScript. RED `4b96b40bf0f3e0590b1bf99f3879418c009213ff` proves the old sandbox could reject a supplementary-plane path inventory that Python admitted; production `5eee2566d628159113b75741f1914dee824a6545` removes that cross-runtime inconsistency without expanding the canonical budget. -#533 and #548 are non-force stacked on exact #546 `ebbc7481d651c01034cb776631590de135878f6a`. Their exact heads are respectively `bf7f8e08323abb3b3d3ed95de7cf45deb022a4a0` and `86038ef3232c8b1954e60ef134e1b6b26df4aaaf`; both compare 0 behind their prerequisite and retain only their owned semantic runner-evidence/actionability deltas. Their new current-head workflows remain non-terminal and therefore inherit no GREEN authority. +#533 and #548 are non-force stacked on exact #546 `5eee2566d628159113b75741f1914dee824a6545`. Their exact heads are `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3` and `0a039bfeab3b195cdfe921431fef18e79d1cb173`; fresh compare is respectively 59 and 73 commits ahead, 0 behind, with merge-base exact #546. Their current workflows are non-terminal and therefore inherit no GREEN authority. -Terminal reviewer workflow successes produced before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Other active lanes whose current reviewer is queued likewise cannot borrow predecessor results. #537 is already protected truth, so its historical reviewer success is not retroactively upgraded to semantic approval; its protected delta remains subject to a post-#546 protected-main audit or equivalent successor evidence. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. +Terminal reviewer workflow successes produced before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Other active lanes whose current reviewer is queued likewise cannot borrow predecessor results. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. ## Prioritized residual gaps | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | review workflow `success`가 empty/partial/redirected/normalized CodeGraph evidence를 실제 current-head semantic evidence로 오인할 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero valid findings + protected merge; then fresh affected-head reviewer evidence and protected-main retrospective evidence where required | #546 exact `ebbc7481...`의 current-head workflows를 검증하고 실패가 나오면 해당 lane에서 즉시 RCA한다 | -| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542 source-repaired findings를 current-head executable GREEN으로 확인하고 protected path로 통합한다 | -| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 legacy npm toolchain 경로가 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean + protected merge | #546 protected integration 후 #540 unchanged head의 semantic reviewer evidence를 재생성하고 protected merge readiness를 재검증한다 | -| P0 | Maintainer/Reviewer App and publication identity activation | 자동 유지보수·독립 review·publication capability의 실제 외부 identity 증거가 없다 | issues #29 / #227 | live App installation/permission/key custody/rotation plus successful bounded publication/rollback receipt | 외부 owner가 identity를 provision한 뒤 protected preflight/canary를 실행한다 | +| P0 | Reviewer semantic/provenance false-green | review workflow `success`가 empty/partial/redirected/normalized/cross-runtime-inconsistent CodeGraph evidence를 실제 current-head semantic evidence로 오인할 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero valid findings + protected merge; then fresh affected-head reviewer evidence | #546 exact `5eee2566...` current-head workflows를 검증하고 실패가 나오면 해당 lane에서 즉시 RCA한다 | +| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542 source-repaired findings를 current-head executable GREEN으로 확인한다 | +| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 legacy npm toolchain 경로가 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean + protected merge | #546 protected integration 후 #540 unchanged head semantic reviewer evidence를 재생성한다 | +| P0 | Maintainer/Reviewer App and publication identity activation | 자동 유지보수·독립 review·publication capability의 실제 외부 identity 증거가 없다 | issues #29 / #227 | live App installation/permission/key custody/rotation + bounded publication/rollback receipt | 외부 owner provision 이후 protected preflight/canary | | P0 | Protected `main` governance target | source 검사만으로 실제 merge/release 정책을 만들 수 없다 | issue #27 | fresh live ruleset/protection and behavioral proof | authorized control plane에서 gap을 검증·수정한다 | -| P1 | Context Graph immutable producer contract | runtime evidence projection이 mutable producer source에 기대면 buyer/audit authority가 흔들린다 | PR #544 + producer owner | immutable producer release with package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence and authenticated Noema trust anchor | producer release 전에는 fail closed; #544 current candidate를 exact-head 검증한다 | -| P1 | Patch-validator operational/publication proof | protected source image가 실제 publication/activation됐는지 증명되지 않는다 | issue #66 | protected-main workflow receipt, immutable digest, signature/attestation, activation/rollback proof | exact protected source에서 owner-controlled operational/publication path를 실행한다 | -| P1 | Authentic >=30-day KPI | 성능·신뢰성을 fixture가 아닌 실운영 자료로 입증하지 못한다 | issue #3 | production-origin >=30-day integrity/provenance-bound KPI evidence | governed production source collector/verifier를 실행한다 | -| P1 | Immutable release/deployment/acquisition evidence | buyer/legal/commercial 단계가 source completion보다 뒤에 남아 있다 | issue #5 | immutable release, governed deployment, customer/revenue/support/rights/transfer evidence | 앞선 evidence family를 순서대로 충족하고 acquisition audit을 재실행한다 | +| P1 | Context Graph immutable producer contract | mutable producer source 의존은 buyer/audit authority를 흔든다 | PR #544 + producer owner | immutable producer release with package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence | producer release 전 fail closed; #544 exact-head 검증 | +| P1 | Patch-validator operational/publication proof | protected source image의 실제 publication/activation이 증명되지 않는다 | issue #66 | protected workflow receipt, immutable digest, signature/attestation, activation/rollback proof | exact protected source에서 owner-controlled publication path 실행 | +| P1 | Authentic >=30-day KPI | 성능·신뢰성을 fixture가 아닌 실운영 자료로 입증하지 못한다 | issue #3 | production-origin >=30-day integrity/provenance-bound KPI evidence | governed production collector/verifier 실행 | +| P1 | Immutable release/deployment/acquisition evidence | buyer/legal/commercial 단계가 source completion 뒤에 남아 있다 | issue #5 | immutable release, governed deployment, customer/revenue/support/rights/transfer evidence | 앞선 evidence family 순차 충족 후 acquisition audit 재실행 | -## Documentation contradictions repaired by current candidate +## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 PRD/Context Map/ADR가 #528 구현을 “PR #528 candidate truth”라고 쓰거나 baseline이 #530/#537을 open candidate로 서술하면 authority가 역전된다. 현재 documentation-repair candidate는 이 protected truth를 유지하면서 #546 `ebbc7481...`, stacked #533/#548, #540 terminal workflow observation, central trust source `71dd84d...`와 #527 pin `6721cb5f...`, empty release collection을 candidate/observation으로만 기록한다. ADR 0012 자체는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 이들을 open candidate로 쓰지 않는다. 현재 candidate/observation은 #546 `5eee2566...`, stacked #533 `5e992dc7...` / #548 `0a039bfe...`, #540 terminal workflow observation, central trust source `62919d76...`, #527 pin `d35993eb...`, empty release collection이다. ADR 0012는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. ## Completion discipline From b4b0afac97c45516604488bee26b863ea4b36039 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 18:15:28 +0900 Subject: [PATCH 17/85] docs: roll forward live Noema authority again --- docs/product-technical-gap-baseline.md | 81 +++++++++++++------------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index facd9dc97..27dd552bf 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,66 +4,65 @@ 이 문서는 제품 요구, protected 구현, active candidate, 검증, 운영 증거 사이의 현재 차이를 추적한다. 저장소 파일과 테스트는 해당 revision의 구현만 증명하며 PR 상태는 exact head와 independently resolved live base에서 다시 확인한다. 운영·배포·고객·매출·법적 증거는 해당 외부 권한이 실제로 남긴 증거만 인정한다. 문서, 성공 boolean, predecessor run, model judgement로 이후 단계의 권위를 만들지 않는다. -Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. 이 commit은 #528 runtime bounded-context foundation과 #537 GitHub installation-token stateless-format regression을 포함한다. Active PR 구현과 transient workflow 상태는 candidate/observation이며 protected truth로 승격하지 않는다. +Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 GitHub installation-token stateless-format regression은 protected truth다. Active PR 구현과 transient workflow 상태는 candidate/observation이며 protected truth로 승격하지 않는다. ## Live observation — 2026-09-05 KST | Authority | Observation | Consequence | | --- | --- | --- | -| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`; #528/#530/#537 merged | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection과 Apache-2.0 source grant는 protected truth다. Durable atomic claim/checkpoint persistence는 후속 candidate다. | -| Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare/Sharp/Libvips GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer 성공은 #546 protected integration 이전 semantic contract에서 생성됐으므로 merge-authoritative semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected #528 pure candidate selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `5eee2566d628159113b75741f1914dee824a6545` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity에 더해 Python code-point count와 JavaScript UTF-16 count 불일치도 repair됐다. Sandbox는 `Array.from(rawPath).length`로 Python reviewer와 같은 80 files / 24,079 Unicode-code-point aggregate contract를 사용한다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이므로 protected reviewer authority가 아니다. | -| Stacked reviewer evidence consumers | PR #533 exact `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3`; PR #548 exact `0a039bfeab3b195cdfe921431fef18e79d1cb173` | 두 lane은 #546 `5eee2566...`를 ordinary two-parent/non-force ancestry로 완전 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 59/73 commits ahead, 0 behind, merge-base exact #546이다. 새 exact-head workflows는 non-terminal이며 required Security Scan은 두 stacked head에서 아직 materialize되지 않았다. | -| Context Fabric consumer boundary | PR #544 | Noema는 future immutable Context Graph release에 source-bound attestation과 envelope-preserving admission capability를 요구한다. Mutable producer PR은 authority가 아니다. | -| Central workflow trust source | `.github/main@62919d76edf015ca51501a8819233906612d2dfa`; PR #527 exact `d35993eb1b1e50028b8a25c5bb44bc8613c38258` | OIDC `job_workflow_sha`는 complete protected central source commit에 exact equality로 묶인다. 중앙 head가 이동했지만 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 그대로다. #527은 RED `6e746112...` → production `d35993eb...`으로 새 complete source commit을 pin했다. | -| Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 존재하지 않는다. | +| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | +| Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | +| Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | +| Reviewer semantic evidence | PR #546 exact `5eee2566d628159113b75741f1914dee824a6545` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Sandbox는 `Array.from(rawPath).length`로 Python reviewer와 동일한 80 files / 24,079 Unicode-code-point aggregate contract를 사용한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | PR #533 exact `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3`; PR #548 exact `0a039bfeab3b195cdfe921431fef18e79d1cb173` | 두 lane은 #546 `5eee2566...`를 ordinary two-parent/non-force ancestry로 완전 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 59/73 ahead, 0 behind, merge-base exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | +| Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | +| Central workflow trust source | `.github/main@a01ffc1edee2e5fc9c56e4351f90a0ce4a75e77b`; PR #527 exact `c01fa18ad07d95f3d249cae617270316df771848` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central head는 telemetry/doc accounting commit으로 이동했지만 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `62a5f9bc...` → production `c01fa18a...`로 pin을 갱신했다. | +| Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | ## Current baseline -| Requirement family | Canonical decision / boundary | Protected or active implementation surface | Executable proof | Residual evidence | Maturity | -| --- | --- | --- | --- | --- | --- | -| Credential exchange and readiness | Worker trust contract와 runtime threat model | protected runtime entrypoints, OIDC/replay/rate-limit modules | typecheck, runtime/API/security tests, exact coverage | protected deployment smoke와 실제 binding/storage operational evidence | Implemented on protected main; operational evidence separate | -| GitHub installation-token compatibility | token은 GitHub-owned opaque transport이며 Noema는 provider-specific payload를 해석하지 않는다 | protected `src/index.ts` admission + #537 stateless-format regression | ~520-character `ghs_...` round-trip regression | live GitHub App exchange/rotation evidence | Protected transport compatibility; live operational proof separate | -| Reviewer and maintenance control plane | independent identity, exact-head evidence, deterministic fail-closed gates | protected reviewer/maintenance source + active #546 semantic/provenance/path-budget repair | reviewer/workflow contract tests, symbol-map/path recovery, physical-checkout and cross-runtime Unicode-scope regressions | #546 unchanged exact-head terminal GREEN + protected integration; 이후 affected heads fresh semantic review; App activation | Source implemented; reviewer evidence-integrity repair active | -| Agent Runtime | ADR 0012 + Context Map | protected execution lifecycle from #528 | lifecycle/cancellation/idempotency/hostile-input tests | broader runtime composition and recovery slices | Protected foundation | -| Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected task-plan admission; issue #541 / PR #542 durable state-store candidate | protected DAG/concurrency/runnable tests; candidate atomicity/recovery tests | unchanged exact-head GREEN + atomic claim/checkpoint/recovery protected integration | Protected pure foundation; durable execution candidate | -| State / Checkpoint | monotonic same-execution admission, exact replay idempotency, CAS at persistence boundary | protected checkpoint admission; PR #542 durable CAS candidate | protected admission tests; candidate storage atomicity/recovery tests | durable persistence current-head GREEN and protected merge | Protected admission; persistence candidate | -| Tool / Capability Boundary | least authority, explicit versioned capabilities, foreign-owner ACL | bounded protected capability patterns; issue #545 future external-extension admission | capability/path/credential hostile tests | extension admission/activation/expiry/rollback after workflow-state foundation | Partial; future product slice remains | -| Context Fabric consumer | immutable released producer contract only; no source copy/cross-service SQL | protected fail-closed boundary + PR #544 strengthened release evidence | ACL/conformance/admission regressions | immutable `context-graph-contracts` release and authenticated Noema trust anchor | Candidate strengthening; foreign release prerequisite open | -| contextual-orchestrator consumer | CO owns model/provider discovery/routing/failover/credentials | protected gateway boundary; PR #535 converges routing alias to `orchestrator/free` | gateway/provider-boundary regressions | PR #535 exact-head terminal GREEN + protected integration | Protected boundary; routing-alias repair candidate | -| Patch-validator supply chain | exact source/image/receipt binding and fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | build/runtime/no-network/read-only/non-root/SBOM/vulnerability/receipt tests | protected operational receipt and immutable registry publication/signing/attestation | Implemented source; operational/publication evidence incomplete | -| Apache-2.0 source grant | source grant와 package/artifact/dependency terms 분리 | protected root `LICENSE`, README/licensing docs through #530 | repository/doc/acquisition licensing contracts | artifact/package rights evidence remains separate when published | Apache-2.0 protected truth | -| Third-party/tooling licensing | GPL/LGPL/AGPL path not accepted as normal inbound baseline | issue #531 / PR #540 | regenerated exact lockfile/license inventory; application/Security/image terminal success | post-#546 semantic reviewer evidence + protected integration + protected lockfile/license re-audit | Candidate replacement; protected completion open | -| Release and deployment | source → artifact/SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | exact-source/reproducibility/receipt/rollback contract tests | immutable release, governed production deployment, recovery smoke | Incomplete; no release exists | -| KPI, customer and acquisition | authentic evidence keeps source/time/buyer/legal authority | KPI/acquisition manifest/integrity/readiness validators | bounded provenance/integrity/fail-closed tests | authentic >=30-day production KPI, customer/revenue, owner/legal transfer evidence | Incomplete; commercial final gate must remain not-ready | +| Requirement family | Canonical boundary | Protected or active surface | Residual evidence | Maturity | +| --- | --- | --- | --- | --- | +| Credential exchange/readiness | Worker trust contract, OIDC/replay/rate-limit | protected runtime entrypoints/modules | protected deployment smoke와 실제 binding/storage operational evidence | Protected source implemented; operations separate | +| GitHub installation-token compatibility | GitHub token은 opaque bounded transport | protected admission + #537 regression | live App exchange/rotation evidence | Protected transport compatibility | +| Reviewer/maintenance control plane | independent identity, exact-head semantic evidence, deterministic fail-closed gates | protected reviewer source + #546 repair | #546 unchanged exact-head terminal GREEN + protected integration; affected heads fresh semantic review; external App activation | Evidence-integrity repair active | +| Agent Runtime | ADR 0012 + Context Map | protected #528 lifecycle foundation | broader runtime composition/recovery slices | Protected foundation | +| Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected task-plan + #542 durable candidate | atomic claim/checkpoint/recovery exact-head GREEN + protected merge | Durable execution candidate | +| State / Checkpoint | monotonic admission, exact replay idempotency, persistence CAS | protected admission + #542 CAS candidate | durable persistence current-head GREEN and merge | Persistence candidate | +| Tool / Capability Boundary | least authority, versioned capabilities, foreign-owner ACL | bounded protected patterns; issue #545 future extension | extension admission/activation/expiry/rollback | Partial | +| Context Fabric consumer | immutable released producer contract only | protected fail-closed boundary + #544 | immutable producer release + authenticated Noema trust anchor | Foreign release prerequisite open | +| contextual-orchestrator consumer | CO owns provider/model discovery/routing/retry/failover/credentials | protected gateway + #535 `orchestrator/free` convergence | #535 exact-head terminal GREEN + protected integration | Routing-alias repair candidate | +| Patch-validator supply chain | exact source/image/receipt, fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | immutable publication/signing/attestation + operational receipt | Source implemented; publication open | +| Source/dependency licensing | Apache-2.0 source grant; third-party terms independent | protected LICENSE + #540 toolchain candidate | protected lockfile/license re-audit and merge | Source grant protected; toolchain replacement candidate | +| Release/deployment | source → SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | immutable release, governed deployment, recovery smoke | Incomplete | +| KPI/customer/acquisition | authentic source/time/buyer/legal authority | KPI/acquisition validators | >=30-day production KPI, customer/revenue, owner/legal transfer evidence | Commercial final gate not-ready | ## Reviewer-evidence convergence -#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. The current candidate preserves Git filename text exactly, rejects ambiguous/partial/re-directed retrieval, enforces physical checkout provenance, and now makes the shared 24,079-character scope budget mean Unicode code points in both Python and JavaScript. RED `4b96b40bf0f3e0590b1bf99f3879418c009213ff` proves the old sandbox could reject a supplementary-plane path inventory that Python admitted; production `5eee2566d628159113b75741f1914dee824a6545` removes that cross-runtime inconsistency without expanding the canonical budget. +#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. RED `4b96b40bf0f3e0590b1bf99f3879418c009213ff` proves the old JavaScript sandbox could reject a supplementary-plane path inventory that Python admitted because `String.length` counts UTF-16 code units. Production `5eee2566d628159113b75741f1914dee824a6545` counts Unicode code points with `Array.from(rawPath).length`, preserves exact path text, and does not expand the canonical 24,079-character budget. -#533 and #548 are non-force stacked on exact #546 `5eee2566d628159113b75741f1914dee824a6545`. Their exact heads are `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3` and `0a039bfeab3b195cdfe921431fef18e79d1cb173`; fresh compare is respectively 59 and 73 commits ahead, 0 behind, with merge-base exact #546. Their current workflows are non-terminal and therefore inherit no GREEN authority. +#533 and #548 are non-force stacked on exact #546. Their exact heads are `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3` and `0a039bfeab3b195cdfe921431fef18e79d1cb173`; fresh compare is 59/73 ahead, 0 behind, merge-base exact #546. Their current workflows are non-terminal and inherit no GREEN authority. -Terminal reviewer workflow successes produced before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Other active lanes whose current reviewer is queued likewise cannot borrow predecessor results. Source churn merely to trigger a runner, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. +Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. ## Prioritized residual gaps -| Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | -| --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | review workflow `success`가 empty/partial/redirected/normalized/cross-runtime-inconsistent CodeGraph evidence를 실제 current-head semantic evidence로 오인할 수 있다 | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero valid findings + protected merge; then fresh affected-head reviewer evidence | #546 exact `5eee2566...` current-head workflows를 검증하고 실패가 나오면 해당 lane에서 즉시 RCA한다 | -| P0 | Atomic durable workflow execution authority | pure runnable selector만으로 concurrent execution/side-effect/checkpoint authority를 안전하게 부여할 수 없다 | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + unchanged exact-head gates + protected merge | #542 source-repaired findings를 current-head executable GREEN으로 확인한다 | -| P0 | GPL-family development/build dependency path | 상업용 inbound dependency 정책과 legacy npm toolchain 경로가 충돌한다 | issue #531 / PR #540 | regenerated exact lockfile에서 GPL/LGPL/AGPL path 제거 + npm ci/typecheck/tests/security/dev/deploy/license inventory terminal clean + protected merge | #546 protected integration 후 #540 unchanged head semantic reviewer evidence를 재생성한다 | -| P0 | Maintainer/Reviewer App and publication identity activation | 자동 유지보수·독립 review·publication capability의 실제 외부 identity 증거가 없다 | issues #29 / #227 | live App installation/permission/key custody/rotation + bounded publication/rollback receipt | 외부 owner provision 이후 protected preflight/canary | -| P0 | Protected `main` governance target | source 검사만으로 실제 merge/release 정책을 만들 수 없다 | issue #27 | fresh live ruleset/protection and behavioral proof | authorized control plane에서 gap을 검증·수정한다 | -| P1 | Context Graph immutable producer contract | mutable producer source 의존은 buyer/audit authority를 흔든다 | PR #544 + producer owner | immutable producer release with package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence | producer release 전 fail closed; #544 exact-head 검증 | -| P1 | Patch-validator operational/publication proof | protected source image의 실제 publication/activation이 증명되지 않는다 | issue #66 | protected workflow receipt, immutable digest, signature/attestation, activation/rollback proof | exact protected source에서 owner-controlled publication path 실행 | -| P1 | Authentic >=30-day KPI | 성능·신뢰성을 fixture가 아닌 실운영 자료로 입증하지 못한다 | issue #3 | production-origin >=30-day integrity/provenance-bound KPI evidence | governed production collector/verifier 실행 | -| P1 | Immutable release/deployment/acquisition evidence | buyer/legal/commercial 단계가 source completion 뒤에 남아 있다 | issue #5 | immutable release, governed deployment, customer/revenue/support/rights/transfer evidence | 앞선 evidence family 순차 충족 후 acquisition audit 재실행 | +| Priority | Gap | Current owner | Authoritative completion evidence | Next executable action | +| --- | --- | --- | --- | --- | +| P0 | Reviewer semantic/provenance false-green | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `5eee2566...`; RCA any terminal failure | +| P0 | Atomic durable workflow execution authority | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | +| P0 | GPL-family development/build dependency path | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | +| P0 | Maintainer/Reviewer App activation | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | +| P0 | Protected `main` governance target | issue #27 | fresh ruleset/protection + behavioral proof | authorized control-plane verification/repair | +| P1 | Context Graph immutable producer contract | PR #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence | fail closed until producer release; verify #544 candidate | +| P1 | Patch-validator publication proof | issue #66 | protected workflow receipt, immutable digest, signature/attestation, activation/rollback proof | owner-controlled publication path | +| P1 | Authentic >=30-day KPI | issue #3 | production-origin integrity/provenance-bound KPI | governed collector/verifier | +| P1 | Immutable release/deployment/acquisition evidence | issue #5 | immutable release + governed deployment + customer/revenue/support/rights/transfer evidence | complete preceding evidence families then re-audit | ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`에는 #528, #530, #537이 이미 merge되어 있다. 따라서 이들을 open candidate로 쓰지 않는다. 현재 candidate/observation은 #546 `5eee2566...`, stacked #533 `5e992dc7...` / #548 `0a039bfe...`, #540 terminal workflow observation, central trust source `62919d76...`, #527 pin `d35993eb...`, empty release collection이다. ADR 0012는 repository-wide acceptance가 끝나지 않았으므로 `Proposed`를 유지한다. Protected implementation status와 ADR lifecycle을 서로 대체하지 않는다. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `5eee2566...`, stacked #533 `5e992dc7...` / #548 `0a039bfe...`, #540 workflow observation, central `.github/main@a01ffc1e...`, #527 `c01fa18a...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline -각 gap은 표의 authoritative completion evidence가 실제로 존재하고 현재 exact source/head에 결합될 때만 닫는다. queued/skipped/cancelled/stale check, predecessor-head 결과, 문서 존재, synthetic fixture, model judgement, mutable sibling source는 완료 증거가 아니다. 한 lane의 runner/review wait은 다른 안전한 Noema-owned repair를 막지 않는다. Source license, package/artifact license metadata, third-party dependency terms, immutable publication, deployment, commercial/legal authority는 서로 별도 evidence class로 유지한다. +A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. From 75b1c9fa1e9c8a466478b3b90804d35db8b294c9 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 18:21:44 +0900 Subject: [PATCH 18/85] docs: bind latest central trust authority --- docs/product-technical-gap-baseline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 27dd552bf..c7cab5870 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -16,7 +16,7 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Reviewer semantic evidence | PR #546 exact `5eee2566d628159113b75741f1914dee824a6545` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Sandbox는 `Array.from(rawPath).length`로 Python reviewer와 동일한 80 files / 24,079 Unicode-code-point aggregate contract를 사용한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | | Stacked reviewer consumers | PR #533 exact `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3`; PR #548 exact `0a039bfeab3b195cdfe921431fef18e79d1cb173` | 두 lane은 #546 `5eee2566...`를 ordinary two-parent/non-force ancestry로 완전 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 59/73 ahead, 0 behind, merge-base exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | -| Central workflow trust source | `.github/main@a01ffc1edee2e5fc9c56e4351f90a0ce4a75e77b`; PR #527 exact `c01fa18ad07d95f3d249cae617270316df771848` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central head는 telemetry/doc accounting commit으로 이동했지만 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `62a5f9bc...` → production `c01fa18a...`로 pin을 갱신했다. | +| Central workflow trust source | `.github/main@7fcada597d5b79bdb14445f24322b2c9f6ed4b19`; PR #527 exact `85d56f277eccdbab618de57e0fdc3fe38398cc2b` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1914 merge는 governance/documentation knowledge를 갱신했지만 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `014ce75d...` → production `85d56f27...`로 pin을 갱신했다. | | Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | ## Current baseline @@ -61,7 +61,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `5eee2566...`, stacked #533 `5e992dc7...` / #548 `0a039bfe...`, #540 workflow observation, central `.github/main@a01ffc1e...`, #527 `c01fa18a...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `5eee2566...`, stacked #533 `5e992dc7...` / #548 `0a039bfe...`, #540 workflow observation, central `.github/main@7fcada59...`, #527 `85d56f27...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline From fcd6f2d65ad32499f3c4dde3e4c6c6174e388f3b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 18:41:39 +0900 Subject: [PATCH 19/85] docs: reconcile CodeGraph retry and stacked exact heads --- docs/product-technical-gap-baseline.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c7cab5870..45e7ff1d7 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -13,8 +13,8 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | | Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `5eee2566d628159113b75741f1914dee824a6545` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Sandbox는 `Array.from(rawPath).length`로 Python reviewer와 동일한 80 files / 24,079 Unicode-code-point aggregate contract를 사용한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | PR #533 exact `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3`; PR #548 exact `0a039bfeab3b195cdfe921431fef18e79d1cb173` | 두 lane은 #546 `5eee2566...`를 ordinary two-parent/non-force ancestry로 완전 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 59/73 ahead, 0 behind, merge-base exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | +| Reviewer semantic evidence | PR #546 exact `9e9db27818ae3663353c47ac5488b1d4f6be4a50` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. 추가 RED는 production Docker runner가 첫 `explore` 결과를 다른 retry prompt에도 재사용해 symbol-seeded retry 실행을 막는 결함을 증명했고, prompt-keyed cache로 동일 prompt idempotence와 distinct retry execution을 분리했다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | PR #533 exact `4c6adc5ddffb165ecbd900a49cc247d489883c03`; PR #548 exact `7cbdeeed51cf4d2c33d054eac29e53b35d897512` | 두 lane은 #546 `9e9db278...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | | Central workflow trust source | `.github/main@7fcada597d5b79bdb14445f24322b2c9f6ed4b19`; PR #527 exact `85d56f277eccdbab618de57e0fdc3fe38398cc2b` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1914 merge는 governance/documentation knowledge를 갱신했지만 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `014ce75d...` → production `85d56f27...`로 pin을 갱신했다. | | Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | @@ -39,9 +39,11 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 ## Reviewer-evidence convergence -#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. RED `4b96b40bf0f3e0590b1bf99f3879418c009213ff` proves the old JavaScript sandbox could reject a supplementary-plane path inventory that Python admitted because `String.length` counts UTF-16 code units. Production `5eee2566d628159113b75741f1914dee824a6545` counts Unicode code points with `Array.from(rawPath).length`, preserves exact path text, and does not expand the canonical 24,079-character budget. +#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. RED `4b96b40bf0f3e0590b1bf99f3879418c009213ff` proved the old JavaScript sandbox could reject a supplementary-plane path inventory that Python admitted because `String.length` counts UTF-16 code units; production `5eee2566d628159113b75741f1914dee824a6545` aligned the sandbox to Unicode code-point counting without expanding the 24,079-character budget. -#533 and #548 are non-force stacked on exact #546. Their exact heads are `5e992dc7202f01ab99d7135822f3e5b5d49c9fc3` and `0a039bfeab3b195cdfe921431fef18e79d1cb173`; fresh compare is 59/73 ahead, 0 behind, merge-base exact #546. Their current workflows are non-terminal and inherit no GREEN authority. +Fresh RED `cfacdba4132af85555e04b54bfb90b306267619d` then proved `DockerCodeGraphRunner` cached one first-explore output across distinct prompts, so a later symbol-seeded retry prompt could receive stale empty evidence instead of executing. Production `4fcacd16450d3fbd5a2eae0922b90aaab94430f3` replaces that session-wide singleton cache with exact-prompt keyed outputs; `9e9db27818ae3663353c47ac5488b1d4f6be4a50` is the current source-hygiene head. This changes no provider, quarantine, security, outbound, or central runner authority. + +#533 and #548 are non-force stacked on exact #546. Their exact heads are `4c6adc5ddffb165ecbd900a49cc247d489883c03` and `7cbdeeed51cf4d2c33d054eac29e53b35d897512`; their current workflows are non-terminal and inherit no GREEN authority. Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. @@ -49,7 +51,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w | Priority | Gap | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `5eee2566...`; RCA any terminal failure | +| P0 | Reviewer semantic/provenance false-green | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `9e9db278...`; RCA any terminal failure | | P0 | Atomic durable workflow execution authority | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | | P0 | GPL-family development/build dependency path | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | | P0 | Maintainer/Reviewer App activation | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | @@ -61,7 +63,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `5eee2566...`, stacked #533 `5e992dc7...` / #548 `0a039bfe...`, #540 workflow observation, central `.github/main@7fcada59...`, #527 `85d56f27...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `9e9db278...`, stacked #533 `4c6adc5d...` / #548 `7cbdeeed...`, #540 workflow observation, central `.github/main@7fcada59...`, #527 `85d56f27...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline From 3c0c075e32c063567e599695213b2fc1811979b4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 20:14:33 +0900 Subject: [PATCH 20/85] docs: reconcile current reviewer and central trust authority --- docs/product-technical-gap-baseline.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 45e7ff1d7..c18ccf9a9 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -13,10 +13,10 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | | Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `9e9db27818ae3663353c47ac5488b1d4f6be4a50` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. 추가 RED는 production Docker runner가 첫 `explore` 결과를 다른 retry prompt에도 재사용해 symbol-seeded retry 실행을 막는 결함을 증명했고, prompt-keyed cache로 동일 prompt idempotence와 distinct retry execution을 분리했다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | PR #533 exact `4c6adc5ddffb165ecbd900a49cc247d489883c03`; PR #548 exact `7cbdeeed51cf4d2c33d054eac29e53b35d897512` | 두 lane은 #546 `9e9db278...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | +| Reviewer semantic evidence | PR #546 exact `9f93d9932d2c3d000a69caaf36026275077a71be` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Production Docker runner가 caller source-root identity를 `resolve()`로 먼저 지워 symlinked checkout root/ancestor를 다른 physical bind source로 받아들일 수 있던 경로도 RED `fc0585c0...` → production `9f93d993...`로 닫았다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | PR #533 exact `5e5772d675fa731efe2dfec5c4cc63495f92442d`; PR #548 exact `fa93ba3a2e481bf1abfc4b3e8e094a96dc937752` | 두 lane은 #546 `9f93d993...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 61/75 ahead, 0 behind이며 merge-base가 exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | -| Central workflow trust source | `.github/main@7fcada597d5b79bdb14445f24322b2c9f6ed4b19`; PR #527 exact `85d56f277eccdbab618de57e0fdc3fe38398cc2b` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1914 merge는 governance/documentation knowledge를 갱신했지만 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `014ce75d...` → production `85d56f27...`로 pin을 갱신했다. | +| Central workflow trust source | `.github/main@f250638827f8252b0d9e5cb2601f4d333f96162f`; PR #527 exact `091c385311d48accbd938e9dd0e139394f2ed3ed` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1922는 scheduler CI isolation/contract-selection surface만 바꿨고 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `ac471945...` → production `091c3853...`로 pin을 갱신했다. | | Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | ## Current baseline @@ -41,9 +41,11 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 #546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. RED `4b96b40bf0f3e0590b1bf99f3879418c009213ff` proved the old JavaScript sandbox could reject a supplementary-plane path inventory that Python admitted because `String.length` counts UTF-16 code units; production `5eee2566d628159113b75741f1914dee824a6545` aligned the sandbox to Unicode code-point counting without expanding the 24,079-character budget. -Fresh RED `cfacdba4132af85555e04b54bfb90b306267619d` then proved `DockerCodeGraphRunner` cached one first-explore output across distinct prompts, so a later symbol-seeded retry prompt could receive stale empty evidence instead of executing. Production `4fcacd16450d3fbd5a2eae0922b90aaab94430f3` replaces that session-wide singleton cache with exact-prompt keyed outputs; `9e9db27818ae3663353c47ac5488b1d4f6be4a50` is the current source-hygiene head. This changes no provider, quarantine, security, outbound, or central runner authority. +RED `cfacdba4132af85555e04b54bfb90b306267619d` then proved `DockerCodeGraphRunner` cached one first-explore output across distinct prompts, so a later symbol-seeded retry prompt could receive stale empty evidence instead of executing. Production `4fcacd16450d3fbd5a2eae0922b90aaab94430f3` replaced that session-wide singleton cache with exact-prompt keyed outputs. -#533 and #548 are non-force stacked on exact #546. Their exact heads are `4c6adc5ddffb165ecbd900a49cc247d489883c03` and `7cbdeeed51cf4d2c33d054eac29e53b35d897512`; their current workflows are non-terminal and inherit no GREEN authority. +Fresh RED `fc0585c0fae7353d7b76d5c1364e0b1c00869e70` proved the same production runner still normalized its host bind source with `Path.resolve()` before provenance admission: a symlinked source root or a physical checkout leaf reached through a symlinked ancestor could be redirected to another physical directory before the container boundary saw it. Production `9f93d9932d2c3d000a69caaf36026275077a71be` preserves the absolute caller root and requires exact equality with strict physical resolution before bind-mount admission. This changes no provider, quarantine, security, outbound, or central runner authority. + +#533 and #548 are non-force stacked on exact #546. Their exact heads are `5e5772d675fa731efe2dfec5c4cc63495f92442d` and `fa93ba3a2e481bf1abfc4b3e8e094a96dc937752`; their current workflows are non-terminal and inherit no GREEN authority. Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. @@ -51,7 +53,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w | Priority | Gap | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `9e9db278...`; RCA any terminal failure | +| P0 | Reviewer semantic/provenance false-green | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `9f93d993...`; RCA any terminal failure | | P0 | Atomic durable workflow execution authority | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | | P0 | GPL-family development/build dependency path | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | | P0 | Maintainer/Reviewer App activation | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | @@ -63,7 +65,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `9e9db278...`, stacked #533 `4c6adc5d...` / #548 `7cbdeeed...`, #540 workflow observation, central `.github/main@7fcada59...`, #527 `85d56f27...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `9f93d993...`, stacked #533 `5e5772d6...` / #548 `fa93ba3a...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline From 63ea5c0890077b1da624b7014c9771bfec6bf96f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 20:25:17 +0900 Subject: [PATCH 21/85] fix(docs): restore buyer-impact gap contract --- docs/product-technical-gap-baseline.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c18ccf9a9..413c72797 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -17,6 +17,7 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Stacked reviewer consumers | PR #533 exact `5e5772d675fa731efe2dfec5c4cc63495f92442d`; PR #548 exact `fa93ba3a2e481bf1abfc4b3e8e094a96dc937752` | 두 lane은 #546 `9f93d993...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 61/75 ahead, 0 behind이며 merge-base가 exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | | Central workflow trust source | `.github/main@f250638827f8252b0d9e5cb2601f4d333f96162f`; PR #527 exact `091c385311d48accbd938e9dd0e139394f2ed3ed` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1922는 scheduler CI isolation/contract-selection surface만 바꿨고 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `ac471945...` → production `091c3853...`로 pin을 갱신했다. | +| Automation threat-model accuracy | PR #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher가 이미 구현한 expected-absence branch lease, exact-head cleanup, unique PR recovery를 “미구현”으로 표시하던 documentation false-negative를 RED `2814e5ee...` → docs repair `107a973f...`로 바로잡았다. Runtime control 자체는 protected truth이고 #553은 문서 정확성 candidate다. | | Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | ## Current baseline @@ -51,21 +52,21 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Prioritized residual gaps -| Priority | Gap | Current owner | Authoritative completion evidence | Next executable action | -| --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `9f93d993...`; RCA any terminal failure | -| P0 | Atomic durable workflow execution authority | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | -| P0 | GPL-family development/build dependency path | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | -| P0 | Maintainer/Reviewer App activation | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | -| P0 | Protected `main` governance target | issue #27 | fresh ruleset/protection + behavioral proof | authorized control-plane verification/repair | -| P1 | Context Graph immutable producer contract | PR #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence | fail closed until producer release; verify #544 candidate | -| P1 | Patch-validator publication proof | issue #66 | protected workflow receipt, immutable digest, signature/attestation, activation/rollback proof | owner-controlled publication path | -| P1 | Authentic >=30-day KPI | issue #3 | production-origin integrity/provenance-bound KPI | governed collector/verifier | -| P1 | Immutable release/deployment/acquisition evidence | issue #5 | immutable release + governed deployment + customer/revenue/support/rights/transfer evidence | complete preceding evidence families then re-audit | +| Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | +| --- | --- | --- | --- | --- | --- | +| P0 | Reviewer semantic/provenance false-green | False approval can let incomplete or redirected source evidence cross the commercial merge boundary. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `9f93d993...`; RCA any terminal failure | +| P0 | Atomic durable workflow execution authority | Duplicate claims/effects or ambiguous recovery can corrupt long-running buyer workflows and audit trails. | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | +| P0 | GPL-family development/build dependency path | Unresolved toolchain licensing can block enterprise procurement, redistribution review and clean SBOM acceptance. | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | +| P0 | Maintainer/Reviewer App activation | Without live bounded App identities, review/publication cannot be proved as least-privilege production operations. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | +| P0 | Protected `main` governance target | Missing or misapplied repository governance can bypass the evidence chain even when source gates are correct. | issue #27 | fresh ruleset/protection + behavioral proof | authorized control-plane verification/repair | +| P1 | Context Graph immutable producer contract | Mutable producer evidence can couple Noema to unversioned semantic truth and break reproducible integrations. | PR #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence | fail closed until producer release; verify #544 candidate | +| P1 | Patch-validator publication proof | Source-only validator hardening does not prove the shipped image is the reviewed immutable artifact. | issue #66 | protected workflow receipt, immutable digest, signature/attestation, activation/rollback proof | owner-controlled publication path | +| P1 | Authentic >=30-day KPI | Buyers cannot rely on synthetic or short-window readiness claims for production reliability and service quality. | issue #3 | production-origin integrity/provenance-bound KPI | governed collector/verifier | +| P1 | Immutable release/deployment/acquisition evidence | A merged repository without release, rollback and commercial evidence is not a transferable production product. | issue #5 | immutable release + governed deployment + customer/revenue/support/rights/transfer evidence | complete preceding evidence families then re-audit | ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `9f93d993...`, stacked #533 `5e5772d6...` / #548 `fa93ba3a...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `9f93d993...`, stacked #533 `5e5772d6...` / #548 `fa93ba3a...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline From faed0a89f8f95bd8d94b1ad732d8c61bd1909588 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 21:22:56 +0900 Subject: [PATCH 22/85] docs(gap): record reviewer context liveness repair --- docs/product-technical-gap-baseline.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 413c72797..d6549f3d3 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -13,8 +13,8 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | | Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `9f93d9932d2c3d000a69caaf36026275077a71be` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Production Docker runner가 caller source-root identity를 `resolve()`로 먼저 지워 symlinked checkout root/ancestor를 다른 physical bind source로 받아들일 수 있던 경로도 RED `fc0585c0...` → production `9f93d993...`로 닫았다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | PR #533 exact `5e5772d675fa731efe2dfec5c4cc63495f92442d`; PR #548 exact `fa93ba3a2e481bf1abfc4b3e8e094a96dc937752` | 두 lane은 #546 `9f93d993...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 61/75 ahead, 0 behind이며 merge-base가 exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | +| Reviewer semantic evidence | PR #546 exact `f12c9ab091baef6c7c059dfe183476af6ec77832` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Fresh review에서 manifest content만 12-file historical prefix에 남아 canonical CodeGraph 80-file scope와 불일치해 13–80 file PR을 구조적으로 영구 `blocked`시키는 self-hosting 결함을 RED `377f2374...` → production `406c2f99...`로 닫았다. Host CodeGraph `HOME`·`TEMP`·`TMP`·`TMPDIR`도 per-command private directory로 격리한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | PR #533 exact `8cad97578035b7aa323fff1fbf8b106bf2fd069c`; PR #548 exact `19315d9f105aa50b4ec053e1ef1336ab81daa00f` | 두 lane은 #546 `f12c9ab...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 63/76 ahead, 0 behind이며 merge-base가 exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | | Central workflow trust source | `.github/main@f250638827f8252b0d9e5cb2601f4d333f96162f`; PR #527 exact `091c385311d48accbd938e9dd0e139394f2ed3ed` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1922는 scheduler CI isolation/contract-selection surface만 바꿨고 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `ac471945...` → production `091c3853...`로 pin을 갱신했다. | | Automation threat-model accuracy | PR #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher가 이미 구현한 expected-absence branch lease, exact-head cleanup, unique PR recovery를 “미구현”으로 표시하던 documentation false-negative를 RED `2814e5ee...` → docs repair `107a973f...`로 바로잡았다. Runtime control 자체는 protected truth이고 #553은 문서 정확성 candidate다. | @@ -44,9 +44,11 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 RED `cfacdba4132af85555e04b54bfb90b306267619d` then proved `DockerCodeGraphRunner` cached one first-explore output across distinct prompts, so a later symbol-seeded retry prompt could receive stale empty evidence instead of executing. Production `4fcacd16450d3fbd5a2eae0922b90aaab94430f3` replaced that session-wide singleton cache with exact-prompt keyed outputs. -Fresh RED `fc0585c0fae7353d7b76d5c1364e0b1c00869e70` proved the same production runner still normalized its host bind source with `Path.resolve()` before provenance admission: a symlinked source root or a physical checkout leaf reached through a symlinked ancestor could be redirected to another physical directory before the container boundary saw it. Production `9f93d9932d2c3d000a69caaf36026275077a71be` preserves the absolute caller root and requires exact equality with strict physical resolution before bind-mount admission. This changes no provider, quarantine, security, outbound, or central runner authority. +RED `fc0585c0fae7353d7b76d5c1364e0b1c00869e70` proved the same production runner still normalized its host bind source with `Path.resolve()` before provenance admission: a symlinked source root or a physical checkout leaf reached through a symlinked ancestor could be redirected to another physical directory before the container boundary saw it. Production `9f93d9932d2c3d000a69caaf36026275077a71be` preserves the absolute caller root and requires exact equality with strict physical resolution before bind-mount admission. -#533 and #548 are non-force stacked on exact #546. Their exact heads are `5e5772d675fa731efe2dfec5c4cc63495f92442d` and `fa93ba3a2e481bf1abfc4b3e8e094a96dc937752`; their current workflows are non-terminal and inherit no GREEN authority. +Fresh RED `377f23745a1b76565f86d706705baaaacdcc7583` then proved a separate deterministic liveness defect: `fetch_manifest()` retained only 12 changed-file contents even though CodeGraph's exact semantic scope admitted 80, and strict gating converts that truncation note into a blocker. Production `406c2f99947836a0b690be8ff7eca78bca989ec1` single-sources `MAX_CONTEXT_FILES` to `MAX_CODEGRAPH_CHANGED_SCOPE_FILES=80`; the regression requires complete 13-file context while 81 files still fail closed. Docs `4a7f140b...` also align the host fallback with production temp isolation, and current exact #546 is `f12c9ab091baef6c7c059dfe183476af6ec77832`. This changes no provider, quarantine, security, outbound, or central runner authority. + +#533 and #548 are non-force stacked on exact #546. Their exact heads are `8cad97578035b7aa323fff1fbf8b106bf2fd069c` and `19315d9f105aa50b4ec053e1ef1336ab81daa00f`; fresh compare shows 63/76 ahead, 0 behind with exact #546 merge-base. Their current workflows are non-terminal and inherit no GREEN authority. Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. @@ -54,7 +56,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | False approval can let incomplete or redirected source evidence cross the commercial merge boundary. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `9f93d993...`; RCA any terminal failure | +| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete or redirected source evidence cross the commercial merge boundary; deterministic self-block can also make valid current-head review impossible after runner recovery. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `f12c9ab...`; RCA any terminal failure | | P0 | Atomic durable workflow execution authority | Duplicate claims/effects or ambiguous recovery can corrupt long-running buyer workflows and audit trails. | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | | P0 | GPL-family development/build dependency path | Unresolved toolchain licensing can block enterprise procurement, redistribution review and clean SBOM acceptance. | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | | P0 | Maintainer/Reviewer App activation | Without live bounded App identities, review/publication cannot be proved as least-privilege production operations. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | @@ -66,8 +68,8 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `9f93d993...`, stacked #533 `5e5772d6...` / #548 `fa93ba3a...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `f12c9ab...`, stacked #533 `8cad9757...` / #548 `19315d9f...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline -A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. +A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. \ No newline at end of file From 33aa1c7056bbeb67e92081c2ff7ea93cc2ecc2b0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 22:15:33 +0900 Subject: [PATCH 23/85] docs: record fail-before-execution reviewer authority --- docs/product-technical-gap-baseline.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d6549f3d3..176f74a30 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -13,8 +13,8 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | | Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `f12c9ab091baef6c7c059dfe183476af6ec77832` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Fresh review에서 manifest content만 12-file historical prefix에 남아 canonical CodeGraph 80-file scope와 불일치해 13–80 file PR을 구조적으로 영구 `blocked`시키는 self-hosting 결함을 RED `377f2374...` → production `406c2f99...`로 닫았다. Host CodeGraph `HOME`·`TEMP`·`TMP`·`TMPDIR`도 per-command private directory로 격리한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | PR #533 exact `8cad97578035b7aa323fff1fbf8b106bf2fd069c`; PR #548 exact `19315d9f105aa50b4ec053e1ef1336ab81daa00f` | 두 lane은 #546 `f12c9ab...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 63/76 ahead, 0 behind이며 merge-base가 exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | +| Reviewer semantic evidence | PR #546 exact `fed98d07084b0a607727f2c31a79cdf7f6195659` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Manifest context는 canonical 80-file CodeGraph scope와 일치한다. Fresh review에서 deterministic over-budget scope가 이미 실패로 결정됐는데도 `init`/`sync`/`status`를 실행하던 least-authority 결함을 RED `f18b665d...` → production `fed98d07...`로 닫아, invalid scope는 어떤 CodeGraph subprocess도 시작하지 않는다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | PR #533 exact `818a120ba421562a987520dd1a260f948fbf3e23`; PR #548 exact `a7066ea97cef0c07399c79599466f07351f886bb` | 두 lane은 #546 `fed98d07...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 64/77 ahead, 0 behind이며 merge-base가 exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | | Central workflow trust source | `.github/main@f250638827f8252b0d9e5cb2601f4d333f96162f`; PR #527 exact `091c385311d48accbd938e9dd0e139394f2ed3ed` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1922는 scheduler CI isolation/contract-selection surface만 바꿨고 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `ac471945...` → production `091c3853...`로 pin을 갱신했다. | | Automation threat-model accuracy | PR #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher가 이미 구현한 expected-absence branch lease, exact-head cleanup, unique PR recovery를 “미구현”으로 표시하던 documentation false-negative를 RED `2814e5ee...` → docs repair `107a973f...`로 바로잡았다. Runtime control 자체는 protected truth이고 #553은 문서 정확성 candidate다. | @@ -46,9 +46,11 @@ RED `cfacdba4132af85555e04b54bfb90b306267619d` then proved `DockerCodeGraphRunne RED `fc0585c0fae7353d7b76d5c1364e0b1c00869e70` proved the same production runner still normalized its host bind source with `Path.resolve()` before provenance admission: a symlinked source root or a physical checkout leaf reached through a symlinked ancestor could be redirected to another physical directory before the container boundary saw it. Production `9f93d9932d2c3d000a69caaf36026275077a71be` preserves the absolute caller root and requires exact equality with strict physical resolution before bind-mount admission. -Fresh RED `377f23745a1b76565f86d706705baaaacdcc7583` then proved a separate deterministic liveness defect: `fetch_manifest()` retained only 12 changed-file contents even though CodeGraph's exact semantic scope admitted 80, and strict gating converts that truncation note into a blocker. Production `406c2f99947836a0b690be8ff7eca78bca989ec1` single-sources `MAX_CONTEXT_FILES` to `MAX_CODEGRAPH_CHANGED_SCOPE_FILES=80`; the regression requires complete 13-file context while 81 files still fail closed. Docs `4a7f140b...` also align the host fallback with production temp isolation, and current exact #546 is `f12c9ab091baef6c7c059dfe183476af6ec77832`. This changes no provider, quarantine, security, outbound, or central runner authority. +RED `377f23745a1b76565f86d706705baaaacdcc7583` then proved a deterministic liveness defect: `fetch_manifest()` retained only 12 changed-file contents even though CodeGraph's exact semantic scope admitted 80, and strict gating converts that truncation note into a blocker. Production `406c2f99947836a0b690be8ff7eca78bca989ec1` single-sources `MAX_CONTEXT_FILES` to `MAX_CODEGRAPH_CHANGED_SCOPE_FILES=80`; the regression requires complete 13-file context while 81 files still fail closed. -#533 and #548 are non-force stacked on exact #546. Their exact heads are `8cad97578035b7aa323fff1fbf8b106bf2fd069c` and `19315d9f105aa50b4ec053e1ef1336ab81daa00f`; fresh compare shows 63/76 ahead, 0 behind with exact #546 merge-base. Their current workflows are non-terminal and inherit no GREEN authority. +Fresh RED `f18b665dbcdc2f2fb0c50ba8335597af8ce0df51` proves a separate least-authority defect: deterministic 81+ file or aggregate-query-budget rejection used to occur only after local CodeGraph `init`/`sync`/`status`, so an input that could never become review evidence still consumed CodeGraph subprocess capability. Production `fed98d07084b0a607727f2c31a79cdf7f6195659` moves exact scope admission ahead of every CodeGraph runner invocation. Admitted scopes keep the same execution contract; rejected scopes now perform zero CodeGraph subprocesses. This changes no provider, quarantine, security, outbound, or central runner authority. + +#533 and #548 are non-force stacked on exact #546. Their exact heads are `818a120ba421562a987520dd1a260f948fbf3e23` and `a7066ea97cef0c07399c79599466f07351f886bb`; fresh compare shows 64/77 ahead, 0 behind with exact #546 merge-base. Their current workflows are non-terminal and inherit no GREEN authority. Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. @@ -56,7 +58,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete or redirected source evidence cross the commercial merge boundary; deterministic self-block can also make valid current-head review impossible after runner recovery. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `f12c9ab...`; RCA any terminal failure | +| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete or redirected source evidence cross the commercial merge boundary; deterministic self-block or pre-admission execution can also make review consume authority without any possibility of valid evidence. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `fed98d07...`; RCA any terminal failure | | P0 | Atomic durable workflow execution authority | Duplicate claims/effects or ambiguous recovery can corrupt long-running buyer workflows and audit trails. | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | | P0 | GPL-family development/build dependency path | Unresolved toolchain licensing can block enterprise procurement, redistribution review and clean SBOM acceptance. | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | | P0 | Maintainer/Reviewer App activation | Without live bounded App identities, review/publication cannot be proved as least-privilege production operations. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | @@ -68,8 +70,8 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `f12c9ab...`, stacked #533 `8cad9757...` / #548 `19315d9f...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `fed98d07...`, stacked #533 `818a120b...` / #548 `a7066ea9...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline -A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. \ No newline at end of file +A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. From 201e9c7c2336cd06654430083ecc2cadd68a1467 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 23:23:39 +0900 Subject: [PATCH 24/85] docs: reconcile reviewer and central trust authority --- docs/product-technical-gap-baseline.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 176f74a30..a97c6d8e8 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -13,12 +13,12 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | | Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `fed98d07084b0a607727f2c31a79cdf7f6195659` | Empty/marker/partial-scope/partial-symbol-map, checkout provenance, exact Git path identity와 cross-runtime scope-count 불일치를 fail closed하도록 repair했다. Manifest context는 canonical 80-file CodeGraph scope와 일치한다. Fresh review에서 deterministic over-budget scope가 이미 실패로 결정됐는데도 `init`/`sync`/`status`를 실행하던 least-authority 결함을 RED `f18b665d...` → production `fed98d07...`로 닫아, invalid scope는 어떤 CodeGraph subprocess도 시작하지 않는다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | PR #533 exact `818a120ba421562a987520dd1a260f948fbf3e23`; PR #548 exact `a7066ea97cef0c07399c79599466f07351f886bb` | 두 lane은 #546 `fed98d07...`를 ordinary two-parent/non-force ancestry로 승계하고 각각 runner-assignment domain delta와 actionable failed-check mapping delta만 유지한다. Fresh compare는 각각 64/77 ahead, 0 behind이며 merge-base가 exact #546이다. Current workflows는 non-terminal이고 stacked heads의 required Security Scan은 아직 materialize되지 않았다. | +| Reviewer semantic evidence | PR #546 exact `a785cd4e536b84cd4bf7e4d6a0e1b9aff71d057f` | Complete 80-file context, fail-before-execution admission, exact Git path/physical-checkout provenance와 complete symbol recovery를 유지한다. Filename prompt injection을 막기 위해 canonical JSON data로 바꾼 `d439058f...`가 legacy whitespace parser와 어긋나 empty-result `node → explore` recovery를 끊은 결함을 RED `1dbe0780...` → production `a785cd4e...`로 닫았다. Canonical JSON serialization·bounded complete scope·physical current-head regular-file 검증을 통과한 경우에만 recovery한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | PR #533 exact `efcebebb2c52d92d131e76285ac26cab74804c53`; PR #548 exact `7e2522ef51e3747a5abc74cd49246e3b7abc24a2` | 두 lane은 #546 `a785cd4e...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 runner-assignment/acquisition delta만 유지하며 65 ahead / 0 behind다. #548은 richer failed-check/actionability adapter를 보존하면서 JSON prompt-data boundary를 semantic merge했고 79 ahead / 0 behind다. 두 merge-base는 exact #546이다. Current workflows는 non-terminal이고 required Security Scan은 stacked exact heads에 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | -| Central workflow trust source | `.github/main@f250638827f8252b0d9e5cb2601f4d333f96162f`; PR #527 exact `091c385311d48accbd938e9dd0e139394f2ed3ed` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Central #1922는 scheduler CI isolation/contract-selection surface만 바꿨고 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `ac471945...` → production `091c3853...`로 pin을 갱신했다. | +| Central workflow trust source | `.github/main@3f88e13af9dcde4b9da6958c02a78ce3b5c85800`; PR #527 exact `51e6da8ec1c48e75654023f70ff25360134795ab` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. `f2506388...` 이후 2-commit delta는 central CodeQL/OpenCode/scheduler workflow와 contract tests에 국한됐고 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `21202074...` → production `51e6da8e...`로 exact source pin을 갱신했다. | | Automation threat-model accuracy | PR #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher가 이미 구현한 expected-absence branch lease, exact-head cleanup, unique PR recovery를 “미구현”으로 표시하던 documentation false-negative를 RED `2814e5ee...` → docs repair `107a973f...`로 바로잡았다. Runtime control 자체는 protected truth이고 #553은 문서 정확성 candidate다. | -| Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | +| Release/publication | repository release collection empty at last fresh observation | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | ## Current baseline @@ -48,17 +48,19 @@ RED `fc0585c0fae7353d7b76d5c1364e0b1c00869e70` proved the same production runner RED `377f23745a1b76565f86d706705baaaacdcc7583` then proved a deterministic liveness defect: `fetch_manifest()` retained only 12 changed-file contents even though CodeGraph's exact semantic scope admitted 80, and strict gating converts that truncation note into a blocker. Production `406c2f99947836a0b690be8ff7eca78bca989ec1` single-sources `MAX_CONTEXT_FILES` to `MAX_CODEGRAPH_CHANGED_SCOPE_FILES=80`; the regression requires complete 13-file context while 81 files still fail closed. -Fresh RED `f18b665dbcdc2f2fb0c50ba8335597af8ce0df51` proves a separate least-authority defect: deterministic 81+ file or aggregate-query-budget rejection used to occur only after local CodeGraph `init`/`sync`/`status`, so an input that could never become review evidence still consumed CodeGraph subprocess capability. Production `fed98d07084b0a607727f2c31a79cdf7f6195659` moves exact scope admission ahead of every CodeGraph runner invocation. Admitted scopes keep the same execution contract; rejected scopes now perform zero CodeGraph subprocesses. This changes no provider, quarantine, security, outbound, or central runner authority. +RED `f18b665dbcdc2f2fb0c50ba8335597af8ce0df51` proves a separate least-authority defect: deterministic 81+ file or aggregate-query-budget rejection used to occur only after local CodeGraph `init`/`sync`/`status`, so an input that could never become review evidence still consumed CodeGraph subprocess capability. Production `fed98d07084b0a607727f2c31a79cdf7f6195659` moves exact scope admission ahead of every CodeGraph runner invocation. Admitted scopes keep the same execution contract; rejected scopes perform zero CodeGraph subprocesses. -#533 and #548 are non-force stacked on exact #546. Their exact heads are `818a120ba421562a987520dd1a260f948fbf3e23` and `a7066ea97cef0c07399c79599466f07351f886bb`; fresh compare shows 64/77 ahead, 0 behind with exact #546 merge-base. Their current workflows are non-terminal and inherit no GREEN authority. +Filename prompt injection repair `d439058fa9090a7157361c7260b98956fe7cfe65` then encoded changed-file scope as canonical JSON and explicitly marked filenames as untrusted prompt data. Fresh RED `1dbe0780ea60e8f838cdcf246bcc5679d9d43d02` proves that this representation change silently disabled the existing explicit-empty symbol-seeded recovery because `cli.py` still recognized only the legacy whitespace prefix. Production `a785cd4e536b84cd4bf7e4d6a0e1b9aff71d057f` decodes only the canonical JSON suffix, requires exact canonical reserialization, existing file/symbol ceilings and physical current-head regular files, then permits the existing complete `node --symbols-only` recovery. Malformed, noncanonical, partial or redirected scopes remain fail closed. -Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase, or gate weakening is not completion. +#533 and #548 are non-force stacked on exact #546. Their exact heads are `efcebebb2c52d92d131e76285ac26cab74804c53` and `7e2522ef51e3747a5abc74cd49246e3b7abc24a2`; fresh compare shows 65/79 ahead, 0 behind with exact #546 merge-base. #548's own richer `github_io.py` received the JSON prompt-data repair semantically rather than being overwritten by #546. Their current workflows are non-terminal and inherit no GREEN authority. + +Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase or gate weakening is not completion. ## Prioritized residual gaps | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete or redirected source evidence cross the commercial merge boundary; deterministic self-block or pre-admission execution can also make review consume authority without any possibility of valid evidence. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `fed98d07...`; RCA any terminal failure | +| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete or redirected source evidence cross the commercial merge boundary; deterministic self-block or broken recovery can also make valid changed-source evidence unavailable. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `a785cd4e...`; RCA any terminal failure | | P0 | Atomic durable workflow execution authority | Duplicate claims/effects or ambiguous recovery can corrupt long-running buyer workflows and audit trails. | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | | P0 | GPL-family development/build dependency path | Unresolved toolchain licensing can block enterprise procurement, redistribution review and clean SBOM acceptance. | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | | P0 | Maintainer/Reviewer App activation | Without live bounded App identities, review/publication cannot be proved as least-privilege production operations. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | @@ -70,8 +72,8 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `fed98d07...`, stacked #533 `818a120b...` / #548 `a7066ea9...`, #540 workflow observation, central `.github/main@f2506388...`, #527 `091c3853...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `a785cd4e...`, stacked #533 `efcebebb...` / #548 `7e2522ef...`, #540 workflow observation, central `.github/main@3f88e13a...`, #527 `51e6da8e...`, #553 `107a973f...`, and the most recently observed empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline -A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. +A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. \ No newline at end of file From 91c98913a5d70d06370f6f63eb07ae4223aa17b0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 5 Sep 2026 23:27:30 +0900 Subject: [PATCH 25/85] docs: advance current central trust observation --- docs/product-technical-gap-baseline.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index a97c6d8e8..0938a8a4c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -16,9 +16,9 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Reviewer semantic evidence | PR #546 exact `a785cd4e536b84cd4bf7e4d6a0e1b9aff71d057f` | Complete 80-file context, fail-before-execution admission, exact Git path/physical-checkout provenance와 complete symbol recovery를 유지한다. Filename prompt injection을 막기 위해 canonical JSON data로 바꾼 `d439058f...`가 legacy whitespace parser와 어긋나 empty-result `node → explore` recovery를 끊은 결함을 RED `1dbe0780...` → production `a785cd4e...`로 닫았다. Canonical JSON serialization·bounded complete scope·physical current-head regular-file 검증을 통과한 경우에만 recovery한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | | Stacked reviewer consumers | PR #533 exact `efcebebb2c52d92d131e76285ac26cab74804c53`; PR #548 exact `7e2522ef51e3747a5abc74cd49246e3b7abc24a2` | 두 lane은 #546 `a785cd4e...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 runner-assignment/acquisition delta만 유지하며 65 ahead / 0 behind다. #548은 richer failed-check/actionability adapter를 보존하면서 JSON prompt-data boundary를 semantic merge했고 79 ahead / 0 behind다. 두 merge-base는 exact #546이다. Current workflows는 non-terminal이고 required Security Scan은 stacked exact heads에 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | -| Central workflow trust source | `.github/main@3f88e13af9dcde4b9da6958c02a78ce3b5c85800`; PR #527 exact `51e6da8ec1c48e75654023f70ff25360134795ab` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. `f2506388...` 이후 2-commit delta는 central CodeQL/OpenCode/scheduler workflow와 contract tests에 국한됐고 `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 RED `21202074...` → production `51e6da8e...`로 exact source pin을 갱신했다. | +| Central workflow trust source | `.github/main@7f4c5e3e0efb7bfe29f33b60d4264858effd2996`; PR #527 exact `84cff17ba0fd6665645b29984e4542de7ddddb1d` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. `3f88e13a...` 이후 #1937은 scheduler가 queued/running current-head checks를 branch-update로 다시 취소하는 starvation loop를 막는 central control-plane repair다. `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 새 central advance를 RED `57303270...` → production `84cff17b...`로 즉시 재-pin했다. | | Automation threat-model accuracy | PR #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher가 이미 구현한 expected-absence branch lease, exact-head cleanup, unique PR recovery를 “미구현”으로 표시하던 documentation false-negative를 RED `2814e5ee...` → docs repair `107a973f...`로 바로잡았다. Runtime control 자체는 protected truth이고 #553은 문서 정확성 candidate다. | -| Release/publication | repository release collection empty at last fresh observation | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | +| Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | ## Current baseline @@ -72,7 +72,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `a785cd4e...`, stacked #533 `efcebebb...` / #548 `7e2522ef...`, #540 workflow observation, central `.github/main@3f88e13a...`, #527 `51e6da8e...`, #553 `107a973f...`, and the most recently observed empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `a785cd4e...`, stacked #533 `efcebebb...` / #548 `7e2522ef...`, #540 workflow observation, central `.github/main@7f4c5e3e...`, #527 `84cff17b...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline From d4dd1f9a282ef3f14a0e52127462287c92639d23 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 00:09:48 +0900 Subject: [PATCH 26/85] docs: reconcile JSON-safe reviewer recovery authority --- docs/product-technical-gap-baseline.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0938a8a4c..e4f615ccd 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,18 +6,19 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 GitHub installation-token stateless-format regression은 protected truth다. Active PR 구현과 transient workflow 상태는 candidate/observation이며 protected truth로 승격하지 않는다. -## Live observation — 2026-09-05 KST +## Live observation — 2026-09-06 KST | Authority | Observation | Consequence | | --- | --- | --- | | Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | | Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `a785cd4e536b84cd4bf7e4d6a0e1b9aff71d057f` | Complete 80-file context, fail-before-execution admission, exact Git path/physical-checkout provenance와 complete symbol recovery를 유지한다. Filename prompt injection을 막기 위해 canonical JSON data로 바꾼 `d439058f...`가 legacy whitespace parser와 어긋나 empty-result `node → explore` recovery를 끊은 결함을 RED `1dbe0780...` → production `a785cd4e...`로 닫았다. Canonical JSON serialization·bounded complete scope·physical current-head regular-file 검증을 통과한 경우에만 recovery한다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | PR #533 exact `efcebebb2c52d92d131e76285ac26cab74804c53`; PR #548 exact `7e2522ef51e3747a5abc74cd49246e3b7abc24a2` | 두 lane은 #546 `a785cd4e...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 runner-assignment/acquisition delta만 유지하며 65 ahead / 0 behind다. #548은 richer failed-check/actionability adapter를 보존하면서 JSON prompt-data boundary를 semantic merge했고 79 ahead / 0 behind다. 두 merge-base는 exact #546이다. Current workflows는 non-terminal이고 required Security Scan은 stacked exact heads에 아직 materialize되지 않았다. | +| Reviewer semantic evidence | PR #546 exact `b6c370255e92491d4eac0cc9ec9c5c6b6f909fab` | Initial changed-file scope는 canonical JSON untrusted data로 유지되고, empty-result recovery도 RED `244a0294...` → production `b6c37025...`에서 `{path,symbols}` canonical JSON records로 바뀌었다. Newline-bearing Git filename이나 repository-derived symbol text가 second `explore`의 instruction-shaped raw text가 되지 않는다. Exact argv/file identity, complete-scope, physical-checkout/symlink, file-count/output bounds는 유지되며 exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | PR #533 exact `d961bf11018bcafc330046c5ce36e40f3006cef0`; PR #548 exact `24c9993d2c2d9071d21aa7d85a28bf4c3b819fba` | 두 lane은 #546 `b6c37025...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 runner-assignment/acquisition 19-file delta만 유지하며 66 ahead / 0 behind다. #548은 richer failed-check/actionability 16-file adapter delta를 보존하며 80 ahead / 0 behind다. 두 merge-base는 exact #546이다. Current workflows는 non-terminal이고 required Security Scan은 stacked exact heads에 아직 materialize되지 않았다. | | Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | | Central workflow trust source | `.github/main@7f4c5e3e0efb7bfe29f33b60d4264858effd2996`; PR #527 exact `84cff17ba0fd6665645b29984e4542de7ddddb1d` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. `3f88e13a...` 이후 #1937은 scheduler가 queued/running current-head checks를 branch-update로 다시 취소하는 starvation loop를 막는 central control-plane repair다. `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 새 central advance를 RED `57303270...` → production `84cff17b...`로 즉시 재-pin했다. | | Automation threat-model accuracy | PR #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher가 이미 구현한 expected-absence branch lease, exact-head cleanup, unique PR recovery를 “미구현”으로 표시하던 documentation false-negative를 RED `2814e5ee...` → docs repair `107a973f...`로 바로잡았다. Runtime control 자체는 protected truth이고 #553은 문서 정확성 candidate다. | +| Cross-session coordination docs | PR #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Application/Security/image/reviewer workflow surfaces는 terminal success지만 reviewer는 #546 protected integration 이전 semantic contract에서 생성됐다. Source churn 없이 Draft로 되돌려 fresh semantic authority 이전의 Ready 상태를 제거했다. Central sidecar migration authority는 `.github#1759`에 남는다. | | Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | ## Current baseline @@ -50,17 +51,19 @@ RED `377f23745a1b76565f86d706705baaaacdcc7583` then proved a deterministic liven RED `f18b665dbcdc2f2fb0c50ba8335597af8ce0df51` proves a separate least-authority defect: deterministic 81+ file or aggregate-query-budget rejection used to occur only after local CodeGraph `init`/`sync`/`status`, so an input that could never become review evidence still consumed CodeGraph subprocess capability. Production `fed98d07084b0a607727f2c31a79cdf7f6195659` moves exact scope admission ahead of every CodeGraph runner invocation. Admitted scopes keep the same execution contract; rejected scopes perform zero CodeGraph subprocesses. -Filename prompt injection repair `d439058fa9090a7157361c7260b98956fe7cfe65` then encoded changed-file scope as canonical JSON and explicitly marked filenames as untrusted prompt data. Fresh RED `1dbe0780ea60e8f838cdcf246bcc5679d9d43d02` proves that this representation change silently disabled the existing explicit-empty symbol-seeded recovery because `cli.py` still recognized only the legacy whitespace prefix. Production `a785cd4e536b84cd4bf7e4d6a0e1b9aff71d057f` decodes only the canonical JSON suffix, requires exact canonical reserialization, existing file/symbol ceilings and physical current-head regular files, then permits the existing complete `node --symbols-only` recovery. Malformed, noncanonical, partial or redirected scopes remain fail closed. +Filename prompt injection repair `d439058fa9090a7157361c7260b98956fe7cfe65` then encoded changed-file scope as canonical JSON and explicitly marked filenames as untrusted prompt data. RED `1dbe0780ea60e8f838cdcf246bcc5679d9d43d02` proved that representation change silently disabled the existing explicit-empty symbol-seeded recovery because `cli.py` still recognized only the legacy whitespace prefix. Production `a785cd4e536b84cd4bf7e4d6a0e1b9aff71d057f` decodes only the canonical JSON suffix, requires exact canonical reserialization, existing file/symbol ceilings and physical current-head regular files, then permits the existing complete `node --symbols-only` recovery. Malformed, noncanonical, partial or redirected scopes remain fail closed. -#533 and #548 are non-force stacked on exact #546. Their exact heads are `efcebebb2c52d92d131e76285ac26cab74804c53` and `7e2522ef51e3747a5abc74cd49246e3b7abc24a2`; fresh compare shows 65/79 ahead, 0 behind with exact #546 merge-base. #548's own richer `github_io.py` received the JSON prompt-data repair semantically rather than being overwritten by #546. Their current workflows are non-terminal and inherit no GREEN authority. +Fresh RED `244a0294ab5d8fc1df0352c4b02b258a11938a39` then proved that the recovered filename and CodeGraph symbol-map output were concatenated as raw text into the second `explore` prompt, reintroducing an instruction-shaped data channel after the first prompt had been hardened. Production `b6c370255e92491d4eac0cc9ec9c5c6b6f909fab` serializes every seed as canonical `{path,symbols}` JSON and labels the whole block as untrusted retrieval data. The raw exact path is still passed only as `codegraph node --file` argv, so prompt escaping does not normalize or truncate filesystem identity. -Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540 and #543 even where application/Security/image are terminal success. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase or gate weakening is not completion. +#533 and #548 are non-force stacked on exact #546 `b6c37025...`. Their exact heads are `d961bf11018bcafc330046c5ce36e40f3006cef0` and `24c9993d2c2d9071d21aa7d85a28bf4c3b819fba`; fresh compare shows 66/80 ahead, 0 behind with exact #546 merge-base. Their remaining deltas are respectively the 19-file runner/acquisition surface and the 16-file failed-check/actionability surface. Current workflows are non-terminal and inherit no GREEN authority. + +Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540, #543 and #552 even where application/Security/image are terminal success. #552 was returned to Draft without changing source. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase or gate weakening is not completion. ## Prioritized residual gaps | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete or redirected source evidence cross the commercial merge boundary; deterministic self-block or broken recovery can also make valid changed-source evidence unavailable. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `a785cd4e...`; RCA any terminal failure | +| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete, redirected or prompt-injected source evidence cross the commercial merge boundary; deterministic self-block or broken recovery can also make valid changed-source evidence unavailable. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `b6c37025...`; RCA any terminal failure | | P0 | Atomic durable workflow execution authority | Duplicate claims/effects or ambiguous recovery can corrupt long-running buyer workflows and audit trails. | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | | P0 | GPL-family development/build dependency path | Unresolved toolchain licensing can block enterprise procurement, redistribution review and clean SBOM acceptance. | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | | P0 | Maintainer/Reviewer App activation | Without live bounded App identities, review/publication cannot be proved as least-privilege production operations. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | @@ -72,7 +75,7 @@ Terminal reviewer successes created before #546 reaches protected truth remain w ## Documentation authority reconciliation -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `a785cd4e...`, stacked #533 `efcebebb...` / #548 `7e2522ef...`, #540 workflow observation, central `.github/main@7f4c5e3e...`, #527 `84cff17b...`, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `b6c37025...`, stacked #533 `d961bf11...` / #548 `24c9993d...`, #540 workflow observation, central `.github/main@7f4c5e3e...`, #527 `84cff17b...`, #552 `5e49c9af...` Draft, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. ## Completion discipline From ee0b035e62dfd0495669a6d0c5824380d7bda67c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 00:18:42 +0900 Subject: [PATCH 27/85] docs: refresh commercial gap baseline to current reviewer stack --- docs/product-technical-gap-baseline.md | 103 +++++++++++-------------- 1 file changed, 46 insertions(+), 57 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e4f615ccd..88c7bf01b 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -2,81 +2,70 @@ ## Authority and update rule -이 문서는 제품 요구, protected 구현, active candidate, 검증, 운영 증거 사이의 현재 차이를 추적한다. 저장소 파일과 테스트는 해당 revision의 구현만 증명하며 PR 상태는 exact head와 independently resolved live base에서 다시 확인한다. 운영·배포·고객·매출·법적 증거는 해당 외부 권한이 실제로 남긴 증거만 인정한다. 문서, 성공 boolean, predecessor run, model judgement로 이후 단계의 권위를 만들지 않는다. +이 문서는 protected 구현, active candidate, transient workflow observation, foreign-owner authority를 구분해 Noema의 제품·기술 Gap을 추적한다. 저장소 파일과 테스트는 해당 revision의 source contract만 증명한다. PR, check, release, central workflow source는 매 판단 시 live exact head에서 다시 읽으며 predecessor GREEN, 문서 존재, model judgement, synthetic fixture를 이후 단계의 권위로 전용하지 않는다. -Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 GitHub installation-token stateless-format regression은 protected truth다. Active PR 구현과 transient workflow 상태는 candidate/observation이며 protected truth로 승격하지 않는다. +Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 GitHub installation-token stateless-format regression은 protected truth다. ADR 0012는 여전히 `Proposed`이며 protected 구현의 존재가 ADR lifecycle acceptance를 뜻하지 않는다. ## Live observation — 2026-09-06 KST -| Authority | Observation | Consequence | +| Authority | Exact observation | Consequence | | --- | --- | --- | -| Protected source | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, checkpoint admission, bounded task-plan admission/runnable selection은 protected foundation이다. Durable atomic claim/checkpoint persistence는 별도 후속 candidate다. | -| Third-party/tooling licensing | issue #531 / PR #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | GPL-family 개발·빌드 경로 제거 candidate는 regenerated lockfile/policy와 application CI, reviewer-ci, Security Scan, image terminal success까지 도달했다. reviewer success는 #546 protected integration 이전 semantic contract에서 생성돼 merge-authoritative semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / PR #542 | atomic task claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. protected pure selector는 durable execution authority를 대신하지 않는다. | -| Reviewer semantic evidence | PR #546 exact `b6c370255e92491d4eac0cc9ec9c5c6b6f909fab` | Initial changed-file scope는 canonical JSON untrusted data로 유지되고, empty-result recovery도 RED `244a0294...` → production `b6c37025...`에서 `{path,symbols}` canonical JSON records로 바뀌었다. Newline-bearing Git filename이나 repository-derived symbol text가 second `explore`의 instruction-shaped raw text가 되지 않는다. Exact argv/file identity, complete-scope, physical-checkout/symlink, file-count/output bounds는 유지되며 exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | PR #533 exact `d961bf11018bcafc330046c5ce36e40f3006cef0`; PR #548 exact `24c9993d2c2d9071d21aa7d85a28bf4c3b819fba` | 두 lane은 #546 `b6c37025...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 runner-assignment/acquisition 19-file delta만 유지하며 66 ahead / 0 behind다. #548은 richer failed-check/actionability 16-file adapter delta를 보존하며 80 ahead / 0 behind다. 두 merge-base는 exact #546이다. Current workflows는 non-terminal이고 required Security Scan은 stacked exact heads에 아직 materialize되지 않았다. | -| Context Fabric consumer boundary | PR #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 authority가 아니다. | -| Central workflow trust source | `.github/main@7f4c5e3e0efb7bfe29f33b60d4264858effd2996`; PR #527 exact `84cff17ba0fd6665645b29984e4542de7ddddb1d` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. `3f88e13a...` 이후 #1937은 scheduler가 queued/running current-head checks를 branch-update로 다시 취소하는 starvation loop를 막는 central control-plane repair다. `noema-review.yml` blob `21ea9672...`, `noema_review_gate.py` `5ab7e830...`, `security-scan.yml` `500e22b4...`는 동일하다. #527은 새 central advance를 RED `57303270...` → production `84cff17b...`로 즉시 재-pin했다. | -| Automation threat-model accuracy | PR #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher가 이미 구현한 expected-absence branch lease, exact-head cleanup, unique PR recovery를 “미구현”으로 표시하던 documentation false-negative를 RED `2814e5ee...` → docs repair `107a973f...`로 바로잡았다. Runtime control 자체는 protected truth이고 #553은 문서 정확성 candidate다. | -| Cross-session coordination docs | PR #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Application/Security/image/reviewer workflow surfaces는 terminal success지만 reviewer는 #546 protected integration 이전 semantic contract에서 생성됐다. Source churn 없이 Draft로 되돌려 fresh semantic authority 이전의 Ready 상태를 제거했다. Central sidecar migration authority는 `.github#1759`에 남는다. | -| Release/publication | repository release collection empty | Immutable Noema release, package/image publication, release provenance와 rollback evidence는 아직 없다. | - -## Current baseline - -| Requirement family | Canonical boundary | Protected or active surface | Residual evidence | Maturity | -| --- | --- | --- | --- | --- | -| Credential exchange/readiness | Worker trust contract, OIDC/replay/rate-limit | protected runtime entrypoints/modules | protected deployment smoke와 실제 binding/storage operational evidence | Protected source implemented; operations separate | -| GitHub installation-token compatibility | GitHub token은 opaque bounded transport | protected admission + #537 regression | live App exchange/rotation evidence | Protected transport compatibility | -| Reviewer/maintenance control plane | independent identity, exact-head semantic evidence, deterministic fail-closed gates | protected reviewer source + #546 repair | #546 unchanged exact-head terminal GREEN + protected integration; affected heads fresh semantic review; external App activation | Evidence-integrity repair active | -| Agent Runtime | ADR 0012 + Context Map | protected #528 lifecycle foundation | broader runtime composition/recovery slices | Protected foundation | -| Workflow / Task Execution | task-plan admission과 durable authority 분리 | protected task-plan + #542 durable candidate | atomic claim/checkpoint/recovery exact-head GREEN + protected merge | Durable execution candidate | -| State / Checkpoint | monotonic admission, exact replay idempotency, persistence CAS | protected admission + #542 CAS candidate | durable persistence current-head GREEN and merge | Persistence candidate | -| Tool / Capability Boundary | least authority, versioned capabilities, foreign-owner ACL | bounded protected patterns; issue #545 future extension | extension admission/activation/expiry/rollback | Partial | -| Context Fabric consumer | immutable released producer contract only | protected fail-closed boundary + #544 | immutable producer release + authenticated Noema trust anchor | Foreign release prerequisite open | -| contextual-orchestrator consumer | CO owns provider/model discovery/routing/retry/failover/credentials | protected gateway + #535 `orchestrator/free` convergence | #535 exact-head terminal GREEN + protected integration | Routing-alias repair candidate | -| Patch-validator supply chain | exact source/image/receipt, fail-closed vulnerability policy | protected image/runtime/supply-chain implementation | immutable publication/signing/attestation + operational receipt | Source implemented; publication open | -| Source/dependency licensing | Apache-2.0 source grant; third-party terms independent | protected LICENSE + #540 toolchain candidate | protected lockfile/license re-audit and merge | Source grant protected; toolchain replacement candidate | -| Release/deployment | source → SBOM/provenance → immutable publication → deployment/rollback | release/deployment/readiness scripts | immutable release, governed deployment, recovery smoke | Incomplete | -| KPI/customer/acquisition | authentic source/time/buyer/legal authority | KPI/acquisition validators | >=30-day production KPI, customer/revenue, owner/legal transfer evidence | Commercial final gate not-ready | - -## Reviewer-evidence convergence +| Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | +| Reviewer semantic evidence | #546 exact `1d9e8e58c3497930e1ebca350431c940e7518f1a` | RED `244a0294...` → production `b6c37025...`가 empty-result recovery의 filename/symbol-map raw prompt reinjection을 제거했다. `{path,symbols}`를 canonical JSON untrusted retrieval data로 유지하고 exact `node --file` argv identity는 보존한다. `1a407c1e...`/`1d9e8e58...`은 같은 계약을 README에 반영하고 즉시 문서 오타를 수리한 후속이다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | #533 exact `53ea72f95770a8254dfedd7548c14aedb21b3bbb`; #548 exact `bb7aacf300cda4fca6a3a3bffb60b7cd63442171` | 둘 다 exact #546을 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 67 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 82 ahead / 0 behind이며 richer README/github adapter를 semantic merge로 보존했다. 두 merge-base는 exact #546이다. | +| Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | regenerated lockfile/policy와 workflow-surface success가 있으나 reviewer는 protected #546 이전 계약에서 생성됐다. Semantic GREEN으로 승계하지 않는다. | +| Durable workflow authority | issue #541 / #542 | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Protected pure selector는 durable execution authority를 대신하지 않는다. | +| Context Fabric boundary | #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | +| Central workflow trust | `.github/main@7f4c5e3e0efb7bfe29f33b60d4264858effd2996`; #527 exact `84cff17ba0fd6665645b29984e4542de7ddddb1d` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Fresh `wrangler.toml`은 동일 SHA를 pin한다. Central scheduler/security/provider ownership은 `.github`에 남는다. | +| Central runner/control plane | `.github#712` | Current #546/#533/#548 reviewer jobs는 `steps=[]`, `runner_id=0`, runner group 미배정으로 checkout 전 queued 상태다. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | +| Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | +| Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | +| Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Earlier CI/Security/image/reviewer surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft로 되돌려 Ready false-green을 제거했다. | +| Release/publication | repository release collection must be read live | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으면 source readiness를 release readiness로 승격하지 않는다. | -#546 is the canonical owner repair for semantic CodeGraph admission and current-head retrieval provenance. RED `4b96b40bf0f3e0590b1bf99f3879418c009213ff` proved the old JavaScript sandbox could reject a supplementary-plane path inventory that Python admitted because `String.length` counts UTF-16 code units; production `5eee2566d628159113b75741f1914dee824a6545` aligned the sandbox to Unicode code-point counting without expanding the 24,079-character budget. +## DDD and ownership baseline -RED `cfacdba4132af85555e04b54bfb90b306267619d` then proved `DockerCodeGraphRunner` cached one first-explore output across distinct prompts, so a later symbol-seeded retry prompt could receive stale empty evidence instead of executing. Production `4fcacd16450d3fbd5a2eae0922b90aaab94430f3` replaced that session-wide singleton cache with exact-prompt keyed outputs. +Noema의 canonical Core Domain은 Agent Runtime과 Workflow/Task Execution이다. State/Checkpoint, Tool Capability, Isolation Integration, Policy/Approval, Observability, Recovery는 그 lifecycle을 보조하는 bounded context다. Aggregate와 invariant는 최소 transaction boundary에서 유지하며 durable effect ownership을 외부 서비스의 domain truth와 섞지 않는다. -RED `fc0585c0fae7353d7b76d5c1364e0b1c00869e70` proved the same production runner still normalized its host bind source with `Path.resolve()` before provenance admission: a symlinked source root or a physical checkout leaf reached through a symlinked ancestor could be redirected to another physical directory before the container boundary saw it. Production `9f93d9932d2c3d000a69caaf36026275077a71be` preserves the absolute caller root and requires exact equality with strict physical resolution before bind-mount admission. +Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual-orchestrator`는 LLM provider/model discovery, routing, retry/failover와 credential authority를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave는 격리·보안·outbound authority를 소유한다. Keyverse는 identity backend owner다. Context Fabric 계열은 released/versioned contract만 소비한다. Noema는 이 owner들의 source를 복사하거나 cross-service SQL, mutable sibling PR head를 runtime truth로 사용하지 않는다. -RED `377f23745a1b76565f86d706705baaaacdcc7583` then proved a deterministic liveness defect: `fetch_manifest()` retained only 12 changed-file contents even though CodeGraph's exact semantic scope admitted 80, and strict gating converts that truncation note into a blocker. Production `406c2f99947836a0b690be8ff7eca78bca989ec1` single-sources `MAX_CONTEXT_FILES` to `MAX_CODEGRAPH_CHANGED_SCOPE_FILES=80`; the regression requires complete 13-file context while 81 files still fail closed. +## Reviewer-evidence convergence -RED `f18b665dbcdc2f2fb0c50ba8335597af8ce0df51` proves a separate least-authority defect: deterministic 81+ file or aggregate-query-budget rejection used to occur only after local CodeGraph `init`/`sync`/`status`, so an input that could never become review evidence still consumed CodeGraph subprocess capability. Production `fed98d07084b0a607727f2c31a79cdf7f6195659` moves exact scope admission ahead of every CodeGraph runner invocation. Admitted scopes keep the same execution contract; rejected scopes perform zero CodeGraph subprocesses. +#546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이다. 현재까지 유지해야 할 causal lineage는 다음과 같다. -Filename prompt injection repair `d439058fa9090a7157361c7260b98956fe7cfe65` then encoded changed-file scope as canonical JSON and explicitly marked filenames as untrusted prompt data. RED `1dbe0780ea60e8f838cdcf246bcc5679d9d43d02` proved that representation change silently disabled the existing explicit-empty symbol-seeded recovery because `cli.py` still recognized only the legacy whitespace prefix. Production `a785cd4e536b84cd4bf7e4d6a0e1b9aff71d057f` decodes only the canonical JSON suffix, requires exact canonical reserialization, existing file/symbol ceilings and physical current-head regular files, then permits the existing complete `node --symbols-only` recovery. Malformed, noncanonical, partial or redirected scopes remain fail closed. +- Unicode path-budget parity: RED `4b96b40b...` → `5eee2566...`. +- prompt-specific CodeGraph result identity: RED `cfacdba4...` → `4fcacd16...`. +- physical checkout/root provenance: RED `fc0585c0...` → `9f93d993...` 및 후속 symlink-boundary repairs. +- complete manifest context: RED `377f2374...` → `406c2f99...`, 80-file canonical scope와 manifest context를 일치시킨다. +- fail-before-execution admission: RED `f18b665d...` → `fed98d07...`, deterministic over-budget input은 CodeGraph subprocess capability를 소비하지 않는다. +- initial prompt filename isolation: `d439058f...`, canonical JSON data로 이동한다. +- JSON-scope recovery restoration: RED `1dbe0780...` → `a785cd4e...`, malformed/noncanonical/partial/redirected scope는 fail closed한다. +- recovery prompt injection closure: RED `244a0294...` → `b6c37025...`, second explore의 path와 symbol map도 canonical JSON untrusted data로 유지한다. -Fresh RED `244a0294ab5d8fc1df0352c4b02b258a11938a39` then proved that the recovered filename and CodeGraph symbol-map output were concatenated as raw text into the second `explore` prompt, reintroducing an instruction-shaped data channel after the first prompt had been hardened. Production `b6c370255e92491d4eac0cc9ec9c5c6b6f909fab` serializes every seed as canonical `{path,symbols}` JSON and labels the whole block as untrusted retrieval data. The raw exact path is still passed only as `codegraph node --file` argv, so prompt escaping does not normalize or truncate filesystem identity. +#533과 #548은 이 exact prerequisite를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion을 자체 소유하므로 prerequisite 파일을 wholesale overwrite하지 않고 semantic merge한다. -#533 and #548 are non-force stacked on exact #546 `b6c37025...`. Their exact heads are `d961bf11018bcafc330046c5ce36e40f3006cef0` and `24c9993d2c2d9071d21aa7d85a28bf4c3b819fba`; fresh compare shows 66/80 ahead, 0 behind with exact #546 merge-base. Their remaining deltas are respectively the 19-file runner/acquisition surface and the 16-file failed-check/actionability surface. Current workflows are non-terminal and inherit no GREEN authority. +Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. -Terminal reviewer successes created before #546 reaches protected truth remain workflow-surface evidence only. This applies to unchanged open heads such as #526, #536, #539, #540, #543 and #552 even where application/Security/image are terminal success. #552 was returned to Draft without changing source. Source churn merely to retrigger review, predecessor evidence transfer, self-approval, force-push/destructive rebase or gate weakening is not completion. +## Prioritized commercial gaps -## Prioritized residual gaps +| Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | +| --- | --- | --- | --- | --- | +| P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale 또는 prompt-injected evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | +| P0 | Atomic durable workflow authority | Duplicate claim/effect와 ambiguous recovery가 long-running workflow/audit trail을 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | +| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | +| P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | +| P0 | Protected governance target | Source gate가 맞아도 repository governance가 우회되면 evidence chain이 깨진다. | issue #27 | fresh ruleset/protection + behavioral proof | +| P1 | Immutable Context Graph producer contract | Mutable producer evidence는 reproducibility와 consumer isolation을 훼손한다. | #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance evidence | +| P1 | Patch-validator publication | Reviewed source와 shipped image의 동일성이 증명되지 않는다. | issue #66 | immutable digest, signature/attestation, activation/rollback receipt | +| P1 | Authentic production KPI | Synthetic/short-window metrics로 enterprise reliability를 주장할 수 없다. | issue #3 | >=30-day production-origin provenance-bound KPI | +| P1 | Release/deployment/acquisition evidence | merged source만으로 transferable commercial product가 되지 않는다. | issue #5 | immutable release + governed deployment + rollback + customer/revenue/support/rights evidence | -| Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | -| --- | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green or self-block | False approval can let incomplete, redirected or prompt-injected source evidence cross the commercial merge boundary; deterministic self-block or broken recovery can also make valid changed-source evidence unavailable. | PR #546 | unchanged exact-head CI/reviewer/Security/image/SBOM/vulnerability/provenance terminal clean + zero findings + protected merge; then fresh affected-head reviewer evidence | verify #546 exact `b6c37025...`; RCA any terminal failure | -| P0 | Atomic durable workflow execution authority | Duplicate claims/effects or ambiguous recovery can corrupt long-running buyer workflows and audit trails. | issue #541 / PR #542 | atomic single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | verify #542 repaired head without gate weakening | -| P0 | GPL-family development/build dependency path | Unresolved toolchain licensing can block enterprise procurement, redistribution review and clean SBOM acceptance. | issue #531 / PR #540 | regenerated lockfile free of prohibited path + application/security/dev/deploy/license inventory + protected merge | after #546 protected integration, regenerate semantic review for unchanged #540 | -| P0 | Maintainer/Reviewer App activation | Without live bounded App identities, review/publication cannot be proved as least-privilege production operations. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | owner provision then protected preflight/canary | -| P0 | Protected `main` governance target | Missing or misapplied repository governance can bypass the evidence chain even when source gates are correct. | issue #27 | fresh ruleset/protection + behavioral proof | authorized control-plane verification/repair | -| P1 | Context Graph immutable producer contract | Mutable producer evidence can couple Noema to unversioned semantic truth and break reproducible integrations. | PR #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance/admission evidence | fail closed until producer release; verify #544 candidate | -| P1 | Patch-validator publication proof | Source-only validator hardening does not prove the shipped image is the reviewed immutable artifact. | issue #66 | protected workflow receipt, immutable digest, signature/attestation, activation/rollback proof | owner-controlled publication path | -| P1 | Authentic >=30-day KPI | Buyers cannot rely on synthetic or short-window readiness claims for production reliability and service quality. | issue #3 | production-origin integrity/provenance-bound KPI | governed collector/verifier | -| P1 | Immutable release/deployment/acquisition evidence | A merged repository without release, rollback and commercial evidence is not a transferable production product. | issue #5 | immutable release + governed deployment + customer/revenue/support/rights/transfer evidence | complete preceding evidence families then re-audit | +## Performance, test and release gate -## Documentation authority reconciliation +Applicable buyer-facing web/API path는 async+k6/E2E로 현실 workload에서 p95 ≤20 ms를 증명해야 하며 초과 시 profile 후 hot path를 수리한다. sample 축소, 측정 제외, 비현실 cache warm-up으로 gate를 통과시키지 않는다. Owned production docstring/rustdoc, test, edge-case coverage는 각각 100%를 유지한다. Security/performance/math core에 새 hot path가 생기면 Rust-first 원칙과 CPU multithreading, 필요한 GPU parity를 검토한다. -Protected `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` already contains #528, #530 and #537. Current candidate/observation authority is #546 `b6c37025...`, stacked #533 `d961bf11...` / #548 `24c9993d...`, #540 workflow observation, central `.github/main@7f4c5e3e...`, #527 `84cff17b...`, #552 `5e49c9af...` Draft, #553 `107a973f...`, and the empty release collection. ADR 0012 remains `Proposed`; protected implementation status does not imply ADR lifecycle acceptance. +Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBOM/provenance/reproducibility/rollback을 하나의 immutable evidence chain으로 만든다. 현재 active prerequisite가 Draft/non-terminal인 동안 release collection의 부재를 source change로 위장하지 않는다. ## Completion discipline -A gap closes only when its authoritative completion evidence exists and is bound to the current exact source/head. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement and mutable sibling source are not completion evidence. A waiting lane does not block other safe Noema-owned repairs. Source license, package/artifact license metadata, third-party terms, immutable publication, deployment and commercial/legal authority remain separate evidence classes. \ No newline at end of file +Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. \ No newline at end of file From af5fae8645ab6abe5b0faa02020d141b992e9cd8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 02:04:17 +0900 Subject: [PATCH 28/85] docs: refresh commercial gap authority after path-identity repair --- docs/product-technical-gap-baseline.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 88c7bf01b..d8bc22b01 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -11,17 +11,17 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Authority | Exact observation | Consequence | | --- | --- | --- | | Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | -| Reviewer semantic evidence | #546 exact `1d9e8e58c3497930e1ebca350431c940e7518f1a` | RED `244a0294...` → production `b6c37025...`가 empty-result recovery의 filename/symbol-map raw prompt reinjection을 제거했다. `{path,symbols}`를 canonical JSON untrusted retrieval data로 유지하고 exact `node --file` argv identity는 보존한다. `1a407c1e...`/`1d9e8e58...`은 같은 계약을 README에 반영하고 즉시 문서 오타를 수리한 후속이다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | #533 exact `53ea72f95770a8254dfedd7548c14aedb21b3bbb`; #548 exact `bb7aacf300cda4fca6a3a3bffb60b7cd63442171` | 둘 다 exact #546을 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 67 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 82 ahead / 0 behind이며 richer README/github adapter를 semantic merge로 보존했다. 두 merge-base는 exact #546이다. | +| Reviewer semantic evidence | #546 exact `04376e279c61a7491cb311589b28dc643bf65837` | Retained JSON-safe recovery `b6c37025...`에 이어 RED `3328f7ba...` → production `04376e27...`가 Linux sandbox에서 leading-backslash Git filename을 Windows absolute path로 오인하던 cross-boundary identity defect를 제거했다. POSIX absolute/traversal/NUL/bound checks와 no-symlink copy boundary는 그대로다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | #533 exact `52b9195bb9f5006ffcd2dca7dedbf05c51169239`; #548 exact `dd7353342b4776b007b74f8b223e172dcb3d4f4f` | 둘 다 exact #546을 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 68 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 83 ahead / 0 behind이며 richer README/github adapter를 보존한다. 두 merge-base는 exact #546이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | regenerated lockfile/policy와 workflow-surface success가 있으나 reviewer는 protected #546 이전 계약에서 생성됐다. Semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / #542 | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Protected pure selector는 durable execution authority를 대신하지 않는다. | +| Durable workflow authority | issue #541 / #542 exact `7e5ff9cd698a04143c308f597a6c0c01db9f5fd1` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Fresh predecessor hosted RED는 4,035 tests 통과 후 100% coverage gate에서 실패했고, current head는 missing failure/authority branches를 executable tests로 보강했지만 exact-head workflows는 아직 non-terminal이다. | | Context Fabric boundary | #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | | Central workflow trust | `.github/main@7f4c5e3e0efb7bfe29f33b60d4264858effd2996`; #527 exact `84cff17ba0fd6665645b29984e4542de7ddddb1d` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Fresh `wrangler.toml`은 동일 SHA를 pin한다. Central scheduler/security/provider ownership은 `.github`에 남는다. | -| Central runner/control plane | `.github#712` | Current #546/#533/#548 reviewer jobs는 `steps=[]`, `runner_id=0`, runner group 미배정으로 checkout 전 queued 상태다. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | +| Central runner/control plane | `.github#712` | Current #546/#533/#548 exact heads have newly materialized queued/pending workflow surfaces; no predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | | Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Earlier CI/Security/image/reviewer surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft로 되돌려 Ready false-green을 제거했다. | -| Release/publication | repository release collection must be read live | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으면 source readiness를 release readiness로 승격하지 않는다. | +| Release/publication | repository release collection is empty on the fresh 2026-09-06 read | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. | ## DDD and ownership baseline @@ -41,8 +41,9 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual - initial prompt filename isolation: `d439058f...`, canonical JSON data로 이동한다. - JSON-scope recovery restoration: RED `1dbe0780...` → `a785cd4e...`, malformed/noncanonical/partial/redirected scope는 fail closed한다. - recovery prompt injection closure: RED `244a0294...` → `b6c37025...`, second explore의 path와 symbol map도 canonical JSON untrusted data로 유지한다. +- Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, production sandbox가 leading backslash를 Windows separator로 오인하지 않고 Linux filename byte로 보존한다. POSIX slash traversal과 absolute-path rejection은 유지한다. -#533과 #548은 이 exact prerequisite를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion을 자체 소유하므로 prerequisite 파일을 wholesale overwrite하지 않고 semantic merge한다. +#533과 #548은 이 exact prerequisite를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion을 자체 소유하므로 prerequisite 파일을 wholesale overwrite하지 않고 semantic composition을 유지한다. Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. @@ -68,4 +69,4 @@ Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBO ## Completion discipline -Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. \ No newline at end of file +Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. From 8c118cca8c9dcb35eb165e74d68e3d646d4a2478 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 03:12:55 +0900 Subject: [PATCH 29/85] docs: reconcile workflow transport and central trust authority --- docs/product-technical-gap-baseline.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d8bc22b01..f90b997ab 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -14,10 +14,10 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Reviewer semantic evidence | #546 exact `04376e279c61a7491cb311589b28dc643bf65837` | Retained JSON-safe recovery `b6c37025...`에 이어 RED `3328f7ba...` → production `04376e27...`가 Linux sandbox에서 leading-backslash Git filename을 Windows absolute path로 오인하던 cross-boundary identity defect를 제거했다. POSIX absolute/traversal/NUL/bound checks와 no-symlink copy boundary는 그대로다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | | Stacked reviewer consumers | #533 exact `52b9195bb9f5006ffcd2dca7dedbf05c51169239`; #548 exact `dd7353342b4776b007b74f8b223e172dcb3d4f4f` | 둘 다 exact #546을 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 68 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 83 ahead / 0 behind이며 richer README/github adapter를 보존한다. 두 merge-base는 exact #546이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | regenerated lockfile/policy와 workflow-surface success가 있으나 reviewer는 protected #546 이전 계약에서 생성됐다. Semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / #542 exact `7e5ff9cd698a04143c308f597a6c0c01db9f5fd1` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Fresh predecessor hosted RED는 4,035 tests 통과 후 100% coverage gate에서 실패했고, current head는 missing failure/authority branches를 executable tests로 보강했지만 exact-head workflows는 아직 non-terminal이다. | +| Durable workflow authority | issue #541 / #542 exact `10708af37b69897a44aefa5e8e4027e0340e3e90` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Hosted predecessor는 4,035 tests 통과 후 100% coverage gate에서 실패했고 failure/authority coverage를 보강했다. Fresh RED `19c6fa2e...` → production `10708af3...`는 structurally compatible caller의 extra enumerable field가 private Durable Object command transport로 평가·직렬화되던 payload-minimization 결함을 operation-specific allowlist로 닫았다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이다. | | Context Fabric boundary | #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Central workflow trust | `.github/main@7f4c5e3e0efb7bfe29f33b60d4264858effd2996`; #527 exact `84cff17ba0fd6665645b29984e4542de7ddddb1d` | OIDC `job_workflow_sha`는 complete protected central source commit과 exact equality를 요구한다. Fresh `wrangler.toml`은 동일 SHA를 pin한다. Central scheduler/security/provider ownership은 `.github`에 남는다. | -| Central runner/control plane | `.github#712` | Current #546/#533/#548 exact heads have newly materialized queued/pending workflow surfaces; no predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | +| Central workflow trust | `.github/main@f2f91b806122ed233e3a0e2a325246077c2e15e4`; #527 exact `f7b8bde5b79806d87cf036d77a2046cac3884706` | Central #1939는 review-sidecar free-route catalog를 동일 cost/ZDR tier 안에서 account round-robin으로 채우는 owner-side change다. Noema trust-bearing `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml` blobs는 직전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증하므로 RED `b26ffa7b...` → production `f7b8bde5...`로 canonical `ALLOWED_WORKFLOW_SHA`를 exact source에 재결합했다. Provider/catalog policy는 central owner에 남는다. | +| Central runner/control plane | `.github#712` | Current #546 및 #542/#527 exact heads에 queued/pending workflow surfaces가 새로 materialize됐다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | | Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Earlier CI/Security/image/reviewer surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft로 되돌려 Ready false-green을 제거했다. | @@ -47,12 +47,18 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. +## Durable workflow transport boundary + +#542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만, 그 사실이 arbitrary caller object 전체를 transport할 권위를 주지는 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않으므로 typed command 변수에도 unrelated enumerable field가 남을 수 있다. + +RED `19c6fa2e...`는 valid `read` command에 foreign-domain payload와 access 시 throw하는 ambient getter를 붙여 transport가 command-authority field 외 데이터를 건드리지 않아야 한다는 실행 계약을 추가했다. Production `10708af3...`는 object spread를 제거하고 operation-indexed allowlist만 serialize한다. `operation`, re-admitted `plan`, 해당 command family의 claim/checkpoint/cancellation/outcome field만 경계를 건너며 repository/DO 내부의 재검증은 그대로다. 이 repair는 Noema의 payload minimization과 bounded-context isolation을 강화할 뿐 authentication, provider routing, security/quarantine verdict 또는 outbound authority를 새로 소유하지 않는다. + ## Prioritized commercial gaps | Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | | --- | --- | --- | --- | --- | | P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale 또는 prompt-injected evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | -| P0 | Atomic durable workflow authority | Duplicate claim/effect와 ambiguous recovery가 long-running workflow/audit trail을 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation tests + exact-head gates + protected merge | +| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + payload-minimization regressions + exact-head gates + protected merge | | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Source gate가 맞아도 repository governance가 우회되면 evidence chain이 깨진다. | issue #27 | fresh ruleset/protection + behavioral proof | From 77f621ef289b7b367ca0863da48bdeaf399657e9 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 04:09:09 +0900 Subject: [PATCH 30/85] docs: record hosted reviewer RED and exact repair stack --- docs/product-technical-gap-baseline.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index f90b997ab..28bd8fed9 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -11,13 +11,13 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Authority | Exact observation | Consequence | | --- | --- | --- | | Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | -| Reviewer semantic evidence | #546 exact `04376e279c61a7491cb311589b28dc643bf65837` | Retained JSON-safe recovery `b6c37025...`에 이어 RED `3328f7ba...` → production `04376e27...`가 Linux sandbox에서 leading-backslash Git filename을 Windows absolute path로 오인하던 cross-boundary identity defect를 제거했다. POSIX absolute/traversal/NUL/bound checks와 no-symlink copy boundary는 그대로다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | #533 exact `52b9195bb9f5006ffcd2dca7dedbf05c51169239`; #548 exact `dd7353342b4776b007b74f8b223e172dcb3d4f4f` | 둘 다 exact #546을 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 68 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 83 ahead / 0 behind이며 richer README/github adapter를 보존한다. 두 merge-base는 exact #546이다. | +| Reviewer semantic evidence | #546 exact `95144d5bcf8f1cb4b9a7c552ede66737c23d6bca` | Predecessor `04376e27...`의 hosted `reviewer-ci 33979574209` / job `101342258628`이 exact checkout 후 549 tests를 실제 실행해 548 pass / 1 fail과 99.29% coverage를 RED로 확정했다. 실패는 richer deterministic finding identity와 충돌하는 stale same-path/same-severity fixture였고, uncovered edge에는 fail-closed path/JSON/sandbox admission과 논리적으로 unreachable legacy branch가 포함됐다. `b84f0e5a...`는 exact-duplicate fixture로 계약을 맞추고, `6e5df50c...`는 admission edge coverage를 추가하며, `95144d5b...`는 unreachable empty-candidate branch를 제거한다. 새 exact-head CI/reviewer/Security/image는 non-terminal이다. | +| Stacked reviewer consumers | #533 exact `91c59bb6144d7260645c6c49076711ccd58c9d3b`; #548 exact `bb8fe78aa5f3620df3d8f2f33d40007b14b6c968` | 둘 다 exact #546 `95144d5b...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 69 ahead / 0 behind다. #548은 richer Finding schema 때문에 stale dedup fixture를 own schema의 exact serialized dependency finding으로 semantic repair한 뒤 restack했고, 16-file failed-check/actionability delta, 85 ahead / 0 behind다. 두 merge-base는 exact #546이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | regenerated lockfile/policy와 workflow-surface success가 있으나 reviewer는 protected #546 이전 계약에서 생성됐다. Semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / #542 exact `10708af37b69897a44aefa5e8e4027e0340e3e90` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Hosted predecessor는 4,035 tests 통과 후 100% coverage gate에서 실패했고 failure/authority coverage를 보강했다. Fresh RED `19c6fa2e...` → production `10708af3...`는 structurally compatible caller의 extra enumerable field가 private Durable Object command transport로 평가·직렬화되던 payload-minimization 결함을 operation-specific allowlist로 닫았다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이다. | | Context Fabric boundary | #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | | Central workflow trust | `.github/main@f2f91b806122ed233e3a0e2a325246077c2e15e4`; #527 exact `f7b8bde5b79806d87cf036d77a2046cac3884706` | Central #1939는 review-sidecar free-route catalog를 동일 cost/ZDR tier 안에서 account round-robin으로 채우는 owner-side change다. Noema trust-bearing `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml` blobs는 직전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증하므로 RED `b26ffa7b...` → production `f7b8bde5...`로 canonical `ALLOWED_WORKFLOW_SHA`를 exact source에 재결합했다. Provider/catalog policy는 central owner에 남는다. | -| Central runner/control plane | `.github#712` | Current #546 및 #542/#527 exact heads에 queued/pending workflow surfaces가 새로 materialize됐다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | +| Central runner/control plane | `.github#712` | #546 predecessor `04376e27...`는 GitHub-hosted runner를 실제 배정받아 reviewer unit suite까지 실행했으므로 runner capacity 자체가 상시 부재한 것은 아니다. 그러나 successor #546 `95144d5b...`, #533 `91c59bb6...`, #548 `bb8fe78a...`, #542 `10708af3...`의 current workflows는 다시 queued/pending이다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | | Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Earlier CI/Security/image/reviewer surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft로 되돌려 Ready false-green을 제거했다. | @@ -42,8 +42,9 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual - JSON-scope recovery restoration: RED `1dbe0780...` → `a785cd4e...`, malformed/noncanonical/partial/redirected scope는 fail closed한다. - recovery prompt injection closure: RED `244a0294...` → `b6c37025...`, second explore의 path와 symbol map도 canonical JSON untrusted data로 유지한다. - Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, production sandbox가 leading backslash를 Windows separator로 오인하지 않고 Linux filename byte로 보존한다. POSIX slash traversal과 absolute-path rejection은 유지한다. +- hosted reviewer test/coverage convergence: `04376e27...`의 real runner RED는 stale `(severity,path)` dedup fixture와 coverage holes를 증명했다. `b84f0e5a...`는 exact deterministic identity 중복만 collapse하도록 fixture를 고치며 distinct evidence preservation을 유지한다. `6e5df50c...`는 invalid relative path, malformed/noncanonical/over-budget JSON scope, missing current-head file, directory/file mount mismatch를 executable edge contract로 만들고, `95144d5b...`는 `end > cursor` 이후 불가능한 empty slice branch를 제거한다. Coverage exclusion이나 threshold 완화는 없다. -#533과 #548은 이 exact prerequisite를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion을 자체 소유하므로 prerequisite 파일을 wholesale overwrite하지 않고 semantic composition을 유지한다. +#533과 #548은 exact #546 `95144d5b...`를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion과 richer Finding schema를 자체 소유하므로 #546 `test_gating.py`를 wholesale overwrite하지 않고 exact semantic composition을 유지한다. Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. From 5c8c08ad4919fa44de222201ab08165fb95ebc24 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 04:16:43 +0900 Subject: [PATCH 31/85] docs: record commercial-loop hosted RED repair --- docs/product-technical-gap-baseline.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 28bd8fed9..407240b79 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -13,11 +13,12 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | | Reviewer semantic evidence | #546 exact `95144d5bcf8f1cb4b9a7c552ede66737c23d6bca` | Predecessor `04376e27...`의 hosted `reviewer-ci 33979574209` / job `101342258628`이 exact checkout 후 549 tests를 실제 실행해 548 pass / 1 fail과 99.29% coverage를 RED로 확정했다. 실패는 richer deterministic finding identity와 충돌하는 stale same-path/same-severity fixture였고, uncovered edge에는 fail-closed path/JSON/sandbox admission과 논리적으로 unreachable legacy branch가 포함됐다. `b84f0e5a...`는 exact-duplicate fixture로 계약을 맞추고, `6e5df50c...`는 admission edge coverage를 추가하며, `95144d5b...`는 unreachable empty-candidate branch를 제거한다. 새 exact-head CI/reviewer/Security/image는 non-terminal이다. | | Stacked reviewer consumers | #533 exact `91c59bb6144d7260645c6c49076711ccd58c9d3b`; #548 exact `bb8fe78aa5f3620df3d8f2f33d40007b14b6c968` | 둘 다 exact #546 `95144d5b...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 69 ahead / 0 behind다. #548은 richer Finding schema 때문에 stale dedup fixture를 own schema의 exact serialized dependency finding으로 semantic repair한 뒤 restack했고, 16-file failed-check/actionability delta, 85 ahead / 0 behind다. 두 merge-base는 exact #546이다. | +| Commercial-loop concurrency | #550 exact `a545af02a94875ff7d43e2f598adb8a3360d7fb1` | Predecessor `b91b1c40...`의 hosted CI `33952511170` / job `101269813310`은 exact checkout·live-base·lockfile·install·typecheck를 통과하고 release tests까지 실행했다. 552 suites / 3,920 tests는 pass했지만 `test/hourly-commercial-readiness-script.test.ts:215`의 synchronous Vitest callback 안 `await import("node:child_process")` 때문에 한 suite가 transform 단계에서 RED가 됐다. `a545af02...`는 해당 callback만 `async`로 바꾼 test-only syntax repair이며 production concurrency/path-isolation/credential/model-timeout contract는 변경하지 않는다. Exact-head four workflows는 non-terminal이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | regenerated lockfile/policy와 workflow-surface success가 있으나 reviewer는 protected #546 이전 계약에서 생성됐다. Semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / #542 exact `10708af37b69897a44aefa5e8e4027e0340e3e90` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Hosted predecessor는 4,035 tests 통과 후 100% coverage gate에서 실패했고 failure/authority coverage를 보강했다. Fresh RED `19c6fa2e...` → production `10708af3...`는 structurally compatible caller의 extra enumerable field가 private Durable Object command transport로 평가·직렬화되던 payload-minimization 결함을 operation-specific allowlist로 닫았다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이다. | | Context Fabric boundary | #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | | Central workflow trust | `.github/main@f2f91b806122ed233e3a0e2a325246077c2e15e4`; #527 exact `f7b8bde5b79806d87cf036d77a2046cac3884706` | Central #1939는 review-sidecar free-route catalog를 동일 cost/ZDR tier 안에서 account round-robin으로 채우는 owner-side change다. Noema trust-bearing `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml` blobs는 직전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증하므로 RED `b26ffa7b...` → production `f7b8bde5...`로 canonical `ALLOWED_WORKFLOW_SHA`를 exact source에 재결합했다. Provider/catalog policy는 central owner에 남는다. | -| Central runner/control plane | `.github#712` | #546 predecessor `04376e27...`는 GitHub-hosted runner를 실제 배정받아 reviewer unit suite까지 실행했으므로 runner capacity 자체가 상시 부재한 것은 아니다. 그러나 successor #546 `95144d5b...`, #533 `91c59bb6...`, #548 `bb8fe78a...`, #542 `10708af3...`의 current workflows는 다시 queued/pending이다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | +| Central runner/control plane | `.github#712` | #546 predecessor `04376e27...`와 #550 predecessor `b91b1c40...`는 모두 GitHub-hosted runner를 실제 배정받아 leaf tests까지 실행했으므로 runner capacity 자체가 상시 부재한 것은 아니다. 그러나 successor #546 `95144d5b...`, #533 `91c59bb6...`, #548 `bb8fe78a...`, #542 `10708af3...`, #550 `a545af02...`의 current workflows는 queued/pending이다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | | Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Earlier CI/Security/image/reviewer surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft로 되돌려 Ready false-green을 제거했다. | @@ -48,6 +49,12 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. +## Commercial-loop execution boundary + +#550은 Noema repository automation의 `hourly-commercial-readiness`와 `hourly-product-development` handoff를 소유하되 central runner capacity나 contextual-orchestrator provider/model policy를 소유하지 않는다. Work-conserving dispatch는 unrelated open PR 존재만으로 product-development를 정지시키지 않고, path overlap이나 operational error는 fail closed해야 한다. PR-scoped workflow concurrency는 superseded pull-request run만 취소하며 release/deployment는 independent run identity를 유지한다. + +`b91b1c40...`의 real hosted CI는 production workflow가 아니라 새 test fixture 자체의 parse regression을 발견했다. 3,920 tests가 실행 완료된 뒤 한 suite만 transform에 실패했고, 원인은 synchronous `it(..., () => { ... })` 안의 dynamic `await import`였다. `a545af02...`는 enclosing callback만 `async`로 변경해 dynamic-import spy를 실행 가능한 테스트로 되돌린다. Workflow logic, GitHub credential isolation, `cancel-in-progress` semantics, open-PR path isolation, CO provider routing, model timeout authority는 손대지 않는다. Exact-head GREEN이 나오기 전 predecessor suite success를 승계하지 않는다. + ## Durable workflow transport boundary #542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만, 그 사실이 arbitrary caller object 전체를 transport할 권위를 주지는 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않으므로 typed command 변수에도 unrelated enumerable field가 남을 수 있다. @@ -63,6 +70,7 @@ RED `19c6fa2e...`는 valid `read` command에 foreign-domain payload와 access | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Source gate가 맞아도 repository governance가 우회되면 evidence chain이 깨진다. | issue #27 | fresh ruleset/protection + behavioral proof | +| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | exact-head terminal CI/reviewer/Security/image + concurrency/path-isolation regressions + protected integration | | P1 | Immutable Context Graph producer contract | Mutable producer evidence는 reproducibility와 consumer isolation을 훼손한다. | #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance evidence | | P1 | Patch-validator publication | Reviewed source와 shipped image의 동일성이 증명되지 않는다. | issue #66 | immutable digest, signature/attestation, activation/rollback receipt | | P1 | Authentic production KPI | Synthetic/short-window metrics로 enterprise reliability를 주장할 수 없다. | issue #3 | >=30-day production-origin provenance-bound KPI | From 124bc773d069934eb2fe842092ea92661bd53148 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 04:31:01 +0900 Subject: [PATCH 32/85] docs(gap): record workflow command snapshot repair --- docs/product-technical-gap-baseline.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 407240b79..dcf5a07b7 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -15,10 +15,10 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Stacked reviewer consumers | #533 exact `91c59bb6144d7260645c6c49076711ccd58c9d3b`; #548 exact `bb8fe78aa5f3620df3d8f2f33d40007b14b6c968` | 둘 다 exact #546 `95144d5b...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 69 ahead / 0 behind다. #548은 richer Finding schema 때문에 stale dedup fixture를 own schema의 exact serialized dependency finding으로 semantic repair한 뒤 restack했고, 16-file failed-check/actionability delta, 85 ahead / 0 behind다. 두 merge-base는 exact #546이다. | | Commercial-loop concurrency | #550 exact `a545af02a94875ff7d43e2f598adb8a3360d7fb1` | Predecessor `b91b1c40...`의 hosted CI `33952511170` / job `101269813310`은 exact checkout·live-base·lockfile·install·typecheck를 통과하고 release tests까지 실행했다. 552 suites / 3,920 tests는 pass했지만 `test/hourly-commercial-readiness-script.test.ts:215`의 synchronous Vitest callback 안 `await import("node:child_process")` 때문에 한 suite가 transform 단계에서 RED가 됐다. `a545af02...`는 해당 callback만 `async`로 바꾼 test-only syntax repair이며 production concurrency/path-isolation/credential/model-timeout contract는 변경하지 않는다. Exact-head four workflows는 non-terminal이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | regenerated lockfile/policy와 workflow-surface success가 있으나 reviewer는 protected #546 이전 계약에서 생성됐다. Semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / #542 exact `10708af37b69897a44aefa5e8e4027e0340e3e90` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Hosted predecessor는 4,035 tests 통과 후 100% coverage gate에서 실패했고 failure/authority coverage를 보강했다. Fresh RED `19c6fa2e...` → production `10708af3...`는 structurally compatible caller의 extra enumerable field가 private Durable Object command transport로 평가·직렬화되던 payload-minimization 결함을 operation-specific allowlist로 닫았다. Exact-head CI/reviewer/Security/image는 아직 non-terminal이다. | +| Durable workflow authority | issue #541 / #542 exact `1f7f5b912030f64e5a0796b6f425794039ada380` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Hosted predecessor는 4,035 tests 통과 후 100% coverage gate에서 실패했고 failure/authority coverage를 보강했다. RED `19c6fa2e...` → production `10708af3...`는 structurally compatible caller의 extra enumerable field가 private Durable Object command transport로 평가·직렬화되던 결함을 operation-specific allowlist로 닫았다. 후속 RED `00e871e1...` → production `1f7f5b91...`는 accessor가 호출 사이에 operation을 바꿔 serialized discriminator와 payload-field family를 분리할 수 있던 경계를 operation 단일 snapshot으로 닫았다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | | Context Fabric boundary | #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | | Central workflow trust | `.github/main@f2f91b806122ed233e3a0e2a325246077c2e15e4`; #527 exact `f7b8bde5b79806d87cf036d77a2046cac3884706` | Central #1939는 review-sidecar free-route catalog를 동일 cost/ZDR tier 안에서 account round-robin으로 채우는 owner-side change다. Noema trust-bearing `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml` blobs는 직전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증하므로 RED `b26ffa7b...` → production `f7b8bde5...`로 canonical `ALLOWED_WORKFLOW_SHA`를 exact source에 재결합했다. Provider/catalog policy는 central owner에 남는다. | -| Central runner/control plane | `.github#712` | #546 predecessor `04376e27...`와 #550 predecessor `b91b1c40...`는 모두 GitHub-hosted runner를 실제 배정받아 leaf tests까지 실행했으므로 runner capacity 자체가 상시 부재한 것은 아니다. 그러나 successor #546 `95144d5b...`, #533 `91c59bb6...`, #548 `bb8fe78a...`, #542 `10708af3...`, #550 `a545af02...`의 current workflows는 queued/pending이다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | +| Central runner/control plane | `.github#712` | #546 predecessor `04376e27...`와 #550 predecessor `b91b1c40...`는 모두 GitHub-hosted runner를 실제 배정받아 leaf tests까지 실행했으므로 runner capacity 자체가 상시 부재한 것은 아니다. 그러나 successor #546 `95144d5b...`, #533 `91c59bb6...`, #548 `bb8fe78a...`, #542 `1f7f5b91...`, #550 `a545af02...`의 current workflows는 queued/pending이다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | | Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Earlier CI/Security/image/reviewer surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft로 되돌려 Ready false-green을 제거했다. | @@ -57,16 +57,18 @@ Terminal reviewer successes가 #546 protected integration 전에 생성된 open ## Durable workflow transport boundary -#542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만, 그 사실이 arbitrary caller object 전체를 transport할 권위를 주지는 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않으므로 typed command 변수에도 unrelated enumerable field가 남을 수 있다. +#542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만, 그 사실이 arbitrary caller object 전체를 transport할 권위를 주지는 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않으므로 typed command 변수에도 unrelated enumerable field나 accessor가 남을 수 있다. -RED `19c6fa2e...`는 valid `read` command에 foreign-domain payload와 access 시 throw하는 ambient getter를 붙여 transport가 command-authority field 외 데이터를 건드리지 않아야 한다는 실행 계약을 추가했다. Production `10708af3...`는 object spread를 제거하고 operation-indexed allowlist만 serialize한다. `operation`, re-admitted `plan`, 해당 command family의 claim/checkpoint/cancellation/outcome field만 경계를 건너며 repository/DO 내부의 재검증은 그대로다. 이 repair는 Noema의 payload minimization과 bounded-context isolation을 강화할 뿐 authentication, provider routing, security/quarantine verdict 또는 outbound authority를 새로 소유하지 않는다. +RED `19c6fa2e...`는 valid `read` command에 foreign-domain payload와 access 시 throw하는 ambient getter를 붙여 transport가 command-authority field 외 데이터를 건드리지 않아야 한다는 실행 계약을 추가했다. Production `10708af3...`는 object spread를 제거하고 operation-indexed allowlist만 serialize한다. `operation`, re-admitted `plan`, 해당 command family의 claim/checkpoint/cancellation/outcome field만 경계를 건너며 repository/DO 내부의 재검증은 그대로다. + +후속 감사에서는 allowlist가 `command.operation`을 serialized discriminator와 payload-field lookup에 각각 읽는 것을 확인했다. Runtime accessor가 첫 read에는 `read`, 다음 read에는 `complete`를 반환하면 wire operation은 `read`인데 `claim`/`outcome` getter가 평가될 수 있다. RED `00e871e1...`는 이 accessor-driven authority widening을 실행 계약으로 고정하고, production `1f7f5b91...`는 operation을 한 번 snapshot해 discriminator와 allowlist selection에 동일 값을 사용한다. 이 repair는 Noema의 payload minimization과 bounded-context isolation을 강화할 뿐 authentication, provider routing, security/quarantine verdict 또는 outbound authority를 새로 소유하지 않는다. ## Prioritized commercial gaps | Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | | --- | --- | --- | --- | --- | | P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale 또는 prompt-injected evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | -| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + payload-minimization regressions + exact-head gates + protected merge | +| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + payload-minimization/operation-stability regressions + exact-head gates + protected merge | | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Source gate가 맞아도 repository governance가 우회되면 evidence chain이 깨진다. | issue #27 | fresh ruleset/protection + behavioral proof | @@ -84,4 +86,4 @@ Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBO ## Completion discipline -Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. +Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. \ No newline at end of file From da8a16aa38f6698d43642f5a967aea94262dcd96 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 06:04:11 +0900 Subject: [PATCH 33/85] docs: reconcile current reviewer and workflow authority --- docs/product-technical-gap-baseline.md | 52 +++++++++++--------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index dcf5a07b7..ac85e19c0 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -11,18 +11,18 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Authority | Exact observation | Consequence | | --- | --- | --- | | Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | -| Reviewer semantic evidence | #546 exact `95144d5bcf8f1cb4b9a7c552ede66737c23d6bca` | Predecessor `04376e27...`의 hosted `reviewer-ci 33979574209` / job `101342258628`이 exact checkout 후 549 tests를 실제 실행해 548 pass / 1 fail과 99.29% coverage를 RED로 확정했다. 실패는 richer deterministic finding identity와 충돌하는 stale same-path/same-severity fixture였고, uncovered edge에는 fail-closed path/JSON/sandbox admission과 논리적으로 unreachable legacy branch가 포함됐다. `b84f0e5a...`는 exact-duplicate fixture로 계약을 맞추고, `6e5df50c...`는 admission edge coverage를 추가하며, `95144d5b...`는 unreachable empty-candidate branch를 제거한다. 새 exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Stacked reviewer consumers | #533 exact `91c59bb6144d7260645c6c49076711ccd58c9d3b`; #548 exact `bb8fe78aa5f3620df3d8f2f33d40007b14b6c968` | 둘 다 exact #546 `95144d5b...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 69 ahead / 0 behind다. #548은 richer Finding schema 때문에 stale dedup fixture를 own schema의 exact serialized dependency finding으로 semantic repair한 뒤 restack했고, 16-file failed-check/actionability delta, 85 ahead / 0 behind다. 두 merge-base는 exact #546이다. | -| Commercial-loop concurrency | #550 exact `a545af02a94875ff7d43e2f598adb8a3360d7fb1` | Predecessor `b91b1c40...`의 hosted CI `33952511170` / job `101269813310`은 exact checkout·live-base·lockfile·install·typecheck를 통과하고 release tests까지 실행했다. 552 suites / 3,920 tests는 pass했지만 `test/hourly-commercial-readiness-script.test.ts:215`의 synchronous Vitest callback 안 `await import("node:child_process")` 때문에 한 suite가 transform 단계에서 RED가 됐다. `a545af02...`는 해당 callback만 `async`로 바꾼 test-only syntax repair이며 production concurrency/path-isolation/credential/model-timeout contract는 변경하지 않는다. Exact-head four workflows는 non-terminal이다. | -| Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | regenerated lockfile/policy와 workflow-surface success가 있으나 reviewer는 protected #546 이전 계약에서 생성됐다. Semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / #542 exact `1f7f5b912030f64e5a0796b6f425794039ada380` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. Hosted predecessor는 4,035 tests 통과 후 100% coverage gate에서 실패했고 failure/authority coverage를 보강했다. RED `19c6fa2e...` → production `10708af3...`는 structurally compatible caller의 extra enumerable field가 private Durable Object command transport로 평가·직렬화되던 결함을 operation-specific allowlist로 닫았다. 후속 RED `00e871e1...` → production `1f7f5b91...`는 accessor가 호출 사이에 operation을 바꿔 serialized discriminator와 payload-field family를 분리할 수 있던 경계를 operation 단일 snapshot으로 닫았다. Exact-head CI/reviewer/Security/image는 non-terminal이다. | -| Context Fabric boundary | #544 | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Central workflow trust | `.github/main@f2f91b806122ed233e3a0e2a325246077c2e15e4`; #527 exact `f7b8bde5b79806d87cf036d77a2046cac3884706` | Central #1939는 review-sidecar free-route catalog를 동일 cost/ZDR tier 안에서 account round-robin으로 채우는 owner-side change다. Noema trust-bearing `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml` blobs는 직전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증하므로 RED `b26ffa7b...` → production `f7b8bde5...`로 canonical `ALLOWED_WORKFLOW_SHA`를 exact source에 재결합했다. Provider/catalog policy는 central owner에 남는다. | -| Central runner/control plane | `.github#712` | #546 predecessor `04376e27...`와 #550 predecessor `b91b1c40...`는 모두 GitHub-hosted runner를 실제 배정받아 leaf tests까지 실행했으므로 runner capacity 자체가 상시 부재한 것은 아니다. 그러나 successor #546 `95144d5b...`, #533 `91c59bb6...`, #548 `bb8fe78a...`, #542 `1f7f5b91...`, #550 `a545af02...`의 current workflows는 queued/pending이다. No predecessor result is transferred. Leaf `runs-on` 변경이나 no-op rerun은 대안이 아니다. | +| Reviewer semantic evidence | #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e` | Predecessor `95144d5b...`의 hosted `reviewer-ci 33986014642` / job `101359520394`은 exact checkout과 hash-pinned install 뒤 100% line+branch pytest gate까지 통과했다. 실패는 새 nested `semantic_runner`의 누락 docstring 하나 때문에 100% docstring gate에서 발생했다. `7d3de5a...`는 해당 behavioral docstring만 추가한 최소 수리다. 새 exact-head CI/reviewer/Security/image는 queued/non-passing이며 predecessor 성공은 전용하지 않는다. | +| Stacked reviewer consumers | #533 exact `a8191597bbe0f80183b4df8bbf536f40c8129dc8`; #548 exact `d3b42ac0f0a889ddfec25f2d0549df9db4e888dd` | 둘 다 exact #546 `7d3de5a...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 70 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 86 ahead / 0 behind다. 두 merge-base는 exact #546이다. | +| Commercial-loop concurrency | #550 exact `a545af02a94875ff7d43e2f598adb8a3360d7fb1` | Predecessor hosted CI는 3,920 tests 통과 뒤 synchronous Vitest callback 내부 `await import` parse failure를 RED로 확정했다. `a545af02...`는 callback만 `async`로 바꾼 test-only syntax repair다. Production concurrency/path-isolation/credential/model-timeout contract는 변경하지 않는다. | +| Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare→Libvips GPL-family 개발 경로를 pinned workerd+esbuild와 bounded Cloudflare adapter로 대체한 candidate다. Exact workflow surfaces는 success였지만 reviewer는 protected #546 이전 계약에서 생성됐으므로 semantic GREEN으로 승계하지 않는다. | +| Durable workflow authority | issue #541 / #542 exact `037ec4e21a838c7511c81434fedeabdfb8547cb5` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. RED `19c6fa2e...` → `10708af3...`는 top-level structural payload spread를 operation allowlist로 제거했고, RED `00e871e1...` → `1f7f5b91...`는 operation accessor TOCTOU를 single snapshot으로 닫았다. RED `e88a3796...`, `81abbab5...`, coverage guard `f915d136...` → production `037ec4e2...`는 nested `WorkflowTaskClaim` / `ExecutionCheckpoint`에서도 unrelated enumerable field/getter가 wire boundary를 넘지 않도록 canonical authority fields만 projection한다. Exact-head four workflows는 queued/non-passing이다. | +| Context Fabric boundary | #544 exact `d5ecf8331d78db1e5d1b5505e818a1f8aed01076` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | +| Central workflow trust | `.github/main@f2f91b806122ed233e3a0e2a325246077c2e15e4`; #527 exact `f7b8bde5b79806d87cf036d77a2046cac3884706` | Central #1939는 review-sidecar free-route catalog를 동일 cost/ZDR tier 안에서 account round-robin으로 채우는 owner-side change다. Noema trust-bearing central blobs는 직전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증하므로 Noema config는 exact central source를 pin한다. Provider/catalog policy는 central/contextual-orchestrator owner에 남는다. | +| Central runner/control plane | `.github#712` | Hosted runner가 실제로 #546 predecessor와 #550 predecessor를 실행한 증거가 있으므로 capacity 자체가 상시 부재한 것은 아니다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | -| Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Earlier CI/Security/image/reviewer surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft로 되돌려 Ready false-green을 제거했다. | -| Release/publication | repository release collection is empty on the fresh 2026-09-06 read | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. | +| Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Existing workflow surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft를 유지한다. | +| Release/publication | repository release collection은 fresh 2026-09-06 read에서 비어 있다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. | ## DDD and ownership baseline @@ -32,43 +32,35 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual ## Reviewer-evidence convergence -#546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이다. 현재까지 유지해야 할 causal lineage는 다음과 같다. +#546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이다. 유지해야 할 causal lineage는 다음과 같다. -- Unicode path-budget parity: RED `4b96b40b...` → `5eee2566...`. -- prompt-specific CodeGraph result identity: RED `cfacdba4...` → `4fcacd16...`. -- physical checkout/root provenance: RED `fc0585c0...` → `9f93d993...` 및 후속 symlink-boundary repairs. - complete manifest context: RED `377f2374...` → `406c2f99...`, 80-file canonical scope와 manifest context를 일치시킨다. - fail-before-execution admission: RED `f18b665d...` → `fed98d07...`, deterministic over-budget input은 CodeGraph subprocess capability를 소비하지 않는다. - initial prompt filename isolation: `d439058f...`, canonical JSON data로 이동한다. - JSON-scope recovery restoration: RED `1dbe0780...` → `a785cd4e...`, malformed/noncanonical/partial/redirected scope는 fail closed한다. - recovery prompt injection closure: RED `244a0294...` → `b6c37025...`, second explore의 path와 symbol map도 canonical JSON untrusted data로 유지한다. -- Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, production sandbox가 leading backslash를 Windows separator로 오인하지 않고 Linux filename byte로 보존한다. POSIX slash traversal과 absolute-path rejection은 유지한다. -- hosted reviewer test/coverage convergence: `04376e27...`의 real runner RED는 stale `(severity,path)` dedup fixture와 coverage holes를 증명했다. `b84f0e5a...`는 exact deterministic identity 중복만 collapse하도록 fixture를 고치며 distinct evidence preservation을 유지한다. `6e5df50c...`는 invalid relative path, malformed/noncanonical/over-budget JSON scope, missing current-head file, directory/file mount mismatch를 executable edge contract로 만들고, `95144d5b...`는 `end > cursor` 이후 불가능한 empty slice branch를 제거한다. Coverage exclusion이나 threshold 완화는 없다. +- Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, leading backslash를 Linux filename byte로 보존하면서 POSIX traversal/absolute-path rejection을 유지한다. +- hosted test/coverage convergence: `04376e27...`의 real runner RED는 stale deterministic finding dedup fixture와 99.29% coverage holes를 증명했다. `b84f0e5a...`, `6e5df50c...`, `95144d5b...`가 exact-identity fixture, fail-closed edge coverage, unreachable branch를 각각 수리했다. +- hosted docstring convergence: `95144d5b...`의 real runner는 line+branch pytest 100%를 통과한 뒤 nested `semantic_runner` docstring 누락으로 docstring gate에서 RED가 됐다. `7d3de5a...`는 runtime 변경 없이 그 계약만 보완한다. -#533과 #548은 exact #546 `95144d5b...`를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion과 richer Finding schema를 자체 소유하므로 #546 `test_gating.py`를 wholesale overwrite하지 않고 exact semantic composition을 유지한다. +#533과 #548은 exact #546 `7d3de5a...`를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion과 richer Finding schema를 자체 소유하므로 #546-owned files를 wholesale overwrite하지 않는다. Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. -## Commercial-loop execution boundary - -#550은 Noema repository automation의 `hourly-commercial-readiness`와 `hourly-product-development` handoff를 소유하되 central runner capacity나 contextual-orchestrator provider/model policy를 소유하지 않는다. Work-conserving dispatch는 unrelated open PR 존재만으로 product-development를 정지시키지 않고, path overlap이나 operational error는 fail closed해야 한다. PR-scoped workflow concurrency는 superseded pull-request run만 취소하며 release/deployment는 independent run identity를 유지한다. - -`b91b1c40...`의 real hosted CI는 production workflow가 아니라 새 test fixture 자체의 parse regression을 발견했다. 3,920 tests가 실행 완료된 뒤 한 suite만 transform에 실패했고, 원인은 synchronous `it(..., () => { ... })` 안의 dynamic `await import`였다. `a545af02...`는 enclosing callback만 `async`로 변경해 dynamic-import spy를 실행 가능한 테스트로 되돌린다. Workflow logic, GitHub credential isolation, `cancel-in-progress` semantics, open-PR path isolation, CO provider routing, model timeout authority는 손대지 않는다. Exact-head GREEN이 나오기 전 predecessor suite success를 승계하지 않는다. - ## Durable workflow transport boundary -#542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만, 그 사실이 arbitrary caller object 전체를 transport할 권위를 주지는 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않으므로 typed command 변수에도 unrelated enumerable field나 accessor가 남을 수 있다. +#542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만 arbitrary caller object 전체를 transport할 권위는 갖지 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않는다. -RED `19c6fa2e...`는 valid `read` command에 foreign-domain payload와 access 시 throw하는 ambient getter를 붙여 transport가 command-authority field 외 데이터를 건드리지 않아야 한다는 실행 계약을 추가했다. Production `10708af3...`는 object spread를 제거하고 operation-indexed allowlist만 serialize한다. `operation`, re-admitted `plan`, 해당 command family의 claim/checkpoint/cancellation/outcome field만 경계를 건너며 repository/DO 내부의 재검증은 그대로다. +RED `19c6fa2e...` → `10708af3...`는 top-level object spread를 operation-indexed allowlist로 바꿨다. RED `00e871e1...` → `1f7f5b91...`는 `command.operation`을 한 번 snapshot해 serialized discriminator와 payload-field selection이 갈라지지 않도록 했다. -후속 감사에서는 allowlist가 `command.operation`을 serialized discriminator와 payload-field lookup에 각각 읽는 것을 확인했다. Runtime accessor가 첫 read에는 `read`, 다음 read에는 `complete`를 반환하면 wire operation은 `read`인데 `claim`/`outcome` getter가 평가될 수 있다. RED `00e871e1...`는 이 accessor-driven authority widening을 실행 계약으로 고정하고, production `1f7f5b91...`는 operation을 한 번 snapshot해 discriminator와 allowlist selection에 동일 값을 사용한다. 이 repair는 Noema의 payload minimization과 bounded-context isolation을 강화할 뿐 authentication, provider routing, security/quarantine verdict 또는 outbound authority를 새로 소유하지 않는다. +그 뒤 nested structural object 자체가 wholesale serialization되는 경계를 확인했다. RED `e88a3796...`는 valid claim 안 extra field/getter를, `81abbab5...`는 checkpoint의 동일 문제를 고정한다. `f915d136...`는 malformed non-record nested authority를 거짓-valid object로 정규화하지 않고 Durable Object의 fail-closed validator에 남긴다. Production `037ec4e2...`는 claim을 `executionId/planId/taskId/claimId/attempt/effect`, checkpoint 계열을 `executionId/sequence/stateDigest`로 projection한다. Semantic validation과 durable state authority는 계속 `NoemaWorkflowState`가 소유한다. ## Prioritized commercial gaps | Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale 또는 prompt-injected evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | -| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + payload-minimization/operation-stability regressions + exact-head gates + protected merge | +| P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale, prompt-injected 또는 under-documented evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | +| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + top-level/nested payload-minimization regressions + exact-head gates + protected merge | | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Source gate가 맞아도 repository governance가 우회되면 evidence chain이 깨진다. | issue #27 | fresh ruleset/protection + behavioral proof | @@ -80,10 +72,10 @@ RED `19c6fa2e...`는 valid `read` command에 foreign-domain payload와 access ## Performance, test and release gate -Applicable buyer-facing web/API path는 async+k6/E2E로 현실 workload에서 p95 ≤20 ms를 증명해야 하며 초과 시 profile 후 hot path를 수리한다. sample 축소, 측정 제외, 비현실 cache warm-up으로 gate를 통과시키지 않는다. Owned production docstring/rustdoc, test, edge-case coverage는 각각 100%를 유지한다. Security/performance/math core에 새 hot path가 생기면 Rust-first 원칙과 CPU multithreading, 필요한 GPU parity를 검토한다. +Applicable buyer-facing web/API path는 async+k6/E2E로 현실 workload에서 p95 ≤20 ms를 증명해야 하며 초과 시 profile 후 hot path를 수리한다. Sample 축소, 측정 제외, 비현실 cache warm-up으로 gate를 통과시키지 않는다. Owned production docstring/rustdoc, test, edge-case coverage는 각각 100%를 유지한다. Security/performance/math core에 새 hot path가 생기면 Rust-first 원칙과 CPU multithreading, 필요한 GPU parity를 검토한다. Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBOM/provenance/reproducibility/rollback을 하나의 immutable evidence chain으로 만든다. 현재 active prerequisite가 Draft/non-terminal인 동안 release collection의 부재를 source change로 위장하지 않는다. ## Completion discipline -Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. \ No newline at end of file +Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. From 1c0fc0a75cacc31482a338b9564d858ec1afb37d Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 06:12:56 +0900 Subject: [PATCH 34/85] docs: reconcile current commercial-loop RED evidence --- docs/product-technical-gap-baseline.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index ac85e19c0..3f201508b 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -13,7 +13,7 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | | Reviewer semantic evidence | #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e` | Predecessor `95144d5b...`의 hosted `reviewer-ci 33986014642` / job `101359520394`은 exact checkout과 hash-pinned install 뒤 100% line+branch pytest gate까지 통과했다. 실패는 새 nested `semantic_runner`의 누락 docstring 하나 때문에 100% docstring gate에서 발생했다. `7d3de5a...`는 해당 behavioral docstring만 추가한 최소 수리다. 새 exact-head CI/reviewer/Security/image는 queued/non-passing이며 predecessor 성공은 전용하지 않는다. | | Stacked reviewer consumers | #533 exact `a8191597bbe0f80183b4df8bbf536f40c8129dc8`; #548 exact `d3b42ac0f0a889ddfec25f2d0549df9db4e888dd` | 둘 다 exact #546 `7d3de5a...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 70 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 86 ahead / 0 behind다. 두 merge-base는 exact #546이다. | -| Commercial-loop concurrency | #550 exact `a545af02a94875ff7d43e2f598adb8a3360d7fb1` | Predecessor hosted CI는 3,920 tests 통과 뒤 synchronous Vitest callback 내부 `await import` parse failure를 RED로 확정했다. `a545af02...`는 callback만 `async`로 바꾼 test-only syntax repair다. Production concurrency/path-isolation/credential/model-timeout contract는 변경하지 않는다. | +| Commercial-loop concurrency | #550 exact `d23a055abd08e8df2c6b0ab193beb1f731196f5b` | Predecessor `a545af02...`의 real hosted CI `33986513999` / job `101360961505`는 exact checkout, live-base/lockfile/install/typecheck 뒤 release tests에서 552 files와 3,924 tests를 통과했고, 남은 8 failures가 모두 stale commercial-readiness test authority에 국한됨을 확정했다. `d23a055...`는 production/workflow를 건드리지 않고 canonical decision owner, complete check-suite identity, stale-review parsing, ESM-safe child-process mock, owner-only delegated-token/report-0600 regression으로 test harness만 수리했다. Exact-head four workflows는 queued/pending이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare→Libvips GPL-family 개발 경로를 pinned workerd+esbuild와 bounded Cloudflare adapter로 대체한 candidate다. Exact workflow surfaces는 success였지만 reviewer는 protected #546 이전 계약에서 생성됐으므로 semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / #542 exact `037ec4e21a838c7511c81434fedeabdfb8547cb5` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. RED `19c6fa2e...` → `10708af3...`는 top-level structural payload spread를 operation allowlist로 제거했고, RED `00e871e1...` → `1f7f5b91...`는 operation accessor TOCTOU를 single snapshot으로 닫았다. RED `e88a3796...`, `81abbab5...`, coverage guard `f915d136...` → production `037ec4e2...`는 nested `WorkflowTaskClaim` / `ExecutionCheckpoint`에서도 unrelated enumerable field/getter가 wire boundary를 넘지 않도록 canonical authority fields만 projection한다. Exact-head four workflows는 queued/non-passing이다. | | Context Fabric boundary | #544 exact `d5ecf8331d78db1e5d1b5505e818a1f8aed01076` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | @@ -47,6 +47,12 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. +## Commercial-loop test authority + +#550은 open-PR lane이 대기 중이어도 서로 다른 path의 buyer gap을 계속 처리하는 work-conserving scheduler/publisher boundary를 소유한다. `a545af02...`의 hosted CI가 보여 준 8 failures는 production concurrency/path-isolation 자체가 아니라 refactor 후 남은 test authority drift였다. Check-run identity fixture는 current `check_suite.id` fail-closed contract를 생략했고, decision tests는 이미 `scripts/lib/commercial-readiness-loop.mjs`로 이동한 canonical evaluator 대신 retired snapshot field/action을 사용했으며, ESM module namespace를 `vi.spyOn`으로 재정의하려 했다. + +Test-only `d23a055...`는 canonical `evaluatePullRequest`/`REQUIRED_CHECK_NAMES`를 직접 사용하고, current repository/base/head/check/reviewer/thread semantics에 맞춘다. Stale approval은 `parseNoemaReviewDecision`으로 current-head authority가 되지 않음을 보존한다. `main()` regression은 hoisted child-process mock과 owner-only delegated token capability를 사용하고 generated report mode `0600`을 검증한다. Production workflow, path-isolation rule, credential boundary, model/provider routing, timeout semantics, coverage/gate는 변경하지 않는다. + ## Durable workflow transport boundary #542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만 arbitrary caller object 전체를 transport할 권위는 갖지 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않는다. From 45e64509d58c7085d9b4eb4a283b89e034c6bd36 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 07:04:51 +0900 Subject: [PATCH 35/85] docs: reconcile durable coverage and central trust authority --- docs/product-technical-gap-baseline.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3f201508b..9ac9a72a3 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -15,10 +15,10 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Stacked reviewer consumers | #533 exact `a8191597bbe0f80183b4df8bbf536f40c8129dc8`; #548 exact `d3b42ac0f0a889ddfec25f2d0549df9db4e888dd` | 둘 다 exact #546 `7d3de5a...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 70 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 86 ahead / 0 behind다. 두 merge-base는 exact #546이다. | | Commercial-loop concurrency | #550 exact `d23a055abd08e8df2c6b0ab193beb1f731196f5b` | Predecessor `a545af02...`의 real hosted CI `33986513999` / job `101360961505`는 exact checkout, live-base/lockfile/install/typecheck 뒤 release tests에서 552 files와 3,924 tests를 통과했고, 남은 8 failures가 모두 stale commercial-readiness test authority에 국한됨을 확정했다. `d23a055...`는 production/workflow를 건드리지 않고 canonical decision owner, complete check-suite identity, stale-review parsing, ESM-safe child-process mock, owner-only delegated-token/report-0600 regression으로 test harness만 수리했다. Exact-head four workflows는 queued/pending이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare→Libvips GPL-family 개발 경로를 pinned workerd+esbuild와 bounded Cloudflare adapter로 대체한 candidate다. Exact workflow surfaces는 success였지만 reviewer는 protected #546 이전 계약에서 생성됐으므로 semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / #542 exact `037ec4e21a838c7511c81434fedeabdfb8547cb5` | atomic claim, checkpoint CAS, effect-start/recovery persistence candidate가 Draft다. RED `19c6fa2e...` → `10708af3...`는 top-level structural payload spread를 operation allowlist로 제거했고, RED `00e871e1...` → `1f7f5b91...`는 operation accessor TOCTOU를 single snapshot으로 닫았다. RED `e88a3796...`, `81abbab5...`, coverage guard `f915d136...` → production `037ec4e2...`는 nested `WorkflowTaskClaim` / `ExecutionCheckpoint`에서도 unrelated enumerable field/getter가 wire boundary를 넘지 않도록 canonical authority fields만 projection한다. Exact-head four workflows는 queued/non-passing이다. | +| Durable workflow authority | issue #541 / #542 exact `74a9493741676753d91ee2f8a52d25beaff1c280` | Predecessor `037ec4e2...`의 hosted CI `33988947150` / job `101367573270`은 exact checkout/live-base/lockfile/install/typecheck 뒤 **569 files / 4,043 tests를 전부 통과**했지만 required coverage가 statements `99.87%`, branches `99.82%`, functions/lines `100%`에서 실패했다. 남은 구멍은 execution-plan authority는 존재하지만 workflow state record가 없는 각 public operation의 fail-closed branch와 private Durable Object의 storage-unavailable→503 mapping이었다. Test-only `74a9493...`가 state record만 제거한 real repository fixture와 DO storage-outage fixture로 해당 경계를 고정한다. Production, threshold, `v8 ignore`, runner/provider/security/outbound authority는 바꾸지 않았다. | | Context Fabric boundary | #544 exact `d5ecf8331d78db1e5d1b5505e818a1f8aed01076` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Central workflow trust | `.github/main@f2f91b806122ed233e3a0e2a325246077c2e15e4`; #527 exact `f7b8bde5b79806d87cf036d77a2046cac3884706` | Central #1939는 review-sidecar free-route catalog를 동일 cost/ZDR tier 안에서 account round-robin으로 채우는 owner-side change다. Noema trust-bearing central blobs는 직전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증하므로 Noema config는 exact central source를 pin한다. Provider/catalog policy는 central/contextual-orchestrator owner에 남는다. | -| Central runner/control plane | `.github#712` | Hosted runner가 실제로 #546 predecessor와 #550 predecessor를 실행한 증거가 있으므로 capacity 자체가 상시 부재한 것은 아니다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | +| Central workflow trust | `.github/main@d9eb9f79b6ce66c1225c26be385ae814d87d9aca`; #527 exact `d27262df5c037f68c2a8db8894cd48f35ef55e24` | Central #1943은 canonical review sidecar에서 orchestrator per-attempt stderr trace를 기록하는 owner-side change다. Noema trust-bearing central blobs `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml`은 이전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증한다. RED `44ffbdee...` → production `d27262df...`가 `ALLOWED_WORKFLOW_SHA`만 새 source로 이동한다. Provider/retry/logging policy는 central/contextual-orchestrator owner에 남는다. | +| Central runner/control plane | `.github#712` | Hosted runner가 #546, #550, #542 predecessor를 실제 실행한 증거가 있으므로 capacity 자체가 상시 부재한 것은 아니다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | | Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Existing workflow surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft를 유지한다. | @@ -61,12 +61,14 @@ RED `19c6fa2e...` → `10708af3...`는 top-level object spread를 operation-inde 그 뒤 nested structural object 자체가 wholesale serialization되는 경계를 확인했다. RED `e88a3796...`는 valid claim 안 extra field/getter를, `81abbab5...`는 checkpoint의 동일 문제를 고정한다. `f915d136...`는 malformed non-record nested authority를 거짓-valid object로 정규화하지 않고 Durable Object의 fail-closed validator에 남긴다. Production `037ec4e2...`는 claim을 `executionId/planId/taskId/claimId/attempt/effect`, checkpoint 계열을 `executionId/sequence/stateDigest`로 projection한다. Semantic validation과 durable state authority는 계속 `NoemaWorkflowState`가 소유한다. +Exact `037ec4e2...`의 hosted CI는 application tests 자체는 모두 통과했지만 execution-plan authority가 남고 state record만 사라진 fail-closed branches와 DO storage-unavailable classification이 coverage에서 빠졌음을 입증했다. `74a9493...`는 production을 건드리지 않고 그 two-condition state fixture를 만들고, `read`, both claim paths, effect start, cancellation, completion, recovery, blocked resolution, checkpoint CAS가 모두 `WorkflowStateConflictError`로 닫히는지 실행한다. 별도 storage-outage fixture는 private adapter가 `WorkflowStateStoreUnavailableError`를 503 `storage_unavailable`로 유지하는지 검증한다. 이 exact head의 fresh gates가 terminal GREEN이 되기 전에는 predecessor 4,043-test 성공도 merge authority로 전용하지 않는다. + ## Prioritized commercial gaps | Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | | --- | --- | --- | --- | --- | | P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale, prompt-injected 또는 under-documented evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | -| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + top-level/nested payload-minimization regressions + exact-head gates + protected merge | +| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + top-level/nested payload-minimization + missing-state/storage-outage fail-closed regressions + exact-head gates + protected merge | | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Source gate가 맞아도 repository governance가 우회되면 evidence chain이 깨진다. | issue #27 | fresh ruleset/protection + behavioral proof | From cd3c9beddc1478a5c767e989b6309a843e7153a6 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 07:11:53 +0900 Subject: [PATCH 36/85] docs: reconcile governance and central trust authority --- docs/product-technical-gap-baseline.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 9ac9a72a3..30672033c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -11,13 +11,14 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | Authority | Exact observation | Consequence | | --- | --- | --- | | Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | +| Protected governance | Default-branch API는 `protected: true`이나 classic summary는 `protection.enabled: false`다. Repository-effective organization ruleset `18794436`은 `~DEFAULT_BRANCH`에 active이고 central `.github/workflows/security-scan.yml@refs/heads/main`만 요구하며 `bypass_actors=[]`, `current_user_can_bypass=never`다. | Central Security workflow requirement는 실제 enforceable evidence지만 required PR, independent approval, stale-review dismissal, conversation resolution, force-push/non-fast-forward 및 deletion 방지는 현재 반환된 control surface로 증명되지 않았다. issue #27은 이 stronger governance gap을 fail closed로 유지한다. | | Reviewer semantic evidence | #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e` | Predecessor `95144d5b...`의 hosted `reviewer-ci 33986014642` / job `101359520394`은 exact checkout과 hash-pinned install 뒤 100% line+branch pytest gate까지 통과했다. 실패는 새 nested `semantic_runner`의 누락 docstring 하나 때문에 100% docstring gate에서 발생했다. `7d3de5a...`는 해당 behavioral docstring만 추가한 최소 수리다. 새 exact-head CI/reviewer/Security/image는 queued/non-passing이며 predecessor 성공은 전용하지 않는다. | | Stacked reviewer consumers | #533 exact `a8191597bbe0f80183b4df8bbf536f40c8129dc8`; #548 exact `d3b42ac0f0a889ddfec25f2d0549df9db4e888dd` | 둘 다 exact #546 `7d3de5a...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 70 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 86 ahead / 0 behind다. 두 merge-base는 exact #546이다. | | Commercial-loop concurrency | #550 exact `d23a055abd08e8df2c6b0ab193beb1f731196f5b` | Predecessor `a545af02...`의 real hosted CI `33986513999` / job `101360961505`는 exact checkout, live-base/lockfile/install/typecheck 뒤 release tests에서 552 files와 3,924 tests를 통과했고, 남은 8 failures가 모두 stale commercial-readiness test authority에 국한됨을 확정했다. `d23a055...`는 production/workflow를 건드리지 않고 canonical decision owner, complete check-suite identity, stale-review parsing, ESM-safe child-process mock, owner-only delegated-token/report-0600 regression으로 test harness만 수리했다. Exact-head four workflows는 queued/pending이다. | | Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare→Libvips GPL-family 개발 경로를 pinned workerd+esbuild와 bounded Cloudflare adapter로 대체한 candidate다. Exact workflow surfaces는 success였지만 reviewer는 protected #546 이전 계약에서 생성됐으므로 semantic GREEN으로 승계하지 않는다. | | Durable workflow authority | issue #541 / #542 exact `74a9493741676753d91ee2f8a52d25beaff1c280` | Predecessor `037ec4e2...`의 hosted CI `33988947150` / job `101367573270`은 exact checkout/live-base/lockfile/install/typecheck 뒤 **569 files / 4,043 tests를 전부 통과**했지만 required coverage가 statements `99.87%`, branches `99.82%`, functions/lines `100%`에서 실패했다. 남은 구멍은 execution-plan authority는 존재하지만 workflow state record가 없는 각 public operation의 fail-closed branch와 private Durable Object의 storage-unavailable→503 mapping이었다. Test-only `74a9493...`가 state record만 제거한 real repository fixture와 DO storage-outage fixture로 해당 경계를 고정한다. Production, threshold, `v8 ignore`, runner/provider/security/outbound authority는 바꾸지 않았다. | | Context Fabric boundary | #544 exact `d5ecf8331d78db1e5d1b5505e818a1f8aed01076` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Central workflow trust | `.github/main@d9eb9f79b6ce66c1225c26be385ae814d87d9aca`; #527 exact `d27262df5c037f68c2a8db8894cd48f35ef55e24` | Central #1943은 canonical review sidecar에서 orchestrator per-attempt stderr trace를 기록하는 owner-side change다. Noema trust-bearing central blobs `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml`은 이전 source와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증한다. RED `44ffbdee...` → production `d27262df...`가 `ALLOWED_WORKFLOW_SHA`만 새 source로 이동한다. Provider/retry/logging policy는 central/contextual-orchestrator owner에 남는다. | +| Central workflow trust | `.github/main@972b74be2b44d354ef5ad06f051cf7ee7d7225ce`; #527 exact `235ed71d75e6698585e1b9f4eac3d3a648dde8a1` | Central #1945는 review-sidecar sanitizer가 bounded orchestrator route/circuit event와 timestamp duration evidence를 보존하되 free-text `error_message`는 retention 전에 차단하도록 하는 owner-side observability repair다. Noema trust-bearing `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml` blobs는 predecessor와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증한다. RED `b159085b...` → production `235ed71d...`가 `ALLOWED_WORKFLOW_SHA`만 새 source로 이동한다. Provider/retry/logging/sanitizer policy는 central/contextual-orchestrator owner에 남는다. | | Central runner/control plane | `.github#712` | Hosted runner가 #546, #550, #542 predecessor를 실제 실행한 증거가 있으므로 capacity 자체가 상시 부재한 것은 아니다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | @@ -71,7 +72,7 @@ Exact `037ec4e2...`의 hosted CI는 application tests 자체는 모두 통과했 | P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + top-level/nested payload-minimization + missing-state/storage-outage fail-closed regressions + exact-head gates + protected merge | | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | -| P0 | Protected governance target | Source gate가 맞아도 repository governance가 우회되면 evidence chain이 깨진다. | issue #27 | fresh ruleset/protection + behavioral proof | +| P0 | Protected governance target | 현재 enforceable ruleset은 central Security workflow만 증명한다. Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | | P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | exact-head terminal CI/reviewer/Security/image + concurrency/path-isolation regressions + protected integration | | P1 | Immutable Context Graph producer contract | Mutable producer evidence는 reproducibility와 consumer isolation을 훼손한다. | #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance evidence | | P1 | Patch-validator publication | Reviewed source와 shipped image의 동일성이 증명되지 않는다. | issue #66 | immutable digest, signature/attestation, activation/rollback receipt | From 4507696499f5cb4e3355ac59c84b087034427182 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 08:09:39 +0900 Subject: [PATCH 37/85] docs: reconcile live reviewer and trust evidence --- docs/product-technical-gap-baseline.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 30672033c..b976e93c7 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -12,14 +12,14 @@ Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이 | --- | --- | --- | | Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | | Protected governance | Default-branch API는 `protected: true`이나 classic summary는 `protection.enabled: false`다. Repository-effective organization ruleset `18794436`은 `~DEFAULT_BRANCH`에 active이고 central `.github/workflows/security-scan.yml@refs/heads/main`만 요구하며 `bypass_actors=[]`, `current_user_can_bypass=never`다. | Central Security workflow requirement는 실제 enforceable evidence지만 required PR, independent approval, stale-review dismissal, conversation resolution, force-push/non-fast-forward 및 deletion 방지는 현재 반환된 control surface로 증명되지 않았다. issue #27은 이 stronger governance gap을 fail closed로 유지한다. | -| Reviewer semantic evidence | #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e` | Predecessor `95144d5b...`의 hosted `reviewer-ci 33986014642` / job `101359520394`은 exact checkout과 hash-pinned install 뒤 100% line+branch pytest gate까지 통과했다. 실패는 새 nested `semantic_runner`의 누락 docstring 하나 때문에 100% docstring gate에서 발생했다. `7d3de5a...`는 해당 behavioral docstring만 추가한 최소 수리다. 새 exact-head CI/reviewer/Security/image는 queued/non-passing이며 predecessor 성공은 전용하지 않는다. | -| Stacked reviewer consumers | #533 exact `a8191597bbe0f80183b4df8bbf536f40c8129dc8`; #548 exact `d3b42ac0f0a889ddfec25f2d0549df9db4e888dd` | 둘 다 exact #546 `7d3de5a...`를 ordinary two-parent/non-force ancestry로 승계한다. #533은 19-file runner/acquisition delta, 70 ahead / 0 behind다. #548은 16-file failed-check/actionability delta, 86 ahead / 0 behind다. 두 merge-base는 exact #546이다. | -| Commercial-loop concurrency | #550 exact `d23a055abd08e8df2c6b0ab193beb1f731196f5b` | Predecessor `a545af02...`의 real hosted CI `33986513999` / job `101360961505`는 exact checkout, live-base/lockfile/install/typecheck 뒤 release tests에서 552 files와 3,924 tests를 통과했고, 남은 8 failures가 모두 stale commercial-readiness test authority에 국한됨을 확정했다. `d23a055...`는 production/workflow를 건드리지 않고 canonical decision owner, complete check-suite identity, stale-review parsing, ESM-safe child-process mock, owner-only delegated-token/report-0600 regression으로 test harness만 수리했다. Exact-head four workflows는 queued/pending이다. | -| Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare→Libvips GPL-family 개발 경로를 pinned workerd+esbuild와 bounded Cloudflare adapter로 대체한 candidate다. Exact workflow surfaces는 success였지만 reviewer는 protected #546 이전 계약에서 생성됐으므로 semantic GREEN으로 승계하지 않는다. | -| Durable workflow authority | issue #541 / #542 exact `74a9493741676753d91ee2f8a52d25beaff1c280` | Predecessor `037ec4e2...`의 hosted CI `33988947150` / job `101367573270`은 exact checkout/live-base/lockfile/install/typecheck 뒤 **569 files / 4,043 tests를 전부 통과**했지만 required coverage가 statements `99.87%`, branches `99.82%`, functions/lines `100%`에서 실패했다. 남은 구멍은 execution-plan authority는 존재하지만 workflow state record가 없는 각 public operation의 fail-closed branch와 private Durable Object의 storage-unavailable→503 mapping이었다. Test-only `74a9493...`가 state record만 제거한 real repository fixture와 DO storage-outage fixture로 해당 경계를 고정한다. Production, threshold, `v8 ignore`, runner/provider/security/outbound authority는 바꾸지 않았다. | +| Reviewer semantic evidence | #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e` | Exact `reviewer-ci 33991772403` / job `101375158146`과 `ci 33991772454` / job `101375158075`가 terminal success다. Reviewer는 exact checkout, hash-pinned dependencies, 100% line+branch pytest, 100% docstring, lock-pinned CodeGraph tooling, Cosign/Trivy와 real no-network sandbox smoke를 통과했다. CI도 exact checkout/live-base/lockfile/install/typecheck/release test/security/KPI/license/acquisition gates를 통과했다. 기존 marker-line CodeRabbit finding은 이 unchanged-head GREEN 뒤 resolve했다. 다만 required Security Scan은 queued, patch-validator-image는 in-progress이므로 아직 protected semantic truth로 승격하지 않는다. | +| Stacked reviewer consumers | #533 exact `a8191597bbe0f80183b4df8bbf536f40c8129dc8`; #548 exact `4d8f3148ee52ef00e2f8f4d886be5d7f2091f2aa` | 둘 다 exact #546 `7d3de5a...`를 ordinary/non-force ancestry로 승계한다. #533은 exact reviewer+CI success이고 image가 in-progress다. #548 predecessor `d3b42ac...`의 hosted reviewer는 573 tests를 모두 통과했지만 100% coverage가 99.82%에서 RED가 됐다. Test-only `4d8f314...`가 `gating.py:65`, `github_io.py:475`, `github_io.py:734->736`의 fail-closed edge를 보완한다. Fresh compare는 #548이 #546 대비 87 ahead / 0 behind다. | +| Commercial-loop concurrency | #550 exact `d23a055abd08e8df2c6b0ab193beb1f731196f5b` | Predecessor `a545af02...`의 hosted CI가 stale commercial-readiness test authority 8건을 특정했고 test-only repair가 이를 current decision model로 맞췄다. Current exact reviewer와 CI는 terminal success이고 Security는 queued, image는 in-progress다. | +| Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare→Libvips GPL-family 개발 경로를 pinned workerd+esbuild와 bounded Cloudflare adapter로 대체한 candidate다. Existing workflow surfaces는 success였지만 protected #546 이전 semantic generation이므로 현재 merge authority로 전용하지 않는다. | +| Durable workflow authority | issue #541 / #542 exact `6793a320bf89c58303179bb78e68abc5f7ae4faa` | Predecessor `74a9493...`의 hosted CI `33994700530` / job `101383081692`은 exact checkout/live-base/lockfile/install/typecheck 뒤 **570 files / 4,045 tests를 전부 통과**했고 statements/functions/lines 100%를 달성했으나 branch가 `99.98%`에서 실패했다. 남은 한 arm은 storage-unavailable 분기 뒤 unexpected repository/runtime fault를 private 500 `internal_error`로 containment하는 fallback이었다. Test-only `6793a320...`가 그 fallback을 fault injection으로 고정하며 production, threshold, `v8 ignore`, runner/provider/security/outbound authority는 바꾸지 않는다. | | Context Fabric boundary | #544 exact `d5ecf8331d78db1e5d1b5505e818a1f8aed01076` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Central workflow trust | `.github/main@972b74be2b44d354ef5ad06f051cf7ee7d7225ce`; #527 exact `235ed71d75e6698585e1b9f4eac3d3a648dde8a1` | Central #1945는 review-sidecar sanitizer가 bounded orchestrator route/circuit event와 timestamp duration evidence를 보존하되 free-text `error_message`는 retention 전에 차단하도록 하는 owner-side observability repair다. Noema trust-bearing `noema-review.yml`, `noema_review_gate.py`, `security-scan.yml` blobs는 predecessor와 byte-identical이지만 OIDC `job_workflow_sha`는 complete protected central commit을 인증한다. RED `b159085b...` → production `235ed71d...`가 `ALLOWED_WORKFLOW_SHA`만 새 source로 이동한다. Provider/retry/logging/sanitizer policy는 central/contextual-orchestrator owner에 남는다. | -| Central runner/control plane | `.github#712` | Hosted runner가 #546, #550, #542 predecessor를 실제 실행한 증거가 있으므로 capacity 자체가 상시 부재한 것은 아니다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | +| Central workflow trust | `.github/main@fe827e133e7d867015d088777553e22736344c55`; #527 exact `e2399dac1db8515b5cf4622c4b1e1a7f475fb6d3` | Central #1944는 `noema-review.yml` 실패 시 이미 sanitized 된 CO sidecar stderr와 preflight report를 SHA-pinned upload-artifact로 5일 보존하는 owner-side observability repair다. 이번에는 trust-bearing workflow 자체가 변경됐으므로 exact diff를 재감사했다. RED `30638a19...`가 새 protected source를 요구하고 production `e2399dac...`가 `ALLOWED_WORKFLOW_SHA`만 이동했다. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy는 central/contextual-orchestrator owner에 남는다. | +| Central runner/control plane | `.github#712` | Hosted runner가 #546/#550/#542/#548 predecessor를 실제 실행했다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | | Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Existing workflow surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft를 유지한다. | @@ -42,9 +42,9 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual - recovery prompt injection closure: RED `244a0294...` → `b6c37025...`, second explore의 path와 symbol map도 canonical JSON untrusted data로 유지한다. - Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, leading backslash를 Linux filename byte로 보존하면서 POSIX traversal/absolute-path rejection을 유지한다. - hosted test/coverage convergence: `04376e27...`의 real runner RED는 stale deterministic finding dedup fixture와 99.29% coverage holes를 증명했다. `b84f0e5a...`, `6e5df50c...`, `95144d5b...`가 exact-identity fixture, fail-closed edge coverage, unreachable branch를 각각 수리했다. -- hosted docstring convergence: `95144d5b...`의 real runner는 line+branch pytest 100%를 통과한 뒤 nested `semantic_runner` docstring 누락으로 docstring gate에서 RED가 됐다. `7d3de5a...`는 runtime 변경 없이 그 계약만 보완한다. +- hosted docstring convergence: `95144d5b...`의 real runner는 line+branch pytest 100%를 통과한 뒤 nested `semantic_runner` docstring 누락으로 RED가 됐다. `7d3de5a...`는 runtime 변경 없이 그 계약만 보완했고, 현재 exact reviewer+CI가 모두 terminal GREEN이다. Security와 image는 아직 non-terminal이므로 Draft를 유지한다. -#533과 #548은 exact #546 `7d3de5a...`를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion과 richer Finding schema를 자체 소유하므로 #546-owned files를 wholesale overwrite하지 않는다. +#533과 #548은 exact #546 `7d3de5a...`를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion과 richer Finding schema를 자체 소유한다. Hosted predecessor `d3b42ac...`는 573 tests를 모두 통과했지만 100% coverage gate가 99.82%에서 실패했고, `4d8f314...`는 production을 건드리지 않고 unexpected diff-metadata anchor termination, non-HTTPS job URL rejection, no-suggestion rendering edge를 추가했다. Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. @@ -52,7 +52,7 @@ Terminal reviewer successes가 #546 protected integration 전에 생성된 open #550은 open-PR lane이 대기 중이어도 서로 다른 path의 buyer gap을 계속 처리하는 work-conserving scheduler/publisher boundary를 소유한다. `a545af02...`의 hosted CI가 보여 준 8 failures는 production concurrency/path-isolation 자체가 아니라 refactor 후 남은 test authority drift였다. Check-run identity fixture는 current `check_suite.id` fail-closed contract를 생략했고, decision tests는 이미 `scripts/lib/commercial-readiness-loop.mjs`로 이동한 canonical evaluator 대신 retired snapshot field/action을 사용했으며, ESM module namespace를 `vi.spyOn`으로 재정의하려 했다. -Test-only `d23a055...`는 canonical `evaluatePullRequest`/`REQUIRED_CHECK_NAMES`를 직접 사용하고, current repository/base/head/check/reviewer/thread semantics에 맞춘다. Stale approval은 `parseNoemaReviewDecision`으로 current-head authority가 되지 않음을 보존한다. `main()` regression은 hoisted child-process mock과 owner-only delegated token capability를 사용하고 generated report mode `0600`을 검증한다. Production workflow, path-isolation rule, credential boundary, model/provider routing, timeout semantics, coverage/gate는 변경하지 않는다. +Test-only `d23a055...`는 canonical `evaluatePullRequest`/`REQUIRED_CHECK_NAMES`를 직접 사용하고, current repository/base/head/check/reviewer/thread semantics에 맞춘다. Stale approval은 `parseNoemaReviewDecision`으로 current-head authority가 되지 않음을 보존한다. `main()` regression은 hoisted child-process mock과 owner-only delegated token capability를 사용하고 generated report mode `0600`을 검증한다. Current exact reviewer+CI는 success지만 Security/image가 non-terminal이므로 protected integration authority는 아직 없다. Production workflow, path-isolation rule, credential boundary, model/provider routing, timeout semantics, coverage/gate는 변경하지 않는다. ## Durable workflow transport boundary @@ -62,14 +62,14 @@ RED `19c6fa2e...` → `10708af3...`는 top-level object spread를 operation-inde 그 뒤 nested structural object 자체가 wholesale serialization되는 경계를 확인했다. RED `e88a3796...`는 valid claim 안 extra field/getter를, `81abbab5...`는 checkpoint의 동일 문제를 고정한다. `f915d136...`는 malformed non-record nested authority를 거짓-valid object로 정규화하지 않고 Durable Object의 fail-closed validator에 남긴다. Production `037ec4e2...`는 claim을 `executionId/planId/taskId/claimId/attempt/effect`, checkpoint 계열을 `executionId/sequence/stateDigest`로 projection한다. Semantic validation과 durable state authority는 계속 `NoemaWorkflowState`가 소유한다. -Exact `037ec4e2...`의 hosted CI는 application tests 자체는 모두 통과했지만 execution-plan authority가 남고 state record만 사라진 fail-closed branches와 DO storage-unavailable classification이 coverage에서 빠졌음을 입증했다. `74a9493...`는 production을 건드리지 않고 그 two-condition state fixture를 만들고, `read`, both claim paths, effect start, cancellation, completion, recovery, blocked resolution, checkpoint CAS가 모두 `WorkflowStateConflictError`로 닫히는지 실행한다. 별도 storage-outage fixture는 private adapter가 `WorkflowStateStoreUnavailableError`를 503 `storage_unavailable`로 유지하는지 검증한다. 이 exact head의 fresh gates가 terminal GREEN이 되기 전에는 predecessor 4,043-test 성공도 merge authority로 전용하지 않는다. +Hosted `037ec4e2...` RED는 retained-plan/missing-state와 storage-unavailable paths를 드러냈고 `74a9493...`가 이를 test-only로 수리했다. 그 exact head의 다음 hosted CI는 570 files / 4,045 tests와 statements/functions/lines 100%를 통과했지만 branch 99.98%에서 마지막 unexpected-fault arm을 특정했다. `6793a320...`은 `NoemaWorkflowState` repository seam에서 예상 밖 fault를 주입해 private 500 `internal_error` containment를 요구한다. 이는 storage outage의 503 계약과 구분되며 production/fallback/gate를 삭제하거나 ignore하지 않는다. ## Prioritized commercial gaps | Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | | --- | --- | --- | --- | --- | | P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale, prompt-injected 또는 under-documented evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | -| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + top-level/nested payload-minimization + missing-state/storage-outage fail-closed regressions + exact-head gates + protected merge | +| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + top-level/nested payload-minimization + missing-state/storage-outage/unexpected-fault fail-closed regressions + exact-head gates + protected merge | | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | 현재 enforceable ruleset은 central Security workflow만 증명한다. Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | From ebb9944d4319b2e7d3033a0641242634d6880f32 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 09:14:59 +0900 Subject: [PATCH 38/85] docs: promote merged semantic reviewer truth --- docs/product-technical-gap-baseline.md | 75 +++++++++++--------------- 1 file changed, 30 insertions(+), 45 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b976e93c7..4e01fa7f3 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,76 +4,61 @@ 이 문서는 protected 구현, active candidate, transient workflow observation, foreign-owner authority를 구분해 Noema의 제품·기술 Gap을 추적한다. 저장소 파일과 테스트는 해당 revision의 source contract만 증명한다. PR, check, release, central workflow source는 매 판단 시 live exact head에서 다시 읽으며 predecessor GREEN, 문서 존재, model judgement, synthetic fixture를 이후 단계의 권위로 전용하지 않는다. -Protected-source snapshot은 `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 GitHub installation-token stateless-format regression은 protected truth다. ADR 0012는 여전히 `Proposed`이며 protected 구현의 존재가 ADR lifecycle acceptance를 뜻하지 않는다. +Protected-source snapshot은 `main@85b17014b8d46eacc95e096ca114568c321d0263`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 merged GitHub installation-token stateless-format regression, 그리고 PR #546 semantic reviewer admission repair가 protected truth다. ADR 0012는 여전히 `Proposed`이며 protected 구현의 존재가 ADR lifecycle acceptance를 뜻하지 않는다. ## Live observation — 2026-09-06 KST | Authority | Exact observation | Consequence | | --- | --- | --- | -| Protected Noema | `main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd` | Agent Runtime lifecycle, task-plan admission, checkpoint admission은 protected foundation이다. Durable atomic execution authority는 별도 candidate다. | -| Protected governance | Default-branch API는 `protected: true`이나 classic summary는 `protection.enabled: false`다. Repository-effective organization ruleset `18794436`은 `~DEFAULT_BRANCH`에 active이고 central `.github/workflows/security-scan.yml@refs/heads/main`만 요구하며 `bypass_actors=[]`, `current_user_can_bypass=never`다. | Central Security workflow requirement는 실제 enforceable evidence지만 required PR, independent approval, stale-review dismissal, conversation resolution, force-push/non-fast-forward 및 deletion 방지는 현재 반환된 control surface로 증명되지 않았다. issue #27은 이 stronger governance gap을 fail closed로 유지한다. | -| Reviewer semantic evidence | #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e` | Exact `reviewer-ci 33991772403` / job `101375158146`과 `ci 33991772454` / job `101375158075`가 terminal success다. Reviewer는 exact checkout, hash-pinned dependencies, 100% line+branch pytest, 100% docstring, lock-pinned CodeGraph tooling, Cosign/Trivy와 real no-network sandbox smoke를 통과했다. CI도 exact checkout/live-base/lockfile/install/typecheck/release test/security/KPI/license/acquisition gates를 통과했다. 기존 marker-line CodeRabbit finding은 이 unchanged-head GREEN 뒤 resolve했다. 다만 required Security Scan은 queued, patch-validator-image는 in-progress이므로 아직 protected semantic truth로 승격하지 않는다. | -| Stacked reviewer consumers | #533 exact `a8191597bbe0f80183b4df8bbf536f40c8129dc8`; #548 exact `4d8f3148ee52ef00e2f8f4d886be5d7f2091f2aa` | 둘 다 exact #546 `7d3de5a...`를 ordinary/non-force ancestry로 승계한다. #533은 exact reviewer+CI success이고 image가 in-progress다. #548 predecessor `d3b42ac...`의 hosted reviewer는 573 tests를 모두 통과했지만 100% coverage가 99.82%에서 RED가 됐다. Test-only `4d8f314...`가 `gating.py:65`, `github_io.py:475`, `github_io.py:734->736`의 fail-closed edge를 보완한다. Fresh compare는 #548이 #546 대비 87 ahead / 0 behind다. | -| Commercial-loop concurrency | #550 exact `d23a055abd08e8df2c6b0ab193beb1f731196f5b` | Predecessor `a545af02...`의 hosted CI가 stale commercial-readiness test authority 8건을 특정했고 test-only repair가 이를 current decision model로 맞췄다. Current exact reviewer와 CI는 terminal success이고 Security는 queued, image는 in-progress다. | -| Third-party/tooling licensing | #540 exact `cfe98c8a5bddfd3275b97b7c2a0372f71aadd55f` | Wrangler/Miniflare→Libvips GPL-family 개발 경로를 pinned workerd+esbuild와 bounded Cloudflare adapter로 대체한 candidate다. Existing workflow surfaces는 success였지만 protected #546 이전 semantic generation이므로 현재 merge authority로 전용하지 않는다. | -| Durable workflow authority | issue #541 / #542 exact `6793a320bf89c58303179bb78e68abc5f7ae4faa` | Predecessor `74a9493...`의 hosted CI `33994700530` / job `101383081692`은 exact checkout/live-base/lockfile/install/typecheck 뒤 **570 files / 4,045 tests를 전부 통과**했고 statements/functions/lines 100%를 달성했으나 branch가 `99.98%`에서 실패했다. 남은 한 arm은 storage-unavailable 분기 뒤 unexpected repository/runtime fault를 private 500 `internal_error`로 containment하는 fallback이었다. Test-only `6793a320...`가 그 fallback을 fault injection으로 고정하며 production, threshold, `v8 ignore`, runner/provider/security/outbound authority는 바꾸지 않는다. | -| Context Fabric boundary | #544 exact `d5ecf8331d78db1e5d1b5505e818a1f8aed01076` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Central workflow trust | `.github/main@fe827e133e7d867015d088777553e22736344c55`; #527 exact `e2399dac1db8515b5cf4622c4b1e1a7f475fb6d3` | Central #1944는 `noema-review.yml` 실패 시 이미 sanitized 된 CO sidecar stderr와 preflight report를 SHA-pinned upload-artifact로 5일 보존하는 owner-side observability repair다. 이번에는 trust-bearing workflow 자체가 변경됐으므로 exact diff를 재감사했다. RED `30638a19...`가 새 protected source를 요구하고 production `e2399dac...`가 `ALLOWED_WORKFLOW_SHA`만 이동했다. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy는 central/contextual-orchestrator owner에 남는다. | -| Central runner/control plane | `.github#712` | Hosted runner가 #546/#550/#542/#548 predecessor를 실제 실행했다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | +| Protected Noema | `main@85b17014b8d46eacc95e096ca114568c321d0263` | Agent Runtime lifecycle, task-plan/checkpoint admission과 PR #546 semantic reviewer evidence boundary가 protected truth다. Durable atomic execution authority는 별도 candidate다. | +| Apache-2.0 source grant | protected main | #530의 source grant는 이미 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | +| Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged as `85b17014b8d46eacc95e096ca114568c321d0263` | Exact reviewer, application CI, required Security Scan, patch-validator image가 모두 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact-path identity와 reviewer coverage/docstring gaps의 causal repairs가 이제 default-branch reviewer source다. | +| Post-#546 descendants | #533 `83c9c9a7a8f4a442fc42d7635167b9a6535f424f`; #548 `2fa21a15ca282e44822dd488ee75e0fe000613cf`; #542 `d4e3f27d44c814dfa358bf087ae943a75ef6b8e7`; #527 `e48d7eb6ea037c2f5a3045829c60d4b14a436b83` | 모두 protected merge commit을 second parent로 둔 ordinary/non-force restack이다. Fresh exact-head CI/reviewer/Security/image가 재생성 중이며 predecessor result는 전용하지 않는다. | +| Additional post-#546 restacks | #547 `e6d6305c02af96f0374c87d33a2cc809b9a2a0e1`; #544 `35ab2d08bbbbcf8b2d530795b7a0107709712285`; #552 `bd5594b4684bc6b01f404de2545bdc236f78ef15`; #553 `b0f747aebac4d5a3588eec3cb4d8b57bc371a28a`; #543 `f6c6af519e4d4cbe7de87dbffada11ea0f144f68`; #539 `365a13e722c5ec28ab4c1aff3916c89e33745fea` | Non-overlapping branch delta를 보존하면서 protected reviewer truth를 ordinary ancestry로 승계했다. 새 exact-head gates가 authoritative evidence다. | +| Durable workflow authority | issue #541 / PR #542 exact `d4e3f27d44c814dfa358bf087ae943a75ef6b8e7` | Predecessor `74a9493...` hosted CI는 570 files / 4,045 tests를 통과했고 statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고, current head는 그 delta를 protected #546 위에 non-force restack했다. | +| Context Fabric boundary | #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | +| Central workflow trust | `.github/main@fe827e133e7d867015d088777553e22736344c55`; #527 exact `e48d7eb6ea037c2f5a3045829c60d4b14a436b83` | Central #1944는 `noema-review.yml` 실패 시 already-sanitized CO sidecar stderr와 preflight report를 SHA-pinned upload-artifact로 보존한다. Noema RED `30638a19...` → `e2399dac...`가 exact `job_workflow_sha` source pin을 이동했고, current #527은 이 repair를 protected #546 위에 restack했다. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy는 central/contextual-orchestrator owner에 남는다. | +| Central runner/control plane | `.github#712` | Hosted runner는 #546/#550/#542/#548 predecessor를 실제 실행했다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | -| Automation threat-model docs | #553 exact `107a973ff4e8ea081e4db843f2de05b530c74f3f` | Protected publisher의 expected-absence lease, exact-head cleanup, unique PR recovery를 미구현으로 적은 stale docs를 바로잡는 candidate다. | -| Cross-session docs | #552 exact `5e49c9af86cc63cd00e4f64fc6298a85c9594b7d` | Existing workflow surfaces는 success지만 reviewer가 protected #546 이전이다. Source churn 없이 Draft를 유지한다. | -| Release/publication | repository release collection은 fresh 2026-09-06 read에서 비어 있다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. | +| Release/publication | repository release collection은 fresh read 기준 비어 있다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. | ## DDD and ownership baseline -Noema의 canonical Core Domain은 Agent Runtime과 Workflow/Task Execution이다. State/Checkpoint, Tool Capability, Isolation Integration, Policy/Approval, Observability, Recovery는 그 lifecycle을 보조하는 bounded context다. Aggregate와 invariant는 최소 transaction boundary에서 유지하며 durable effect ownership을 외부 서비스의 domain truth와 섞지 않는다. +Noema의 canonical Core Domain은 Agent Runtime과 Workflow / Task Execution이다. State / Checkpoint, Tool / Capability Boundary, Isolation Integration, Policy / Approval, Observability, Recovery는 그 lifecycle을 보조하는 bounded context다. Aggregate와 invariant는 최소 transaction boundary에서 유지하며 durable effect ownership을 외부 서비스의 domain truth와 섞지 않는다. Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual-orchestrator`는 LLM provider/model discovery, routing, retry/failover와 credential authority를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave는 격리·보안·outbound authority를 소유한다. Keyverse는 identity backend owner다. Context Fabric 계열은 released/versioned contract만 소비한다. Noema는 이 owner들의 source를 복사하거나 cross-service SQL, mutable sibling PR head를 runtime truth로 사용하지 않는다. -## Reviewer-evidence convergence +## Protected reviewer convergence -#546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이다. 유지해야 할 causal lineage는 다음과 같다. +PR #546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이었고 이제 protected main에 통합됐다. 유지해야 할 causal lineage는 다음과 같다. -- complete manifest context: RED `377f2374...` → `406c2f99...`, 80-file canonical scope와 manifest context를 일치시킨다. +- complete manifest context: RED `377f2374...` → `406c2f99...`, canonical scope와 manifest context를 일치시킨다. - fail-before-execution admission: RED `f18b665d...` → `fed98d07...`, deterministic over-budget input은 CodeGraph subprocess capability를 소비하지 않는다. -- initial prompt filename isolation: `d439058f...`, canonical JSON data로 이동한다. -- JSON-scope recovery restoration: RED `1dbe0780...` → `a785cd4e...`, malformed/noncanonical/partial/redirected scope는 fail closed한다. -- recovery prompt injection closure: RED `244a0294...` → `b6c37025...`, second explore의 path와 symbol map도 canonical JSON untrusted data로 유지한다. -- Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, leading backslash를 Linux filename byte로 보존하면서 POSIX traversal/absolute-path rejection을 유지한다. -- hosted test/coverage convergence: `04376e27...`의 real runner RED는 stale deterministic finding dedup fixture와 99.29% coverage holes를 증명했다. `b84f0e5a...`, `6e5df50c...`, `95144d5b...`가 exact-identity fixture, fail-closed edge coverage, unreachable branch를 각각 수리했다. -- hosted docstring convergence: `95144d5b...`의 real runner는 line+branch pytest 100%를 통과한 뒤 nested `semantic_runner` docstring 누락으로 RED가 됐다. `7d3de5a...`는 runtime 변경 없이 그 계약만 보완했고, 현재 exact reviewer+CI가 모두 terminal GREEN이다. Security와 image는 아직 non-terminal이므로 Draft를 유지한다. +- initial/recovery prompt isolation: `d439058f...`, RED `1dbe0780...` → `a785cd4e...`, RED `244a0294...` → `b6c37025...`; changed paths와 symbol map을 canonical JSON untrusted data로 유지한다. +- Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, leading backslash를 Linux filename byte로 보존하면서 traversal/absolute-path rejection을 유지한다. +- hosted convergence: `04376e27...` 이후 real-runner failures가 stale finding identity, branch coverage, unreachable path와 nested semantic-runner docstring을 드러냈고 `b84f0e5a...`, `6e5df50c...`, `95144d5b...`, `7d3de5a...`가 이를 gate 약화 없이 수리했다. +- exact `7d3de5a...`가 reviewer, CI, Security, image GREEN과 zero valid unresolved findings를 얻은 뒤 normal merge로 `main@85b17014...`가 됐다. -#533과 #548은 exact #546 `7d3de5a...`를 non-force로 승계한다. #548은 failed-check causal binding, repository-bound Actions Job mapping, annotation fallback, structured actionability, inline suggestion과 richer Finding schema를 자체 소유한다. Hosted predecessor `d3b42ac...`는 573 tests를 모두 통과했지만 100% coverage gate가 99.82%에서 실패했고, `4d8f314...`는 production을 건드리지 않고 unexpected diff-metadata anchor termination, non-HTTPS job URL rejection, no-suggestion rendering edge를 추가했다. - -Terminal reviewer successes가 #546 protected integration 전에 생성된 open PR은 workflow-surface evidence일 뿐 merge-authoritative semantic GREEN이 아니다. Source churn으로 reviewer를 억지 재실행하거나 predecessor verdict를 전용하지 않는다. - -## Commercial-loop test authority - -#550은 open-PR lane이 대기 중이어도 서로 다른 path의 buyer gap을 계속 처리하는 work-conserving scheduler/publisher boundary를 소유한다. `a545af02...`의 hosted CI가 보여 준 8 failures는 production concurrency/path-isolation 자체가 아니라 refactor 후 남은 test authority drift였다. Check-run identity fixture는 current `check_suite.id` fail-closed contract를 생략했고, decision tests는 이미 `scripts/lib/commercial-readiness-loop.mjs`로 이동한 canonical evaluator 대신 retired snapshot field/action을 사용했으며, ESM module namespace를 `vi.spyOn`으로 재정의하려 했다. - -Test-only `d23a055...`는 canonical `evaluatePullRequest`/`REQUIRED_CHECK_NAMES`를 직접 사용하고, current repository/base/head/check/reviewer/thread semantics에 맞춘다. Stale approval은 `parseNoemaReviewDecision`으로 current-head authority가 되지 않음을 보존한다. `main()` regression은 hoisted child-process mock과 owner-only delegated token capability를 사용하고 generated report mode `0600`을 검증한다. Current exact reviewer+CI는 success지만 Security/image가 non-terminal이므로 protected integration authority는 아직 없다. Production workflow, path-isolation rule, credential boundary, model/provider routing, timeout semantics, coverage/gate는 변경하지 않는다. +이제 남은 reviewer 작업은 source repair가 아니라 downstream candidate의 post-#546 exact-head evidence regeneration이다. #533, #548, #542, #527, #547, #544, #552, #553, #543, #539는 protected reviewer truth를 ordinary ancestry로 승계했다. Current checks가 terminal이 되기 전에는 Draft 해제나 predecessor semantic verdict 전용을 하지 않는다. #535, #536, #540, #550, #526처럼 #546과 CHANGELOG/workflow/reviewer/docs surface가 겹치는 lane은 wholesale tree replacement 대신 semantic restack이 필요하다. ## Durable workflow transport boundary -#542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow/Task Execution과 State/Checkpoint authority를 Durable Object serialization point에 결합하지만 arbitrary caller object 전체를 transport할 권위는 갖지 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않는다. - -RED `19c6fa2e...` → `10708af3...`는 top-level object spread를 operation-indexed allowlist로 바꿨다. RED `00e871e1...` → `1f7f5b91...`는 `command.operation`을 한 번 snapshot해 serialized discriminator와 payload-field selection이 갈라지지 않도록 했다. +PR #542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow / Task Execution과 State / Checkpoint authority를 Durable Object serialization point에 결합하지만 arbitrary caller object 전체를 transport할 권위는 갖지 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않는다. -그 뒤 nested structural object 자체가 wholesale serialization되는 경계를 확인했다. RED `e88a3796...`는 valid claim 안 extra field/getter를, `81abbab5...`는 checkpoint의 동일 문제를 고정한다. `f915d136...`는 malformed non-record nested authority를 거짓-valid object로 정규화하지 않고 Durable Object의 fail-closed validator에 남긴다. Production `037ec4e2...`는 claim을 `executionId/planId/taskId/claimId/attempt/effect`, checkpoint 계열을 `executionId/sequence/stateDigest`로 projection한다. Semantic validation과 durable state authority는 계속 `NoemaWorkflowState`가 소유한다. +RED `19c6fa2e...` → `10708af3...`는 top-level object spread를 operation-indexed allowlist로 바꿨다. RED `00e871e1...` → `1f7f5b91...`는 `command.operation`을 한 번 snapshot해 serialized discriminator와 payload-field selection이 갈라지지 않도록 했다. RED `e88a3796...`와 `81abbab5...`는 valid nested claim/checkpoint 안 extra field/getter를 고정했고, production `037ec4e2...`는 claim을 `executionId/planId/taskId/claimId/attempt/effect`, checkpoint 계열을 `executionId/sequence/stateDigest`로 projection한다. `f915d136...`는 malformed non-record nested authority를 거짓-valid object로 정규화하지 않고 Durable Object validator에 남긴다. -Hosted `037ec4e2...` RED는 retained-plan/missing-state와 storage-unavailable paths를 드러냈고 `74a9493...`가 이를 test-only로 수리했다. 그 exact head의 다음 hosted CI는 570 files / 4,045 tests와 statements/functions/lines 100%를 통과했지만 branch 99.98%에서 마지막 unexpected-fault arm을 특정했다. `6793a320...`은 `NoemaWorkflowState` repository seam에서 예상 밖 fault를 주입해 private 500 `internal_error` containment를 요구한다. 이는 storage outage의 503 계약과 구분되며 production/fallback/gate를 삭제하거나 ignore하지 않는다. +Hosted `037ec4e2...` 이후 retained-plan/missing-state와 storage-unavailable paths를 test-only `74a9493...`가 수리했다. 그 exact head의 다음 hosted CI는 570 files / 4,045 tests와 statements/functions/lines 100%를 통과했지만 branch 99.98%에서 마지막 unexpected-fault arm을 특정했고 `6793a320...`이 repository seam fault injection으로 private `500 internal_error` containment를 고정했다. Current `d4e3f27...`은 이 full delta를 protected reviewer main에 non-force restack한 exact candidate다. -## Prioritized commercial gaps +## Commercial and buyer gaps | Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | | --- | --- | --- | --- | --- | -| P0 | Reviewer semantic/provenance false-green | Redirected, partial, stale, prompt-injected 또는 under-documented evidence가 commercial merge boundary를 통과할 수 있다. | #546 | unchanged exact-head terminal CI/reviewer/Security/image/SBOM/vulnerability/provenance + zero valid findings + protected merge; then affected heads fresh review | -| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation + top-level/nested payload-minimization + missing-state/storage-outage/unexpected-fault fail-closed regressions + exact-head gates + protected merge | -| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / #540 | regenerated lockfile/policy + protected integration + post-#546 semantic review | +| P0 | Post-#546 semantic evidence convergence | Protected reviewer false-green source는 수리됐지만 오래된 PR evidence를 그대로 전용하면 같은 governance gap이 남는다. | affected open PRs | protected-main ancestry + current exact-head terminal CI/reviewer/Security/image/package/SBOM/vulnerability/provenance + zero valid findings | +| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / PR #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation, payload minimization, missing-state/storage-outage/unexpected-fault fail-closed regressions + exact-head gates + protected merge | +| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / PR #540 | regenerated lockfile/policy + semantic restack onto protected reviewer truth + exact-head gates + protected integration | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | -| P0 | Protected governance target | 현재 enforceable ruleset은 central Security workflow만 증명한다. Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | -| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | exact-head terminal CI/reviewer/Security/image + concurrency/path-isolation regressions + protected integration | +| P0 | Protected governance target | Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | +| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | semantic restack + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | | P1 | Immutable Context Graph producer contract | Mutable producer evidence는 reproducibility와 consumer isolation을 훼손한다. | #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance evidence | | P1 | Patch-validator publication | Reviewed source와 shipped image의 동일성이 증명되지 않는다. | issue #66 | immutable digest, signature/attestation, activation/rollback receipt | | P1 | Authentic production KPI | Synthetic/short-window metrics로 enterprise reliability를 주장할 수 없다. | issue #3 | >=30-day production-origin provenance-bound KPI | @@ -83,7 +68,7 @@ Hosted `037ec4e2...` RED는 retained-plan/missing-state와 storage-unavailable p Applicable buyer-facing web/API path는 async+k6/E2E로 현실 workload에서 p95 ≤20 ms를 증명해야 하며 초과 시 profile 후 hot path를 수리한다. Sample 축소, 측정 제외, 비현실 cache warm-up으로 gate를 통과시키지 않는다. Owned production docstring/rustdoc, test, edge-case coverage는 각각 100%를 유지한다. Security/performance/math core에 새 hot path가 생기면 Rust-first 원칙과 CPU multithreading, 필요한 GPU parity를 검토한다. -Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBOM/provenance/reproducibility/rollback을 하나의 immutable evidence chain으로 만든다. 현재 active prerequisite가 Draft/non-terminal인 동안 release collection의 부재를 source change로 위장하지 않는다. +Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBOM/provenance/reproducibility/rollback을 하나의 immutable evidence chain으로 만든다. 현재 open candidate와 release evidence gap이 남아 있으므로 release collection의 부재를 source readiness로 위장하지 않는다. ## Completion discipline From f1ca1997c9d1476c71885633275b6a90538d345b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 09:15:30 +0900 Subject: [PATCH 39/85] test: bind baseline to merged reviewer main --- test/documentation-active-work-contract.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 5c22219b6..7c4beed77 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -67,7 +67,7 @@ describe("canonical active-work documentation", () => { it("keeps the product-technical baseline on current protected and active owner truth", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); - expect(baseline).toContain("`main@e1ac9d50f6c646f04be8c137c8acdc7200182fcd`"); + expect(baseline).toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); expect(baseline).toContain("#537 merged"); expect(baseline).not.toContain("`main@bbee33270b496255d785c766fc009a5f9162a695`"); expect(baseline).not.toContain("#537 must not inherit"); From e00156489723f023b9df9abc8fcbea9a8bc25099 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 10:14:44 +0900 Subject: [PATCH 40/85] docs: reconcile post-reviewer semantic restacks --- docs/product-technical-gap-baseline.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 4e01fa7f3..8bf2d46f0 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -14,11 +14,13 @@ Protected-source snapshot은 `main@85b17014b8d46eacc95e096ca114568c321d0263`이 | Apache-2.0 source grant | protected main | #530의 source grant는 이미 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | | Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged as `85b17014b8d46eacc95e096ca114568c321d0263` | Exact reviewer, application CI, required Security Scan, patch-validator image가 모두 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact-path identity와 reviewer coverage/docstring gaps의 causal repairs가 이제 default-branch reviewer source다. | | Post-#546 descendants | #533 `83c9c9a7a8f4a442fc42d7635167b9a6535f424f`; #548 `2fa21a15ca282e44822dd488ee75e0fe000613cf`; #542 `d4e3f27d44c814dfa358bf087ae943a75ef6b8e7`; #527 `e48d7eb6ea037c2f5a3045829c60d4b14a436b83` | 모두 protected merge commit을 second parent로 둔 ordinary/non-force restack이다. Fresh exact-head CI/reviewer/Security/image가 재생성 중이며 predecessor result는 전용하지 않는다. | -| Additional post-#546 restacks | #547 `e6d6305c02af96f0374c87d33a2cc809b9a2a0e1`; #544 `35ab2d08bbbbcf8b2d530795b7a0107709712285`; #552 `bd5594b4684bc6b01f404de2545bdc236f78ef15`; #553 `b0f747aebac4d5a3588eec3cb4d8b57bc371a28a`; #543 `f6c6af519e4d4cbe7de87dbffada11ea0f144f68`; #539 `365a13e722c5ec28ab4c1aff3916c89e33745fea` | Non-overlapping branch delta를 보존하면서 protected reviewer truth를 ordinary ancestry로 승계했다. 새 exact-head gates가 authoritative evidence다. | +| Additional post-#546 restacks | #544 `35ab2d08bbbbcf8b2d530795b7a0107709712285`; #552 `bd5594b4684bc6b01f404de2545bdc236f78ef15`; #553 `b0f747aebac4d5a3588eec3cb4d8b57bc371a28a`; #543 `f6c6af519e4d4cbe7de87dbffada11ea0f144f68`; #539 `365a13e722c5ec28ab4c1aff3916c89e33745fea`; #550 `2de27d230b1d17ea58a6dbe20c2ef5fbf0677cdb` | Non-overlapping 또는 branch-owned semantic delta를 보존하면서 protected reviewer truth를 ordinary ancestry로 승계했다. 새 exact-head gates가 authoritative evidence다. | +| Acquisition evidence restack | #526 `e32e7e7e74ebef30b65e496fb8771d388c3b4945`, protected main 대비 43 ahead / 0 behind | 31개 acquisition/commercial changed path를 유지하고 protected CodeGraph/reviewer foundation을 semantic three-way로 승계했다. `CHANGELOG.md`는 #526의 O_NONBLOCK·coverage·`source_documents` 세 delta와 protected reviewer delta를 모두 보존한다. Fresh CI/reviewer/Security/image는 새 exact head에서 재생성되며 predecessor GREEN은 전용하지 않는다. | +| Cloudflare toolchain restack | #540 `ffea69e9486554d7872ab599e8931a8f963997a4`, protected main 대비 33 ahead / 0 behind | 17개 toolchain path를 그대로 유지하고 protected reviewer foundation을 승계했다. Lockfile policy의 stale `baseSha=e1ac9d50...`는 exact PR base를 요구하는 canonical gate에 맞춰 `85b17014...`로 causal repair했다. #546은 package/lockfile bytes를 바꾸지 않았으므로 package/top-level digest evidence는 유지되며 새 exact-head gates만 merge authority다. | | Durable workflow authority | issue #541 / PR #542 exact `d4e3f27d44c814dfa358bf087ae943a75ef6b8e7` | Predecessor `74a9493...` hosted CI는 570 files / 4,045 tests를 통과했고 statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고, current head는 그 delta를 protected #546 위에 non-force restack했다. | | Context Fabric boundary | #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | | Central workflow trust | `.github/main@fe827e133e7d867015d088777553e22736344c55`; #527 exact `e48d7eb6ea037c2f5a3045829c60d4b14a436b83` | Central #1944는 `noema-review.yml` 실패 시 already-sanitized CO sidecar stderr와 preflight report를 SHA-pinned upload-artifact로 보존한다. Noema RED `30638a19...` → `e2399dac...`가 exact `job_workflow_sha` source pin을 이동했고, current #527은 이 repair를 protected #546 위에 restack했다. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy는 central/contextual-orchestrator owner에 남는다. | -| Central runner/control plane | `.github#712` | Hosted runner는 #546/#550/#542/#548 predecessor를 실제 실행했다. Current exact heads의 queued/pending evidence는 predecessor result로 대체하지 않는다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | +| Central runner/control plane | `.github#712` | Hosted runner는 #546/#550/#542/#548 predecessor를 실제 실행했다. #526 exact `e32e7e7...` CI job `101405319871`은 `steps=[]`, `runner_id=0`, `runner_group_id=0`인 checkout 전 queue specimen이며 #540 `ffea69e...`도 fresh gates가 queued다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Release/publication | repository release collection은 fresh read 기준 비어 있다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. | @@ -39,7 +41,7 @@ PR #546은 semantic CodeGraph admission과 current-head retrieval provenance의 - hosted convergence: `04376e27...` 이후 real-runner failures가 stale finding identity, branch coverage, unreachable path와 nested semantic-runner docstring을 드러냈고 `b84f0e5a...`, `6e5df50c...`, `95144d5b...`, `7d3de5a...`가 이를 gate 약화 없이 수리했다. - exact `7d3de5a...`가 reviewer, CI, Security, image GREEN과 zero valid unresolved findings를 얻은 뒤 normal merge로 `main@85b17014...`가 됐다. -이제 남은 reviewer 작업은 source repair가 아니라 downstream candidate의 post-#546 exact-head evidence regeneration이다. #533, #548, #542, #527, #547, #544, #552, #553, #543, #539는 protected reviewer truth를 ordinary ancestry로 승계했다. Current checks가 terminal이 되기 전에는 Draft 해제나 predecessor semantic verdict 전용을 하지 않는다. #535, #536, #540, #550, #526처럼 #546과 CHANGELOG/workflow/reviewer/docs surface가 겹치는 lane은 wholesale tree replacement 대신 semantic restack이 필요하다. +이제 남은 reviewer 작업은 source repair가 아니라 downstream candidate의 post-#546 exact-head evidence regeneration이다. #533, #548, #542, #527, #547, #544, #552, #553, #543, #539, #550, #526, #540은 protected reviewer truth를 ordinary ancestry로 승계했다. Current checks가 terminal이 되기 전에는 Draft 해제나 predecessor semantic verdict 전용을 하지 않는다. #535와 #536은 #546과 `central-review.yml`·reviewer package/workflow/test surface가 겹치므로 wholesale tree replacement 대신 아직 semantic three-way restack이 필요하다. ## Durable workflow transport boundary @@ -55,10 +57,11 @@ Hosted `037ec4e2...` 이후 retained-plan/missing-state와 storage-unavailable p | --- | --- | --- | --- | --- | | P0 | Post-#546 semantic evidence convergence | Protected reviewer false-green source는 수리됐지만 오래된 PR evidence를 그대로 전용하면 같은 governance gap이 남는다. | affected open PRs | protected-main ancestry + current exact-head terminal CI/reviewer/Security/image/package/SBOM/vulnerability/provenance + zero valid findings | | P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / PR #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation, payload minimization, missing-state/storage-outage/unexpected-fault fail-closed regressions + exact-head gates + protected merge | -| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / PR #540 | regenerated lockfile/policy + semantic restack onto protected reviewer truth + exact-head gates + protected integration | +| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / PR #540 | regenerated lockfile/policy + protected reviewer semantic restack `ffea69e...` + fresh exact-head gates + protected integration | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | -| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | semantic restack + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | +| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | protected reviewer ancestry + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | +| P1 | Commercial acquisition evidence authority | Retained artifact digest만으로 business/legal truth를 위조해선 안 되며, acquisition evidence는 byte integrity와 external authenticity를 분리해야 한다. | issue #5 / PR #526 | `{path, sha256}` retained-source authority + filesystem race hardening + protected reviewer semantic restack `e32e7e7...` + fresh exact-head gates + protected integration | | P1 | Immutable Context Graph producer contract | Mutable producer evidence는 reproducibility와 consumer isolation을 훼손한다. | #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance evidence | | P1 | Patch-validator publication | Reviewed source와 shipped image의 동일성이 증명되지 않는다. | issue #66 | immutable digest, signature/attestation, activation/rollback receipt | | P1 | Authentic production KPI | Synthetic/short-window metrics로 enterprise reliability를 주장할 수 없다. | issue #3 | >=30-day production-origin provenance-bound KPI | From bc2853c037d9cdc5395e825a6866065c0f118491 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 11:44:42 +0900 Subject: [PATCH 41/85] docs(adr): reconcile protected context admission authority --- ...-runtime-orchestration-bounded-contexts.md | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/docs/adr/0012-runtime-orchestration-bounded-contexts.md b/docs/adr/0012-runtime-orchestration-bounded-contexts.md index 670c25321..a16447186 100644 --- a/docs/adr/0012-runtime-orchestration-bounded-contexts.md +++ b/docs/adr/0012-runtime-orchestration-bounded-contexts.md @@ -4,11 +4,11 @@ Status: Proposed ## Context -Protected `main` is an evidence-producing credential and maintenance control plane with a narrow runtime-orchestration foundation. Noema is expanding toward broader runtime Agent/application orchestration, but that expansion must not collapse CWL domain ownership into one service or turn Noema into a model-provider router. +Protected `main` now contains the runtime-orchestration foundation delivered through PR #528 and the fail-closed Context Graph release-consumer boundary delivered through PR #544 while Noema continues to operate its credential and maintenance control plane. Expanding toward runtime Agent/application orchestration must not collapse CWL domain ownership into one service or turn Noema into a model-provider router. `ContextualWisdomLab/contextual-orchestrator` owns model discovery, routing, test-time compute, provider failover, and provider credentials. `ContextualWisdomLab/context-graph-contracts` owns provider-neutral shared contracts for canonical references, Context Assertions, CloudEvents/schema, provenance, time, conformance, and admission. `ContextualWisdomLab/enterprise-architecture-core` is the authoritative EA Decision Plane. Dedicated security/isolation products retain their own runtime and policy truth. -The protected runtime foundation introduced by PR #528 includes an Agent Runtime lifecycle, State / Checkpoint admission, bounded Workflow / Task plan admission, and runnable-task selection. These primitives require an explicit architectural decision so future workflow, tool, persistence, and integration work cannot infer broader authority from their existence. +Protected runtime primitives establish Agent Runtime lifecycle, State / Checkpoint admission, workflow-plan fitness, and a fail-closed Context Graph release-consumer boundary. They need an explicit architectural decision so future workflow, tool, persistence, and integration work cannot infer broader authority from their existence. ## Decision @@ -27,17 +27,20 @@ Noema never treats model-provider routing state, another CWL product's domain re Noema consumes `contextual-orchestrator` for model routing. It does not add direct provider SDKs, provider API keys, local provider fallback lists, or provider-routing policy. -Context Graph integration is fail closed: Noema may emit or consume shared architecture/context evidence only through an immutable released context-graph-contracts package/profile with its version, conformance/admission result, canonical references, provenance, and time semantics intact. Open Draft source in the sibling repository is not an integration contract. EA Core remains the authority that accepts or rejects architecture projection; Noema does not directly write EA application tables. +Context Graph integration is fail closed. Noema may emit or consume shared architecture/context evidence only through an immutable released `context-graph-contracts` package/profile with its version, conformance/admission result, canonical references, provenance, and time semantics intact. Release admission also requires a separately authenticated protected-source binding: exact package/SBOM/provenance digests, exact protected source commit, a release-source manifest digest, independently retained attestation-verification digest, `refs/heads/main`, the canonical `supply-chain.yml` signer workflow, and a capability declaring release-source-manifest attestation. Context Assertion admission must additionally be envelope-preserving and versioned: the admitted contract must retain the validated CloudEvent identity/provenance surface together with the assertion instead of reducing a structured message to assertion data alone. Noema therefore requires the versioned `context-assertion-envelope-preserving-admission-v1` release capability in addition to a generic admission receipt. A self-asserted commit, mutable Draft source, or internally consistent manifest without independent attestation verification is not production authority. EA Core remains the authority that accepts or rejects architecture projection; Noema does not directly write EA application tables. -## Protected implementation foundation +## Protected implementation boundary -Protected `main` currently includes the following bounded runtime behavior: +Protected `main` currently provides: - `src/agent-runtime/execution-lifecycle.ts` — pure Agent Runtime lifecycle transition authority; - `src/state-checkpoint/checkpoint-admission.ts` — pure State / Checkpoint admission and immutable checkpoint metadata snapshots; -- `src/workflow-task-execution/task-plan.ts` — immutable finite DAG admission, bounded concurrency policy, and runnable-task candidate selection without reservation or side-effect authority. +- `src/workflow-task-execution/` primitives that validate workflow-plan/runtime boundaries without granting foreign authority; +- `src/context-fabric/context-contract-release-admission.ts` — a consumer ACL that separates structural release evidence from independently pinned immutable release authority. -No checkpoint payload persistence, durable workflow scheduler, arbitrary tool executor, provider routing, Context Assertion publisher, EA writer, or security-runtime implementation is implied by these modules. Those remain separate future slices and must satisfy their own owner, contract, test, exact-head, and protected-integration gates. +PR #544's Context Graph release-source-attestation and envelope-preserving-admission strengthening is now protected source. Durable workflow persistence/routing work on a separate active lane remains candidate truth until its own protected integration; this ADR does not promote open PR source by reference. + +No arbitrary tool executor, direct provider routing, Context Assertion publication authority, EA writer, or security-runtime implementation is implied by these modules. Runtime persistence or deployment evidence is claimed only where protected source and exact operational evidence establish it. This ADR remains `Proposed` because the repository-wide runtime-orchestration decision is broader than the already protected foundation. Protected source must not be described as candidate merely because the ADR lifecycle has not yet advanced to `Accepted`. @@ -45,13 +48,17 @@ This ADR remains `Proposed` because the repository-wide runtime-orchestration de Runtime slices can evolve independently without sharing application tables or importing foreign implementation source. Model-routing and security responsibilities remain replaceable behind explicit ports. Idempotent lifecycle/checkpoint primitives provide a narrow base for restart/recovery without granting duplicate side-effect authority. -This separation also forces later work to make missing boundaries explicit. A workflow engine must define task identity, concurrency, cancellation, and side-effect semantics before execution. A tool adapter must define a capability policy before invocation. Context Graph/EA projection cannot ship until an immutable released shared contract and conformance evidence exist. +The Context Graph consumer boundary cannot treat package hashes plus a declared source SHA as sufficient provenance, nor can a generic `admission=passed` claim prove that event identity survives admission. The producer must publish an immutable source-bound manifest and independent attestation evidence, and its release evidence must prove the required versioned envelope-preserving Context Assertion admission semantic. The Noema trust anchor must pin those exact identities/capabilities before production admission. This lets `context-graph-contracts` remain the canonical Shared Kernel while Noema verifies the released interface instead of copying producer source or trusting mutable branches. + +This separation also forces later work to make missing boundaries explicit. A workflow engine must define task identity, concurrency, cancellation, and side-effect semantics before execution. A tool adapter must define a capability policy before invocation. Context Graph/EA projection cannot ship until an immutable released shared contract and conformance/source-provenance evidence exist. ## Rejected alternatives - **Direct provider integration in Noema:** rejected because it duplicates contextual-orchestrator authority and couples runtime behavior to provider credentials/failover policy. - **Shared database or cross-service SQL:** rejected because it bypasses published domain contracts and creates hidden ownership coupling. - **Copying Context Graph or EA schemas from open PR source:** rejected because Draft source is mutable and not released integration authority. +- **Trusting a declared Context Graph source commit or unattested manifest:** rejected because internally coherent metadata does not independently authenticate which protected source produced the published package. +- **Treating generic admission success as sufficient Context Assertion evidence:** rejected because admission that discards the CloudEvent envelope can lose event/source/time/schema identity required for replay, projection, and audit receipts. - **Persisting unrestricted task/result/reasoning/tool payloads as architecture truth:** rejected because runtime data is not equivalent to authoritative Context Graph or EA state. - **Implicit retry of failed side effects:** rejected because repeated execution can duplicate externally visible mutations without idempotency authority. @@ -59,6 +66,8 @@ This separation also forces later work to make missing boundaries explicit. A wo A runtime slice may move from candidate to protected truth only when its owning bounded context is named in the PRD/Context Map, public source contracts are documented, realistic tests cover relevant cancellation/restart/checkpoint/idempotency/tool-policy/concurrency/isolation behavior, exact owned production coverage remains complete, applicable exact-head CI/security/review evidence is terminal clean, and protected integration succeeds under live governance. +A Context Graph production dependency additionally requires an immutable release whose exact protected source, package/SBOM/provenance identities, release-source manifest, independent attestation verification, schema/profile, conformance/admission, compatibility/migration, licensing/NOTICE, and required capabilities all match Noema's separately authenticated trust anchor. For Context Assertion structured messages, those capabilities include envelope-preserving v1 admission so validated CloudEvent identity remains attached to the admitted assertion. Open PR heads, mutable branches, predecessor artifacts, or release metadata derived only from the candidate itself remain non-passing. + ADR 0012 itself may move from `Proposed` to `Accepted` only when the repository-wide decision is stably applied across the runtime-orchestration surface and its acceptance evidence is code-current. Integrating one or more slices does not require premature ADR acceptance, and keeping the ADR Proposed does not downgrade already protected source back to candidate status. -Any integration that requires unreleased Context Graph source, direct provider routing, ambient secret propagation, arbitrary tool authority, unbounded recursion, silent side-effect retry, or cross-service SQL is rejected at the architecture boundary. \ No newline at end of file +Any integration that requires unreleased Context Graph source, direct provider routing, ambient secret propagation, arbitrary tool authority, unbounded recursion, silent side-effect retry, or cross-service SQL is rejected at the architecture boundary. From 3e66643b4bf1aa24bc20367d136bd7f7b68d8b39 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 11:45:19 +0900 Subject: [PATCH 42/85] docs(gap): reconcile protected Context Fabric authority --- docs/product-technical-gap-baseline.md | 50 ++++++++++++-------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 8bf2d46f0..863485b5b 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,25 +4,23 @@ 이 문서는 protected 구현, active candidate, transient workflow observation, foreign-owner authority를 구분해 Noema의 제품·기술 Gap을 추적한다. 저장소 파일과 테스트는 해당 revision의 source contract만 증명한다. PR, check, release, central workflow source는 매 판단 시 live exact head에서 다시 읽으며 predecessor GREEN, 문서 존재, model judgement, synthetic fixture를 이후 단계의 권위로 전용하지 않는다. -Protected-source snapshot은 `main@85b17014b8d46eacc95e096ca114568c321d0263`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 merged GitHub installation-token stateless-format regression, 그리고 PR #546 semantic reviewer admission repair가 protected truth다. ADR 0012는 여전히 `Proposed`이며 protected 구현의 존재가 ADR lifecycle acceptance를 뜻하지 않는다. +Protected-source snapshot은 `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 GitHub installation-token stateless-format regression, #546 semantic reviewer admission repair와 #544 Context Graph release-consumer admission이 protected truth다. ADR 0012는 여전히 `Proposed`이며 protected 구현의 존재가 ADR lifecycle acceptance를 뜻하지 않는다. ## Live observation — 2026-09-06 KST | Authority | Exact observation | Consequence | | --- | --- | --- | -| Protected Noema | `main@85b17014b8d46eacc95e096ca114568c321d0263` | Agent Runtime lifecycle, task-plan/checkpoint admission과 PR #546 semantic reviewer evidence boundary가 protected truth다. Durable atomic execution authority는 별도 candidate다. | -| Apache-2.0 source grant | protected main | #530의 source grant는 이미 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | -| Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged as `85b17014b8d46eacc95e096ca114568c321d0263` | Exact reviewer, application CI, required Security Scan, patch-validator image가 모두 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact-path identity와 reviewer coverage/docstring gaps의 causal repairs가 이제 default-branch reviewer source다. | -| Post-#546 descendants | #533 `83c9c9a7a8f4a442fc42d7635167b9a6535f424f`; #548 `2fa21a15ca282e44822dd488ee75e0fe000613cf`; #542 `d4e3f27d44c814dfa358bf087ae943a75ef6b8e7`; #527 `e48d7eb6ea037c2f5a3045829c60d4b14a436b83` | 모두 protected merge commit을 second parent로 둔 ordinary/non-force restack이다. Fresh exact-head CI/reviewer/Security/image가 재생성 중이며 predecessor result는 전용하지 않는다. | -| Additional post-#546 restacks | #544 `35ab2d08bbbbcf8b2d530795b7a0107709712285`; #552 `bd5594b4684bc6b01f404de2545bdc236f78ef15`; #553 `b0f747aebac4d5a3588eec3cb4d8b57bc371a28a`; #543 `f6c6af519e4d4cbe7de87dbffada11ea0f144f68`; #539 `365a13e722c5ec28ab4c1aff3916c89e33745fea`; #550 `2de27d230b1d17ea58a6dbe20c2ef5fbf0677cdb` | Non-overlapping 또는 branch-owned semantic delta를 보존하면서 protected reviewer truth를 ordinary ancestry로 승계했다. 새 exact-head gates가 authoritative evidence다. | -| Acquisition evidence restack | #526 `e32e7e7e74ebef30b65e496fb8771d388c3b4945`, protected main 대비 43 ahead / 0 behind | 31개 acquisition/commercial changed path를 유지하고 protected CodeGraph/reviewer foundation을 semantic three-way로 승계했다. `CHANGELOG.md`는 #526의 O_NONBLOCK·coverage·`source_documents` 세 delta와 protected reviewer delta를 모두 보존한다. Fresh CI/reviewer/Security/image는 새 exact head에서 재생성되며 predecessor GREEN은 전용하지 않는다. | -| Cloudflare toolchain restack | #540 `ffea69e9486554d7872ab599e8931a8f963997a4`, protected main 대비 33 ahead / 0 behind | 17개 toolchain path를 그대로 유지하고 protected reviewer foundation을 승계했다. Lockfile policy의 stale `baseSha=e1ac9d50...`는 exact PR base를 요구하는 canonical gate에 맞춰 `85b17014...`로 causal repair했다. #546은 package/lockfile bytes를 바꾸지 않았으므로 package/top-level digest evidence는 유지되며 새 exact-head gates만 merge authority다. | -| Durable workflow authority | issue #541 / PR #542 exact `d4e3f27d44c814dfa358bf087ae943a75ef6b8e7` | Predecessor `74a9493...` hosted CI는 570 files / 4,045 tests를 통과했고 statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고, current head는 그 delta를 protected #546 위에 non-force restack했다. | -| Context Fabric boundary | #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285` | Noema는 immutable released Context Graph contract와 authenticated source-bound attestation만 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Central workflow trust | `.github/main@fe827e133e7d867015d088777553e22736344c55`; #527 exact `e48d7eb6ea037c2f5a3045829c60d4b14a436b83` | Central #1944는 `noema-review.yml` 실패 시 already-sanitized CO sidecar stderr와 preflight report를 SHA-pinned upload-artifact로 보존한다. Noema RED `30638a19...` → `e2399dac...`가 exact `job_workflow_sha` source pin을 이동했고, current #527은 이 repair를 protected #546 위에 restack했다. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy는 central/contextual-orchestrator owner에 남는다. | -| Central runner/control plane | `.github#712` | Hosted runner는 #546/#550/#542/#548 predecessor를 실제 실행했다. #526 exact `e32e7e7...` CI job `101405319871`은 `steps=[]`, `runner_id=0`, `runner_group_id=0`인 checkout 전 queue specimen이며 #540 `ffea69e...`도 fresh gates가 queued다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | +| Protected Noema | `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Agent Runtime lifecycle, task-plan/checkpoint admission, #546 semantic reviewer boundary와 #544 source-bound Context Graph admission이 protected truth다. Durable atomic execution authority는 별도 candidate다. | +| Apache-2.0 source grant | protected main | #530의 source grant는 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | +| Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged in protected history | Exact reviewer, application CI, required Security Scan, patch-validator image가 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact-path identity와 reviewer coverage/docstring gaps의 causal repairs가 default-branch reviewer source다. | +| Protected Context Fabric consumer | PR #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285`, merged as `71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Noema는 immutable released Context Graph contract를 package/SBOM/provenance, exact protected source, source manifest, independent attestation verification과 versioned envelope-preserving admission capability에 결합해 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | +| Post-#544 descendants | #535 `9dfc433674ff4c2ae857846ac1aae3bae1889e52`; #536 `cf5dfa16958b664d18959b3b712ccbdadc0b76b8`; #527 `d751e31b3e9273de0517b5ffc36fbbc82e7ea4d6`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `a0823f17946742101ebe0fc6e70730ffe6a6f9ff`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 7개 protected path와 각 lane의 branch-owned delta가 겹치지 않는 경우 exact protected blobs를 ordinary two-parent/non-force ancestry로 승계했다. Fresh exact-head gates만 merge authority다. #535/#536은 ancestry는 정리됐지만 각각 누락된 Unreleased release note를 복구해야 한다. | +| Cloudflare toolchain restack | #540 `197fb05d83cf662ecfe8c3fa3fa00929579a5566`, protected main 대비 35 ahead / 0 behind | #544가 package/lockfile bytes를 바꾸지 않았지만 PR base가 이동했으므로 `.github/lockfile-change-policy.json.baseSha`의 `85b17014...`는 stale authority가 됐다. `7224d654...`가 exact base를 `71cd0fb...`로만 rebind하고 `197fb05d...`가 17개 toolchain path를 ordinary/non-force restack했다. Package/top-level digest evidence는 유지하며 fresh exact-head gates만 권위다. | +| Durable workflow authority | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Predecessor hosted CI는 570 files / 4,045 tests, statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고 current head는 full delta를 protected #544 위에 non-force restack했다. | +| Central workflow trust | `.github/main@fe827e133e7d867015d088777553e22736344c55`; #527 exact `d751e31b3e9273de0517b5ffc36fbbc82e7ea4d6` | Central #1944는 `noema-review.yml` 실패 시 already-sanitized CO sidecar stderr와 preflight report를 SHA-pinned upload-artifact로 보존한다. Noema의 exact `job_workflow_sha` pin repair를 protected #544 ancestry에 다시 결합했다. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy는 central/contextual-orchestrator owner에 남는다. | +| Central runner/control plane | `.github#712` | Hosted runner는 이전 candidate들을 실제 실행했으며 새 post-#544 heads는 다시 queued/pending 표본을 만든다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | -| Release/publication | repository release collection은 fresh read 기준 비어 있다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. | +| Release/publication | repository release collection은 마지막 fresh read 기준 비어 있었다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. 종료 sweep에서 다시 확인한다. | ## DDD and ownership baseline @@ -30,18 +28,13 @@ Noema의 canonical Core Domain은 Agent Runtime과 Workflow / Task Execution이 Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual-orchestrator`는 LLM provider/model discovery, routing, retry/failover와 credential authority를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave는 격리·보안·outbound authority를 소유한다. Keyverse는 identity backend owner다. Context Fabric 계열은 released/versioned contract만 소비한다. Noema는 이 owner들의 source를 복사하거나 cross-service SQL, mutable sibling PR head를 runtime truth로 사용하지 않는다. -## Protected reviewer convergence +## Protected reviewer and Context Fabric convergence -PR #546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이었고 이제 protected main에 통합됐다. 유지해야 할 causal lineage는 다음과 같다. +PR #546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이었고 protected main에 통합됐다. 유지해야 할 causal lineage는 complete manifest context, fail-before-execution admission, untrusted prompt-data isolation, Linux exact Git-path identity, hosted coverage/docstring 수리와 exact `7d3de5a...` terminal GREEN이다. 이후 #544는 그 reviewer truth 위에서 Context Graph consumer의 immutable release-source authority를 강화했고 exact `35ab2d08...`의 current CI/reviewer/Security/image GREEN과 zero unresolved threads 뒤 normal merge로 `main@71cd0fb...`가 됐다. -- complete manifest context: RED `377f2374...` → `406c2f99...`, canonical scope와 manifest context를 일치시킨다. -- fail-before-execution admission: RED `f18b665d...` → `fed98d07...`, deterministic over-budget input은 CodeGraph subprocess capability를 소비하지 않는다. -- initial/recovery prompt isolation: `d439058f...`, RED `1dbe0780...` → `a785cd4e...`, RED `244a0294...` → `b6c37025...`; changed paths와 symbol map을 canonical JSON untrusted data로 유지한다. -- Linux exact Git-path identity: RED `3328f7ba...` → `04376e27...`, leading backslash를 Linux filename byte로 보존하면서 traversal/absolute-path rejection을 유지한다. -- hosted convergence: `04376e27...` 이후 real-runner failures가 stale finding identity, branch coverage, unreachable path와 nested semantic-runner docstring을 드러냈고 `b84f0e5a...`, `6e5df50c...`, `95144d5b...`, `7d3de5a...`가 이를 gate 약화 없이 수리했다. -- exact `7d3de5a...`가 reviewer, CI, Security, image GREEN과 zero valid unresolved findings를 얻은 뒤 normal merge로 `main@85b17014...`가 됐다. +#544가 protected truth가 된 뒤 non-overlapping candidate는 이전 branch tree를 first parent로 보존하고 `71cd0fb...`를 second parent로 하는 ordinary/non-force merge로 다시 수렴시켰다. Predecessor result는 전용하지 않는다. #535와 #536은 각각 `9dfc433...`, `cf5dfa1...`로 ancestry가 정리됐지만 prior semantic restack 과정에서 의도적으로 protected CHANGELOG를 보존하면서 branch-local Unreleased bullet이 빠졌으므로 release bookkeeping repair가 남아 있다. -이제 남은 reviewer 작업은 source repair가 아니라 downstream candidate의 post-#546 exact-head evidence regeneration이다. #533, #548, #542, #527, #547, #544, #552, #553, #543, #539, #550, #526, #540은 protected reviewer truth를 ordinary ancestry로 승계했다. Current checks가 terminal이 되기 전에는 Draft 해제나 predecessor semantic verdict 전용을 하지 않는다. #535와 #536은 #546과 `central-review.yml`·reviewer package/workflow/test surface가 겹치므로 wholesale tree replacement 대신 아직 semantic three-way restack이 필요하다. +ADR 0012도 post-merge truth에 맞춘다. #544의 Context Graph release-source-attestation과 envelope-preserving admission은 더 이상 candidate가 아니라 protected consumer behavior이고, ADR은 전체 runtime-orchestration decision이 아직 넓기 때문에 `Proposed`다. Proposed lifecycle은 이미 protected인 slice를 candidate로 되돌리지 않는다. ## Durable workflow transport boundary @@ -49,20 +42,21 @@ PR #542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow / Task Execution RED `19c6fa2e...` → `10708af3...`는 top-level object spread를 operation-indexed allowlist로 바꿨다. RED `00e871e1...` → `1f7f5b91...`는 `command.operation`을 한 번 snapshot해 serialized discriminator와 payload-field selection이 갈라지지 않도록 했다. RED `e88a3796...`와 `81abbab5...`는 valid nested claim/checkpoint 안 extra field/getter를 고정했고, production `037ec4e2...`는 claim을 `executionId/planId/taskId/claimId/attempt/effect`, checkpoint 계열을 `executionId/sequence/stateDigest`로 projection한다. `f915d136...`는 malformed non-record nested authority를 거짓-valid object로 정규화하지 않고 Durable Object validator에 남긴다. -Hosted `037ec4e2...` 이후 retained-plan/missing-state와 storage-unavailable paths를 test-only `74a9493...`가 수리했다. 그 exact head의 다음 hosted CI는 570 files / 4,045 tests와 statements/functions/lines 100%를 통과했지만 branch 99.98%에서 마지막 unexpected-fault arm을 특정했고 `6793a320...`이 repository seam fault injection으로 private `500 internal_error` containment를 고정했다. Current `d4e3f27...`은 이 full delta를 protected reviewer main에 non-force restack한 exact candidate다. +Hosted `037ec4e2...` 이후 retained-plan/missing-state와 storage-unavailable paths를 test-only `74a9493...`가 수리했다. 다음 hosted CI는 570 files / 4,045 tests와 statements/functions/lines 100%를 통과했지만 branch 99.98%에서 마지막 unexpected-fault arm을 특정했고 `6793a320...`이 repository seam fault injection으로 private `500 internal_error` containment를 고정했다. Current `6953eaad...`은 이 full delta를 protected #544 main에 non-force restack한 exact candidate다. ## Commercial and buyer gaps | Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | | --- | --- | --- | --- | --- | -| P0 | Post-#546 semantic evidence convergence | Protected reviewer false-green source는 수리됐지만 오래된 PR evidence를 그대로 전용하면 같은 governance gap이 남는다. | affected open PRs | protected-main ancestry + current exact-head terminal CI/reviewer/Security/image/package/SBOM/vulnerability/provenance + zero valid findings | +| P0 | Post-#544 exact-head evidence convergence | Protected reviewer/Context Fabric source가 정리돼도 오래된 PR evidence를 전용하면 같은 governance gap이 남는다. | affected open PRs | protected-main ancestry + current exact-head terminal CI/reviewer/Security/image/package/SBOM/vulnerability/provenance + zero valid findings | | P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / PR #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation, payload minimization, missing-state/storage-outage/unexpected-fault fail-closed regressions + exact-head gates + protected merge | -| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / PR #540 | regenerated lockfile/policy + protected reviewer semantic restack `ffea69e...` + fresh exact-head gates + protected integration | +| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / PR #540 | exact-base regenerated lockfile policy + restack `197fb05d...` + fresh exact-head gates + protected integration | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | -| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | protected reviewer ancestry + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | -| P1 | Commercial acquisition evidence authority | Retained artifact digest만으로 business/legal truth를 위조해선 안 되며, acquisition evidence는 byte integrity와 external authenticity를 분리해야 한다. | issue #5 / PR #526 | `{path, sha256}` retained-source authority + filesystem race hardening + protected reviewer semantic restack `e32e7e7...` + fresh exact-head gates + protected integration | -| P1 | Immutable Context Graph producer contract | Mutable producer evidence는 reproducibility와 consumer isolation을 훼손한다. | #544 + producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance evidence | +| P1 | Reviewer routing/package release notes | #535/#536의 branch-owned behavior가 CHANGELOG에서 빠지면 protected promotion 후 release traceability가 끊긴다. | PR #535 / #536 | exact prior Unreleased bullets를 protected history 위에 복구 + current exact-head gates + protected merge | +| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | protected #544 ancestry + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | +| P1 | Commercial acquisition evidence authority | Retained artifact digest만으로 business/legal truth를 위조해선 안 되며 acquisition evidence는 byte integrity와 external authenticity를 분리해야 한다. | issue #5 / PR #526 | `{path, sha256}` retained-source authority + filesystem race hardening + current exact-head gates + protected integration | +| P1 | Immutable Context Graph producer contract | Noema consumer ACL은 protected됐지만 producer의 실제 immutable release evidence가 없으면 production dependency authority가 성립하지 않는다. | producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance/envelope-preserving admission evidence | | P1 | Patch-validator publication | Reviewed source와 shipped image의 동일성이 증명되지 않는다. | issue #66 | immutable digest, signature/attestation, activation/rollback receipt | | P1 | Authentic production KPI | Synthetic/short-window metrics로 enterprise reliability를 주장할 수 없다. | issue #3 | >=30-day production-origin provenance-bound KPI | | P1 | Release/deployment/acquisition evidence | merged source만으로 transferable commercial product가 되지 않는다. | issue #5 | immutable release + governed deployment + rollback + customer/revenue/support/rights evidence | From d655663452693eaef11a20bfbd7a2dafda1b2c23 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 11:46:37 +0900 Subject: [PATCH 43/85] test(docs): bind active-work contract to protected Context Fabric head --- test/documentation-active-work-contract.test.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 7c4beed77..b300cc048 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -61,14 +61,17 @@ describe("canonical active-work documentation", () => { expect(prd).toContain("Protected `main` includes the Agent Runtime lifecycle and State / Checkpoint admission foundation"); expect(contextMap).toContain("Protected `main` includes bounded task-plan admission and runnable-task selection"); - expect(adr).toContain("The protected runtime foundation introduced by PR #528 includes"); + expect(adr).toContain("Protected `main` now contains the runtime-orchestration foundation delivered through PR #528"); + expect(adr).toContain("PR #544's Context Graph release-source-attestation and envelope-preserving-admission strengthening is now protected source"); }); it("keeps the product-technical baseline on current protected and active owner truth", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); - expect(baseline).toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); - expect(baseline).toContain("#537 merged"); + expect(baseline).toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); + expect(baseline).toContain("#537 GitHub installation-token stateless-format regression"); + expect(baseline).toContain("PR #544"); + expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); expect(baseline).not.toContain("`main@bbee33270b496255d785c766fc009a5f9162a695`"); expect(baseline).not.toContain("#537 must not inherit"); expect(baseline).toContain("Apache-2.0 source grant | protected main"); From fe0a66e0b34055dbe7446f8920abf1c8040450e7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 12:06:46 +0900 Subject: [PATCH 44/85] docs: refresh central trust and reviewer line authority --- docs/product-technical-gap-baseline.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 863485b5b..97ca91cc2 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -12,12 +12,13 @@ Protected-source snapshot은 `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`이 | --- | --- | --- | | Protected Noema | `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Agent Runtime lifecycle, task-plan/checkpoint admission, #546 semantic reviewer boundary와 #544 source-bound Context Graph admission이 protected truth다. Durable atomic execution authority는 별도 candidate다. | | Apache-2.0 source grant | protected main | #530의 source grant는 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | -| Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged in protected history | Exact reviewer, application CI, required Security Scan, patch-validator image가 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact-path identity와 reviewer coverage/docstring gaps의 causal repairs가 default-branch reviewer source다. | +| Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged in protected history | Exact reviewer, application CI, required Security Scan, patch-validator image가 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact Git-path identity와 reviewer coverage/docstring gaps의 causal repairs가 default-branch reviewer source다. | | Protected Context Fabric consumer | PR #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285`, merged as `71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Noema는 immutable released Context Graph contract를 package/SBOM/provenance, exact protected source, source manifest, independent attestation verification과 versioned envelope-preserving admission capability에 결합해 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Post-#544 descendants | #535 `9dfc433674ff4c2ae857846ac1aae3bae1889e52`; #536 `cf5dfa16958b664d18959b3b712ccbdadc0b76b8`; #527 `d751e31b3e9273de0517b5ffc36fbbc82e7ea4d6`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `a0823f17946742101ebe0fc6e70730ffe6a6f9ff`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 7개 protected path와 각 lane의 branch-owned delta가 겹치지 않는 경우 exact protected blobs를 ordinary two-parent/non-force ancestry로 승계했다. Fresh exact-head gates만 merge authority다. #535/#536은 ancestry는 정리됐지만 각각 누락된 Unreleased release note를 복구해야 한다. | +| Post-#544 descendants | #535 `9dfc433674ff4c2ae857846ac1aae3bae1889e52`; #536 `cf5dfa16958b664d18959b3b712ccbdadc0b76b8`; #527 `25eb862ce496fa4fff413b77d361db01b6228a45`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `02ec90068ca0e182da940ab3a14c5d5902dc3f77`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 7개 protected path와 각 lane의 branch-owned delta가 겹치지 않는 경우 exact protected blobs를 ordinary two-parent/non-force ancestry로 승계했다. Fresh exact-head gates만 merge authority다. #535/#536은 ancestry는 정리됐지만 각각 누락된 Unreleased release note를 복구해야 한다. | +| Reviewer finding source identity | PR #548 exact `02ec90068ca0e182da940ab3a14c5d5902dc3f77` | `Finding.line`은 GitHub current-head source identity이므로 coercible scalar가 아니다. RED `6551a863...`가 0/음수/bool/float/string line을 거부하도록 요구했고 production `5c204538...` + cleanup `02ec9006...`가 exact positive integer/None만 schema admission에서 허용한다. Current exact-head gates는 재생성 중이며 predecessor GREEN은 전용하지 않는다. | | Cloudflare toolchain restack | #540 `197fb05d83cf662ecfe8c3fa3fa00929579a5566`, protected main 대비 35 ahead / 0 behind | #544가 package/lockfile bytes를 바꾸지 않았지만 PR base가 이동했으므로 `.github/lockfile-change-policy.json.baseSha`의 `85b17014...`는 stale authority가 됐다. `7224d654...`가 exact base를 `71cd0fb...`로만 rebind하고 `197fb05d...`가 17개 toolchain path를 ordinary/non-force restack했다. Package/top-level digest evidence는 유지하며 fresh exact-head gates만 권위다. | | Durable workflow authority | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Predecessor hosted CI는 570 files / 4,045 tests, statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고 current head는 full delta를 protected #544 위에 non-force restack했다. | -| Central workflow trust | `.github/main@fe827e133e7d867015d088777553e22736344c55`; #527 exact `d751e31b3e9273de0517b5ffc36fbbc82e7ea4d6` | Central #1944는 `noema-review.yml` 실패 시 already-sanitized CO sidecar stderr와 preflight report를 SHA-pinned upload-artifact로 보존한다. Noema의 exact `job_workflow_sha` pin repair를 protected #544 ancestry에 다시 결합했다. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy는 central/contextual-orchestrator owner에 남는다. | +| Central workflow trust | `.github/main@efb8926923de45245338159a489a1b227e81945f`; #527 exact `25eb862ce496fa4fff413b77d361db01b6228a45` | Central protected head advanced one commit from `fe827e...`: the reusable Noema workflow path itself is unchanged, while the central review sidecar pin moved to contextual-orchestrator `414f2297...` with its contract test/ADR/CHANGELOG. Because OIDC `job_workflow_sha` authenticates the complete central source commit, RED `2e38afbb...` → production `25eb862c...` rebinds only Noema `ALLOWED_WORKFLOW_SHA`. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy remain central/contextual-orchestrator owner authority. | | Central runner/control plane | `.github#712` | Hosted runner는 이전 candidate들을 실제 실행했으며 새 post-#544 heads는 다시 queued/pending 표본을 만든다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Release/publication | repository release collection은 마지막 fresh read 기준 비어 있었다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. 종료 sweep에서 다시 확인한다. | @@ -53,6 +54,7 @@ Hosted `037ec4e2...` 이후 retained-plan/missing-state와 storage-unavailable p | P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / PR #540 | exact-base regenerated lockfile policy + restack `197fb05d...` + fresh exact-head gates + protected integration | | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | +| P1 | Reviewer finding source identity | Coerced/invalid line identity가 failed-check RCA 또는 inline review publication에 들어가면 current-head evidence가 GitHub의 실제 source anchor와 어긋날 수 있다. | PR #548 | exact-positive-integer/None schema admission regression + current exact-head reviewer/application/Security/image GREEN + protected integration | | P1 | Reviewer routing/package release notes | #535/#536의 branch-owned behavior가 CHANGELOG에서 빠지면 protected promotion 후 release traceability가 끊긴다. | PR #535 / #536 | exact prior Unreleased bullets를 protected history 위에 복구 + current exact-head gates + protected merge | | P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | protected #544 ancestry + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | | P1 | Commercial acquisition evidence authority | Retained artifact digest만으로 business/legal truth를 위조해선 안 되며 acquisition evidence는 byte integrity와 external authenticity를 분리해야 한다. | issue #5 / PR #526 | `{path, sha256}` retained-source authority + filesystem race hardening + current exact-head gates + protected integration | @@ -69,4 +71,4 @@ Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBO ## Completion discipline -Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. +Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. \ No newline at end of file From 2006f41c4fc139e3d040941aca7fa5f04a0a72f4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 12:14:50 +0900 Subject: [PATCH 45/85] docs: record hosted CodeGraph isolation repair --- docs/product-technical-gap-baseline.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 97ca91cc2..1fa6c642e 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -14,8 +14,9 @@ Protected-source snapshot은 `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`이 | Apache-2.0 source grant | protected main | #530의 source grant는 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | | Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged in protected history | Exact reviewer, application CI, required Security Scan, patch-validator image가 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact Git-path identity와 reviewer coverage/docstring gaps의 causal repairs가 default-branch reviewer source다. | | Protected Context Fabric consumer | PR #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285`, merged as `71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Noema는 immutable released Context Graph contract를 package/SBOM/provenance, exact protected source, source manifest, independent attestation verification과 versioned envelope-preserving admission capability에 결합해 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Post-#544 descendants | #535 `9dfc433674ff4c2ae857846ac1aae3bae1889e52`; #536 `cf5dfa16958b664d18959b3b712ccbdadc0b76b8`; #527 `25eb862ce496fa4fff413b77d361db01b6228a45`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `02ec90068ca0e182da940ab3a14c5d5902dc3f77`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 7개 protected path와 각 lane의 branch-owned delta가 겹치지 않는 경우 exact protected blobs를 ordinary two-parent/non-force ancestry로 승계했다. Fresh exact-head gates만 merge authority다. #535/#536은 ancestry는 정리됐지만 각각 누락된 Unreleased release note를 복구해야 한다. | +| Post-#544 descendants | #535 `f20927d027414cdae2d88f643eb08a2d733dbe90`; #536 `cf5dfa16958b664d18959b3b712ccbdadc0b76b8`; #527 `25eb862ce496fa4fff413b77d361db01b6228a45`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `02ec90068ca0e182da940ab3a14c5d5902dc3f77`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 7개 protected path와 각 lane의 branch-owned delta가 겹치지 않는 경우 exact protected blobs를 ordinary two-parent/non-force ancestry로 승계했다. Fresh exact-head gates만 merge authority다. #535는 hosted reviewer RED에서 protected CodeGraph ambient-env isolation과 충돌한 stale test를 test-only로 수리했고, #535/#536 모두 누락된 Unreleased release note를 복구해야 한다. | | Reviewer finding source identity | PR #548 exact `02ec90068ca0e182da940ab3a14c5d5902dc3f77` | `Finding.line`은 GitHub current-head source identity이므로 coercible scalar가 아니다. RED `6551a863...`가 0/음수/bool/float/string line을 거부하도록 요구했고 production `5c204538...` + cleanup `02ec9006...`가 exact positive integer/None만 schema admission에서 허용한다. Current exact-head gates는 재생성 중이며 predecessor GREEN은 전용하지 않는다. | +| Reviewer ambient-environment isolation | PR #535 exact `f20927d027414cdae2d88f643eb08a2d733dbe90` | Hosted reviewer `34006718592` / job `101415161211`은 599 tests 중 598 pass와 100% line+branch coverage 후 stale test 하나가 `SAFE_REVIEW_LABEL` ambient inheritance를 기대해 실패했다. Protected `_codegraph_environment()`의 allowlist가 권위이므로 production을 넓히지 않고 test-only `f20927d...`가 ambient label도 child env에서 거부하도록 되돌렸다. Current exact-head gates가 새 authority다. | | Cloudflare toolchain restack | #540 `197fb05d83cf662ecfe8c3fa3fa00929579a5566`, protected main 대비 35 ahead / 0 behind | #544가 package/lockfile bytes를 바꾸지 않았지만 PR base가 이동했으므로 `.github/lockfile-change-policy.json.baseSha`의 `85b17014...`는 stale authority가 됐다. `7224d654...`가 exact base를 `71cd0fb...`로만 rebind하고 `197fb05d...`가 17개 toolchain path를 ordinary/non-force restack했다. Package/top-level digest evidence는 유지하며 fresh exact-head gates만 권위다. | | Durable workflow authority | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Predecessor hosted CI는 570 files / 4,045 tests, statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고 current head는 full delta를 protected #544 위에 non-force restack했다. | | Central workflow trust | `.github/main@efb8926923de45245338159a489a1b227e81945f`; #527 exact `25eb862ce496fa4fff413b77d361db01b6228a45` | Central protected head advanced one commit from `fe827e...`: the reusable Noema workflow path itself is unchanged, while the central review sidecar pin moved to contextual-orchestrator `414f2297...` with its contract test/ADR/CHANGELOG. Because OIDC `job_workflow_sha` authenticates the complete central source commit, RED `2e38afbb...` → production `25eb862c...` rebinds only Noema `ALLOWED_WORKFLOW_SHA`. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy remain central/contextual-orchestrator owner authority. | @@ -33,7 +34,7 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual PR #546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이었고 protected main에 통합됐다. 유지해야 할 causal lineage는 complete manifest context, fail-before-execution admission, untrusted prompt-data isolation, Linux exact Git-path identity, hosted coverage/docstring 수리와 exact `7d3de5a...` terminal GREEN이다. 이후 #544는 그 reviewer truth 위에서 Context Graph consumer의 immutable release-source authority를 강화했고 exact `35ab2d08...`의 current CI/reviewer/Security/image GREEN과 zero unresolved threads 뒤 normal merge로 `main@71cd0fb...`가 됐다. -#544가 protected truth가 된 뒤 non-overlapping candidate는 이전 branch tree를 first parent로 보존하고 `71cd0fb...`를 second parent로 하는 ordinary/non-force merge로 다시 수렴시켰다. Predecessor result는 전용하지 않는다. #535와 #536은 각각 `9dfc433...`, `cf5dfa1...`로 ancestry가 정리됐지만 prior semantic restack 과정에서 의도적으로 protected CHANGELOG를 보존하면서 branch-local Unreleased bullet이 빠졌으므로 release bookkeeping repair가 남아 있다. +#544가 protected truth가 된 뒤 non-overlapping candidate는 이전 branch tree를 first parent로 보존하고 `71cd0fb...`를 second parent로 하는 ordinary/non-force merge로 다시 수렴시켰다. Predecessor result는 전용하지 않는다. #535는 `9dfc433...` exact hosted reviewer에서 599 tests 중 598 pass, 100% line+branch coverage 뒤 stale `SAFE_REVIEW_LABEL` inheritance expectation 하나만 실패했고, protected CodeGraph least-authority environment를 넓히지 않은 test-only `f20927d...`로 수리됐다. #535와 #536은 prior semantic restack 과정에서 의도적으로 protected CHANGELOG를 보존하면서 branch-local Unreleased bullet이 빠졌으므로 release bookkeeping repair는 여전히 남아 있다. ADR 0012도 post-merge truth에 맞춘다. #544의 Context Graph release-source-attestation과 envelope-preserving admission은 더 이상 candidate가 아니라 protected consumer behavior이고, ADR은 전체 runtime-orchestration decision이 아직 넓기 때문에 `Proposed`다. Proposed lifecycle은 이미 protected인 slice를 candidate로 되돌리지 않는다. From 2d9521f912393a3ce677a00dcb30a83642d41cb1 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 13:17:52 +0900 Subject: [PATCH 46/85] docs(gap): record restored release traceability --- docs/product-technical-gap-baseline.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 1fa6c642e..6723dc583 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -14,13 +14,14 @@ Protected-source snapshot은 `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`이 | Apache-2.0 source grant | protected main | #530의 source grant는 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | | Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged in protected history | Exact reviewer, application CI, required Security Scan, patch-validator image가 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact Git-path identity와 reviewer coverage/docstring gaps의 causal repairs가 default-branch reviewer source다. | | Protected Context Fabric consumer | PR #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285`, merged as `71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Noema는 immutable released Context Graph contract를 package/SBOM/provenance, exact protected source, source manifest, independent attestation verification과 versioned envelope-preserving admission capability에 결합해 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Post-#544 descendants | #535 `f20927d027414cdae2d88f643eb08a2d733dbe90`; #536 `cf5dfa16958b664d18959b3b712ccbdadc0b76b8`; #527 `25eb862ce496fa4fff413b77d361db01b6228a45`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `02ec90068ca0e182da940ab3a14c5d5902dc3f77`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 7개 protected path와 각 lane의 branch-owned delta가 겹치지 않는 경우 exact protected blobs를 ordinary two-parent/non-force ancestry로 승계했다. Fresh exact-head gates만 merge authority다. #535는 hosted reviewer RED에서 protected CodeGraph ambient-env isolation과 충돌한 stale test를 test-only로 수리했고, #535/#536 모두 누락된 Unreleased release note를 복구해야 한다. | -| Reviewer finding source identity | PR #548 exact `02ec90068ca0e182da940ab3a14c5d5902dc3f77` | `Finding.line`은 GitHub current-head source identity이므로 coercible scalar가 아니다. RED `6551a863...`가 0/음수/bool/float/string line을 거부하도록 요구했고 production `5c204538...` + cleanup `02ec9006...`가 exact positive integer/None만 schema admission에서 허용한다. Current exact-head gates는 재생성 중이며 predecessor GREEN은 전용하지 않는다. | -| Reviewer ambient-environment isolation | PR #535 exact `f20927d027414cdae2d88f643eb08a2d733dbe90` | Hosted reviewer `34006718592` / job `101415161211`은 599 tests 중 598 pass와 100% line+branch coverage 후 stale test 하나가 `SAFE_REVIEW_LABEL` ambient inheritance를 기대해 실패했다. Protected `_codegraph_environment()`의 allowlist가 권위이므로 production을 넓히지 않고 test-only `f20927d...`가 ambient label도 child env에서 거부하도록 되돌렸다. Current exact-head gates가 새 authority다. | -| Cloudflare toolchain restack | #540 `197fb05d83cf662ecfe8c3fa3fa00929579a5566`, protected main 대비 35 ahead / 0 behind | #544가 package/lockfile bytes를 바꾸지 않았지만 PR base가 이동했으므로 `.github/lockfile-change-policy.json.baseSha`의 `85b17014...`는 stale authority가 됐다. `7224d654...`가 exact base를 `71cd0fb...`로만 rebind하고 `197fb05d...`가 17개 toolchain path를 ordinary/non-force restack했다. Package/top-level digest evidence는 유지하며 fresh exact-head gates만 권위다. | -| Durable workflow authority | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Predecessor hosted CI는 570 files / 4,045 tests, statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고 current head는 full delta를 protected #544 위에 non-force restack했다. | -| Central workflow trust | `.github/main@efb8926923de45245338159a489a1b227e81945f`; #527 exact `25eb862ce496fa4fff413b77d361db01b6228a45` | Central protected head advanced one commit from `fe827e...`: the reusable Noema workflow path itself is unchanged, while the central review sidecar pin moved to contextual-orchestrator `414f2297...` with its contract test/ADR/CHANGELOG. Because OIDC `job_workflow_sha` authenticates the complete central source commit, RED `2e38afbb...` → production `25eb862c...` rebinds only Noema `ALLOWED_WORKFLOW_SHA`. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy remain central/contextual-orchestrator owner authority. | -| Central runner/control plane | `.github#712` | Hosted runner는 이전 candidate들을 실제 실행했으며 새 post-#544 heads는 다시 queued/pending 표본을 만든다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | +| Post-#544 descendants | #535 `0a125fd51347c090b6265d9c1e25edf1fe049a43`; #536 `908d9cc7a1c84a2d2aa9999e2bb7c165ae65443c`; #527 `25eb862ce496fa4fff413b77d361db01b6228a45`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `02ec90068ca0e182da940ab3a14c5d5902dc3f77`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 protected path와 각 lane의 branch-owned delta를 ordinary/non-force ancestry로 수렴시켰다. Fresh exact-head gates만 merge authority다. #535의 hosted reviewer RED는 protected CodeGraph ambient-env isolation과 충돌한 stale test를 test-only로 수리했고, #535/#536에서 restack 중 누락됐던 branch-owned Unreleased release note도 각각 `0a125fd...`와 `908d9cc...`에서 protected history를 보존한 채 복구했다. 두 lane 모두 새 exact-head gates가 다시 생성돼 아직 Draft다. | +| Reviewer finding source identity | PR #548 exact `02ec90068ca0e182da940ab3a14c5d5902dc3f77` | `Finding.line`은 GitHub current-head source identity이므로 coercible scalar가 아니다. RED `6551a863...`가 0/음수/bool/float/string line을 거부하도록 요구했고 production `5c204538...` + cleanup `02ec9006...`가 exact positive integer/None만 schema admission에서 허용한다. Current exact-head application CI/reviewer는 GREEN이지만 Security/image는 non-terminal이며 predecessor GREEN은 전용하지 않는다. | +| Reviewer ambient-environment isolation | PR #535 exact `0a125fd51347c090b6265d9c1e25edf1fe049a43` | Hosted reviewer `34006718592` / job `101415161211`은 599 tests 중 598 pass와 100% line+branch coverage 후 stale test 하나가 `SAFE_REVIEW_LABEL` ambient inheritance를 기대해 실패했다. Protected `_codegraph_environment()`의 allowlist가 권위이므로 production을 넓히지 않고 test-only `f20927d...`가 ambient label도 child env에서 거부하도록 되돌렸다. `0a125fd...`는 historical `orchestrator/free` Unreleased note를 복구했고 current exact-head gates는 새 authority다. | +| Shared Kernel packaging | PR #536 exact `908d9cc7a1c84a2d2aa9999e2bb7c165ae65443c` | `noema-core`는 이미 해석된 PydanticAI `Model`만 받아 provider-neutral `Agent(..., retries=0)`을 구성하며 provider discovery/credential/routing/retry/failover를 소유하지 않는다. Predecessor `cf5dfa...`의 application CI/reviewer-ci GREEN은 새 head로 전용하지 않으며, `908d9cc...`가 누락된 Shared Kernel Unreleased note를 protected history 위에 복구한 뒤 exact-head gates를 재생성했다. | +| Cloudflare toolchain restack | #540 `197fb05d83cf662ecfe8c3fa3fa00929579a5566`, protected main 대비 35 ahead / 0 behind | #544가 package/lockfile bytes를 바꾸지 않았지만 PR base가 이동했으므로 `.github/lockfile-change-policy.json.baseSha`의 `85b17014...`는 stale authority가 됐다. `7224d654...`가 exact base를 `71cd0fb...`로만 rebind하고 `197fb05d...`가 17개 toolchain path를 ordinary/non-force restack했다. Package/top-level digest evidence는 유지하며 application CI/reviewer는 GREEN, Security/image는 non-terminal이다. | +| Durable workflow authority | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Predecessor hosted CI는 570 files / 4,045 tests, statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고 current head는 full delta를 protected #544 위에 non-force restack했다. Current application CI/reviewer는 GREEN, Security/image는 non-terminal이다. | +| Central workflow trust | `.github/main@efb8926923de45245338159a489a1b227e81945f`; #527 exact `25eb862ce496fa4fff413b77d361db01b6228a45` | Central protected head remains the audited sidecar-pin repair. OIDC `job_workflow_sha` authenticates the complete central source commit, so RED `2e38afbb...` → production `25eb862c...` rebinds only Noema `ALLOWED_WORKFLOW_SHA`. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy remain central/contextual-orchestrator owner authority. Current #527 application CI/reviewer are GREEN while Security/image remain non-terminal. | +| Central runner/control plane | `.github#712` | Hosted runner는 current candidates의 application/reviewer jobs를 실제 실행했지만 Security/image lanes는 여전히 queued/in-progress 표본을 만든다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | | Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | | Release/publication | repository release collection은 마지막 fresh read 기준 비어 있었다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. 종료 sweep에서 다시 확인한다. | @@ -34,7 +35,7 @@ Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual PR #546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이었고 protected main에 통합됐다. 유지해야 할 causal lineage는 complete manifest context, fail-before-execution admission, untrusted prompt-data isolation, Linux exact Git-path identity, hosted coverage/docstring 수리와 exact `7d3de5a...` terminal GREEN이다. 이후 #544는 그 reviewer truth 위에서 Context Graph consumer의 immutable release-source authority를 강화했고 exact `35ab2d08...`의 current CI/reviewer/Security/image GREEN과 zero unresolved threads 뒤 normal merge로 `main@71cd0fb...`가 됐다. -#544가 protected truth가 된 뒤 non-overlapping candidate는 이전 branch tree를 first parent로 보존하고 `71cd0fb...`를 second parent로 하는 ordinary/non-force merge로 다시 수렴시켰다. Predecessor result는 전용하지 않는다. #535는 `9dfc433...` exact hosted reviewer에서 599 tests 중 598 pass, 100% line+branch coverage 뒤 stale `SAFE_REVIEW_LABEL` inheritance expectation 하나만 실패했고, protected CodeGraph least-authority environment를 넓히지 않은 test-only `f20927d...`로 수리됐다. #535와 #536은 prior semantic restack 과정에서 의도적으로 protected CHANGELOG를 보존하면서 branch-local Unreleased bullet이 빠졌으므로 release bookkeeping repair는 여전히 남아 있다. +#544가 protected truth가 된 뒤 candidate들은 protected head를 ordinary/non-force ancestry로 수렴시켰고 predecessor result는 전용하지 않는다. #535는 `9dfc433...` exact hosted reviewer에서 599 tests 중 598 pass, 100% line+branch coverage 뒤 stale `SAFE_REVIEW_LABEL` inheritance expectation 하나만 실패했고 protected CodeGraph least-authority environment를 넓히지 않은 test-only `f20927d...`로 수리됐다. Restack 과정에서 누락된 branch-local release traceability도 이번 cycle에서 복구했다. #535 `0a125fd...`는 reviewed `orchestrator/free` routing/privacy note를, #536 `908d9cc...`는 provider-neutral `noema-core` package note를 protected CHANGELOG history 위에 되살렸다. Source gap은 닫혔지만 새 exact-head CI/reviewer/Security/image가 terminal GREEN이 되기 전에는 promotion authority가 아니다. ADR 0012도 post-merge truth에 맞춘다. #544의 Context Graph release-source-attestation과 envelope-preserving admission은 더 이상 candidate가 아니라 protected consumer behavior이고, ADR은 전체 runtime-orchestration decision이 아직 넓기 때문에 `Proposed`다. Proposed lifecycle은 이미 protected인 slice를 candidate로 되돌리지 않는다. @@ -56,7 +57,7 @@ Hosted `037ec4e2...` 이후 retained-plan/missing-state와 storage-unavailable p | P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | | P0 | Protected governance target | Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | | P1 | Reviewer finding source identity | Coerced/invalid line identity가 failed-check RCA 또는 inline review publication에 들어가면 current-head evidence가 GitHub의 실제 source anchor와 어긋날 수 있다. | PR #548 | exact-positive-integer/None schema admission regression + current exact-head reviewer/application/Security/image GREEN + protected integration | -| P1 | Reviewer routing/package release notes | #535/#536의 branch-owned behavior가 CHANGELOG에서 빠지면 protected promotion 후 release traceability가 끊긴다. | PR #535 / #536 | exact prior Unreleased bullets를 protected history 위에 복구 + current exact-head gates + protected merge | +| P1 | Reviewer routing/package release traceability | #535/#536의 branch-owned behavior는 CHANGELOG에 복구됐지만 아직 protected/released truth는 아니다. | PR #535 / #536 | restored exact Unreleased bullets + current exact-head terminal gates + protected merge + immutable release evidence | | P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | protected #544 ancestry + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | | P1 | Commercial acquisition evidence authority | Retained artifact digest만으로 business/legal truth를 위조해선 안 되며 acquisition evidence는 byte integrity와 external authenticity를 분리해야 한다. | issue #5 / PR #526 | `{path, sha256}` retained-source authority + filesystem race hardening + current exact-head gates + protected integration | | P1 | Immutable Context Graph producer contract | Noema consumer ACL은 protected됐지만 producer의 실제 immutable release evidence가 없으면 production dependency authority가 성립하지 않는다. | producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance/envelope-preserving admission evidence | From 797c6dace260cb0387410b63b49763a9e1ac94d4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 17:12:27 +0900 Subject: [PATCH 47/85] docs: refresh live commercial gap authority after protected #552 --- docs/product-technical-gap-baseline.md | 84 ++++++++++---------------- 1 file changed, 33 insertions(+), 51 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 6723dc583..e23fadaba 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -2,75 +2,57 @@ ## Authority and update rule -이 문서는 protected 구현, active candidate, transient workflow observation, foreign-owner authority를 구분해 Noema의 제품·기술 Gap을 추적한다. 저장소 파일과 테스트는 해당 revision의 source contract만 증명한다. PR, check, release, central workflow source는 매 판단 시 live exact head에서 다시 읽으며 predecessor GREEN, 문서 존재, model judgement, synthetic fixture를 이후 단계의 권위로 전용하지 않는다. +이 문서는 Noema의 protected truth, active candidate, transient workflow evidence, foreign-owner authority를 분리해 추적한다. 저장소 문서와 테스트는 해당 revision의 source contract만 증명하며, predecessor GREEN·queued/skipped/cancelled run·문서 존재·model judgement를 다음 단계의 권위로 전용하지 않는다. PR은 live protected base와 unchanged exact head에서 다시 검증하고, 외부 제품의 domain truth·LLM provider routing·quarantine/security·outbound authority는 Noema source로 복제하지 않는다. -Protected-source snapshot은 `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`이다. #528 runtime bounded-context foundation, #530 Apache-2.0 source grant, #537 GitHub installation-token stateless-format regression, #546 semantic reviewer admission repair와 #544 Context Graph release-consumer admission이 protected truth다. ADR 0012는 여전히 `Proposed`이며 protected 구현의 존재가 ADR lifecycle acceptance를 뜻하지 않는다. +현재 protected-source snapshot은 `main@5b8e620dbb01a794c1a38535bbcc32e41a80d0df`다. 이 revision은 protected #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence와 #552 cross-session coordination guidance를 포함한다. #552는 exact `1870679c0eea609bff94d72c888c8567d505c214`에서 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 unresolved review thread가 0인 상태에서 정상 merge되어 `5b8e620...`가 됐다. ## Live observation — 2026-09-06 KST | Authority | Exact observation | Consequence | | --- | --- | --- | -| Protected Noema | `main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Agent Runtime lifecycle, task-plan/checkpoint admission, #546 semantic reviewer boundary와 #544 source-bound Context Graph admission이 protected truth다. Durable atomic execution authority는 별도 candidate다. | -| Apache-2.0 source grant | protected main | #530의 source grant는 protected truth다. 현재 licensing gap은 source-license 선택이 아니라 issue #531 / PR #540의 third-party build/development path와 transferable release evidence다. | -| Protected semantic reviewer | PR #546 exact `7d3de5a859be96b953927201d9ba782673f4bb8e`, merged in protected history | Exact reviewer, application CI, required Security Scan, patch-validator image가 terminal success이고 valid review threads가 해소된 뒤 정상 merge했다. Empty/partial/stale CodeGraph evidence, prompt-shaped retrieval data, Linux exact Git-path identity와 reviewer coverage/docstring gaps의 causal repairs가 default-branch reviewer source다. | -| Protected Context Fabric consumer | PR #544 exact `35ab2d08bbbbcf8b2d530795b7a0107709712285`, merged as `71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155` | Noema는 immutable released Context Graph contract를 package/SBOM/provenance, exact protected source, source manifest, independent attestation verification과 versioned envelope-preserving admission capability에 결합해 소비한다. Mutable producer PR/source copy/cross-service SQL은 권위가 아니다. | -| Post-#544 descendants | #535 `0a125fd51347c090b6265d9c1e25edf1fe049a43`; #536 `908d9cc7a1c84a2d2aa9999e2bb7c165ae65443c`; #527 `25eb862ce496fa4fff413b77d361db01b6228a45`; #533 `8ced86c7636e3e5d09757459150df53e5329541e`; #548 `02ec90068ca0e182da940ab3a14c5d5902dc3f77`; #526 `81ef8b75aaad2083156b415e59fd7f27740a1b02`; #550 `158d818836d88ff7482b652738cd1add8968ccd6`; #542 `6953eaad292ea88d1b50bcb67011b473fb0eeb28`; #539 `299efc83ba3710a4405ae39d59fe517fb3740200`; #543 `6f09d16dca7c696e8816612cd13b963c3640e9a3`; #552 `a0d8e40e0d923f06b8ffa2af51768f21c9eeb24d`; #553 `ec3dbdfe1e521304b3da56af48a9a62605905b20` | #544의 protected path와 각 lane의 branch-owned delta를 ordinary/non-force ancestry로 수렴시켰다. Fresh exact-head gates만 merge authority다. #535의 hosted reviewer RED는 protected CodeGraph ambient-env isolation과 충돌한 stale test를 test-only로 수리했고, #535/#536에서 restack 중 누락됐던 branch-owned Unreleased release note도 각각 `0a125fd...`와 `908d9cc...`에서 protected history를 보존한 채 복구했다. 두 lane 모두 새 exact-head gates가 다시 생성돼 아직 Draft다. | -| Reviewer finding source identity | PR #548 exact `02ec90068ca0e182da940ab3a14c5d5902dc3f77` | `Finding.line`은 GitHub current-head source identity이므로 coercible scalar가 아니다. RED `6551a863...`가 0/음수/bool/float/string line을 거부하도록 요구했고 production `5c204538...` + cleanup `02ec9006...`가 exact positive integer/None만 schema admission에서 허용한다. Current exact-head application CI/reviewer는 GREEN이지만 Security/image는 non-terminal이며 predecessor GREEN은 전용하지 않는다. | -| Reviewer ambient-environment isolation | PR #535 exact `0a125fd51347c090b6265d9c1e25edf1fe049a43` | Hosted reviewer `34006718592` / job `101415161211`은 599 tests 중 598 pass와 100% line+branch coverage 후 stale test 하나가 `SAFE_REVIEW_LABEL` ambient inheritance를 기대해 실패했다. Protected `_codegraph_environment()`의 allowlist가 권위이므로 production을 넓히지 않고 test-only `f20927d...`가 ambient label도 child env에서 거부하도록 되돌렸다. `0a125fd...`는 historical `orchestrator/free` Unreleased note를 복구했고 current exact-head gates는 새 authority다. | -| Shared Kernel packaging | PR #536 exact `908d9cc7a1c84a2d2aa9999e2bb7c165ae65443c` | `noema-core`는 이미 해석된 PydanticAI `Model`만 받아 provider-neutral `Agent(..., retries=0)`을 구성하며 provider discovery/credential/routing/retry/failover를 소유하지 않는다. Predecessor `cf5dfa...`의 application CI/reviewer-ci GREEN은 새 head로 전용하지 않으며, `908d9cc...`가 누락된 Shared Kernel Unreleased note를 protected history 위에 복구한 뒤 exact-head gates를 재생성했다. | -| Cloudflare toolchain restack | #540 `197fb05d83cf662ecfe8c3fa3fa00929579a5566`, protected main 대비 35 ahead / 0 behind | #544가 package/lockfile bytes를 바꾸지 않았지만 PR base가 이동했으므로 `.github/lockfile-change-policy.json.baseSha`의 `85b17014...`는 stale authority가 됐다. `7224d654...`가 exact base를 `71cd0fb...`로만 rebind하고 `197fb05d...`가 17개 toolchain path를 ordinary/non-force restack했다. Package/top-level digest evidence는 유지하며 application CI/reviewer는 GREEN, Security/image는 non-terminal이다. | -| Durable workflow authority | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Predecessor hosted CI는 570 files / 4,045 tests, statements/functions/lines 100%, branch 99.98%에서 마지막 unexpected-fault containment arm을 특정했다. Test-only `6793a320...`가 private Durable Object `500 internal_error` fallback을 고정했고 current head는 full delta를 protected #544 위에 non-force restack했다. Current application CI/reviewer는 GREEN, Security/image는 non-terminal이다. | -| Central workflow trust | `.github/main@efb8926923de45245338159a489a1b227e81945f`; #527 exact `25eb862ce496fa4fff413b77d361db01b6228a45` | Central protected head remains the audited sidecar-pin repair. OIDC `job_workflow_sha` authenticates the complete central source commit, so RED `2e38afbb...` → production `25eb862c...` rebinds only Noema `ALLOWED_WORKFLOW_SHA`. Provider/model routing, retry, sanitizer, security/quarantine/outbound policy remain central/contextual-orchestrator owner authority. Current #527 application CI/reviewer are GREEN while Security/image remain non-terminal. | -| Central runner/control plane | `.github#712` | Hosted runner는 current candidates의 application/reviewer jobs를 실제 실행했지만 Security/image lanes는 여전히 queued/in-progress 표본을 만든다. Leaf `runs-on` 변경, no-op source churn, rerun storm, gate suppression은 대안이 아니다. | -| Central CO sidecar migration | `.github#1759` open | Strix/OpenCode/Noema/autofix central consumers의 `orchestrator-free-sidecar` migration은 `.github` owner path다. Noema는 provider key/routing authority를 복제하지 않는다. | -| Release/publication | repository release collection은 마지막 fresh read 기준 비어 있었다 | Immutable version/tag/package/image/SBOM/provenance/reproducibility/rollback receipt가 없으므로 source readiness를 release readiness로 승격하지 않는다. 종료 sweep에서 다시 확인한다. | +| Protected Noema | `main@5b8e620dbb01a794c1a38535bbcc32e41a80d0df` | Agent Runtime/Workflow foundation, semantic reviewer, Context Graph release-consumer admission, runner-assignment evidence와 cross-session coordination이 protected truth다. | +| Central workflow owner | `.github/main@43024633eba9d96b0456970391360da5a171fbda` | Central #1953은 Strix sandbox-bootstrap retry/verdict owner repair다. Noema가 그 retry/provider/security 구현을 복제하지 않는다. OIDC `job_workflow_sha`는 complete central source commit을 인증하므로 #527 exact pin은 이 SHA를 따라가야 한다. | +| OIDC trust candidate | PR #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd` | RED `beb196bf...`가 새 central SHA를 요구하고 production `ec5b1051...`가 `ALLOWED_WORKFLOW_SHA`만 `43024633...`로 rebind했다. Ordinary two-parent restack으로 protected #552 ancestry를 보존했다. Fresh exact-head CI/image는 pending, reviewer/Security는 queued이므로 Draft다. | +| Shared Kernel candidate | PR #536 exact `a1172fc2d50ae28b2e67c1696ce0578c16c5a6d9` | `noema-core`는 이미 해석된 PydanticAI `Model`을 받아 provider-neutral `Agent(..., retries=0)`만 구성한다. Provider discovery/credential/routing/retry/failover는 contextual-orchestrator authority다. Current main 대비 71 ahead / 0 behind이며 fresh exact-head 네 workflow는 queued다. | +| Workflow-concurrency candidate | PR #550 exact `12f8e3d9e74776156c9f70d29a5ef0ae0d25a96c` | PR supersession만 cancel하고 push/manual run identity를 보존하는 Noema repository-local concurrency delta를 protected #552 위에 non-force restack했다. Fresh exact-head 네 workflow는 queued다. | +| Reviewer evidence candidate | PR #548 exact `75f93fd5d16f3b56eafd0f12a0eabe14ee277766` | Failed-check evidence를 current-head source finding에 결합하고 `Finding.line`을 exact positive integer/None으로 제한하는 branch-owned delta를 protected #552 위에 restack했다. Fresh exact-head 네 workflow는 queued다. | +| Small post-#552 restacks | #539 `bb2f3b8bc734dc3926f2a0ac6b0265fae91040b3`; #543 `a6970ca89ee589368799b8c4b0656dec7b87c2a8`; #553 `722fa1202a51cc774cc71af1c0a0e34429c81bdd` | 각각 canonical temp-root fixture, required-gate suppression 금지 regression, automation threat-model correction을 protected #552 위에 ordinary/non-force restack했다. 모든 fresh exact-head CI/reviewer/Security/image가 queued라 predecessor GREEN을 전용하지 않는다. | +| Orchestrator/free lane | PR #535 exact `0a125fd51347c090b6265d9c1e25edf1fe049a43` | Branch-owned reviewer/config/privacy/tool boundary와 protected main이 `AGENTS.md`, `CLAUDE.md`, product gap baseline에서 겹친다. `SAFE_REVIEW_LABEL` ambient inheritance expectation은 이미 test-only로 수리됐지만 current protected main에 대한 semantic three-way restack이 아직 필요하다. CO가 provider/model authority를 계속 소유한다. | +| Toolchain/license lane | PR #540 exact `197fb05d83cf662ecfe8c3fa3fa00929579a5566` | `workerd@1.20260625.1` + `esbuild@0.28.1` candidate는 유효하지만 `.github/lockfile-change-policy.json.baseSha`가 아직 `71cd0fb...`라 current `main@5b8e620...` 기준 stale authority다. Package/lockfile bytes는 protected #552로 인해 변하지 않았으므로 exact base rebind와 product-gap semantic merge가 필요하다. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Atomic claim, effect-start evidence, checkpoint CAS, recovery/cancellation, operation-stable payload minimization, nested projection, missing-state/storage-outage/unexpected-fault fail-closed contract는 Noema-owned candidate다. Protected main과 product-gap baseline이 겹쳐 semantic restack이 필요하다. | +| Acquisition evidence | PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02` | `{path, sha256}` retained-source authority와 filesystem race/fail-closed repairs는 유효하다. Current protected acquisition/licensing evidence changes와 overlap하므로 wholesale tree replacement가 아니라 semantic three-way repair가 필요하다. SHA-256은 byte identity만 증명하며 buyer/legal truth를 만들지 않는다. | +| Documentation authority | PR #547 | 이 문서 lane은 current protected main, central owner movement와 active PR heads를 다시 결합하는 전용 repair lane이다. 이 파일 자체가 stale protected SHA/PR head를 남기면 code-current 조건을 만족하지 못한다. | +| Release/publication | fresh release authority는 종료 sweep에서 별도 확인한다 | Source/CI readiness를 version/tag/package/image/SBOM/provenance/reproducibility/rollback을 갖춘 immutable release로 자동 승격하지 않는다. | ## DDD and ownership baseline -Noema의 canonical Core Domain은 Agent Runtime과 Workflow / Task Execution이다. State / Checkpoint, Tool / Capability Boundary, Isolation Integration, Policy / Approval, Observability, Recovery는 그 lifecycle을 보조하는 bounded context다. Aggregate와 invariant는 최소 transaction boundary에서 유지하며 durable effect ownership을 외부 서비스의 domain truth와 섞지 않는다. +Noema의 Core Domain은 **Agent Runtime**과 **Workflow / Task Execution**이다. **Tool / Capability Boundary**, **State / Checkpoint**, **Isolation Integration**, **Policy / Approval**, **Observability**, **Recovery**는 명시적 bounded context로 유지한다. Aggregate와 invariant는 최소 transaction boundary에서 유지하고 side-effect authority, execution identity, claim/checkpoint CAS를 foreign domain truth와 혼합하지 않는다. -Context Map의 외부 관계는 ACL/consumer 형태가 기본이다. `contextual-orchestrator`는 LLM provider/model discovery, routing, retry/failover와 credential authority를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave는 격리·보안·outbound authority를 소유한다. Keyverse는 identity backend owner다. Context Fabric 계열은 released/versioned contract만 소비한다. Noema는 이 owner들의 source를 복사하거나 cross-service SQL, mutable sibling PR head를 runtime truth로 사용하지 않는다. +Context Map의 외부 관계는 versioned contract/ACL consumer가 기본이다. `contextual-orchestrator`는 LLM provider/model discovery, routing, test-time compute, retry/failover와 provider credentials를 소유한다. `.github`는 reusable workflow와 organization control-plane source를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave/AppGuardrail 계열은 각자의 isolation/security/outbound truth를 소유한다. Keyverse는 identity backend owner다. `context-graph-contracts`와 Enterprise Architecture 계열은 released/versioned contract만 소비하며 mutable sibling PR head, source copy, cross-service SQL을 runtime truth로 사용하지 않는다. -## Protected reviewer and Context Fabric convergence +ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `Proposed`를 유지한다. 이미 protected인 runtime/context-consumer slice를 Proposed라는 이유로 candidate로 되돌리지 않으며, 아직 candidate인 durable workflow state를 문서만으로 Accepted 처리하지 않는다. -PR #546은 semantic CodeGraph admission과 current-head retrieval provenance의 canonical repair lane이었고 protected main에 통합됐다. 유지해야 할 causal lineage는 complete manifest context, fail-before-execution admission, untrusted prompt-data isolation, Linux exact Git-path identity, hosted coverage/docstring 수리와 exact `7d3de5a...` terminal GREEN이다. 이후 #544는 그 reviewer truth 위에서 Context Graph consumer의 immutable release-source authority를 강화했고 exact `35ab2d08...`의 current CI/reviewer/Security/image GREEN과 zero unresolved threads 뒤 normal merge로 `main@71cd0fb...`가 됐다. +## Durable workflow acceptance baseline -#544가 protected truth가 된 뒤 candidate들은 protected head를 ordinary/non-force ancestry로 수렴시켰고 predecessor result는 전용하지 않는다. #535는 `9dfc433...` exact hosted reviewer에서 599 tests 중 598 pass, 100% line+branch coverage 뒤 stale `SAFE_REVIEW_LABEL` inheritance expectation 하나만 실패했고 protected CodeGraph least-authority environment를 넓히지 않은 test-only `f20927d...`로 수리됐다. Restack 과정에서 누락된 branch-local release traceability도 이번 cycle에서 복구했다. #535 `0a125fd...`는 reviewed `orchestrator/free` routing/privacy note를, #536 `908d9cc...`는 provider-neutral `noema-core` package note를 protected CHANGELOG history 위에 되살렸다. Source gap은 닫혔지만 새 exact-head CI/reviewer/Security/image가 terminal GREEN이 되기 전에는 promotion authority가 아니다. +PR #542의 private `NOEMA_WORKFLOW_STATE` boundary는 Noema의 Workflow / Task Execution + State / Checkpoint authority만 운반한다. Arbitrary caller structural object 전체를 wire authority로 취급하지 않는다. Operation discriminator는 한 번 snapshot되고 operation별 allowlist가 top-level payload를 제한하며, nested claim/checkpoint도 canonical fields만 projection한다. Malformed non-record input은 거짓-valid object로 정규화하지 않고 Durable Object validation에 남긴다. -ADR 0012도 post-merge truth에 맞춘다. #544의 Context Graph release-source-attestation과 envelope-preserving admission은 더 이상 candidate가 아니라 protected consumer behavior이고, ADR은 전체 runtime-orchestration decision이 아직 넓기 때문에 `Proposed`다. Proposed lifecycle은 이미 protected인 slice를 candidate로 되돌리지 않는다. - -## Durable workflow transport boundary - -PR #542의 private `NOEMA_WORKFLOW_STATE` adapter는 Workflow / Task Execution과 State / Checkpoint authority를 Durable Object serialization point에 결합하지만 arbitrary caller object 전체를 transport할 권위는 갖지 않는다. TypeScript structural typing은 runtime exact-object 보장을 제공하지 않는다. - -RED `19c6fa2e...` → `10708af3...`는 top-level object spread를 operation-indexed allowlist로 바꿨다. RED `00e871e1...` → `1f7f5b91...`는 `command.operation`을 한 번 snapshot해 serialized discriminator와 payload-field selection이 갈라지지 않도록 했다. RED `e88a3796...`와 `81abbab5...`는 valid nested claim/checkpoint 안 extra field/getter를 고정했고, production `037ec4e2...`는 claim을 `executionId/planId/taskId/claimId/attempt/effect`, checkpoint 계열을 `executionId/sequence/stateDigest`로 projection한다. `f915d136...`는 malformed non-record nested authority를 거짓-valid object로 정규화하지 않고 Durable Object validator에 남긴다. - -Hosted `037ec4e2...` 이후 retained-plan/missing-state와 storage-unavailable paths를 test-only `74a9493...`가 수리했다. 다음 hosted CI는 570 files / 4,045 tests와 statements/functions/lines 100%를 통과했지만 branch 99.98%에서 마지막 unexpected-fault arm을 특정했고 `6793a320...`이 repository seam fault injection으로 private `500 internal_error` containment를 고정했다. Current `6953eaad...`은 이 full delta를 protected #544 main에 non-force restack한 exact candidate다. +Hosted evidence는 retained-plan/missing-state, storage outage `503 storage_unavailable`, unexpected repository/runtime fault `500 internal_error`까지 분리해 fail closed하도록 진전했다. 이 candidate가 protected truth가 되려면 current protected ancestry, unchanged exact-head application/reviewer/Security/image와 100% owned production coverage/docstring/edge gates, zero valid unresolved findings가 다시 필요하다. ## Commercial and buyer gaps -| Priority | Gap | Buyer/operator impact | Current owner | Completion evidence | +| Priority | Gap | Buyer/operator impact | Canonical owner / lane | Completion evidence | | --- | --- | --- | --- | --- | -| P0 | Post-#544 exact-head evidence convergence | Protected reviewer/Context Fabric source가 정리돼도 오래된 PR evidence를 전용하면 같은 governance gap이 남는다. | affected open PRs | protected-main ancestry + current exact-head terminal CI/reviewer/Security/image/package/SBOM/vulnerability/provenance + zero valid findings | -| P0 | Atomic durable workflow authority | Duplicate claim/effect, ambiguous recovery 또는 over-broad private transport가 long-running workflow/audit boundary를 훼손할 수 있다. | issue #541 / PR #542 | single-winner claim, checkpoint CAS, effect-start/recovery/cancellation, payload minimization, missing-state/storage-outage/unexpected-fault fail-closed regressions + exact-head gates + protected merge | -| P0 | GPL-family development/build path | Procurement, redistribution review, clean SBOM acceptance를 막을 수 있다. | issue #531 / PR #540 | exact-base regenerated lockfile policy + restack `197fb05d...` + fresh exact-head gates + protected integration | -| P0 | Reviewer/Maintainer App activation | Least-privilege production publication identity를 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation + bounded publication/rollback receipt | -| P0 | Protected governance target | Required PR/review/history-rewrite/deletion controls가 없거나 미증명인 상태면 evidence chain을 우회할 수 있다. | issue #27 | stronger live ruleset/protection configuration + direct-push/approval/stale-review/conversation/force-push/deletion behavioral proof | -| P1 | Reviewer finding source identity | Coerced/invalid line identity가 failed-check RCA 또는 inline review publication에 들어가면 current-head evidence가 GitHub의 실제 source anchor와 어긋날 수 있다. | PR #548 | exact-positive-integer/None schema admission regression + current exact-head reviewer/application/Security/image GREEN + protected integration | -| P1 | Reviewer routing/package release traceability | #535/#536의 branch-owned behavior는 CHANGELOG에 복구됐지만 아직 protected/released truth는 아니다. | PR #535 / #536 | restored exact Unreleased bullets + current exact-head terminal gates + protected merge + immutable release evidence | -| P1 | Work-conserving commercial loop | Automation parse/concurrency regression은 open-PR repair와 buyer-gap dispatch를 동시에 정지시킬 수 있다. | #550 | protected #544 ancestry + exact-head terminal gates + concurrency/path-isolation regressions + protected integration | -| P1 | Commercial acquisition evidence authority | Retained artifact digest만으로 business/legal truth를 위조해선 안 되며 acquisition evidence는 byte integrity와 external authenticity를 분리해야 한다. | issue #5 / PR #526 | `{path, sha256}` retained-source authority + filesystem race hardening + current exact-head gates + protected integration | -| P1 | Immutable Context Graph producer contract | Noema consumer ACL은 protected됐지만 producer의 실제 immutable release evidence가 없으면 production dependency authority가 성립하지 않는다. | producer owner | immutable package/SBOM/provenance/source-manifest/attestation/conformance/envelope-preserving admission evidence | -| P1 | Patch-validator publication | Reviewed source와 shipped image의 동일성이 증명되지 않는다. | issue #66 | immutable digest, signature/attestation, activation/rollback receipt | -| P1 | Authentic production KPI | Synthetic/short-window metrics로 enterprise reliability를 주장할 수 없다. | issue #3 | >=30-day production-origin provenance-bound KPI | -| P1 | Release/deployment/acquisition evidence | merged source만으로 transferable commercial product가 되지 않는다. | issue #5 | immutable release + governed deployment + rollback + customer/revenue/support/rights evidence | - -## Performance, test and release gate - -Applicable buyer-facing web/API path는 async+k6/E2E로 현실 workload에서 p95 ≤20 ms를 증명해야 하며 초과 시 profile 후 hot path를 수리한다. Sample 축소, 측정 제외, 비현실 cache warm-up으로 gate를 통과시키지 않는다. Owned production docstring/rustdoc, test, edge-case coverage는 각각 100%를 유지한다. Security/performance/math core에 새 hot path가 생기면 Rust-first 원칙과 CPU multithreading, 필요한 GPU parity를 검토한다. - -Release는 protected exact head에서만 version/CHANGELOG/tag/package/image/SBOM/provenance/reproducibility/rollback을 하나의 immutable evidence chain으로 만든다. 현재 open candidate와 release evidence gap이 남아 있으므로 release collection의 부재를 source readiness로 위장하지 않는다. +| P0 | Current-main convergence | Valid deltas가 stale base에 남으면 exact-head evidence와 merge authority가 갈라진다. | affected open PRs | ordinary/non-force semantic restack, current merge-base, unchanged exact-head terminal gates, zero valid findings | +| P0 | Atomic durable workflow authority | duplicate claim/effect, ambiguous recovery 또는 over-broad state transport가 long-running execution을 훼손한다. | issue #541 / #542 | single-winner claim, checkpoint CAS, recovery/cancellation/effect evidence, payload minimization, fail-closed fault classes, exact-head GREEN, protected merge | +| P0 | GPL-family development/build path | procurement·redistribution·clean-SBOM acceptance를 막는다. | issue #531 / #540 | current-base lock policy, regenerated deterministic lockfile, dependency/license/security/image/SBOM/provenance gates, protected merge | +| P0 | Exact central OIDC source pin | stale complete-source identity는 legitimate review를 거부하거나 equality 완화를 유도한다. | #527 + `.github` owner | audited current central protected SHA, exact Noema pin, current-head GREEN, protected merge | +| P0 | Reviewer/Maintainer production identity | independent least-authority review/publication을 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation과 bounded publication/recovery receipts | +| P0 | Governance enforceability | source test만으로 required review/history/rewrite/deletion 통제를 입증할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence와 required workflow behavior | +| P1 | Patch-validator publication | source image가 실제 immutable publication/signing/activation됐는지 구매자가 확인할 수 없다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt와 rollback | +| P1 | Authentic operating evidence | fixture는 30-day reliability/performance/customer/revenue truth가 아니다. | issues #3 / #5 | production-origin time-bounded KPI, customer/revenue/legal transfer authority와 integrity binding | ## Completion discipline -Gap은 authoritative completion evidence가 current exact source/head에 결합될 때만 닫는다. Queued/skipped/cancelled/stale checks, predecessor results, documentation existence, synthetic fixtures, model judgement, mutable sibling source는 completion evidence가 아니다. Waiting lane은 다른 안전한 Noema-owned repair를 막지 않는다. 외부 permission/legal/security/product 결정만 실제 blocker로 남긴다. \ No newline at end of file +각 gap은 표의 authoritative evidence가 current source/head에 실제로 결합될 때만 닫는다. Workflow가 exact head를 checkout한 뒤 실패하면 code/config/log RCA를 수행하고, runner를 얻지 못한 queued 상태는 control-plane evidence로만 취급한다. Queue를 줄이기 위한 source churn, `paths-ignore`, runner-selector 우회, self-approval, force push/destructive rebase, required-gate weakening은 완료 수단이 아니다. + +Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. From 1766380bb8716294a29058c086584acba41b8734 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 17:13:19 +0900 Subject: [PATCH 48/85] docs: preserve current rights evidence while refreshing toolchain gap --- docs/LICENSING_AND_IP_TRANSFER.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/LICENSING_AND_IP_TRANSFER.md b/docs/LICENSING_AND_IP_TRANSFER.md index 5553bc952..de8bfc31e 100644 --- a/docs/LICENSING_AND_IP_TRANSFER.md +++ b/docs/LICENSING_AND_IP_TRANSFER.md @@ -40,6 +40,7 @@ For a package that is actually distributed through npm: - use a valid **SPDX** expression when approved terms have one; - use `SEE LICENSE IN ` for approved custom terms stored in a bounded repository file; - use `UNLICENSED` only when package metadata intentionally grants no use rights; +- record the SHA-256 of the exact retained `package.json` bytes in transfer evidence so package-publication metadata cannot be substituted after review; - regenerate `package-lock.json` whenever root package metadata changes so tracked lock metadata stays exact. For current Noema, `"private": true` plus absence of an npm distribution channel means root `LICENSE` is the controlling source grant. `private` itself is still only a publication safeguard; it neither grants nor narrows Apache-2.0 source rights. @@ -99,7 +100,7 @@ The protected `package-lock.json` contains optional development/build packages o Repository evidence also shows that the patch-validator runtime-image boundary explicitly excludes `wrangler`, `workerd`, and `miniflare`; therefore this finding must not be overstated as proof that LGPL code is bundled into that runtime image. It is nevertheless an inbound development/build-tooling policy gap because ContextualWisdomLab does not accept GPL-family software as the normal dependency baseline. -The active owner lane is issue #531 / PR #540. PR #540 replaces the intended Wrangler/Miniflare/Sharp/Libvips toolchain with direct `workerd`/`esbuild` and a bounded Cloudflare API adapter, but its committed lockfile is still stale until deterministic regeneration completes. Distribution/acquisition readiness therefore remains fail closed until one unchanged exact head proves the dependency path removed and all required package, Worker dev/deploy, security, reviewer, image, SBOM, vulnerability, provenance, and license-inventory gates are terminal clean. +The active owner lane is issue #531 / PR #540. PR #540 replaces the intended Wrangler/Miniflare/Sharp/Libvips toolchain with direct `workerd`/`esbuild` and a bounded Cloudflare API adapter, but its exact-base lockfile policy must be rebound after protected-main movement and its unchanged current head must pass package, Worker dev/deploy, security, reviewer, image, SBOM, vulnerability, provenance, and license-inventory gates before integration. Distribution/acquisition readiness therefore remains fail closed until that protected evidence exists. Unknown or unresolved obligations fail closed for distribution/acquisition readiness. Vulnerability or provenance success does not prove license compatibility. @@ -126,7 +127,7 @@ The machine-checkable transfer contract binds, at minimum: - repository identity and exact source/release revision; - approved owner/legal decision identifier; - controlling `LICENSE`/custom-rights file path and SHA-256 when applicable; -- package-publication rights declaration plus metadata hash when a package is actually distributed; +- package-publication rights declaration plus SHA-256 of the exact retained `package.json` bytes when a package is actually distributed; - exact-release `artifact_rights_metadata` path and SHA-256 when an artifact exposes rights metadata; - exact-release SBOM identity; - dependency-license and NOTICE/attribution artifact identities; @@ -159,23 +160,23 @@ owner source-license decision Each arrow requires independent identity/consistency evidence. A mismatch, missing required record, malformed/ambiguous JSON, or unresolved right is a fail-closed condition. -## 8. Current evidence and residual gap — 2026-09-04 +## 8. Current evidence and residual gap — 2026-09-06 -Protected `main@bbee33270b496255d785c766fc009a5f9162a695` contains the owner-selected source-rights posture integrated through #530: +Protected `main@5b8e620dbb01a794c1a38535bbcc32e41a80d0df` contains the owner-selected source-rights posture integrated through #530: - root `LICENSE`: Apache License 2.0; - root `README.md`: customer-facing Apache-2.0 source-license statement and separate third-party obligation boundary; -- `package.json`: remains private and lock-stable; no npm package distribution claim is introduced. +- `package.json`: remains private; no npm package distribution claim is introduced. That source grant is protected truth. It does not transfer later evidence classes into PASS. Current residual gaps remain deliberately separate: -- issue #531 / PR #540 owns removal of the GPL-family development/build tooling path; candidate source replacement exists, but canonical lock regeneration and unchanged exact-head verification are not complete; +- issue #531 / PR #540 owns removal of the GPL-family development/build tooling path; candidate source replacement exists, but current-base lock policy and unchanged exact-head verification are not complete; - exact-release dependency/NOTICE evidence must still prove the actual distributed artifact contents; - contributor ownership/assignment and acquisition-transfer evidence remain separate from source licensing; -- release/publication/deployment evidence remains separate from repository-source rights, and no GitHub release currently exists; -- no source file, README sentence, scanner result, workflow success, or model judgement may upgrade those missing evidence classes into a commercial or legal PASS. +- release/publication/deployment evidence remains separate from repository-source rights; +- no source file, README sentence, scanner result, workflow success, SBOM, or model judgement may upgrade those missing evidence classes into a commercial or legal PASS. Issue #5 carries acquisition owner/legal and ownership/assignment evidence. Issue #66 carries remaining release/publication, NOTICE and provenance/activation boundaries. Issue #531 owns the GPL-family development/build-tool replacement. The protected source-license decision closes only the source-grant gap; it does not close those later evidence families. From a87e2f1c7d95ecb2d2523167075e01644f435a54 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 17:44:52 +0900 Subject: [PATCH 49/85] docs: refresh commercial gap exact-head authority --- docs/product-technical-gap-baseline.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e23fadaba..9344e15b0 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -17,10 +17,10 @@ | Workflow-concurrency candidate | PR #550 exact `12f8e3d9e74776156c9f70d29a5ef0ae0d25a96c` | PR supersession만 cancel하고 push/manual run identity를 보존하는 Noema repository-local concurrency delta를 protected #552 위에 non-force restack했다. Fresh exact-head 네 workflow는 queued다. | | Reviewer evidence candidate | PR #548 exact `75f93fd5d16f3b56eafd0f12a0eabe14ee277766` | Failed-check evidence를 current-head source finding에 결합하고 `Finding.line`을 exact positive integer/None으로 제한하는 branch-owned delta를 protected #552 위에 restack했다. Fresh exact-head 네 workflow는 queued다. | | Small post-#552 restacks | #539 `bb2f3b8bc734dc3926f2a0ac6b0265fae91040b3`; #543 `a6970ca89ee589368799b8c4b0656dec7b87c2a8`; #553 `722fa1202a51cc774cc71af1c0a0e34429c81bdd` | 각각 canonical temp-root fixture, required-gate suppression 금지 regression, automation threat-model correction을 protected #552 위에 ordinary/non-force restack했다. 모든 fresh exact-head CI/reviewer/Security/image가 queued라 predecessor GREEN을 전용하지 않는다. | -| Orchestrator/free lane | PR #535 exact `0a125fd51347c090b6265d9c1e25edf1fe049a43` | Branch-owned reviewer/config/privacy/tool boundary와 protected main이 `AGENTS.md`, `CLAUDE.md`, product gap baseline에서 겹친다. `SAFE_REVIEW_LABEL` ambient inheritance expectation은 이미 test-only로 수리됐지만 current protected main에 대한 semantic three-way restack이 아직 필요하다. CO가 provider/model authority를 계속 소유한다. | -| Toolchain/license lane | PR #540 exact `197fb05d83cf662ecfe8c3fa3fa00929579a5566` | `workerd@1.20260625.1` + `esbuild@0.28.1` candidate는 유효하지만 `.github/lockfile-change-policy.json.baseSha`가 아직 `71cd0fb...`라 current `main@5b8e620...` 기준 stale authority다. Package/lockfile bytes는 protected #552로 인해 변하지 않았으므로 exact base rebind와 product-gap semantic merge가 필요하다. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `6953eaad292ea88d1b50bcb67011b473fb0eeb28` | Atomic claim, effect-start evidence, checkpoint CAS, recovery/cancellation, operation-stable payload minimization, nested projection, missing-state/storage-outage/unexpected-fault fail-closed contract는 Noema-owned candidate다. Protected main과 product-gap baseline이 겹쳐 semantic restack이 필요하다. | -| Acquisition evidence | PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02` | `{path, sha256}` retained-source authority와 filesystem race/fail-closed repairs는 유효하다. Current protected acquisition/licensing evidence changes와 overlap하므로 wholesale tree replacement가 아니라 semantic three-way repair가 필요하다. SHA-256은 byte identity만 증명하며 buyer/legal truth를 만들지 않는다. | +| Orchestrator/free lane | PR #535 exact `99e44d0d4e0ae564f582a6d4587d35db449598aa` | Branch-owned reviewer/config/privacy/tool boundary와 protected #552 cross-session guidance를 semantic merge했다. `SAFE_REVIEW_LABEL` ambient inheritance expectation은 test-only로 least-authority 계약에 맞췄고 global product-gap baseline은 이 lane에서 제거했다. Current main 대비 92 ahead / 0 behind이며 fresh exact-head CI는 pending, reviewer/Security/image는 queued다. CO가 provider/model authority를 계속 소유한다. | +| Toolchain/license lane | PR #540 exact `591795afbc79128a48e814cdfa7869c8b9785082` | `workerd@1.20260625.1` + `esbuild@0.28.1` candidate와 lockfile policy를 current `main@5b8e620...`에 semantic restack했다. `.github/lockfile-change-policy.json.baseSha`는 current protected base로 rebind됐고 package/top-level digest evidence는 유지됐다. Current main 대비 37 ahead / 0 behind이며 fresh exact-head 네 workflow는 queued다. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `93bfa5e528f0fb91bcd7ac41a8c2e870a4c06f56` | Atomic claim, effect-start evidence, checkpoint CAS, recovery/cancellation, operation-stable payload minimization, nested projection, missing-state/storage-outage/unexpected-fault fail-closed contract는 Noema-owned candidate다. Complete durable-workflow delta를 current protected main에 ordinary/non-force restack했고 global product-gap baseline 중복은 제거했다. Current main 대비 133 ahead / 0 behind이며 fresh exact-head 네 workflow는 queued다. | +| Acquisition evidence | PR #526 exact `21ead9fd25df3a7e585ce0cef66221d69e4ae9cf` | `{path, sha256}` retained-source authority와 protected distributable `package_metadata.sha256` 계약을 source-level로 합성했다. `readJson()` raw-byte authority, protected `audit_status` runner fixture와 #526 `O_NONBLOCK` regression을 함께 보존했고 global baseline은 protected bytes로 되돌렸다. Ordinary two-parent restack은 current main 대비 45 ahead / 0 behind이며 fresh reviewer/Security/image/CI `34022631401/34022631419/34022631431/34022631428`은 queued다. SHA-256은 byte identity만 증명하며 buyer/legal truth를 만들지 않는다. | | Documentation authority | PR #547 | 이 문서 lane은 current protected main, central owner movement와 active PR heads를 다시 결합하는 전용 repair lane이다. 이 파일 자체가 stale protected SHA/PR head를 남기면 code-current 조건을 만족하지 못한다. | | Release/publication | fresh release authority는 종료 sweep에서 별도 확인한다 | Source/CI readiness를 version/tag/package/image/SBOM/provenance/reproducibility/rollback을 갖춘 immutable release로 자동 승격하지 않는다. | From fbd2d7b11c3ed7e7f76e45663f7da0c1a50a4d34 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 17:46:06 +0900 Subject: [PATCH 50/85] test(docs): bind active-work contract to current protected heads --- ...documentation-active-work-contract.test.ts | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index b300cc048..ec965e962 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -68,16 +68,19 @@ describe("canonical active-work documentation", () => { it("keeps the product-technical baseline on current protected and active owner truth", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); - expect(baseline).toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); - expect(baseline).toContain("#537 GitHub installation-token stateless-format regression"); - expect(baseline).toContain("PR #544"); + expect(baseline).toContain("`main@5b8e620dbb01a794c1a38535bbcc32e41a80d0df`"); + expect(baseline).toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); + expect(baseline).toContain("PR #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`"); + expect(baseline).toContain("PR #535 exact `99e44d0d4e0ae564f582a6d4587d35db449598aa`"); + expect(baseline).toContain("PR #540 exact `591795afbc79128a48e814cdfa7869c8b9785082`"); + expect(baseline).toContain("PR #542 exact `93bfa5e528f0fb91bcd7ac41a8c2e870a4c06f56`"); + expect(baseline).toContain("PR #526 exact `21ead9fd25df3a7e585ce0cef66221d69e4ae9cf`"); + expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); - expect(baseline).not.toContain("`main@bbee33270b496255d785c766fc009a5f9162a695`"); - expect(baseline).not.toContain("#537 must not inherit"); - expect(baseline).toContain("Apache-2.0 source grant | protected main"); - expect(baseline).toContain("issue #531 / PR #540"); - expect(baseline).toContain("issue #541 / PR #542"); - expect(baseline).toContain("PR #546"); + expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); + expect(baseline).toContain("issue #531 / #540"); + expect(baseline).toContain("issue #541 / #542"); + expect(baseline).toContain("#546 semantic reviewer"); expect(baseline).not.toContain("README/license candidate truth is PR #530"); expect(baseline).not.toContain("PR #530 is open"); expect(baseline).not.toContain("Apache-2.0 candidate truth on #530"); From f82fd752c56f65df6f0be900cb08112c9ef6d887 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 19:20:36 +0900 Subject: [PATCH 51/85] docs: record post-527 exact candidate heads --- docs/product-technical-gap-baseline.md | 69 +++++++++---------- ...documentation-active-work-contract.test.ts | 11 +-- 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 098da3c91..95971b3b5 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -2,55 +2,54 @@ ## Authority and update rule -이 문서는 Noema의 protected truth, active candidate, transient workflow evidence, foreign-owner authority를 분리해 추적한다. 저장소 문서와 테스트는 해당 revision의 source contract만 증명하며, predecessor GREEN·queued/skipped/cancelled run·문서 존재·model judgement를 다음 단계의 권위로 전용하지 않는다. PR은 live protected base와 unchanged exact head에서 다시 검증하고, 외부 제품의 domain truth·LLM provider routing·quarantine/security·outbound authority는 Noema source로 복제하지 않는다. +이 문서는 Noema의 protected truth, active candidate, transient workflow evidence, foreign-owner authority를 분리한다. 저장소 문서와 테스트는 해당 revision의 source contract만 증명하며 predecessor GREEN, queued/skipped/cancelled run, scanner/model judgement를 다음 revision의 권위로 전용하지 않는다. 외부 제품의 domain truth, LLM provider routing, quarantine/security, outbound authority는 Noema source로 복제하지 않는다. -현재 protected-source snapshot은 `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`다. 이 revision은 protected #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward를 포함한다. #527은 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`에서 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 current unresolved review thread가 0인 상태에서 정상 merge되어 protected `e26d771...`가 됐다. +현재 protected-source snapshot은 `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward를 포함한다. #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 unresolved review thread가 0인 상태에서 정상 merge됐다. -## Live observation — 2026-09-06 KST +Central workflow authority는 `.github/main@43024633eba9d96b0456970391360da5a171fbda`다. Central #1953은 Strix sandbox-bootstrap retry/verdict owner repair이며 Noema는 그 retry/provider/security 구현을 복제하지 않는다. Protected Noema의 OIDC `job_workflow_sha` pin은 이 complete central source commit에 exact equality로 결합돼 있다. -| Authority | Exact observation | Consequence | -| --- | --- | --- | -| Protected Noema | `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3` | Agent Runtime/Workflow foundation, semantic reviewer, Context Graph release-consumer admission, runner-assignment evidence, cross-session coordination과 current central-workflow OIDC pin이 protected truth다. | -| Central workflow owner | `.github/main@43024633eba9d96b0456970391360da5a171fbda` | Central #1953은 Strix sandbox-bootstrap retry/verdict owner repair다. Noema가 그 retry/provider/security 구현을 복제하지 않는다. Current protected Noema OIDC trust는 이 complete central source commit에 exact equality로 결합돼 있다. | -| Shared Kernel candidate | PR #536 exact `a1172fc2d50ae28b2e67c1696ce0578c16c5a6d9` | `noema-core`는 이미 해석된 PydanticAI `Model`을 받아 provider-neutral `Agent(..., retries=0)`만 구성한다. Provider discovery/credential/routing/retry/failover는 contextual-orchestrator authority다. #527 merge 이후 current protected ancestry를 다시 포함해야 한다. | -| Workflow-concurrency candidate | PR #550 exact `12f8e3d9e74776156c9f70d29a5ef0ae0d25a96c` | PR supersession만 cancel하고 push/manual run identity를 보존하는 Noema repository-local concurrency delta다. #527 merge 이후 current protected ancestry에서 fresh exact-head evidence가 필요하다. | -| Reviewer evidence candidate | PR #548 exact `75f93fd5d16f3b56eafd0f12a0eabe14ee277766` | Failed-check evidence를 current-head source finding에 결합하고 `Finding.line`을 exact positive integer/None으로 제한한다. #527 merge 이후 predecessor evidence는 전용하지 않는다. | -| Small active candidates | #539 `bb2f3b8bc734dc3926f2a0ac6b0265fae91040b3`; #543 `a6970ca89ee589368799b8c4b0656dec7b87c2a8`; #553 `722fa1202a51cc774cc71af1c0a0e34429c81bdd` | 각각 canonical temp-root fixture, required-gate suppression 금지 regression, automation threat-model correction이다. Current protected main 이동 뒤 non-force convergence와 fresh gates가 필요하다. | -| Orchestrator/free lane | PR #535 exact `99e44d0d4e0ae564f582a6d4587d35db449598aa` | Branch-owned reviewer/config/privacy/tool boundary는 `orchestrator/free` consumer contract만 가진다. CO가 provider/model discovery, routing, retry/failover와 credentials를 계속 소유한다. Current protected main 이동 뒤 non-force convergence가 필요하다. | -| Toolchain/license lane | PR #540 exact `591795afbc79128a48e814cdfa7869c8b9785082` | `workerd@1.20260625.1` + `esbuild@0.28.1` candidate와 exact-base lockfile policy를 소유한다. `baseSha`는 새 protected base에서 다시 검증·rebind해야 하며 이전 generation의 GREEN은 전용하지 않는다. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `93bfa5e528f0fb91bcd7ac41a8c2e870a4c06f56` | Atomic claim, effect-start evidence, checkpoint CAS, recovery/cancellation, operation-stable payload minimization, nested projection, missing-state/storage-outage/unexpected-fault fail-closed contract는 Noema-owned candidate다. Current protected ancestry에서 다시 검증해야 한다. | -| Acquisition evidence | PR #526 exact `21ead9fd25df3a7e585ce0cef66221d69e4ae9cf` | `{path, sha256}` retained-source authority와 protected distributable `package_metadata.sha256` 계약을 합성한 lane이다. SHA-256은 byte identity만 증명하며 buyer/legal truth를 만들지 않는다. Current protected main 이동 뒤 fresh evidence가 필요하다. | -| Documentation authority | PR #547 | 이 문서 lane은 protected `e26d771...`, central owner movement와 active PR heads를 결합하는 전용 writer다. Hosted CI의 exact-string RED도 이 lane에서 causal repair하고 current main을 non-force로 restack한다. | -| Release/publication | fresh release authority는 종료 sweep에서 별도 확인한다 | Source/CI readiness를 version/tag/package/image/SBOM/provenance/reproducibility/rollback을 갖춘 immutable release로 자동 승격하지 않는다. | - -## DDD and ownership baseline +## Active candidate convergence — 2026-09-06 KST -Noema의 Core Domain은 **Agent Runtime**과 **Workflow / Task Execution**이다. **Tool / Capability Boundary**, **State / Checkpoint**, **Isolation Integration**, **Policy / Approval**, **Observability**, **Recovery**는 명시적 bounded context로 유지한다. Aggregate와 invariant는 최소 transaction boundary에서 유지하고 side-effect authority, execution identity, claim/checkpoint CAS를 foreign domain truth와 혼합하지 않는다. +#527 merge 뒤 모든 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 five-path trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. -Context Map의 외부 관계는 versioned contract/ACL consumer가 기본이다. `contextual-orchestrator`는 LLM provider/model discovery, routing, test-time compute, retry/failover와 provider credentials를 소유한다. `.github`는 reusable workflow와 organization control-plane source를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave/AppGuardrail 계열은 각자의 isolation/security/outbound truth를 소유한다. Keyverse는 identity backend owner다. `context-graph-contracts`와 Enterprise Architecture 계열은 released/versioned contract만 소비하며 mutable sibling PR head, source copy, cross-service SQL을 runtime truth로 사용하지 않는다. +| Lane | Current exact head | Owned delta / boundary | +| --- | --- | --- | +| Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | +| Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | +| Canonical temp-root fixtures | PR #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613` | Test-fixture path canonicalization only; production capability boundary unchanged. | +| Required-gate regression | PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210` | Forbids docs-only suppression of required gates. | +| Automation threat model | PR #553 exact `4659f8be879568bbd1e8fe2b7248bf4f437fa885` | Corrects historical PR #80 language; no runtime authority change. | +| Workflow concurrency | PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43` | PR-only supersession cancellation and work-conserving handoff. | +| Orchestrator/free consumer | PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | +| Acquisition evidence | PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | +| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; lock policy is rebound to current protected base before restack. | +| Durable Workflow / Task Execution | issue #541 / #542 exact `9236775bad5476a70601c3dd0331211d42eaed12` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization and fail-closed fault classes. | +| Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the heads above. | + +Fresh exact-head workflow evidence is observation-scoped and must be refetched after these restacks. No predecessor GREEN transfers. -ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `Proposed`를 유지한다. 이미 protected인 runtime/context-consumer slice를 Proposed라는 이유로 candidate로 되돌리지 않으며, 아직 candidate인 durable workflow state를 문서만으로 Accepted 처리하지 않는다. +## DDD and ownership baseline -## Durable workflow acceptance baseline +Noema의 Core Domain은 **Agent Runtime**과 **Workflow / Task Execution**이다. **Tool / Capability Boundary**, **State / Checkpoint**, **Isolation Integration**, **Policy / Approval**, **Observability**, **Recovery**는 명시적 bounded context다. Side-effect authority, execution identity, claim/checkpoint CAS는 최소 transaction boundary에서 유지하고 foreign domain truth와 혼합하지 않는다. -PR #542의 private `NOEMA_WORKFLOW_STATE` boundary는 Noema의 Workflow / Task Execution + State / Checkpoint authority만 운반한다. Arbitrary caller structural object 전체를 wire authority로 취급하지 않는다. Operation discriminator는 한 번 snapshot되고 operation별 allowlist가 top-level payload를 제한하며, nested claim/checkpoint도 canonical fields만 projection한다. Malformed non-record input은 거짓-valid object로 정규화하지 않고 Durable Object validation에 남긴다. +`contextual-orchestrator`는 provider/model discovery, routing, TTC, retry/failover와 provider credentials를 소유한다. `.github`는 reusable workflow와 organization control-plane source를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave/AppGuardrail 계열은 각 isolation/security/outbound truth를 소유한다. Keyverse는 identity backend owner다. `context-graph-contracts`와 Enterprise Architecture 계열은 released/versioned contract만 소비하며 mutable sibling PR head, source copy, cross-service SQL을 runtime truth로 사용하지 않는다. -Hosted evidence는 retained-plan/missing-state, storage outage `503 storage_unavailable`, unexpected repository/runtime fault `500 internal_error`까지 분리해 fail closed하도록 진전했다. 이 candidate가 protected truth가 되려면 current protected ancestry, unchanged exact-head application/reviewer/Security/image와 100% owned production coverage/docstring/edge gates, zero valid unresolved findings가 다시 필요하다. +ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `Proposed`를 유지한다. 이미 protected인 runtime/context-consumer slice를 Proposed라는 이유로 candidate로 되돌리지 않으며 candidate durable workflow state를 문서만으로 Accepted 처리하지 않는다. ## Commercial and buyer gaps -| Priority | Gap | Buyer/operator impact | Canonical owner / lane | Completion evidence | -| --- | --- | --- | --- | --- | -| P0 | Current-main convergence | #527 merge 뒤 유효 delta가 stale ancestry에 남으면 exact-head evidence와 merge authority가 갈라진다. | affected open PRs | ordinary/non-force semantic restack, current merge-base, unchanged exact-head terminal gates, zero valid findings | -| P0 | Atomic durable workflow authority | duplicate claim/effect, ambiguous recovery 또는 over-broad state transport가 long-running execution을 훼손한다. | issue #541 / #542 | single-winner claim, checkpoint CAS, recovery/cancellation/effect evidence, payload minimization, fail-closed fault classes, exact-head GREEN, protected merge | -| P0 | GPL-family development/build path | procurement·redistribution·clean-SBOM acceptance를 막는다. | issue #531 / #540 | current-base lock policy, regenerated deterministic lockfile, dependency/license/security/image/SBOM/provenance gates, protected merge | -| P0 | Reviewer/Maintainer production identity | independent least-authority review/publication을 운영 증거로 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation과 bounded publication/recovery receipts | -| P0 | Governance enforceability | source test만으로 required review/history/rewrite/deletion 통제를 입증할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence와 required workflow behavior | -| P1 | Patch-validator publication | source image가 실제 immutable publication/signing/activation됐는지 구매자가 확인할 수 없다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt와 rollback | -| P1 | Authentic operating evidence | fixture는 30-day reliability/performance/customer/revenue truth가 아니다. | issues #3 / #5 | production-origin time-bounded KPI, customer/revenue/legal transfer authority와 integrity binding | +| Priority | Gap | Canonical owner / lane | Completion evidence | +| --- | --- | --- | --- | +| P0 | Current-main exact-head verification | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | +| P0 | Atomic durable workflow authority | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, fault classes, exact-head GREEN, protected merge | +| P0 | GPL-family development/build path | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | +| P0 | Reviewer/Maintainer production identity | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | +| P0 | Governance enforceability | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | +| P1 | Patch-validator publication | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | +| P1 | Authentic operating evidence | issues #3 / #5 | production-origin KPI, customer/revenue/legal transfer authority with integrity binding | ## Completion discipline -각 gap은 표의 authoritative evidence가 current source/head에 실제로 결합될 때만 닫는다. Workflow가 exact head를 checkout한 뒤 실패하면 code/config/log RCA를 수행하고, runner를 얻지 못한 queued 상태는 control-plane evidence로만 취급한다. Queue를 줄이기 위한 source churn, `paths-ignore`, runner-selector 우회, self-approval, force push/destructive rebase, required-gate weakening은 완료 수단이 아니다. +Workflow가 exact head를 checkout한 뒤 실패하면 code/config/log RCA를 수행한다. Runner를 얻지 못한 queued 상태는 control-plane evidence일 뿐이다. Queue를 줄이기 위한 source churn, `paths-ignore`, runner-selector 우회, self-approval, force push/destructive rebase, required-gate weakening은 완료 수단이 아니다. Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 8742f6d1d..64830e7a9 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -71,10 +71,13 @@ describe("canonical active-work documentation", () => { expect(baseline).toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); expect(baseline).toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); expect(baseline).toContain("#527 OIDC trust roll-forward"); - expect(baseline).toContain("PR #535 exact `99e44d0d4e0ae564f582a6d4587d35db449598aa`"); - expect(baseline).toContain("PR #540 exact `591795afbc79128a48e814cdfa7869c8b9785082`"); - expect(baseline).toContain("PR #542 exact `93bfa5e528f0fb91bcd7ac41a8c2e870a4c06f56`"); - expect(baseline).toContain("PR #526 exact `21ead9fd25df3a7e585ce0cef66221d69e4ae9cf`"); + expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); + expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); + expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); + expect(baseline).toContain("PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`"); + expect(baseline).toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); + expect(baseline).toContain("PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`"); + expect(baseline).toContain("PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`"); expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); From 3ebbf9477febcef4928439ba89c8532f0fc480df Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 21:04:58 +0900 Subject: [PATCH 52/85] docs: align active owner literals with contracts --- docs/product-technical-gap-baseline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 95971b3b5..fb3478b01 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -23,7 +23,7 @@ Central workflow authority는 `.github/main@43024633eba9d96b0456970391360da5a171 | Orchestrator/free consumer | PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | | Acquisition evidence | PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | | Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; lock policy is rebound to current protected base before restack. | -| Durable Workflow / Task Execution | issue #541 / #542 exact `9236775bad5476a70601c3dd0331211d42eaed12` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization and fail-closed fault classes. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization and fail-closed fault classes. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the heads above. | Fresh exact-head workflow evidence is observation-scoped and must be refetched after these restacks. No predecessor GREEN transfers. @@ -46,7 +46,7 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | P0 | Reviewer/Maintainer production identity | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | | P0 | Governance enforceability | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | | P1 | Patch-validator publication | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | -| P1 | Authentic operating evidence | issues #3 / #5 | production-origin KPI, customer/revenue/legal transfer authority with integrity binding | +| P1 | Authentic operating evidence | issue #3 / issue #5 | production-origin KPI, customer/revenue/legal transfer authority with integrity binding | ## Completion discipline From e203bb8298b5c2cd89997005a056b5358844b078 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 21:12:10 +0900 Subject: [PATCH 53/85] test(docs): require current central trust authority --- test/documentation-active-work-contract.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 64830e7a9..49fac9ae7 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -69,8 +69,9 @@ describe("canonical active-work documentation", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); - expect(baseline).toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); + expect(baseline).toContain("`.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`"); expect(baseline).toContain("#527 OIDC trust roll-forward"); + expect(baseline).toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); @@ -80,6 +81,7 @@ describe("canonical active-work documentation", () => { expect(baseline).toContain("PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`"); expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); + expect(baseline).not.toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); expect(baseline).toContain("issue #531 / #540"); expect(baseline).toContain("issue #541 / #542"); From 8b27bac4c36b866f50e1d0b60aca971b0994a63c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 21:12:45 +0900 Subject: [PATCH 54/85] docs: record current central workflow trust prerequisite --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index fb3478b01..33118ac17 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,14 +6,15 @@ 현재 protected-source snapshot은 `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward를 포함한다. #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 unresolved review thread가 0인 상태에서 정상 merge됐다. -Central workflow authority는 `.github/main@43024633eba9d96b0456970391360da5a171fbda`다. Central #1953은 Strix sandbox-bootstrap retry/verdict owner repair이며 Noema는 그 retry/provider/security 구현을 복제하지 않는다. Protected Noema의 OIDC `job_workflow_sha` pin은 이 complete central source commit에 exact equality로 결합돼 있다. +Central workflow authority는 `.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`다. Central #1960은 Strix sandbox failure를 contextual-orchestrator/provider failure로 잘못 귀속하지 않도록 review finding 분류를 수리한 foreign-owner 변경이며 Noema는 그 provider/retry/sandbox/security 구현을 복제하지 않는다. Protected Noema는 아직 `ALLOWED_WORKFLOW_SHA=43024633eba9d96b0456970391360da5a171fbda`를 신뢰하므로 current central source와 불일치한다. PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`가 executable regression과 `wrangler.toml` pin을 `dd0b96...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. ## Active candidate convergence — 2026-09-06 KST -#527 merge 뒤 모든 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 five-path trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. +#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `dd0b96...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | +| Central workflow trust roll-forward | PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c` | `job_workflow_sha` consumer pin only; central `.github` keeps Strix/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | | Canonical temp-root fixtures | PR #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613` | Test-fixture path canonicalization only; production capability boundary unchanged. | @@ -26,7 +27,7 @@ Central workflow authority는 `.github/main@43024633eba9d96b0456970391360da5a171 | Durable Workflow / Task Execution | issue #541 / PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization and fail-closed fault classes. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the heads above. | -Fresh exact-head workflow evidence is observation-scoped and must be refetched after these restacks. No predecessor GREEN transfers. +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation. No predecessor GREEN transfers. ## DDD and ownership baseline @@ -40,6 +41,7 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Canonical owner / lane | Completion evidence | | --- | --- | --- | --- | +| P0 | Current central workflow-source trust | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | | P0 | Current-main exact-head verification | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | | P0 | Atomic durable workflow authority | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, fault classes, exact-head GREEN, protected merge | | P0 | GPL-family development/build path | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | From e2e40428c0675c7f63cf76850ff99fd0954689fd Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 6 Sep 2026 22:07:36 +0900 Subject: [PATCH 55/85] docs: restore canonical buyer-gap table contract --- docs/product-technical-gap-baseline.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 33118ac17..561bc6dc0 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -39,16 +39,16 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P ## Commercial and buyer gaps -| Priority | Gap | Canonical owner / lane | Completion evidence | -| --- | --- | --- | --- | -| P0 | Current central workflow-source trust | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | -| P0 | Current-main exact-head verification | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | -| P0 | Atomic durable workflow authority | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, fault classes, exact-head GREEN, protected merge | -| P0 | GPL-family development/build path | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | -| P0 | Reviewer/Maintainer production identity | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | -| P0 | Governance enforceability | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | -| P1 | Patch-validator publication | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | -| P1 | Authentic operating evidence | issue #3 / issue #5 | production-origin KPI, customer/revenue/legal transfer authority with integrity binding | +| Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | +| --- | --- | --- | --- | --- | --- | +| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554의 unchanged-head Security/image를 끝까지 검증하고 live base·review thread를 다시 읽은 뒤 정상 merge한다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | protected main 이동마다 branch-owned delta를 non-force restack하고 새 exact-head evidence를 생성한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판은 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, fault classes, exact-head GREEN, protected merge | 선행 trust prerequisite를 통합한 뒤 #542를 non-force restack하고 네 gate와 review authority를 다시 검증한다. | +| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | +| P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | +| P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | #554 통합 뒤 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | +| P1 | Patch-validator publication | PR-head image GREEN은 protected operational publication·signing·activation 증거가 아니다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | protected-main dispatch와 immutable publication identity가 가능한 owner control plane에서 운영 증거를 생성한다. | +| P1 | Authentic operating evidence | fixture와 repository checks로 30일 production KPI, customer/revenue, legal transfer truth를 만들 수 없다. | issue #3 / issue #5 | production-origin KPI, customer/revenue/legal transfer authority with integrity binding | governed immutable deployment 뒤 authenticated production evidence window와 transfer evidence를 수집·검증한다. | ## Completion discipline From 7a2fa97eb271430632f26bcca7bd9ef87620f7de Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 00:02:37 +0900 Subject: [PATCH 56/85] test(docs): require current live authority identities --- test/documentation-active-work-contract.test.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 49fac9ae7..f250c156e 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -69,19 +69,22 @@ describe("canonical active-work documentation", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); - expect(baseline).toContain("`.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`"); + expect(baseline).toContain("`.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`"); expect(baseline).toContain("#527 OIDC trust roll-forward"); - expect(baseline).toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); + expect(baseline).toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); expect(baseline).toContain("PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`"); - expect(baseline).toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); + expect(baseline).toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); expect(baseline).toContain("PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`"); expect(baseline).toContain("PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`"); expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); expect(baseline).not.toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); + expect(baseline).not.toContain("`.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`"); + expect(baseline).not.toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); + expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); expect(baseline).toContain("issue #531 / #540"); expect(baseline).toContain("issue #541 / #542"); From 788ab942571601ef82e93637320b19f1f17f797b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 00:03:15 +0900 Subject: [PATCH 57/85] docs(authority): follow current central and runtime candidates --- docs/product-technical-gap-baseline.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 561bc6dc0..c3902ccc6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,15 +6,15 @@ 현재 protected-source snapshot은 `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward를 포함한다. #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 unresolved review thread가 0인 상태에서 정상 merge됐다. -Central workflow authority는 `.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`다. Central #1960은 Strix sandbox failure를 contextual-orchestrator/provider failure로 잘못 귀속하지 않도록 review finding 분류를 수리한 foreign-owner 변경이며 Noema는 그 provider/retry/sandbox/security 구현을 복제하지 않는다. Protected Noema는 아직 `ALLOWED_WORKFLOW_SHA=43024633eba9d96b0456970391360da5a171fbda`를 신뢰하므로 current central source와 불일치한다. PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`가 executable regression과 `wrangler.toml` pin을 `dd0b96...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. +Central workflow authority는 `.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`다. `dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69` 이후 central #1970은 CodeQL dispatch와 required-workflow queue contract tests만 수정했고 `.github/workflows/noema-review.yml` blob은 바꾸지 않았다. Noema는 central provider/retry/sandbox/security 구현을 복제하지 않지만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 이전 `ALLOWED_WORKFLOW_SHA=43024633eba9d96b0456970391360da5a171fbda` 및 predecessor candidate `dd0b96...`은 모두 current central source와 불일치한다. PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`가 executable regression과 `wrangler.toml` pin을 `ee5567...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. ## Active candidate convergence — 2026-09-06 KST -#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `dd0b96...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. +#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `ee5567...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. #542는 retained transition suffix가 sequence 1을 포함할 때 causal root가 반드시 `initialized`여야 한다는 fail-closed provenance invariant까지 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`에서 보강했다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust roll-forward | PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c` | `job_workflow_sha` consumer pin only; central `.github` keeps Strix/provider/security implementation authority. | +| Central workflow trust roll-forward | PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da` | `job_workflow_sha` consumer pin only; central `.github` keeps Strix/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | | Canonical temp-root fixtures | PR #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613` | Test-fixture path canonicalization only; production capability boundary unchanged. | @@ -24,7 +24,7 @@ Central workflow authority는 `.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b | Orchestrator/free consumer | PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | | Acquisition evidence | PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | | Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; lock policy is rebound to current protected base before restack. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization and fail-closed fault classes. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes and retained causal-root provenance. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the heads above. | Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation. No predecessor GREEN transfers. @@ -41,9 +41,9 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554의 unchanged-head Security/image를 끝까지 검증하고 live base·review thread를 다시 읽은 뒤 정상 merge한다. | +| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554의 새 exact head 네 gate를 끝까지 검증하고 live base·central head·review thread를 다시 읽은 뒤 정상 merge한다. | | P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | protected main 이동마다 branch-owned delta를 non-force restack하고 새 exact-head evidence를 생성한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판은 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, fault classes, exact-head GREEN, protected merge | 선행 trust prerequisite를 통합한 뒤 #542를 non-force restack하고 네 gate와 review authority를 다시 검증한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained causal-root 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, causal-root provenance, fault classes, exact-head GREEN, protected merge | 선행 trust prerequisite를 통합한 뒤 #542를 non-force restack하고 네 gate와 review authority를 다시 검증한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | #554 통합 뒤 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | From a2d8b265a68fb65f58298cd7e03746cabb134dfa Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 01:03:21 +0900 Subject: [PATCH 58/85] test(docs): require current central trust authority --- test/documentation-active-work-contract.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index f250c156e..9d6c6a621 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -69,9 +69,9 @@ describe("canonical active-work documentation", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); - expect(baseline).toContain("`.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`"); + expect(baseline).toContain("`.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`"); expect(baseline).toContain("#527 OIDC trust roll-forward"); - expect(baseline).toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); + expect(baseline).toContain("PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`"); expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); @@ -83,7 +83,9 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); expect(baseline).not.toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); expect(baseline).not.toContain("`.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`"); + expect(baseline).not.toContain("`.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`"); expect(baseline).not.toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); + expect(baseline).not.toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); expect(baseline).toContain("issue #531 / #540"); From 84876b4a503d7ff4b8044a61357bd641f10b1476 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 01:03:57 +0900 Subject: [PATCH 59/85] docs: advance central trust authority baseline --- docs/product-technical-gap-baseline.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c3902ccc6..cc7c7e021 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,15 +6,15 @@ 현재 protected-source snapshot은 `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward를 포함한다. #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 unresolved review thread가 0인 상태에서 정상 merge됐다. -Central workflow authority는 `.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`다. `dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69` 이후 central #1970은 CodeQL dispatch와 required-workflow queue contract tests만 수정했고 `.github/workflows/noema-review.yml` blob은 바꾸지 않았다. Noema는 central provider/retry/sandbox/security 구현을 복제하지 않지만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 이전 `ALLOWED_WORKFLOW_SHA=43024633eba9d96b0456970391360da5a171fbda` 및 predecessor candidate `dd0b96...`은 모두 current central source와 불일치한다. PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`가 executable regression과 `wrangler.toml` pin을 `ee5567...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. +Central workflow authority는 `.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`다. `ee5567f7b15f0441a61ec2435415603b9518f1c6` 이후 central #1964는 agent-mention Noema/OpenCode dispatch의 supersession concurrency를 workflow-level로 이동하고 downstream queue/idempotency contract tests를 보강했으며 `.github/workflows/noema-review.yml` blob은 바꾸지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않지만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 이전 `ALLOWED_WORKFLOW_SHA=43024633eba9d96b0456970391360da5a171fbda`와 predecessor candidates `dd0b96...`, `ee5567...`은 모두 current central source와 불일치한다. PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`가 executable regression과 `wrangler.toml` pin을 `6e014c9...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. -## Active candidate convergence — 2026-09-06 KST +## Active candidate convergence — 2026-09-07 KST -#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `ee5567...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. #542는 retained transition suffix가 sequence 1을 포함할 때 causal root가 반드시 `initialized`여야 한다는 fail-closed provenance invariant까지 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`에서 보강했다. +#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `6e014c9...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. #542는 retained transition suffix가 sequence 1을 포함할 때 causal root가 반드시 `initialized`여야 한다는 fail-closed provenance invariant까지 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`에서 보강했다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust roll-forward | PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da` | `job_workflow_sha` consumer pin only; central `.github` keeps Strix/provider/security implementation authority. | +| Central workflow trust roll-forward | PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | | Canonical temp-root fixtures | PR #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613` | Test-fixture path canonicalization only; production capability boundary unchanged. | @@ -41,7 +41,7 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554의 새 exact head 네 gate를 끝까지 검증하고 live base·central head·review thread를 다시 읽은 뒤 정상 merge한다. | +| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `62feb057...`의 새 네 gate를 끝까지 검증하고 live base·central head·review thread를 다시 읽은 뒤 정상 merge한다. | | P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | protected main 이동마다 branch-owned delta를 non-force restack하고 새 exact-head evidence를 생성한다. | | P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained causal-root 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, causal-root provenance, fault classes, exact-head GREEN, protected merge | 선행 trust prerequisite를 통합한 뒤 #542를 non-force restack하고 네 gate와 review authority를 다시 검증한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | From 42a0f6dc5d40ffdcda651ced2104719658ba1cf8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 01:14:21 +0900 Subject: [PATCH 60/85] test(docs): require repaired workflow state head --- test/documentation-active-work-contract.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 9d6c6a621..455197357 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -76,7 +76,7 @@ describe("canonical active-work documentation", () => { expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); expect(baseline).toContain("PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`"); - expect(baseline).toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); + expect(baseline).toContain("PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`"); expect(baseline).toContain("PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`"); expect(baseline).toContain("PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`"); expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); @@ -87,6 +87,7 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); expect(baseline).not.toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); + expect(baseline).not.toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); expect(baseline).toContain("issue #531 / #540"); expect(baseline).toContain("issue #541 / #542"); From bf9a0e24068e8d9db276629afb5f4dc3cd78e374 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 01:15:08 +0900 Subject: [PATCH 61/85] docs: record workflow legacy-provenance repair --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index cc7c7e021..73e3f65d6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -10,7 +10,9 @@ Central workflow authority는 `.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a11 ## Active candidate convergence — 2026-09-07 KST -#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected `ALLOWED_WORKFLOW_SHA=43024633...`을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `6e014c9...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. #542는 retained transition suffix가 sequence 1을 포함할 때 causal root가 반드시 `initialized`여야 한다는 fail-closed provenance invariant까지 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`에서 보강했다. +#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected trust pin을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `6e014c9...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. + +#542의 predecessor `1909f232dec32cf5d5de40d927af9c22366d2a85`는 native retained sequence-one root를 `initialized`로 강제해 hostile `checkpoint_committed` substitution을 막았지만, hosted CI `34039685783`에서 지원 대상인 pre-ledger pure-work recovery regression을 실제로 깨뜨렸다. Pre-ledger record에는 역사적 `initialized` receipt가 없으므로 첫 안전 claim이 sequence-one `task_claimed`가 되는 것이 정확한 observable provenance다. Current PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`는 sequence-one root를 native `initialized` 또는 legacy-upgrade `task_claimed`로만 허용하며, 다른 root type과 field-contract 위반은 계속 fail closed한다. 이 repair는 hosted GREEN이 아니라 fresh verification 대상이다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | @@ -24,7 +26,7 @@ Central workflow authority는 `.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a11 | Orchestrator/free consumer | PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | | Acquisition evidence | PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | | Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; lock policy is rebound to current protected base before restack. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes and retained causal-root provenance. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes and legacy-compatible bounded provenance. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the heads above. | Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation. No predecessor GREEN transfers. @@ -43,7 +45,7 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | --- | --- | --- | --- | --- | --- | | P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `62feb057...`의 새 네 gate를 끝까지 검증하고 live base·central head·review thread를 다시 읽은 뒤 정상 merge한다. | | P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | protected main 이동마다 branch-owned delta를 non-force restack하고 새 exact-head evidence를 생성한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained causal-root 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, causal-root provenance, fault classes, exact-head GREEN, protected merge | 선행 trust prerequisite를 통합한 뒤 #542를 non-force restack하고 네 gate와 review authority를 다시 검증한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, fault classes, exact-head GREEN, protected merge | #542 exact `84a2cd...`에서 hosted RED 수리가 GREEN인지 먼저 검증하고, 선행 trust prerequisite 통합 뒤 non-force restack하여 네 gate와 review authority를 다시 생성한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | #554 통합 뒤 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | From 4aa7302ffde133068cc899d979d7a5112c79ecce Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 01:21:15 +0900 Subject: [PATCH 62/85] test(docs): require latest central trust authority --- test/documentation-active-work-contract.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 455197357..82ee61eb7 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -69,9 +69,9 @@ describe("canonical active-work documentation", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); - expect(baseline).toContain("`.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`"); + expect(baseline).toContain("`.github/main@9aad23c09da468716a788cfed65cd44f7d84a284`"); expect(baseline).toContain("#527 OIDC trust roll-forward"); - expect(baseline).toContain("PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`"); + expect(baseline).toContain("PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214`"); expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); @@ -84,8 +84,10 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); expect(baseline).not.toContain("`.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`"); expect(baseline).not.toContain("`.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`"); + expect(baseline).not.toContain("`.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`"); expect(baseline).not.toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); expect(baseline).not.toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); + expect(baseline).not.toContain("PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`"); expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); expect(baseline).not.toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); From bee3911d4a341bb8231d92f26871302226e4f4fe Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 01:21:50 +0900 Subject: [PATCH 63/85] docs: follow latest central trust source --- docs/product-technical-gap-baseline.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 73e3f65d6..aa4fc2d4a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,17 +6,17 @@ 현재 protected-source snapshot은 `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward를 포함한다. #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 unresolved review thread가 0인 상태에서 정상 merge됐다. -Central workflow authority는 `.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`다. `ee5567f7b15f0441a61ec2435415603b9518f1c6` 이후 central #1964는 agent-mention Noema/OpenCode dispatch의 supersession concurrency를 workflow-level로 이동하고 downstream queue/idempotency contract tests를 보강했으며 `.github/workflows/noema-review.yml` blob은 바꾸지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않지만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 이전 `ALLOWED_WORKFLOW_SHA=43024633eba9d96b0456970391360da5a171fbda`와 predecessor candidates `dd0b96...`, `ee5567...`은 모두 current central source와 불일치한다. PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`가 executable regression과 `wrangler.toml` pin을 `6e014c9...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. +Central workflow authority는 `.github/main@9aad23c09da468716a788cfed65cd44f7d84a284`다. `6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2` 이후 central #1975는 CodeQL/required-workflow queue contract test parser를 수리한 tests-only change이며 `.github/workflows/noema-review.yml` blob은 바꾸지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않지만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema와 predecessor candidates의 과거 `ALLOWED_WORKFLOW_SHA`는 current central source와 불일치한다. PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214`가 executable regression과 `wrangler.toml` pin을 `9aad23c...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. ## Active candidate convergence — 2026-09-07 KST -#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected trust pin을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 `6e014c9...`로 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. +#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected trust pin을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 계속 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. #542의 predecessor `1909f232dec32cf5d5de40d927af9c22366d2a85`는 native retained sequence-one root를 `initialized`로 강제해 hostile `checkpoint_committed` substitution을 막았지만, hosted CI `34039685783`에서 지원 대상인 pre-ledger pure-work recovery regression을 실제로 깨뜨렸다. Pre-ledger record에는 역사적 `initialized` receipt가 없으므로 첫 안전 claim이 sequence-one `task_claimed`가 되는 것이 정확한 observable provenance다. Current PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`는 sequence-one root를 native `initialized` 또는 legacy-upgrade `task_claimed`로만 허용하며, 다른 root type과 field-contract 위반은 계속 fail closed한다. 이 repair는 hosted GREEN이 아니라 fresh verification 대상이다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust roll-forward | PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | +| Central workflow trust roll-forward | PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | | Canonical temp-root fixtures | PR #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613` | Test-fixture path canonicalization only; production capability boundary unchanged. | @@ -43,7 +43,7 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `62feb057...`의 새 네 gate를 끝까지 검증하고 live base·central head·review thread를 다시 읽은 뒤 정상 merge한다. | +| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `0866c5d9...`의 새 네 gate를 끝까지 검증하고 live base·central head·review thread를 다시 읽은 뒤 정상 merge한다. | | P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | protected main 이동마다 branch-owned delta를 non-force restack하고 새 exact-head evidence를 생성한다. | | P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, fault classes, exact-head GREEN, protected merge | #542 exact `84a2cd...`에서 hosted RED 수리가 GREEN인지 먼저 검증하고, 선행 trust prerequisite 통합 뒤 non-force restack하여 네 gate와 review authority를 다시 생성한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | From 0ae16b68e9ae803ab028cf6fd718179a2df5caf3 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 03:04:08 +0900 Subject: [PATCH 64/85] test(docs): require current protected and candidate authority --- test/documentation-active-work-contract.test.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 82ee61eb7..29933cd4f 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -68,28 +68,32 @@ describe("canonical active-work documentation", () => { it("keeps the product-technical baseline on current protected and active owner truth", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); - expect(baseline).toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); - expect(baseline).toContain("`.github/main@9aad23c09da468716a788cfed65cd44f7d84a284`"); - expect(baseline).toContain("#527 OIDC trust roll-forward"); - expect(baseline).toContain("PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214`"); + expect(baseline).toContain("`main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`"); + expect(baseline).toContain("`.github/main@49eb9e7035a6994fffb5b24bf943156be27a02fb`"); + expect(baseline).toContain("#539 canonical temp-root fixture repair"); + expect(baseline).toContain("PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025`"); expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); expect(baseline).toContain("PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`"); - expect(baseline).toContain("PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`"); + expect(baseline).toContain("PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`"); expect(baseline).toContain("PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`"); expect(baseline).toContain("PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`"); expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); + expect(baseline).not.toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); expect(baseline).not.toContain("`.github/main@43024633eba9d96b0456970391360da5a171fbda`"); expect(baseline).not.toContain("`.github/main@dd0b96feded94f66ecf59b25a5a9b58cfc8b4f69`"); expect(baseline).not.toContain("`.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`"); expect(baseline).not.toContain("`.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`"); + expect(baseline).not.toContain("`.github/main@9aad23c09da468716a788cfed65cd44f7d84a284`"); expect(baseline).not.toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); expect(baseline).not.toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); expect(baseline).not.toContain("PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`"); + expect(baseline).not.toContain("PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214`"); expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); expect(baseline).not.toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); + expect(baseline).not.toContain("PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); expect(baseline).toContain("issue #531 / #540"); expect(baseline).toContain("issue #541 / #542"); From beece2d86736b2a266c5e72a48e77b0a1cd4d18f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 03:04:48 +0900 Subject: [PATCH 65/85] docs: reconcile protected and active commercial authority --- docs/product-technical-gap-baseline.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index aa4fc2d4a..dfd33e5a4 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,32 +4,31 @@ 이 문서는 Noema의 protected truth, active candidate, transient workflow evidence, foreign-owner authority를 분리한다. 저장소 문서와 테스트는 해당 revision의 source contract만 증명하며 predecessor GREEN, queued/skipped/cancelled run, scanner/model judgement를 다음 revision의 권위로 전용하지 않는다. 외부 제품의 domain truth, LLM provider routing, quarantine/security, outbound authority는 Noema source로 복제하지 않는다. -현재 protected-source snapshot은 `main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward를 포함한다. #527 exact `d289bfcdb617249c90f9fcc1ba050a59334d07fd`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 terminal success이고 unresolved review thread가 0인 상태에서 정상 merge됐다. +현재 protected-source snapshot은 `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`다. 이 revision은 기존 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward에 더해 정상 병합된 #539 canonical temp-root fixture repair를 포함한다. #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 terminal success이고 current review authority가 clear한 상태에서 normal merge됐으며 production capability boundary를 바꾸지 않았다. -Central workflow authority는 `.github/main@9aad23c09da468716a788cfed65cd44f7d84a284`다. `6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2` 이후 central #1975는 CodeQL/required-workflow queue contract test parser를 수리한 tests-only change이며 `.github/workflows/noema-review.yml` blob은 바꾸지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않지만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema와 predecessor candidates의 과거 `ALLOWED_WORKFLOW_SHA`는 current central source와 불일치한다. PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214`가 executable regression과 `wrangler.toml` pin을 `9aad23c...`에 함께 rebind하는 fail-closed consumer repair를 소유한다. +Central workflow authority는 `.github/main@49eb9e7035a6994fffb5b24bf943156be27a02fb`다. Central #1979는 13개 `tests/` 파일에서 `cancel-in-progress` 계약을 line-anchored executable assertions로 강화한 tests-only change이며 `.github/workflows/noema-review.yml` production source는 바꾸지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. 다만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 현재 trust pin과 central protected source가 불일치하는 동안 reusable reviewer exchange는 fail closed되어야 한다. PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025`가 executable regression과 `wrangler.toml` pin을 `49eb9e7...`에 함께 rebind하는 좁은 consumer repair를 소유한다. ## Active candidate convergence — 2026-09-07 KST -#527 merge 뒤 open product/reviewer/documentation lane을 current protected ancestry로 ordinary two-parent/non-force 수렴시켰다. Branch-owned delta가 #527의 trust change와 겹치지 않은 lane은 exact protected blobs를 승계했고, semantic overlap이 있는 #542 `wrangler.toml`은 `NOEMA_WORKFLOW_STATE` binding/export와 당시 protected trust pin을 함께 보존했다. #540은 exact-base lockfile policy `baseSha`를 `e26d771...`로 먼저 rebind한 뒤 restack했다. 이후 central protected source가 계속 전진해 #554가 새로운 immutable workflow-source trust prerequisite가 됐다. +#539 정상 병합으로 protected ancestry가 전진했다. 그 이전 exact-head GREEN은 새 protected ancestry의 merge authority가 아니며, #554가 central trust prerequisite로 먼저 통합된 뒤 downstream branch-owned delta를 ordinary/non-force restack하고 fresh evidence를 생성해야 한다. Cross-lane baseline은 이 PR #547 하나만 쓴다. -#542의 predecessor `1909f232dec32cf5d5de40d927af9c22366d2a85`는 native retained sequence-one root를 `initialized`로 강제해 hostile `checkpoint_committed` substitution을 막았지만, hosted CI `34039685783`에서 지원 대상인 pre-ledger pure-work recovery regression을 실제로 깨뜨렸다. Pre-ledger record에는 역사적 `initialized` receipt가 없으므로 첫 안전 claim이 sequence-one `task_claimed`가 되는 것이 정확한 observable provenance다. Current PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`는 sequence-one root를 native `initialized` 또는 legacy-upgrade `task_claimed`로만 허용하며, 다른 root type과 field-contract 위반은 계속 fail closed한다. 이 repair는 hosted GREEN이 아니라 fresh verification 대상이다. +Durable workflow lane에서는 predecessor exact head의 hosted CI `34044694252` / job `101517546387`가 checkout, live-base guard, lockfile/install/typecheck를 통과하고 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했다. 유일한 미실행 production 경로는 retained transition receipt가 record가 아닐 때 fail closed하는 branch였다. Current PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`는 production semantics를 건드리거나 100% gate를 약화하지 않고 `null` retained receipt를 거부하는 hostile regression만 추가했다. Fresh exact-head CI/reviewer/Security/image는 새 세대이며 predecessor 결과를 전용하지 않는다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust roll-forward | PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | +| Central workflow trust roll-forward | PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | -| Canonical temp-root fixtures | PR #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613` | Test-fixture path canonicalization only; production capability boundary unchanged. | | Required-gate regression | PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210` | Forbids docs-only suppression of required gates. | | Automation threat model | PR #553 exact `4659f8be879568bbd1e8fe2b7248bf4f437fa885` | Corrects historical PR #80 language; no runtime authority change. | | Workflow concurrency | PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43` | PR-only supersession cancellation and work-conserving handoff. | | Orchestrator/free consumer | PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | | Acquisition evidence | PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | -| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; lock policy is rebound to current protected base before restack. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes and legacy-compatible bounded provenance. | -| Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the heads above. | +| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; exact-base lock policy must be rebound after protected movement before integration. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, and explicit coverage of malformed retained receipts. | +| Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the protected/candidate identities above. | -Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation. No predecessor GREEN transfers. +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. ## DDD and ownership baseline @@ -43,9 +42,9 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `0866c5d9...`의 새 네 gate를 끝까지 검증하고 live base·central head·review thread를 다시 읽은 뒤 정상 merge한다. | -| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | protected main 이동마다 branch-owned delta를 non-force restack하고 새 exact-head evidence를 생성한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, fault classes, exact-head GREEN, protected merge | #542 exact `84a2cd...`에서 hosted RED 수리가 GREEN인지 먼저 검증하고, 선행 trust prerequisite 통합 뒤 non-force restack하여 네 gate와 review authority를 다시 생성한다. | +| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `bf9e46a...`의 fresh 네 gate와 live base·central head·review thread를 확인한 뒤 정상 merge한다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | #554 통합 뒤 branch-owned delta를 새 protected main에 ordinary/non-force restack하고 fresh exact-head evidence를 생성한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `2bb6076...`의 coverage repair를 fresh exact head에서 검증하고, #554 통합 뒤 non-force restack하여 네 gate와 review authority를 다시 생성한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | #554 통합 뒤 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | From 48bf2a91cbfdae7987a5953e51aab4e62278ee55 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 04:06:08 +0900 Subject: [PATCH 66/85] test(docs): require current workflow trust authority --- test/documentation-active-work-contract.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 29933cd4f..3bd7b6c88 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -69,9 +69,9 @@ describe("canonical active-work documentation", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain("`main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`"); - expect(baseline).toContain("`.github/main@49eb9e7035a6994fffb5b24bf943156be27a02fb`"); + expect(baseline).toContain("`.github/main@2396ddcaf4b6c50785548b313ccddfa1784915a2`"); expect(baseline).toContain("#539 canonical temp-root fixture repair"); - expect(baseline).toContain("PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025`"); + expect(baseline).toContain("PR #554 exact `1900f05f51efa186508ce84d281a32fc9c2b39f7`"); expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); @@ -87,10 +87,12 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("`.github/main@ee5567f7b15f0441a61ec2435415603b9518f1c6`"); expect(baseline).not.toContain("`.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`"); expect(baseline).not.toContain("`.github/main@9aad23c09da468716a788cfed65cd44f7d84a284`"); + expect(baseline).not.toContain("`.github/main@49eb9e7035a6994fffb5b24bf943156be27a02fb`"); expect(baseline).not.toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); expect(baseline).not.toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); expect(baseline).not.toContain("PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`"); expect(baseline).not.toContain("PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214`"); + expect(baseline).not.toContain("PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025`"); expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); expect(baseline).not.toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); expect(baseline).not.toContain("PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`"); From 9cb3e184fca54fd1000f1aab1d7c07c77ef897a7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 04:07:46 +0900 Subject: [PATCH 67/85] docs: align commercial gap baseline with current trust source --- docs/product-technical-gap-baseline.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index dfd33e5a4..f05973d75 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,7 +6,7 @@ 현재 protected-source snapshot은 `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`다. 이 revision은 기존 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward에 더해 정상 병합된 #539 canonical temp-root fixture repair를 포함한다. #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 terminal success이고 current review authority가 clear한 상태에서 normal merge됐으며 production capability boundary를 바꾸지 않았다. -Central workflow authority는 `.github/main@49eb9e7035a6994fffb5b24bf943156be27a02fb`다. Central #1979는 13개 `tests/` 파일에서 `cancel-in-progress` 계약을 line-anchored executable assertions로 강화한 tests-only change이며 `.github/workflows/noema-review.yml` production source는 바꾸지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. 다만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 현재 trust pin과 central protected source가 불일치하는 동안 reusable reviewer exchange는 fail closed되어야 한다. PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025`가 executable regression과 `wrangler.toml` pin을 `49eb9e7...`에 함께 rebind하는 좁은 consumer repair를 소유한다. +Central workflow authority는 `.github/main@2396ddcaf4b6c50785548b313ccddfa1784915a2`다. `49eb9e7...2396ddc`는 세 commit 앞서며 `scripts/ci/pr_review_merge_scheduler_core.py`, `tests/test_pr_review_merge_scheduler.py`, `tests/test_required_workflow_queue_contract.py`만 바꾼다. `.github/workflows/noema-review.yml`은 두 revision에서 동일 blob `f8ab55c896e8b40dde0bddd89bab37868dda9283`다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. 다만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 현재 trust pin과 central protected source가 불일치하는 동안 reusable reviewer exchange는 fail closed되어야 한다. PR #554 exact `1900f05f51efa186508ce84d281a32fc9c2b39f7`가 executable regression과 `wrangler.toml` pin을 `2396ddc...`에 함께 rebind하는 좁은 consumer repair를 소유한다. ## Active candidate convergence — 2026-09-07 KST @@ -16,7 +16,7 @@ Durable workflow lane에서는 predecessor exact head의 hosted CI `34044694252` | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust roll-forward | PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | +| Central workflow trust roll-forward | PR #554 exact `1900f05f51efa186508ce84d281a32fc9c2b39f7` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | | Required-gate regression | PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210` | Forbids docs-only suppression of required gates. | @@ -42,7 +42,7 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `bf9e46a...`의 fresh 네 gate와 live base·central head·review thread를 확인한 뒤 정상 merge한다. | +| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `1900f05...`의 fresh 네 gate와 live base·central head·review thread를 확인한 뒤 정상 merge한다. | | P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | #554 통합 뒤 branch-owned delta를 새 protected main에 ordinary/non-force restack하고 fresh exact-head evidence를 생성한다. | | P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `2bb6076...`의 coverage repair를 fresh exact head에서 검증하고, #554 통합 뒤 non-force restack하여 네 gate와 review authority를 다시 생성한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | @@ -55,4 +55,4 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P Workflow가 exact head를 checkout한 뒤 실패하면 code/config/log RCA를 수행한다. Runner를 얻지 못한 queued 상태는 control-plane evidence일 뿐이다. Queue를 줄이기 위한 source churn, `paths-ignore`, runner-selector 우회, self-approval, force push/destructive rebase, required-gate weakening은 완료 수단이 아니다. -Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. +Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. \ No newline at end of file From 129affe480107d9f1d10b5d9a09264a3a965f362 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 04:22:11 +0900 Subject: [PATCH 68/85] test(docs): require latest protected trust source --- test/documentation-active-work-contract.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 3bd7b6c88..f428a2bc1 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -69,9 +69,9 @@ describe("canonical active-work documentation", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain("`main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`"); - expect(baseline).toContain("`.github/main@2396ddcaf4b6c50785548b313ccddfa1784915a2`"); + expect(baseline).toContain("`.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351`"); expect(baseline).toContain("#539 canonical temp-root fixture repair"); - expect(baseline).toContain("PR #554 exact `1900f05f51efa186508ce84d281a32fc9c2b39f7`"); + expect(baseline).toContain("PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`"); expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); @@ -88,11 +88,13 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("`.github/main@6e014c9bae22f1e6d8302a4f1cc38f4f6a114ae2`"); expect(baseline).not.toContain("`.github/main@9aad23c09da468716a788cfed65cd44f7d84a284`"); expect(baseline).not.toContain("`.github/main@49eb9e7035a6994fffb5b24bf943156be27a02fb`"); + expect(baseline).not.toContain("`.github/main@2396ddcaf4b6c50785548b313ccddfa1784915a2`"); expect(baseline).not.toContain("PR #554 exact `12e9efe07f72acdf9f1eb0f7ef0fec54d2ad633c`"); expect(baseline).not.toContain("PR #554 exact `8501d25507d4ecd3024205a92a9a3de4157300da`"); expect(baseline).not.toContain("PR #554 exact `62feb057f4c0f00d49b9e2a747f3cec07ad0a3f8`"); expect(baseline).not.toContain("PR #554 exact `0866c5d9dcd263f1dd785164332f678f55228214`"); expect(baseline).not.toContain("PR #554 exact `bf9e46af38994e32cfc2faed3de1c565897d0025`"); + expect(baseline).not.toContain("PR #554 exact `1900f05f51efa186508ce84d281a32fc9c2b39f7`"); expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); expect(baseline).not.toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); expect(baseline).not.toContain("PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`"); From a27050ffcbb4a12e26eef97ccff8f50d7e53fc08 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 04:31:56 +0900 Subject: [PATCH 69/85] test(docs): require current central trust authority --- ...cumentation-current-trust-authority.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 test/documentation-current-trust-authority.test.ts diff --git a/test/documentation-current-trust-authority.test.ts b/test/documentation-current-trust-authority.test.ts new file mode 100644 index 000000000..9bd4370fe --- /dev/null +++ b/test/documentation-current-trust-authority.test.ts @@ -0,0 +1,18 @@ +import { readFileSync } from "node:fs"; +import { describe, expect, it } from "vitest"; + +describe("current protected trust authority documentation", () => { + it("binds the commercial gap baseline to the latest protected central source and consumer candidate", () => { + const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); + + expect(baseline).toContain( + "Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다.", + ); + expect(baseline).toContain( + "PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672`", + ); + expect(baseline).toContain( + "superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351` / PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`", + ); + }); +}); From 8010d08dcd0b4b2ab5a9880cafbd09f7a9303369 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 04:32:37 +0900 Subject: [PATCH 70/85] docs: bind gap baseline to current trust authority --- docs/product-technical-gap-baseline.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index f05973d75..043bd0862 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,17 +6,19 @@ 현재 protected-source snapshot은 `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`다. 이 revision은 기존 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward에 더해 정상 병합된 #539 canonical temp-root fixture repair를 포함한다. #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 terminal success이고 current review authority가 clear한 상태에서 normal merge됐으며 production capability boundary를 바꾸지 않았다. -Central workflow authority는 `.github/main@2396ddcaf4b6c50785548b313ccddfa1784915a2`다. `49eb9e7...2396ddc`는 세 commit 앞서며 `scripts/ci/pr_review_merge_scheduler_core.py`, `tests/test_pr_review_merge_scheduler.py`, `tests/test_required_workflow_queue_contract.py`만 바꾼다. `.github/workflows/noema-review.yml`은 두 revision에서 동일 blob `f8ab55c896e8b40dde0bddd89bab37868dda9283`다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. 다만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 현재 trust pin과 central protected source가 불일치하는 동안 reusable reviewer exchange는 fail closed되어야 한다. PR #554 exact `1900f05f51efa186508ce84d281a32fc9c2b39f7`가 executable regression과 `wrangler.toml` pin을 `2396ddc...`에 함께 rebind하는 좁은 consumer repair를 소유한다. +Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다. 직전 protected central에서 이 revision으로의 변화는 `scripts/ci/audit_org_codeql_coverage.py`와 `tests/test_audit_org_codeql_coverage.py`뿐이며 `.github/workflows/noema-review.yml`은 blob `f8ab55c896e8b40dde0bddd89bab37868dda9283`를 유지한다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. 다만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 현재 trust pin과 central protected source가 불일치하는 동안 reusable reviewer exchange는 fail closed되어야 한다. PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672`가 executable regression과 `wrangler.toml` pin을 `c9052e6...`에 함께 rebind하는 좁은 consumer repair를 소유한다. + +Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351` / PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`를 역사적 lineage로만 기록한다. 이 predecessor identity는 current merge authority나 release evidence가 아니다. ## Active candidate convergence — 2026-09-07 KST #539 정상 병합으로 protected ancestry가 전진했다. 그 이전 exact-head GREEN은 새 protected ancestry의 merge authority가 아니며, #554가 central trust prerequisite로 먼저 통합된 뒤 downstream branch-owned delta를 ordinary/non-force restack하고 fresh evidence를 생성해야 한다. Cross-lane baseline은 이 PR #547 하나만 쓴다. -Durable workflow lane에서는 predecessor exact head의 hosted CI `34044694252` / job `101517546387`가 checkout, live-base guard, lockfile/install/typecheck를 통과하고 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했다. 유일한 미실행 production 경로는 retained transition receipt가 record가 아닐 때 fail closed하는 branch였다. Current PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`는 production semantics를 건드리거나 100% gate를 약화하지 않고 `null` retained receipt를 거부하는 hostile regression만 추가했다. Fresh exact-head CI/reviewer/Security/image는 새 세대이며 predecessor 결과를 전용하지 않는다. +Durable workflow lane에서는 predecessor exact head의 hosted CI `34044694252` / job `101517546387`가 checkout, live-base guard, lockfile/install/typecheck를 통과하고 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했다. 유일한 미실행 production 경로는 retained transition receipt가 record가 아닐 때 fail closed하는 branch였다. Current PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`는 production semantics를 건드리거나 100% gate를 약화하지 않고 `null` retained receipt를 거부하는 hostile regression만 추가했다. 이후 current protected `main@8cbb07d...`가 branch ancestry보다 앞서면서 live-base guard가 RED가 됐으므로, 이는 workflow implementation defect가 아니라 계획된 post-#554 restack prerequisite다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust roll-forward | PR #554 exact `1900f05f51efa186508ce84d281a32fc9c2b39f7` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | +| Central workflow trust roll-forward | PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | | Required-gate regression | PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210` | Forbids docs-only suppression of required gates. | @@ -28,7 +30,7 @@ Durable workflow lane에서는 predecessor exact head의 hosted CI `34044694252` | Durable Workflow / Task Execution | issue #541 / PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, and explicit coverage of malformed retained receipts. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the protected/candidate identities above. | -Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #554 exact `01c0a006...` has fresh `ci 34055038152`, `reviewer-ci 34055038095`, required `Security Scan 34055038128`, and `patch-validator-image 34055038153`; all four were queued immediately after the causal repair and therefore are not GREEN evidence. ## DDD and ownership baseline @@ -42,9 +44,9 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `1900f05...`의 fresh 네 gate와 live base·central head·review thread를 확인한 뒤 정상 merge한다. | +| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `01c0a006...`의 fresh 네 gate와 live base·central head·review thread를 확인한 뒤 정상 merge한다. | | P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | #554 통합 뒤 branch-owned delta를 새 protected main에 ordinary/non-force restack하고 fresh exact-head evidence를 생성한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `2bb6076...`의 coverage repair를 fresh exact head에서 검증하고, #554 통합 뒤 non-force restack하여 네 gate와 review authority를 다시 생성한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #554 통합 뒤 #542를 새 protected main에 non-force restack하고 네 gate와 review authority를 다시 생성한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | #554 통합 뒤 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | @@ -55,4 +57,4 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P Workflow가 exact head를 checkout한 뒤 실패하면 code/config/log RCA를 수행한다. Runner를 얻지 못한 queued 상태는 control-plane evidence일 뿐이다. Queue를 줄이기 위한 source churn, `paths-ignore`, runner-selector 우회, self-approval, force push/destructive rebase, required-gate weakening은 완료 수단이 아니다. -Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. \ No newline at end of file +Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. From 232b602b33aaa9f5c3c1ed1ea539be613a5304a3 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 07:13:55 +0900 Subject: [PATCH 71/85] test(docs): require post-trust-integration authority --- ...n-post-trust-integration-authority.test.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 test/documentation-post-trust-integration-authority.test.ts diff --git a/test/documentation-post-trust-integration-authority.test.ts b/test/documentation-post-trust-integration-authority.test.ts new file mode 100644 index 000000000..c4160d8db --- /dev/null +++ b/test/documentation-post-trust-integration-authority.test.ts @@ -0,0 +1,21 @@ +import { readFileSync } from "node:fs"; +import { describe, expect, it } from "vitest"; + +describe("post-trust-integration documentation authority", () => { + it("binds the commercial gap baseline to the protected #554 merge and restacked durable workflow candidate", () => { + const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); + + expect(baseline).toContain( + "`main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`", + ); + expect(baseline).toContain( + "PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally", + ); + expect(baseline).toContain( + "PR #542 exact `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`", + ); + expect(baseline).toContain("ordinary/non-force restack"); + expect(baseline).not.toContain("#554가 central trust prerequisite로 먼저 통합된 뒤"); + expect(baseline).not.toContain("#554 통합 뒤 #542를 새 protected main에 non-force restack"); + }); +}); From ba54ec0787af1065ae82c79c2665950337d82c6b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 07:16:40 +0900 Subject: [PATCH 72/85] docs: bind gap baseline after trust integration --- docs/product-technical-gap-baseline.md | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 043bd0862..daf1ad369 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,21 +4,21 @@ 이 문서는 Noema의 protected truth, active candidate, transient workflow evidence, foreign-owner authority를 분리한다. 저장소 문서와 테스트는 해당 revision의 source contract만 증명하며 predecessor GREEN, queued/skipped/cancelled run, scanner/model judgement를 다음 revision의 권위로 전용하지 않는다. 외부 제품의 domain truth, LLM provider routing, quarantine/security, outbound authority는 Noema source로 복제하지 않는다. -현재 protected-source snapshot은 `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`다. 이 revision은 기존 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance와 #527 OIDC trust roll-forward에 더해 정상 병합된 #539 canonical temp-root fixture repair를 포함한다. #539 exact `f2a1f4d048b816d09a74bac911cca21cc9cb1613`는 application CI, reviewer-ci, required Security Scan, patch-validator-image가 terminal success이고 current review authority가 clear한 상태에서 normal merge됐으며 production capability boundary를 바꾸지 않았다. +현재 protected-source snapshot은 `main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance, 정상 병합된 #539 canonical temp-root fixture repair에 더해 #554의 exact central workflow-source trust roll-forward를 정상 병합한 protected truth다. 직전 protected `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`는 역사적 branch point로만 남으며 current merge/release authority가 아니다. -Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다. 직전 protected central에서 이 revision으로의 변화는 `scripts/ci/audit_org_codeql_coverage.py`와 `tests/test_audit_org_codeql_coverage.py`뿐이며 `.github/workflows/noema-review.yml`은 blob `f8ab55c896e8b40dde0bddd89bab37868dda9283`를 유지한다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. 다만 GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 protected Noema의 현재 trust pin과 central protected source가 불일치하는 동안 reusable reviewer exchange는 fail closed되어야 한다. PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672`가 executable regression과 `wrangler.toml` pin을 `c9052e6...`에 함께 rebind하는 좁은 consumer repair를 소유한다. +Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다. 직전 protected central에서 이 revision으로의 변화는 `scripts/ci/audit_org_codeql_coverage.py`와 `tests/test_audit_org_codeql_coverage.py`뿐이며 `.github/workflows/noema-review.yml`은 blob `f8ab55c896e8b40dde0bddd89bab37868dda9283`를 유지한다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 Noema는 exact protected central source만 fail-closed consumer trust로 받는다. PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally after application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 unchanged exact head에서 terminal success였고, protected merge commit `0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`가 `ALLOWED_WORKFLOW_SHA = c9052e607e5f3cc76e73207e7786b21500721b79`를 protected truth로 승격했다. -Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351` / PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`를 역사적 lineage로만 기록한다. 이 predecessor identity는 current merge authority나 release evidence가 아니다. +Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351` / PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`를 역사적 lineage로만 기록한다. 같은 이유로 #554 직전 protected `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`와 pre-restack PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`도 predecessor evidence일 뿐이다. 이 identity들은 current merge authority나 release evidence가 아니다. ## Active candidate convergence — 2026-09-07 KST -#539 정상 병합으로 protected ancestry가 전진했다. 그 이전 exact-head GREEN은 새 protected ancestry의 merge authority가 아니며, #554가 central trust prerequisite로 먼저 통합된 뒤 downstream branch-owned delta를 ordinary/non-force restack하고 fresh evidence를 생성해야 한다. Cross-lane baseline은 이 PR #547 하나만 쓴다. +#554가 정상 병합되어 central workflow-source trust prerequisite의 source gap은 닫혔다. 그 직후 Durable Workflow / Task Execution owner #542는 predecessor `2bb6076...`와 protected `main@0dec8d84...`를 부모로 하는 ordinary/non-force restack `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`로 전진했다. Fresh compare의 merge-base는 정확히 `0dec8d84...`, `behind_by=0`이며, branch-owned durable-state delta와 protected #539/#554 delta를 함께 보존한다. `wrangler.toml`에는 `NOEMA_WORKFLOW_STATE` / `NoemaWorkflowState`와 current `ALLOWED_WORKFLOW_SHA = c9052e6...`가 동시에 존재한다. Cross-lane baseline은 이 PR #547 하나만 쓴다. -Durable workflow lane에서는 predecessor exact head의 hosted CI `34044694252` / job `101517546387`가 checkout, live-base guard, lockfile/install/typecheck를 통과하고 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했다. 유일한 미실행 production 경로는 retained transition receipt가 record가 아닐 때 fail closed하는 branch였다. Current PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`는 production semantics를 건드리거나 100% gate를 약화하지 않고 `null` retained receipt를 거부하는 hostile regression만 추가했다. 이후 current protected `main@8cbb07d...`가 branch ancestry보다 앞서면서 live-base guard가 RED가 됐으므로, 이는 workflow implementation defect가 아니라 계획된 post-#554 restack prerequisite다. +Durable workflow lane에서는 predecessor `84a2cd056168ff90ad1c60723f20621ee8a73374`의 hosted CI `34044694252` / job `101517546387`가 checkout, live-base guard, lockfile/install/typecheck를 통과하고 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했다. 유일한 미실행 production 경로는 retained transition receipt가 record가 아닐 때 fail closed하는 branch였다. `2bb6076d911a526570176294c99fd86421c152eb`는 production semantics나 100% gate를 약화하지 않고 `null` retained receipt를 거부하는 hostile regression을 추가했다. 이후 stale-base RED는 #554 merge 뒤 ordinary/non-force restack `7f743f4...`로 causal repair되었고, predecessor reviewer/Security/image success는 새 head에 전용하지 않았다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust roll-forward | PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | +| Central workflow trust | protected `main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`; merged PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | | Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | | Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | | Required-gate regression | PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210` | Forbids docs-only suppression of required gates. | @@ -26,11 +26,11 @@ Durable workflow lane에서는 predecessor exact head의 hosted CI `34044694252` | Workflow concurrency | PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43` | PR-only supersession cancellation and work-conserving handoff. | | Orchestrator/free consumer | PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | | Acquisition evidence | PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | -| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; exact-base lock policy must be rebound after protected movement before integration. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, and explicit coverage of malformed retained receipts. | +| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; candidate must be restacked onto current protected ancestry before integration. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, explicit malformed-receipt coverage, and current protected trust-source composition. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the protected/candidate identities above. | -Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #554 exact `01c0a006...` has fresh `ci 34055038152`, `reviewer-ci 34055038095`, required `Security Scan 34055038128`, and `patch-validator-image 34055038153`; all four were queued immediately after the causal repair and therefore are not GREEN evidence. +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #542 exact `7f743f4...` has newly created `ci 34063013448`, `reviewer-ci 34063013418`, required `Security Scan 34063013567`, and `patch-validator-image 34063013474`; all four remain queued and therefore are not GREEN evidence. ## DDD and ownership baseline @@ -44,12 +44,12 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Current central workflow-source trust | Protected Noema가 현재 central reviewer source를 신뢰하지 못하면 reusable review exchange가 fail closed된다. | PR #554 | current central protected SHA, exact consumer pin, unchanged exact-head CI/reviewer/Security/image, protected merge | #554 exact `01c0a006...`의 fresh 네 gate와 live base·central head·review thread를 확인한 뒤 정상 merge한다. | -| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | #554 통합 뒤 branch-owned delta를 새 protected main에 ordinary/non-force restack하고 fresh exact-head evidence를 생성한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #554 통합 뒤 #542를 새 protected main에 non-force restack하고 네 gate와 review authority를 다시 생성한다. | -| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | 선행 protected movement 후 #540 lock policy를 새 base에 rebind하고 동일 evidence를 재생성한다. | +| P0 | Central workflow-source drift watch | Central protected source가 다시 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고, central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | #542를 포함한 downstream branch-owned delta를 current protected main에 ordinary/non-force 수렴시키고 각 새 head에서 fresh evidence를 생성한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `7f743f4...`의 새 네 gate와 live base·review authority를 확인하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge한다. | +| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #540을 current protected ancestry에 non-force restack하고 exact-base lock policy와 동일 evidence를 재생성한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | -| P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | #554 통합 뒤 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | +| P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | current protected main 기준 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | | P1 | Patch-validator publication | PR-head image GREEN은 protected operational publication·signing·activation 증거가 아니다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | protected-main dispatch와 immutable publication identity가 가능한 owner control plane에서 운영 증거를 생성한다. | | P1 | Authentic operating evidence | fixture와 repository checks로 30일 production KPI, customer/revenue, legal transfer truth를 만들 수 없다. | issue #3 / issue #5 | production-origin KPI, customer/revenue/legal transfer authority with integrity binding | governed immutable deployment 뒤 authenticated production evidence window와 transfer evidence를 수집·검증한다. | From 6a7b2a3ec599282e9793e0397b5300a98ffdf2d9 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 07:31:29 +0900 Subject: [PATCH 73/85] docs: record post-trust branch convergence --- docs/product-technical-gap-baseline.md | 30 +++++++++++++++----------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index daf1ad369..054ef622a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -12,25 +12,29 @@ Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea0 ## Active candidate convergence — 2026-09-07 KST -#554가 정상 병합되어 central workflow-source trust prerequisite의 source gap은 닫혔다. 그 직후 Durable Workflow / Task Execution owner #542는 predecessor `2bb6076...`와 protected `main@0dec8d84...`를 부모로 하는 ordinary/non-force restack `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`로 전진했다. Fresh compare의 merge-base는 정확히 `0dec8d84...`, `behind_by=0`이며, branch-owned durable-state delta와 protected #539/#554 delta를 함께 보존한다. `wrangler.toml`에는 `NOEMA_WORKFLOW_STATE` / `NoemaWorkflowState`와 current `ALLOWED_WORKFLOW_SHA = c9052e6...`가 동시에 존재한다. Cross-lane baseline은 이 PR #547 하나만 쓴다. +#554가 정상 병합되어 central workflow-source trust prerequisite의 source gap은 닫혔다. 그 직후 Durable Workflow / Task Execution owner #542는 predecessor `2bb6076...`와 protected `main@0dec8d84...`를 부모로 하는 ordinary/non-force restack `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`로 전진했다. Fresh compare의 merge-base는 정확히 `0dec8d84...`, `behind_by=0`이며, branch-owned durable-state delta와 protected #539/#554 delta를 함께 보존한다. `wrangler.toml`에는 `NOEMA_WORKFLOW_STATE` / `NoemaWorkflowState`와 current `ALLOWED_WORKFLOW_SHA = c9052e6...`가 동시에 존재한다. + +같은 protected movement에 branch-owned files가 겹치지 않는 #526, #535, #536, #543, #548, #550, #553도 각각 기존 exact head와 `main@0dec8d84...`를 부모로 하는 ordinary two-parent/non-force restack으로 전진했다. 새 exact heads는 #526 `399d51d24bab96d204f232036938da7ab1034aa3`, #535 `9ec7fbb0a20fb771516682946d49a2755035c171`, #536 `82366b27fc985512c91242542d841169e76c347e`, #543 `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992`, #548 `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`, #550 `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`, #553 `a016521ed61857de328606ca7fea97c7a4057574`다. 각 branch ref는 `force=false`로만 전진했고 protected #539 canonical-temp-root와 #554 trust-source files를 main에서 상속한다. 이 restack 전 heads인 PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`, PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`, PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210`, PR #553 exact `4659f8be879568bbd1e8fe2b7248bf4f437fa885`, PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`, PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`, PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`는 기존 documentation contract와 audit traceability를 위해 predecessor lineage로만 보존한다. + +#540은 예외다. Toolchain/license lane의 `.github/lockfile-change-policy.json`이 protected base의 exact SHA를 evidence로 고정하므로, 기존 `baseSha=e26d771...`를 current protected `0dec8d84...`로 먼저 causal rebind하지 않고 단순 tree overlay만 하면 의도적으로 lockfile-policy RED가 된다. 따라서 #540은 old exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`에서 멈춰 있으며 exact-base policy source repair와 그 뒤 ordinary/non-force restack이 남아 있다. Cross-lane baseline은 이 PR #547 하나만 쓴다. Durable workflow lane에서는 predecessor `84a2cd056168ff90ad1c60723f20621ee8a73374`의 hosted CI `34044694252` / job `101517546387`가 checkout, live-base guard, lockfile/install/typecheck를 통과하고 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했다. 유일한 미실행 production 경로는 retained transition receipt가 record가 아닐 때 fail closed하는 branch였다. `2bb6076d911a526570176294c99fd86421c152eb`는 production semantics나 100% gate를 약화하지 않고 `null` retained receipt를 거부하는 hostile regression을 추가했다. 이후 stale-base RED는 #554 merge 뒤 ordinary/non-force restack `7f743f4...`로 causal repair되었고, predecessor reviewer/Security/image success는 새 head에 전용하지 않았다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | | Central workflow trust | protected `main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`; merged PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | -| Reviewer failed-check evidence | PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | -| Shared Kernel | PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | -| Required-gate regression | PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210` | Forbids docs-only suppression of required gates. | -| Automation threat model | PR #553 exact `4659f8be879568bbd1e8fe2b7248bf4f437fa885` | Corrects historical PR #80 language; no runtime authority change. | -| Workflow concurrency | PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43` | PR-only supersession cancellation and work-conserving handoff. | -| Orchestrator/free consumer | PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | -| Acquisition evidence | PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | -| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; candidate must be restacked onto current protected ancestry before integration. | +| Reviewer failed-check evidence | PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | +| Shared Kernel | PR #536 exact `82366b27fc985512c91242542d841169e76c347e` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | +| Required-gate regression | PR #543 exact `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992` | Forbids docs-only suppression of required gates. | +| Automation threat model | PR #553 exact `a016521ed61857de328606ca7fea97c7a4057574` | Corrects historical PR #80 language; no runtime authority change. | +| Workflow concurrency | PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` | PR-only supersession cancellation and work-conserving handoff. | +| Orchestrator/free consumer | PR #535 exact `9ec7fbb0a20fb771516682946d49a2755035c171` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | +| Acquisition evidence | PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | +| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; exact-base lock policy must be rebound from `e26d771...` to current protected `0dec8d84...` before restack. | | Durable Workflow / Task Execution | issue #541 / PR #542 exact `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, explicit malformed-receipt coverage, and current protected trust-source composition. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the protected/candidate identities above. | -Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #542 exact `7f743f4...` has newly created `ci 34063013448`, `reviewer-ci 34063013418`, required `Security Scan 34063013567`, and `patch-validator-image 34063013474`; all four remain queued and therefore are not GREEN evidence. +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #542 exact `7f743f4...` has `reviewer-ci 34063013418` terminal success while `ci 34063013448` and `patch-validator-image 34063013474` are in progress and required `Security Scan 34063013567` remains queued. The newly restacked #526/#535/#536/#543/#548/#550/#553 generations have fresh exact-head workflow generations and were still queued at their first post-restack observation; queued state is not GREEN evidence. ## DDD and ownership baseline @@ -45,9 +49,9 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | | P0 | Central workflow-source drift watch | Central protected source가 다시 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고, central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | -| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | #542를 포함한 downstream branch-owned delta를 current protected main에 ordinary/non-force 수렴시키고 각 새 head에서 fresh evidence를 생성한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `7f743f4...`의 새 네 gate와 live base·review authority를 확인하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge한다. | -| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #540을 current protected ancestry에 non-force restack하고 exact-base lock policy와 동일 evidence를 재생성한다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current protected ancestry에 수렴한 #526/#535/#536/#542/#543/#548/#550/#553의 새 workflow 세대를 검증하고 실패 시 각 lane에서 RCA/수정한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `7f743f4...`의 남은 CI/Security/image와 live base·review authority를 확인하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge한다. | +| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #540 `.github/lockfile-change-policy.json.baseSha`를 current protected `0dec8d84...`로 causal rebind한 뒤 ordinary/non-force restack하고 exact-head evidence를 재생성한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | current protected main 기준 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | | P1 | Patch-validator publication | PR-head image GREEN은 protected operational publication·signing·activation 증거가 아니다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | protected-main dispatch와 immutable publication identity가 가능한 owner control plane에서 운영 증거를 생성한다. | From 2d2d86d53ba3ac379f03481fe4937dd9fefb7cac Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 07:37:26 +0900 Subject: [PATCH 74/85] test(docs): bind post-trust authority to current candidates --- ...umentation-post-trust-integration-authority.test.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/documentation-post-trust-integration-authority.test.ts b/test/documentation-post-trust-integration-authority.test.ts index c4160d8db..d2b4ce6f2 100644 --- a/test/documentation-post-trust-integration-authority.test.ts +++ b/test/documentation-post-trust-integration-authority.test.ts @@ -2,7 +2,7 @@ import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; describe("post-trust-integration documentation authority", () => { - it("binds the commercial gap baseline to the protected #554 merge and restacked durable workflow candidate", () => { + it("binds the commercial gap baseline to the protected #554 merge and current restacked candidates", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain( @@ -12,10 +12,16 @@ describe("post-trust-integration documentation authority", () => { "PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally", ); expect(baseline).toContain( - "PR #542 exact `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`", + "PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`", + ); + expect(baseline).toContain( + "PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`", ); expect(baseline).toContain("ordinary/non-force restack"); expect(baseline).not.toContain("#554가 central trust prerequisite로 먼저 통합된 뒤"); expect(baseline).not.toContain("#554 통합 뒤 #542를 새 protected main에 non-force restack"); + expect(baseline).not.toContain( + "#540은 old exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`에서 멈춰", + ); }); }); From 24167c361acc83390c086957636260d7a54ccfa2 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 07:38:52 +0900 Subject: [PATCH 75/85] docs: reconcile current workflow and toolchain candidates --- docs/product-technical-gap-baseline.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 054ef622a..5484cfde2 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -12,13 +12,13 @@ Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea0 ## Active candidate convergence — 2026-09-07 KST -#554가 정상 병합되어 central workflow-source trust prerequisite의 source gap은 닫혔다. 그 직후 Durable Workflow / Task Execution owner #542는 predecessor `2bb6076...`와 protected `main@0dec8d84...`를 부모로 하는 ordinary/non-force restack `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`로 전진했다. Fresh compare의 merge-base는 정확히 `0dec8d84...`, `behind_by=0`이며, branch-owned durable-state delta와 protected #539/#554 delta를 함께 보존한다. `wrangler.toml`에는 `NOEMA_WORKFLOW_STATE` / `NoemaWorkflowState`와 current `ALLOWED_WORKFLOW_SHA = c9052e6...`가 동시에 존재한다. +#554가 정상 병합되어 central workflow-source trust prerequisite의 source gap은 닫혔다. Durable Workflow / Task Execution owner #542는 predecessor `2bb6076...`와 protected `main@0dec8d84...`를 부모로 하는 ordinary/non-force restack `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`로 전진해 branch-owned durable-state delta와 protected #539/#554 delta를 함께 보존했다. 그 exact head의 hosted CI `34063013448`은 live base, lockfile, install, typecheck를 통과한 뒤 retained-provenance hostile fixture 하나에서 현실 RED를 냈다. Fixture가 sequence-one `initialized` receipt 자체를 `null`로 바꾸어 causal-root와 non-record invariant를 동시에 훼손한 것이 원인이었고, production은 더 이른 causal-root invariant에서 정확히 fail closed했다. PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`는 production을 바꾸지 않고 valid initialized receipt를 보존한 채 synthetic sequence 2에 `null`을 append해 non-record-receipt invariant만 고립한다. 같은 protected movement에 branch-owned files가 겹치지 않는 #526, #535, #536, #543, #548, #550, #553도 각각 기존 exact head와 `main@0dec8d84...`를 부모로 하는 ordinary two-parent/non-force restack으로 전진했다. 새 exact heads는 #526 `399d51d24bab96d204f232036938da7ab1034aa3`, #535 `9ec7fbb0a20fb771516682946d49a2755035c171`, #536 `82366b27fc985512c91242542d841169e76c347e`, #543 `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992`, #548 `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`, #550 `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`, #553 `a016521ed61857de328606ca7fea97c7a4057574`다. 각 branch ref는 `force=false`로만 전진했고 protected #539 canonical-temp-root와 #554 trust-source files를 main에서 상속한다. 이 restack 전 heads인 PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`, PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`, PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210`, PR #553 exact `4659f8be879568bbd1e8fe2b7248bf4f437fa885`, PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`, PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`, PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`는 기존 documentation contract와 audit traceability를 위해 predecessor lineage로만 보존한다. -#540은 예외다. Toolchain/license lane의 `.github/lockfile-change-policy.json`이 protected base의 exact SHA를 evidence로 고정하므로, 기존 `baseSha=e26d771...`를 current protected `0dec8d84...`로 먼저 causal rebind하지 않고 단순 tree overlay만 하면 의도적으로 lockfile-policy RED가 된다. 따라서 #540은 old exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`에서 멈춰 있으며 exact-base policy source repair와 그 뒤 ordinary/non-force restack이 남아 있다. Cross-lane baseline은 이 PR #547 하나만 쓴다. +Toolchain/license lane #540도 exact-base policy를 먼저 수리한 뒤 current protected ancestry에 수렴했다. Causal commit `61632a6508944bd37a42d6a6830ab3ed39880c81`은 `.github/lockfile-change-policy.json.baseSha`만 `e26d771...`에서 `0dec8d84...`로 바꾸고 package/top-level digest, source URL, target inventory와 toolchain bytes를 그대로 보존했다. 이어 ordinary two-parent/non-force restack `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`가 protected #539/#554 delta를 상속했다. PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`는 `behind_by=0`, merge-base `0dec8d84...`인 current candidate이며 Wrangler/Miniflare/Sharp 제거와 pinned workerd/esbuild 경계는 변하지 않았다. Cross-lane baseline은 이 PR #547 하나만 쓴다. -Durable workflow lane에서는 predecessor `84a2cd056168ff90ad1c60723f20621ee8a73374`의 hosted CI `34044694252` / job `101517546387`가 checkout, live-base guard, lockfile/install/typecheck를 통과하고 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했다. 유일한 미실행 production 경로는 retained transition receipt가 record가 아닐 때 fail closed하는 branch였다. `2bb6076d911a526570176294c99fd86421c152eb`는 production semantics나 100% gate를 약화하지 않고 `null` retained receipt를 거부하는 hostile regression을 추가했다. 이후 stale-base RED는 #554 merge 뒤 ordinary/non-force restack `7f743f4...`로 causal repair되었고, predecessor reviewer/Security/image success는 새 head에 전용하지 않았다. +Durable workflow lane의 earlier coverage RED도 predecessor lineage로 보존한다. `84a2cd056168ff90ad1c60723f20621ee8a73374`의 hosted CI `34044694252` / job `101517546387`는 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했고, `2bb6076d911a526570176294c99fd86421c152eb`가 미실행 malformed-receipt rejection을 unit regression으로 덮었다. Post-#554 restack `7f743f4...`에서 드러난 fixture-ambiguity RED는 current `4616b5e...`가 더 좁은 hostile fixture로 수리한다. 어느 predecessor GREEN도 새 exact head의 merge authority가 아니다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | @@ -30,11 +30,11 @@ Durable workflow lane에서는 predecessor `84a2cd056168ff90ad1c60723f20621ee8a7 | Workflow concurrency | PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` | PR-only supersession cancellation and work-conserving handoff. | | Orchestrator/free consumer | PR #535 exact `9ec7fbb0a20fb771516682946d49a2755035c171` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | | Acquisition evidence | PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | -| Toolchain/license | PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1` | issue #531 / #540; exact-base lock policy must be rebound from `e26d771...` to current protected `0dec8d84...` before restack. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, explicit malformed-receipt coverage, and current protected trust-source composition. | +| Toolchain/license | PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` | issue #531 / #540; exact-base lock policy is rebound to current protected `0dec8d84...`, with toolchain/license delta retained on a non-force restack. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, and a hostile fixture that isolates malformed retained-receipt rejection without weakening causal-root validation. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the protected/candidate identities above. | -Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #542 exact `7f743f4...` has `reviewer-ci 34063013418` terminal success while `ci 34063013448` and `patch-validator-image 34063013474` are in progress and required `Security Scan 34063013567` remains queued. The newly restacked #526/#535/#536/#543/#548/#550/#553 generations have fresh exact-head workflow generations and were still queued at their first post-restack observation; queued state is not GREEN evidence. +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #542 exact `4616b5e...` has fresh `ci 34064157863`, `reviewer-ci 34064157866`, required `Security Scan 34064157896`, and `patch-validator-image 34064157873`; all are new/non-terminal. #540 exact `2eba9d6...` likewise has fresh `ci 34064499797`, `reviewer-ci 34064499757`, required `Security Scan 34064499762`, and `patch-validator-image 34064499807`; all are pending/queued. The newly restacked #526/#535/#536/#543/#548/#550/#553 generations also have fresh current-head workflow generations; queued/pending state is not GREEN evidence. ## DDD and ownership baseline @@ -49,9 +49,9 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | | P0 | Central workflow-source drift watch | Central protected source가 다시 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고, central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | -| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current protected ancestry에 수렴한 #526/#535/#536/#542/#543/#548/#550/#553의 새 workflow 세대를 검증하고 실패 시 각 lane에서 RCA/수정한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, hostile malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `7f743f4...`의 남은 CI/Security/image와 live base·review authority를 확인하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge한다. | -| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #540 `.github/lockfile-change-policy.json.baseSha`를 current protected `0dec8d84...`로 causal rebind한 뒤 ordinary/non-force restack하고 exact-head evidence를 재생성한다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current protected ancestry에 수렴한 #526/#535/#536/#540/#542/#543/#548/#550/#553의 새 workflow 세대를 검증하고 실패 시 각 lane에서 RCA/수정한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, isolated malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `4616b5e...`의 fresh CI/reviewer/Security/image와 live base·review authority를 확인하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge한다. | +| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #540 exact `2eba9d6...`의 fresh CI/reviewer/Security/image를 검증하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge 후보로 승격한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | current protected main 기준 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | | P1 | Patch-validator publication | PR-head image GREEN은 protected operational publication·signing·activation 증거가 아니다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | protected-main dispatch와 immutable publication identity가 가능한 owner control plane에서 운영 증거를 생성한다. | From 9e60f0434f7855f5d4a112cf5614d3fa07c2c43c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 08:06:59 +0900 Subject: [PATCH 76/85] test(docs): bind active-work contract to current candidates --- ...documentation-active-work-contract.test.ts | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index f428a2bc1..b76604b37 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -68,17 +68,19 @@ describe("canonical active-work documentation", () => { it("keeps the product-technical baseline on current protected and active owner truth", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); - expect(baseline).toContain("`main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`"); - expect(baseline).toContain("`.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351`"); + expect(baseline).toContain("`main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`"); + expect(baseline).toContain("`.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`"); expect(baseline).toContain("#539 canonical temp-root fixture repair"); - expect(baseline).toContain("PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`"); - expect(baseline).toContain("PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`"); - expect(baseline).toContain("PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`"); - expect(baseline).toContain("PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`"); - expect(baseline).toContain("PR #540 exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`"); - expect(baseline).toContain("PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`"); - expect(baseline).toContain("PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`"); - expect(baseline).toContain("PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`"); + expect(baseline).toContain("PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672`"); + expect(baseline).toContain("PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`"); + expect(baseline).toContain("PR #536 exact `82366b27fc985512c91242542d841169e76c347e`"); + expect(baseline).toContain("PR #535 exact `9ec7fbb0a20fb771516682946d49a2755035c171`"); + expect(baseline).toContain("PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`"); + expect(baseline).toContain("PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`"); + expect(baseline).toContain("PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3`"); + expect(baseline).toContain("PR #543 exact `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992`"); + expect(baseline).toContain("PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`"); + expect(baseline).toContain("PR #553 exact `a016521ed61857de328606ca7fea97c7a4057574`"); expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); expect(baseline).not.toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); From 6fe8f6291caa9b3d31492e98ba06eb325c576801 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 10:18:53 +0900 Subject: [PATCH 77/85] test(docs): require post-526 protected authority --- test/documentation-active-work-contract.test.ts | 13 ++++++++----- ...ation-post-trust-integration-authority.test.ts | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index b76604b37..0e04e8950 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -68,19 +68,19 @@ describe("canonical active-work documentation", () => { it("keeps the product-technical baseline on current protected and active owner truth", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); - expect(baseline).toContain("`main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`"); + expect(baseline).toContain("`main@d9b2a956960be72a5370afa50275a405dfbba529`"); expect(baseline).toContain("`.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`"); expect(baseline).toContain("#539 canonical temp-root fixture repair"); expect(baseline).toContain("PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672`"); + expect(baseline).toContain("merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3`"); expect(baseline).toContain("PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`"); expect(baseline).toContain("PR #536 exact `82366b27fc985512c91242542d841169e76c347e`"); - expect(baseline).toContain("PR #535 exact `9ec7fbb0a20fb771516682946d49a2755035c171`"); + expect(baseline).toContain("PR #535 exact `68e7579dd1ba0753ae7c840b44115b7b486a71fa`"); expect(baseline).toContain("PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`"); expect(baseline).toContain("PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`"); - expect(baseline).toContain("PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3`"); - expect(baseline).toContain("PR #543 exact `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992`"); + expect(baseline).toContain("PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`"); expect(baseline).toContain("PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`"); - expect(baseline).toContain("PR #553 exact `a016521ed61857de328606ca7fea97c7a4057574`"); + expect(baseline).toContain("PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`"); expect(baseline).not.toContain("`main@71cd0fb6f3cf6ed1b886c8c312bfe96e7613f155`"); expect(baseline).not.toContain("`main@85b17014b8d46eacc95e096ca114568c321d0263`"); expect(baseline).not.toContain("`main@e26d771470a4ece873c367b40b3cd6cb03ac7de3`"); @@ -101,6 +101,9 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); expect(baseline).not.toContain("PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); + expect(baseline).not.toContain("PR #535 exact `9ec7fbb0a20fb771516682946d49a2755035c171`"); + expect(baseline).not.toContain("PR #543 exact `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992`"); + expect(baseline).not.toContain("PR #553 exact `a016521ed61857de328606ca7fea97c7a4057574`"); expect(baseline).toContain("issue #531 / #540"); expect(baseline).toContain("issue #541 / #542"); expect(baseline).toContain("#546 semantic reviewer"); diff --git a/test/documentation-post-trust-integration-authority.test.ts b/test/documentation-post-trust-integration-authority.test.ts index d2b4ce6f2..a45db071f 100644 --- a/test/documentation-post-trust-integration-authority.test.ts +++ b/test/documentation-post-trust-integration-authority.test.ts @@ -2,21 +2,30 @@ import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; describe("post-trust-integration documentation authority", () => { - it("binds the commercial gap baseline to the protected #554 merge and current restacked candidates", () => { + it("binds the commercial gap baseline to protected #554/#526 integration and current convergence candidates", () => { const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); expect(baseline).toContain( - "`main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`", + "`main@d9b2a956960be72a5370afa50275a405dfbba529`", ); expect(baseline).toContain( "PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally", ); + expect(baseline).toContain( + "merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3`", + ); expect(baseline).toContain( "PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`", ); expect(baseline).toContain( "PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`", ); + expect(baseline).toContain( + "PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`", + ); + expect(baseline).toContain( + "PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`", + ); expect(baseline).toContain("ordinary/non-force restack"); expect(baseline).not.toContain("#554가 central trust prerequisite로 먼저 통합된 뒤"); expect(baseline).not.toContain("#554 통합 뒤 #542를 새 protected main에 non-force restack"); @@ -24,4 +33,4 @@ describe("post-trust-integration documentation authority", () => { "#540은 old exact `6b7f0a7b8c3069a815f74ee654620e59574bd4e1`에서 멈춰", ); }); -}); +}); \ No newline at end of file From 40ebb4b08683d6124393146f4bf26d30744a144b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 10:20:38 +0900 Subject: [PATCH 78/85] docs(gap): bind baseline to protected #526 integration --- docs/product-technical-gap-baseline.md | 56 ++++++++++++++------------ 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 5484cfde2..006603e24 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -4,43 +4,49 @@ 이 문서는 Noema의 protected truth, active candidate, transient workflow evidence, foreign-owner authority를 분리한다. 저장소 문서와 테스트는 해당 revision의 source contract만 증명하며 predecessor GREEN, queued/skipped/cancelled run, scanner/model judgement를 다음 revision의 권위로 전용하지 않는다. 외부 제품의 domain truth, LLM provider routing, quarantine/security, outbound authority는 Noema source로 복제하지 않는다. -현재 protected-source snapshot은 `main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance, 정상 병합된 #539 canonical temp-root fixture repair에 더해 #554의 exact central workflow-source trust roll-forward를 정상 병합한 protected truth다. 직전 protected `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`는 역사적 branch point로만 남으며 current merge/release authority가 아니다. +현재 protected-source snapshot은 `main@d9b2a956960be72a5370afa50275a405dfbba529`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance, #539 canonical temp-root fixture repair, #554 exact central workflow-source trust roll-forward에 더해 acquisition source-evidence binding #526을 정상 병합한 protected truth다. 직전 protected `main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`는 역사적 branch point로만 남으며 current merge/release authority가 아니다. Normal merge commit `d9b2a956960be72a5370afa50275a405dfbba529`는 previous protected main과 merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3`를 부모로 보존한다. #526의 retained `{path, sha256}` source identity와 package-digest evidence는 protected source integrity를 강화하지만 buyer/legal/commercial authenticity를 새로 만들지는 않는다. -Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다. 직전 protected central에서 이 revision으로의 변화는 `scripts/ci/audit_org_codeql_coverage.py`와 `tests/test_audit_org_codeql_coverage.py`뿐이며 `.github/workflows/noema-review.yml`은 blob `f8ab55c896e8b40dde0bddd89bab37868dda9283`를 유지한다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 Noema는 exact protected central source만 fail-closed consumer trust로 받는다. PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally after application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 unchanged exact head에서 terminal success였고, protected merge commit `0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`가 `ALLOWED_WORKFLOW_SHA = c9052e607e5f3cc76e73207e7786b21500721b79`를 protected truth로 승격했다. +Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다. 직전 protected central에서 이 revision으로의 변화는 CodeQL coverage audit source/test뿐이며 `.github/workflows/noema-review.yml`의 reviewed workflow body는 변하지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 Noema는 exact protected central source만 fail-closed consumer trust로 받는다. PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally after application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 unchanged exact head에서 terminal success였고, predecessor protected merge가 `ALLOWED_WORKFLOW_SHA = c9052e607e5f3cc76e73207e7786b21500721b79`를 protected truth로 승격했다. -Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351` / PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`를 역사적 lineage로만 기록한다. 같은 이유로 #554 직전 protected `main@8cbb07da2a9a7e4e9b782c40bf7b6a1567e7b18d`와 pre-restack PR #542 exact `2bb6076d911a526570176294c99fd86421c152eb`도 predecessor evidence일 뿐이다. 이 identity들은 current merge authority나 release evidence가 아니다. +Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351` / PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`를 역사적 lineage로만 기록한다. Pre-#554 durable-workflow identities와 earlier protected branch points도 predecessor evidence일 뿐 current merge authority나 release evidence가 아니다. ## Active candidate convergence — 2026-09-07 KST -#554가 정상 병합되어 central workflow-source trust prerequisite의 source gap은 닫혔다. Durable Workflow / Task Execution owner #542는 predecessor `2bb6076...`와 protected `main@0dec8d84...`를 부모로 하는 ordinary/non-force restack `7f743f4ee8d81c8d52511ef421d8e40a32edf2a8`로 전진해 branch-owned durable-state delta와 protected #539/#554 delta를 함께 보존했다. 그 exact head의 hosted CI `34063013448`은 live base, lockfile, install, typecheck를 통과한 뒤 retained-provenance hostile fixture 하나에서 현실 RED를 냈다. Fixture가 sequence-one `initialized` receipt 자체를 `null`로 바꾸어 causal-root와 non-record invariant를 동시에 훼손한 것이 원인이었고, production은 더 이른 causal-root invariant에서 정확히 fail closed했다. PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`는 production을 바꾸지 않고 valid initialized receipt를 보존한 채 synthetic sequence 2에 `null`을 append해 non-record-receipt invariant만 고립한다. +#526은 더 이상 active candidate가 아니라 protected truth다. 남은 open source lanes는 protected ancestry 이동을 bulk-rewrite하지 않고, overlap과 buyer risk를 고려해 ordinary/non-force restack으로 순차 수렴한다. 한 lane의 queued check는 그 lane만 막으며, 다른 safe review·documentation·owner-path work는 계속한다. -같은 protected movement에 branch-owned files가 겹치지 않는 #526, #535, #536, #543, #548, #550, #553도 각각 기존 exact head와 `main@0dec8d84...`를 부모로 하는 ordinary two-parent/non-force restack으로 전진했다. 새 exact heads는 #526 `399d51d24bab96d204f232036938da7ab1034aa3`, #535 `9ec7fbb0a20fb771516682946d49a2755035c171`, #536 `82366b27fc985512c91242542d841169e76c347e`, #543 `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992`, #548 `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`, #550 `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`, #553 `a016521ed61857de328606ca7fea97c7a4057574`다. 각 branch ref는 `force=false`로만 전진했고 protected #539 canonical-temp-root와 #554 trust-source files를 main에서 상속한다. 이 restack 전 heads인 PR #548 exact `049a57dd66be5c0bd23e764315676f7f0ee6efd6`, PR #536 exact `8415e3c5e5eb1ed0b276f2d1154f96691d1d4e69`, PR #543 exact `f07679d0f4d78ed1668147e9cd8fde0ba82fe210`, PR #553 exact `4659f8be879568bbd1e8fe2b7248bf4f437fa885`, PR #550 exact `ad0f512b054c4114203760311cb064e1a5323c43`, PR #535 exact `5de3fcb2a6acd1b8190ffab95f729fc6b160b0a8`, PR #526 exact `bd4c9079b5c81c0cd63cae6fb0bdd4a845e9fbf2`는 기존 documentation contract와 audit traceability를 위해 predecessor lineage로만 보존한다. +Required-gate regression #543은 predecessor branch delta를 새 protected main에 ordinary/non-force restack한 PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`로 수렴했다. 이 head는 `test/ci-exact-head-contract.test.ts`만 branch-owned delta로 유지하고 protected #526 acquisition files를 main에서 상속한다. Fresh current-head runs `ci 34071938887`, `reviewer-ci 34071938888`, required `Security Scan 34071938889`, `patch-validator-image 34071938978`은 현재 queued이며 predecessor GREEN은 전용하지 않는다. -Toolchain/license lane #540도 exact-base policy를 먼저 수리한 뒤 current protected ancestry에 수렴했다. Causal commit `61632a6508944bd37a42d6a6830ab3ed39880c81`은 `.github/lockfile-change-policy.json.baseSha`만 `e26d771...`에서 `0dec8d84...`로 바꾸고 package/top-level digest, source URL, target inventory와 toolchain bytes를 그대로 보존했다. 이어 ordinary two-parent/non-force restack `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`가 protected #539/#554 delta를 상속했다. PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`는 `behind_by=0`, merge-base `0dec8d84...`인 current candidate이며 Wrangler/Miniflare/Sharp 제거와 pinned workerd/esbuild 경계는 변하지 않았다. Cross-lane baseline은 이 PR #547 하나만 쓴다. +Automation threat-model lane도 protected main에 ordinary/non-force restack했다. PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`는 `docs/automation-threat-model.md`와 `test/documentation-architecture-contract.test.ts`만 branch-owned delta로 유지한다. Fresh current-head runs `ci 34072254372`, `reviewer-ci 34072254382`, required `Security Scan 34072254380`, `patch-validator-image 34072254418`은 현재 queued다. -Durable workflow lane의 earlier coverage RED도 predecessor lineage로 보존한다. `84a2cd056168ff90ad1c60723f20621ee8a73374`의 hosted CI `34044694252` / job `101517546387`는 577 test files / 4,078 tests를 모두 PASS했지만 global coverage 99.98%로 실패했고, `2bb6076d911a526570176294c99fd86421c152eb`가 미실행 malformed-receipt rejection을 unit regression으로 덮었다. Post-#554 restack `7f743f4...`에서 드러난 fixture-ambiguity RED는 current `4616b5e...`가 더 좁은 hostile fixture로 수리한다. 어느 predecessor GREEN도 새 exact head의 merge authority가 아니다. +Durable Workflow / Task Execution owner PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`는 atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance와 malformed retained-receipt hostile fixture repair를 보존한다. 해당 head는 #526 이전 protected ancestry에서 검증된 candidate이므로 새 protected main에 ordinary/non-force convergence와 fresh exact-head evidence가 다시 필요하다. + +Toolchain/license PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`는 exact-base lock policy, Wrangler/Miniflare/Sharp 제거와 pinned workerd/esbuild boundary를 보존하지만 역시 #526 이전 ancestry다. #550과 CI/image workflow path가 겹치므로 두 lane을 semantic merge해야 한다. + +Orchestrator/free consumer PR #535 exact `68e7579dd1ba0753ae7c840b44115b7b486a71fa`는 stale `NOEMA_LLM_MODEL=contextual-orchestrator` service-name 값을 `orchestrator/free`로 조용히 보정하지 않고 fail closed하며, hosted reviewer RED가 드러낸 contradictory legacy test oracle도 수리한다. Noema는 provider/model discovery, routing, retry/failover를 가져오지 않는다. `contextual-orchestrator`가 그 authority를 계속 소유한다. 이 head 역시 #526 이전 ancestry라 merge 전에 fresh non-force convergence가 필요하다. + +Reviewer failed-check evidence PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`, provider-neutral Shared Kernel PR #536 exact `82366b27fc985512c91242542d841169e76c347e`, workflow concurrency PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`도 각 branch-owned delta를 유지한 채 새 protected ancestry에 순차 수렴해야 한다. #535/#536/#548은 reviewer/shared-core path가 겹치고 #535/#550은 product-development workflow, #540/#550은 CI/image workflow path가 겹치므로 blind overlay가 아니라 semantic preservation이 필요하다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | -| Central workflow trust | protected `main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`; merged PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | -| Reviewer failed-check evidence | PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority. | -| Shared Kernel | PR #536 exact `82366b27fc985512c91242542d841169e76c347e` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner. | -| Required-gate regression | PR #543 exact `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992` | Forbids docs-only suppression of required gates. | -| Automation threat model | PR #553 exact `a016521ed61857de328606ca7fea97c7a4057574` | Corrects historical PR #80 language; no runtime authority change. | -| Workflow concurrency | PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` | PR-only supersession cancellation and work-conserving handoff. | -| Orchestrator/free consumer | PR #535 exact `9ec7fbb0a20fb771516682946d49a2755035c171` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover. | -| Acquisition evidence | PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | -| Toolchain/license | PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` | issue #531 / #540; exact-base lock policy is rebound to current protected `0dec8d84...`, with toolchain/license delta retained on a non-force restack. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795` | Atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance, and a hostile fixture that isolates malformed retained-receipt rejection without weakening causal-root validation. | -| Documentation authority | PR #547 | Dedicated cross-lane baseline writer; source is current to the protected/candidate identities above. | - -Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. At this observation, #542 exact `4616b5e...` has fresh `ci 34064157863`, `reviewer-ci 34064157866`, required `Security Scan 34064157896`, and `patch-validator-image 34064157873`; all are new/non-terminal. #540 exact `2eba9d6...` likewise has fresh `ci 34064499797`, `reviewer-ci 34064499757`, required `Security Scan 34064499762`, and `patch-validator-image 34064499807`; all are pending/queued. The newly restacked #526/#535/#536/#543/#548/#550/#553 generations also have fresh current-head workflow generations; queued/pending state is not GREEN evidence. +| Central workflow trust | protected `main@d9b2a956960be72a5370afa50275a405dfbba529`; merged PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | +| Acquisition evidence | protected `main@d9b2a956960be72a5370afa50275a405dfbba529`; merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | +| Required-gate regression | PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec` | Forbids docs-only suppression of required gates; current protected ancestry, exact-head gates pending. | +| Automation threat model | PR #553 exact `4c213e184b94b70558092ca739990464f889f06c` | Corrects historical PR #80 language; no runtime authority change; current protected ancestry, exact-head gates pending. | +| Orchestrator/free consumer | PR #535 exact `68e7579dd1ba0753ae7c840b44115b7b486a71fa` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover; needs post-#526 convergence. | +| Reviewer failed-check evidence | PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority; needs post-#526 convergence. | +| Shared Kernel | PR #536 exact `82366b27fc985512c91242542d841169e76c347e` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner; needs post-#526 convergence. | +| Workflow concurrency | PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` | PR-only supersession cancellation and work-conserving handoff; needs post-#526 convergence. | +| Toolchain/license | PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` | issue #531 / #540; exact-base lock/toolchain/license delta retained; needs post-#526 convergence. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795` | Atomic claim/checkpoint/recovery/effect invariants and hostile provenance validation; needs post-#526 convergence. | +| Documentation authority | PR #547 | Dedicated cross-lane baseline writer; this revision binds protected #526 truth and the current candidate identities above. | + +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. A current PR can be review-clean while still non-authorizing because its exact-head gate is queued, failed, stale, or based on an older protected ancestry. ## DDD and ownership baseline Noema의 Core Domain은 **Agent Runtime**과 **Workflow / Task Execution**이다. **Tool / Capability Boundary**, **State / Checkpoint**, **Isolation Integration**, **Policy / Approval**, **Observability**, **Recovery**는 명시적 bounded context다. Side-effect authority, execution identity, claim/checkpoint CAS는 최소 transaction boundary에서 유지하고 foreign domain truth와 혼합하지 않는다. -`contextual-orchestrator`는 provider/model discovery, routing, TTC, retry/failover와 provider credentials를 소유한다. `.github`는 reusable workflow와 organization control-plane source를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave/AppGuardrail 계열은 각 isolation/security/outbound truth를 소유한다. Keyverse는 identity backend owner다. `context-graph-contracts`와 Enterprise Architecture 계열은 released/versioned contract만 소비하며 mutable sibling PR head, source copy, cross-service SQL을 runtime truth로 사용하지 않는다. +`contextual-orchestrator`는 provider/model discovery, routing, TTC, retry/failover와 provider credentials를 소유한다. Noema LLM consumer는 released gateway contract와 canonical `orchestrator/free` alias만 사용하고 direct provider/group/paid fallback을 두지 않는다. `.github`는 reusable workflow와 organization control-plane source를 소유한다. `quarantine-sandbox-runtime`, Wardnet, EgressWeave/AppGuardrail 계열은 각 isolation/security/outbound truth를 소유한다. Keyverse는 identity backend owner다. `context-graph-contracts`와 Enterprise Architecture 계열은 released/versioned contract만 소비하며 mutable sibling PR head, source copy, cross-service SQL을 runtime truth로 사용하지 않는다. ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `Proposed`를 유지한다. 이미 protected인 runtime/context-consumer slice를 Proposed라는 이유로 candidate로 되돌리지 않으며 candidate durable workflow state를 문서만으로 Accepted 처리하지 않는다. @@ -49,9 +55,9 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | | P0 | Central workflow-source drift watch | Central protected source가 다시 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고, central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | -| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current protected ancestry에 수렴한 #526/#535/#536/#540/#542/#543/#548/#550/#553의 새 workflow 세대를 검증하고 실패 시 각 lane에서 RCA/수정한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, isolated malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `4616b5e...`의 fresh CI/reviewer/Security/image와 live base·review authority를 확인하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge한다. | -| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #540 exact `2eba9d6...`의 fresh CI/reviewer/Security/image를 검증하고 실패 시 RCA/수정, 모두 GREEN이면 정상 merge 후보로 승격한다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current ancestry의 #543/#553 exact-head gates를 검증하면서 #535/#536/#540/#542/#548/#550을 overlap-aware ordinary/non-force convergence하고 각 새 head를 다시 검증한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, isolated malformed-receipt coverage, exact-head GREEN, protected merge | #542의 모든 durable-state delta와 protected acquisition/trust files를 함께 보존해 새 protected ancestry로 non-force 수렴한 뒤 fresh CI/reviewer/Security/image를 실행한다. | +| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #550과 겹치는 workflow delta를 보존하면서 #540을 새 protected ancestry에 수렴시키고 fresh exact-head gates를 검증한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | current protected main 기준 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | | P1 | Patch-validator publication | PR-head image GREEN은 protected operational publication·signing·activation 증거가 아니다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | protected-main dispatch와 immutable publication identity가 가능한 owner control plane에서 운영 증거를 생성한다. | @@ -61,4 +67,4 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P Workflow가 exact head를 checkout한 뒤 실패하면 code/config/log RCA를 수행한다. Runner를 얻지 못한 queued 상태는 control-plane evidence일 뿐이다. Queue를 줄이기 위한 source churn, `paths-ignore`, runner-selector 우회, self-approval, force push/destructive rebase, required-gate weakening은 완료 수단이 아니다. -Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. +Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. \ No newline at end of file From 29ed0a761c9c2a2b0be41720f5206d64a2bc89e7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 10:37:10 +0900 Subject: [PATCH 79/85] test(docs): require current active candidate identities --- test/documentation-active-work-contract.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/documentation-active-work-contract.test.ts b/test/documentation-active-work-contract.test.ts index 0e04e8950..a7639b9e1 100644 --- a/test/documentation-active-work-contract.test.ts +++ b/test/documentation-active-work-contract.test.ts @@ -75,9 +75,9 @@ describe("canonical active-work documentation", () => { expect(baseline).toContain("merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3`"); expect(baseline).toContain("PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`"); expect(baseline).toContain("PR #536 exact `82366b27fc985512c91242542d841169e76c347e`"); - expect(baseline).toContain("PR #535 exact `68e7579dd1ba0753ae7c840b44115b7b486a71fa`"); + expect(baseline).toContain("PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1`"); expect(baseline).toContain("PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`"); - expect(baseline).toContain("PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`"); + expect(baseline).toContain("PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b`"); expect(baseline).toContain("PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`"); expect(baseline).toContain("PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`"); expect(baseline).toContain("PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`"); @@ -100,8 +100,10 @@ describe("canonical active-work documentation", () => { expect(baseline).not.toContain("PR #542 exact `9236775bad5476a70601c3dd0331211d42eaed12`"); expect(baseline).not.toContain("PR #542 exact `1909f232dec32cf5d5de40d927af9c22366d2a85`"); expect(baseline).not.toContain("PR #542 exact `84a2cd056168ff90ad1c60723f20621ee8a73374`"); + expect(baseline).not.toContain("PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`"); expect(baseline).not.toContain("PR #526 exact `81ef8b75aaad2083156b415e59fd7f27740a1b02`"); expect(baseline).not.toContain("PR #535 exact `9ec7fbb0a20fb771516682946d49a2755035c171`"); + expect(baseline).not.toContain("PR #535 exact `68e7579dd1ba0753ae7c840b44115b7b486a71fa`"); expect(baseline).not.toContain("PR #543 exact `e255bf1bece1ebfdd2432c96ee3aa14a7f29a992`"); expect(baseline).not.toContain("PR #553 exact `a016521ed61857de328606ca7fea97c7a4057574`"); expect(baseline).toContain("issue #531 / #540"); From d4f312dd68b950514416c96473835cf68326859d Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 10:37:52 +0900 Subject: [PATCH 80/85] docs: reconcile current candidate identities after #526 --- docs/product-technical-gap-baseline.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 006603e24..06943ef25 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -18,11 +18,11 @@ Required-gate regression #543은 predecessor branch delta를 새 protected main Automation threat-model lane도 protected main에 ordinary/non-force restack했다. PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`는 `docs/automation-threat-model.md`와 `test/documentation-architecture-contract.test.ts`만 branch-owned delta로 유지한다. Fresh current-head runs `ci 34072254372`, `reviewer-ci 34072254382`, required `Security Scan 34072254380`, `patch-validator-image 34072254418`은 현재 queued다. -Durable Workflow / Task Execution owner PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795`는 atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance와 malformed retained-receipt hostile fixture repair를 보존한다. 해당 head는 #526 이전 protected ancestry에서 검증된 candidate이므로 새 protected main에 ordinary/non-force convergence와 fresh exact-head evidence가 다시 필요하다. +Durable Workflow / Task Execution owner PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b`는 atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance와 malformed retained-receipt hostile fixture repair를 보존한다. 이 head는 predecessor `4616b5e93e19d51973aea330aa4124b51725b795`와 protected `main@d9b2a956...`를 부모로 하는 ordinary/non-force restack이며, #526 acquisition delta와 #542의 29개 owned path 사이에 changed-path overlap이 없다. Fresh compare는 `behind_by=0`, merge-base는 current protected main이다. Fresh current-head runs `ci 34073438522`, `reviewer-ci 34073438512`, required `Security Scan 34073438480`, `patch-validator-image 34073438562`가 새 generation으로 생성됐으며 predecessor GREEN은 전용하지 않는다. -Toolchain/license PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`는 exact-base lock policy, Wrangler/Miniflare/Sharp 제거와 pinned workerd/esbuild boundary를 보존하지만 역시 #526 이전 ancestry다. #550과 CI/image workflow path가 겹치므로 두 lane을 semantic merge해야 한다. +Toolchain/license PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`는 exact-base lock policy, Wrangler/Miniflare/Sharp 제거와 pinned workerd/esbuild boundary를 보존하지만 아직 #526 이전 ancestry다. #550과 CI/image workflow path가 겹치므로 두 lane을 semantic merge해야 한다. -Orchestrator/free consumer PR #535 exact `68e7579dd1ba0753ae7c840b44115b7b486a71fa`는 stale `NOEMA_LLM_MODEL=contextual-orchestrator` service-name 값을 `orchestrator/free`로 조용히 보정하지 않고 fail closed하며, hosted reviewer RED가 드러낸 contradictory legacy test oracle도 수리한다. Noema는 provider/model discovery, routing, retry/failover를 가져오지 않는다. `contextual-orchestrator`가 그 authority를 계속 소유한다. 이 head 역시 #526 이전 ancestry라 merge 전에 fresh non-force convergence가 필요하다. +Orchestrator/free consumer PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1`는 stale `NOEMA_LLM_MODEL=contextual-orchestrator` service-name 값을 `orchestrator/free`로 조용히 보정하지 않고 fail closed하는 production contract와 Python reviewer oracle repair에 더해, TypeScript gateway-routing regression도 같은 fail-closed expectation으로 수렴시킨다. Noema는 provider/model discovery, routing, retry/failover를 가져오지 않는다. `contextual-orchestrator`가 그 authority를 계속 소유한다. 이 head는 여전히 #526 이전 ancestry라 merge 전에 fresh non-force convergence가 필요하다. Reviewer failed-check evidence PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`, provider-neutral Shared Kernel PR #536 exact `82366b27fc985512c91242542d841169e76c347e`, workflow concurrency PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`도 각 branch-owned delta를 유지한 채 새 protected ancestry에 순차 수렴해야 한다. #535/#536/#548은 reviewer/shared-core path가 겹치고 #535/#550은 product-development workflow, #540/#550은 CI/image workflow path가 겹치므로 blind overlay가 아니라 semantic preservation이 필요하다. @@ -32,12 +32,12 @@ Reviewer failed-check evidence PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68d | Acquisition evidence | protected `main@d9b2a956960be72a5370afa50275a405dfbba529`; merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | | Required-gate regression | PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec` | Forbids docs-only suppression of required gates; current protected ancestry, exact-head gates pending. | | Automation threat model | PR #553 exact `4c213e184b94b70558092ca739990464f889f06c` | Corrects historical PR #80 language; no runtime authority change; current protected ancestry, exact-head gates pending. | -| Orchestrator/free consumer | PR #535 exact `68e7579dd1ba0753ae7c840b44115b7b486a71fa` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover; needs post-#526 convergence. | +| Orchestrator/free consumer | PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover; needs post-#526 convergence. | | Reviewer failed-check evidence | PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority; needs post-#526 convergence. | | Shared Kernel | PR #536 exact `82366b27fc985512c91242542d841169e76c347e` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner; needs post-#526 convergence. | | Workflow concurrency | PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` | PR-only supersession cancellation and work-conserving handoff; needs post-#526 convergence. | | Toolchain/license | PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` | issue #531 / #540; exact-base lock/toolchain/license delta retained; needs post-#526 convergence. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `4616b5e93e19d51973aea330aa4124b51725b795` | Atomic claim/checkpoint/recovery/effect invariants and hostile provenance validation; needs post-#526 convergence. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b` | Atomic claim/checkpoint/recovery/effect invariants and hostile provenance validation; current protected ancestry, fresh exact-head gates pending. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; this revision binds protected #526 truth and the current candidate identities above. | Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. A current PR can be review-clean while still non-authorizing because its exact-head gate is queued, failed, stale, or based on an older protected ancestry. @@ -55,8 +55,8 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | | P0 | Central workflow-source drift watch | Central protected source가 다시 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고, central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | -| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current ancestry의 #543/#553 exact-head gates를 검증하면서 #535/#536/#540/#542/#548/#550을 overlap-aware ordinary/non-force convergence하고 각 새 head를 다시 검증한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, isolated malformed-receipt coverage, exact-head GREEN, protected merge | #542의 모든 durable-state delta와 protected acquisition/trust files를 함께 보존해 새 protected ancestry로 non-force 수렴한 뒤 fresh CI/reviewer/Security/image를 실행한다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current ancestry의 #543/#553/#542 exact-head gates를 검증하면서 #535/#536/#540/#548/#550을 overlap-aware ordinary/non-force convergence하고 각 새 head를 다시 검증한다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, isolated malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `46439b1...`의 fresh CI/reviewer/Security/image를 검증하고 unchanged head에서 모두 GREEN이면 normal protected integration한다. | | P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #550과 겹치는 workflow delta를 보존하면서 #540을 새 protected ancestry에 수렴시키고 fresh exact-head gates를 검증한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | current protected main 기준 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | @@ -67,4 +67,4 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P Workflow가 exact head를 checkout한 뒤 실패하면 code/config/log RCA를 수행한다. Runner를 얻지 못한 queued 상태는 control-plane evidence일 뿐이다. Queue를 줄이기 위한 source churn, `paths-ignore`, runner-selector 우회, self-approval, force push/destructive rebase, required-gate weakening은 완료 수단이 아니다. -Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. \ No newline at end of file +Noema source의 Apache-2.0 grant, third-party license compatibility, package/artifact distribution rights, release/deployment, KPI, customer/revenue, legal/IP transfer evidence는 서로 별도 권위다. 문서, scanner, SBOM, successful CI 또는 model judgement가 빠진 권위 클래스를 만들어내지 않는다. From 9bdf6c0d113eac9b28b17521fb4e358f71233467 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 10:47:31 +0900 Subject: [PATCH 81/85] test(docs): require post-#526 workflow concurrency authority --- ...ation-workflow-concurrency-authority.test.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 test/documentation-workflow-concurrency-authority.test.ts diff --git a/test/documentation-workflow-concurrency-authority.test.ts b/test/documentation-workflow-concurrency-authority.test.ts new file mode 100644 index 000000000..2a2af260a --- /dev/null +++ b/test/documentation-workflow-concurrency-authority.test.ts @@ -0,0 +1,17 @@ +import { readFileSync } from "node:fs"; +import { describe, expect, it } from "vitest"; + +describe("workflow-concurrency documentation authority", () => { + it("records the current post-#526 #550 exact head while retaining predecessor lineage", () => { + const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); + + expect(baseline).toContain( + "PR #550 exact `aeb9c46e51a2de2ec4ad9dd16a73b3548109385e`", + ); + expect(baseline).toContain( + "predecessor #550 `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`", + ); + expect(baseline).toContain("behind_by=0"); + expect(baseline).toContain("merge-base exactly current protected main"); + }); +}); From bc90d328f61fc7d3abfdb7b53bccf493cdeb41f1 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 10:48:37 +0900 Subject: [PATCH 82/85] docs: record post-#526 workflow concurrency authority --- docs/product-technical-gap-baseline.md | 55 ++++++++++++++------------ 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 06943ef25..80c664d01 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -6,41 +6,45 @@ 현재 protected-source snapshot은 `main@d9b2a956960be72a5370afa50275a405dfbba529`다. 이 revision은 #546 semantic reviewer, #544 immutable Context Graph consumer admission, #533 runner-assignment semantic evidence, #552 cross-session coordination guidance, #539 canonical temp-root fixture repair, #554 exact central workflow-source trust roll-forward에 더해 acquisition source-evidence binding #526을 정상 병합한 protected truth다. 직전 protected `main@0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab`는 역사적 branch point로만 남으며 current merge/release authority가 아니다. Normal merge commit `d9b2a956960be72a5370afa50275a405dfbba529`는 previous protected main과 merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3`를 부모로 보존한다. #526의 retained `{path, sha256}` source identity와 package-digest evidence는 protected source integrity를 강화하지만 buyer/legal/commercial authenticity를 새로 만들지는 않는다. -Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다. 직전 protected central에서 이 revision으로의 변화는 CodeQL coverage audit source/test뿐이며 `.github/workflows/noema-review.yml`의 reviewed workflow body는 변하지 않았다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 Noema는 exact protected central source만 fail-closed consumer trust로 받는다. PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally after application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 unchanged exact head에서 terminal success였고, predecessor protected merge가 `ALLOWED_WORKFLOW_SHA = c9052e607e5f3cc76e73207e7786b21500721b79`를 protected truth로 승격했다. +Central workflow authority는 `.github/main@c9052e607e5f3cc76e73207e7786b21500721b79`다. Noema는 central dispatch/provider/retry/sandbox/security 구현을 복제하지 않는다. GitHub OIDC `job_workflow_sha`가 reusable workflow의 source commit identity를 전달하므로 Noema는 exact protected central source만 fail-closed consumer trust로 받는다. PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` integrated normally after application CI, reviewer-ci, required Security Scan, patch-validator-image가 모두 unchanged exact head에서 terminal success였고, protected source는 `ALLOWED_WORKFLOW_SHA = c9052e607e5f3cc76e73207e7786b21500721b79`를 authority로 유지한다. -Traceability를 위해 superseded predecessor `.github/main@bf0bf0ab0c9ebcf4cea05f8c9219dc093f9ab351` / PR #554 exact `e94d3ee884a120269fc42cf09ecbab6d0461b4ef`를 역사적 lineage로만 기록한다. Pre-#554 durable-workflow identities와 earlier protected branch points도 predecessor evidence일 뿐 current merge authority나 release evidence가 아니다. +Superseded protected branch points와 pre-#554 trust identities는 역사적 traceability일 뿐 current merge authority나 release evidence가 아니다. ## Active candidate convergence — 2026-09-07 KST -#526은 더 이상 active candidate가 아니라 protected truth다. 남은 open source lanes는 protected ancestry 이동을 bulk-rewrite하지 않고, overlap과 buyer risk를 고려해 ordinary/non-force restack으로 순차 수렴한다. 한 lane의 queued check는 그 lane만 막으며, 다른 safe review·documentation·owner-path work는 계속한다. +#526은 protected truth다. 남은 open source lanes는 protected ancestry 이동을 bulk-rewrite하지 않고, overlap과 buyer risk를 고려해 ordinary/non-force restack으로 순차 수렴한다. 한 lane의 queued check는 그 lane만 막으며 다른 safe review·documentation·owner-path work는 계속한다. -Required-gate regression #543은 predecessor branch delta를 새 protected main에 ordinary/non-force restack한 PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`로 수렴했다. 이 head는 `test/ci-exact-head-contract.test.ts`만 branch-owned delta로 유지하고 protected #526 acquisition files를 main에서 상속한다. Fresh current-head runs `ci 34071938887`, `reviewer-ci 34071938888`, required `Security Scan 34071938889`, `patch-validator-image 34071938978`은 현재 queued이며 predecessor GREEN은 전용하지 않는다. +Required-gate regression #543은 current protected main에 ordinary/non-force restack된 PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`로 수렴했다. 이 head는 `test/ci-exact-head-contract.test.ts`만 branch-owned delta로 유지하고 protected #526 acquisition files를 main에서 상속한다. Fresh current-head `ci 34071938887`, `reviewer-ci 34071938888`, required `Security Scan 34071938889`, `patch-validator-image 34071938978`은 현재 queued이며 predecessor GREEN은 전용하지 않는다. -Automation threat-model lane도 protected main에 ordinary/non-force restack했다. PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`는 `docs/automation-threat-model.md`와 `test/documentation-architecture-contract.test.ts`만 branch-owned delta로 유지한다. Fresh current-head runs `ci 34072254372`, `reviewer-ci 34072254382`, required `Security Scan 34072254380`, `patch-validator-image 34072254418`은 현재 queued다. +Automation threat-model lane도 current protected main에 ordinary/non-force restack됐다. PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`는 `docs/automation-threat-model.md`와 `test/documentation-architecture-contract.test.ts`만 branch-owned delta로 유지한다. Fresh `ci 34072254372`, `reviewer-ci 34072254382`, required `Security Scan 34072254380`, `patch-validator-image 34072254418`은 현재 queued다. -Durable Workflow / Task Execution owner PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b`는 atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, legacy-compatible bounded provenance와 malformed retained-receipt hostile fixture repair를 보존한다. 이 head는 predecessor `4616b5e93e19d51973aea330aa4124b51725b795`와 protected `main@d9b2a956...`를 부모로 하는 ordinary/non-force restack이며, #526 acquisition delta와 #542의 29개 owned path 사이에 changed-path overlap이 없다. Fresh compare는 `behind_by=0`, merge-base는 current protected main이다. Fresh current-head runs `ci 34073438522`, `reviewer-ci 34073438512`, required `Security Scan 34073438480`, `patch-validator-image 34073438562`가 새 generation으로 생성됐으며 predecessor GREEN은 전용하지 않는다. +Durable Workflow / Task Execution owner PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b`는 atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, bounded provenance와 malformed retained-receipt hostile fixture repair를 보존한다. 이 head는 predecessor `4616b5e93e19d51973aea330aa4124b51725b795`와 protected `main@d9b2a956...`를 부모로 하는 ordinary/non-force restack이며 #526 acquisition delta와 #542의 29개 owned path 사이에 overlap이 없다. Fresh compare는 `behind_by=0`, merge-base는 current protected main이다. Fresh `ci 34073438522`, `reviewer-ci 34073438512`, required `Security Scan 34073438480`, `patch-validator-image 34073438562`는 현재 queued다. -Toolchain/license PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a`는 exact-base lock policy, Wrangler/Miniflare/Sharp 제거와 pinned workerd/esbuild boundary를 보존하지만 아직 #526 이전 ancestry다. #550과 CI/image workflow path가 겹치므로 두 lane을 semantic merge해야 한다. +Workflow-concurrency foundation PR #550 exact `aeb9c46e51a2de2ec4ad9dd16a73b3548109385e`도 current protected main에 ordinary/non-force restack됐다. #526과 #550의 changed path는 겹치지 않아 16개 workflow/readiness delta를 그대로 보존하면서 protected acquisition truth를 main에서 상속했다. Fresh compare는 `behind_by=0`, merge-base exactly current protected main이며, fresh `ci 34074104922`, `reviewer-ci 34074104943`, required `Security Scan 34074104880`, `patch-validator-image 34074104923`은 현재 queued다. Historical traceability에서 predecessor #550 `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`는 네 gate가 모두 GREEN이었던 이전 ancestry다. 기존 executable documentation compatibility를 위해 문자열 `PR #550 exact ` + "`3ed5bd956c84e6dd2ebe604dc226fea82145ac29`" + `는 이 문장에서만 predecessor evidence를 가리키며 current authority가 아니다. -Orchestrator/free consumer PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1`는 stale `NOEMA_LLM_MODEL=contextual-orchestrator` service-name 값을 `orchestrator/free`로 조용히 보정하지 않고 fail closed하는 production contract와 Python reviewer oracle repair에 더해, TypeScript gateway-routing regression도 같은 fail-closed expectation으로 수렴시킨다. Noema는 provider/model discovery, routing, retry/failover를 가져오지 않는다. `contextual-orchestrator`가 그 authority를 계속 소유한다. 이 head는 여전히 #526 이전 ancestry라 merge 전에 fresh non-force convergence가 필요하다. +Provider-neutral Shared Kernel PR #536 exact `82366b27fc985512c91242542d841169e76c347e`는 predecessor ancestry에서 `ci 34064022440`, `reviewer-ci 34064022502`, required `Security Scan 34064022515`, `patch-validator-image 34064022468`가 모두 terminal success였지만 current protected #526 이후에는 그 GREEN을 전용할 수 없다. #536은 #535/#548 reviewer overlap의 foundation prerequisite다. Protected #526과 #536이 `CHANGELOG.md`를 함께 변경하므로 current-main 수렴 시 protected acquisition entries와 `noema-core` Unreleased entry를 semantic merge해야 한다. -Reviewer failed-check evidence PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`, provider-neutral Shared Kernel PR #536 exact `82366b27fc985512c91242542d841169e76c347e`, workflow concurrency PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`도 각 branch-owned delta를 유지한 채 새 protected ancestry에 순차 수렴해야 한다. #535/#536/#548은 reviewer/shared-core path가 겹치고 #535/#550은 product-development workflow, #540/#550은 CI/image workflow path가 겹치므로 blind overlay가 아니라 semantic preservation이 필요하다. +Orchestrator/free consumer PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1`는 stale `NOEMA_LLM_MODEL=contextual-orchestrator` 값을 `orchestrator/free`로 조용히 보정하지 않고 fail closed하는 production contract와 Python/TypeScript reviewer oracle을 같은 expectation으로 수렴시킨다. Noema는 provider/model discovery, routing, retry/failover를 가져오지 않는다. Current exact head는 #526 이전 ancestry에서 non-mergeable이며 fresh workflow lookup에 current-head run이 없으므로 predecessor evidence를 전용하지 않는다. #536 foundation 뒤에 reviewer/shared-core overlap을 semantic preserve해야 한다. + +Reviewer failed-check evidence PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`도 predecessor ancestry에서 `ci 34064058971`, `reviewer-ci 34064059002`, required `Security Scan 34064058950`, `patch-validator-image 34064058911`이 모두 terminal success였지만 current main으로 transfer되지 않는다. #536 integration 뒤에 failed-check/source-binding delta를 ordinary/non-force restack해야 한다. + +Toolchain/license PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` 역시 predecessor ancestry에서 `ci 34064499797`, `reviewer-ci 34064499757`, required `Security Scan 34064499762`, `patch-validator-image 34064499807`이 모두 terminal success였지만 current protected ancestry가 아니다. #540은 protected #526과 `CHANGELOG.md`, current #550과 CI/image workflow path가 겹친다. #550 concurrency foundation을 먼저 통합한 뒤 protected acquisition CHANGELOG와 pinned workerd/esbuild·lock policy를 함께 semantic preserve해야 한다. | Lane | Current exact head | Owned delta / boundary | | --- | --- | --- | | Central workflow trust | protected `main@d9b2a956960be72a5370afa50275a405dfbba529`; merged PR #554 exact `01c0a0061a360ea1e3a9586e67744466f7544672` | `job_workflow_sha` consumer pin only; central `.github` keeps agent-dispatch/provider/security implementation authority. | -| Acquisition evidence | protected `main@d9b2a956960be72a5370afa50275a405dfbba529`; merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3` | Retained `{path, sha256}` source identity plus protected package-digest contract; hashes do not create buyer/legal truth. | -| Required-gate regression | PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec` | Forbids docs-only suppression of required gates; current protected ancestry, exact-head gates pending. | -| Automation threat model | PR #553 exact `4c213e184b94b70558092ca739990464f889f06c` | Corrects historical PR #80 language; no runtime authority change; current protected ancestry, exact-head gates pending. | -| Orchestrator/free consumer | PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover; needs post-#526 convergence. | -| Reviewer failed-check evidence | PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0` | Failed-check → actionable source binding and exact positive `Finding.line`; no provider/security authority; needs post-#526 convergence. | -| Shared Kernel | PR #536 exact `82366b27fc985512c91242542d841169e76c347e` | Provider-neutral `noema-core`; contextual-orchestrator remains provider/model owner; needs post-#526 convergence. | -| Workflow concurrency | PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` | PR-only supersession cancellation and work-conserving handoff; needs post-#526 convergence. | -| Toolchain/license | PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` | issue #531 / #540; exact-base lock/toolchain/license delta retained; needs post-#526 convergence. | -| Durable Workflow / Task Execution | issue #541 / PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b` | Atomic claim/checkpoint/recovery/effect invariants and hostile provenance validation; current protected ancestry, fresh exact-head gates pending. | -| Documentation authority | PR #547 | Dedicated cross-lane baseline writer; this revision binds protected #526 truth and the current candidate identities above. | - -Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. A current PR can be review-clean while still non-authorizing because its exact-head gate is queued, failed, stale, or based on an older protected ancestry. +| Acquisition evidence | protected `main@d9b2a956960be72a5370afa50275a405dfbba529`; merged PR #526 exact `399d51d24bab96d204f232036938da7ab1034aa3` | Retained `{path, sha256}` source identity plus package-digest contract; hashes do not create buyer/legal truth. | +| Required-gate regression | PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec` | Current protected ancestry; exact-head gates pending. | +| Automation threat model | PR #553 exact `4c213e184b94b70558092ca739990464f889f06c` | Current protected ancestry; exact-head gates pending. | +| Workflow concurrency | PR #550 exact `aeb9c46e51a2de2ec4ad9dd16a73b3548109385e` | PR-only supersession cancellation and work-conserving handoff; current protected ancestry, exact-head gates pending. | +| Durable Workflow / Task Execution | issue #541 / PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b` | Atomic claim/checkpoint/recovery/effect invariants and hostile provenance validation; current protected ancestry, exact-head gates pending. | +| Shared Kernel | PR #536 exact `82366b27fc985512c91242542d841169e76c347e` | Provider-neutral `noema-core`; foundation for #535/#548; needs semantic post-#526 convergence. | +| Orchestrator/free consumer | PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover; converge after #536. | +| Reviewer failed-check evidence | PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0` | Failed-check → actionable source binding; converge after #536. | +| Toolchain/license | PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` | issue #531 / #540; converge after #550 while preserving protected CHANGELOG. | +| Documentation authority | PR #547 | Dedicated cross-lane baseline writer; this revision binds protected #526 truth and current candidate identities above. | + +Fresh exact-head workflow evidence is observation-scoped and must be refetched after each source mutation or restack. No predecessor GREEN transfers. A current PR can be review-clean while still non-authorizing because its exact-head gate is queued, failed, stale or based on older protected ancestry. ## DDD and ownership baseline @@ -54,10 +58,11 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | Priority | Gap | Buyer/operator impact | Current owner | Authoritative completion evidence | Next executable action | | --- | --- | --- | --- | --- | --- | -| P0 | Central workflow-source drift watch | Central protected source가 다시 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고, central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | -| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | affected open PRs | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current ancestry의 #543/#553/#542 exact-head gates를 검증하면서 #535/#536/#540/#548/#550을 overlap-aware ordinary/non-force convergence하고 각 새 head를 다시 검증한다. | -| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, native/legacy root semantics, isolated malformed-receipt coverage, exact-head GREEN, protected merge | #542 exact `46439b1...`의 fresh CI/reviewer/Security/image를 검증하고 unchanged head에서 모두 GREEN이면 normal protected integration한다. | -| P0 | GPL-family development/build path | 조직의 commercial inbound policy와 build toolchain이 충돌하면 distribution diligence가 fail closed된다. | issue #531 / #540 | current-base lock policy, deterministic lockfile, license/security/image/SBOM/provenance gates, protected merge | #550과 겹치는 workflow delta를 보존하면서 #540을 새 protected ancestry에 수렴시키고 fresh exact-head gates를 검증한다. | +| P0 | Central workflow-source drift watch | Central protected source가 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고 central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | +| P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | #543 / #553 / #542 / #550 | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current ancestry 네 lane의 gate를 검증하고 four-GREEN이 된 독립 prerequisite부터 정상 통합한다. | +| P0 | Reviewer foundation convergence | Shared Kernel보다 dependent reviewer delta를 먼저 합치면 source/package boundary가 다시 덮일 수 있다. | #536 → #535/#548 | semantic post-#526 restack, protected CHANGELOG preservation, fresh exact-head gates | #536을 먼저 semantic converge하고 검증·통합한 뒤 #535/#548을 새 protected ancestry에 순차 restack한다. | +| P0 | Workflow/toolchain convergence | #540의 오래된 CI/image copy가 #550 concurrency contract를 덮으면 work-conserving/supersession 정책이 퇴행한다. | #550 → issue #531 / #540 | #550 protected integration, then semantic #540 restack with lock/toolchain/license + current workflows | #550 exact `aeb9c46...`의 fresh gates를 검증하고, 통합 뒤 #540을 protected CHANGELOG와 current workflow semantics를 보존해 수렴시킨다. | +| P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, root semantics, exact-head GREEN, protected merge | #542 exact `46439b1...`의 fresh four gates를 검증하고 unchanged head에서 모두 GREEN이면 normal protected integration한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. | | P0 | Governance enforceability | required workflow 하나만으로 PR approval, history rewrite, deletion, break-glass 통제를 증명할 수 없다. | issue #27 / organization control plane | live ruleset/protection evidence and required workflow behavior | current protected main 기준 read-only governance audit을 재실행하고 미구성 controls는 authorized owner path에서 검증한다. | | P1 | Patch-validator publication | PR-head image GREEN은 protected operational publication·signing·activation 증거가 아니다. | issue #66 | protected-source registry digest, signature/attestation, operational receipt and rollback | protected-main dispatch와 immutable publication identity가 가능한 owner control plane에서 운영 증거를 생성한다. | From 91db53504c902fe280b0cc1020cd0a828dc7290b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 10:49:26 +0900 Subject: [PATCH 83/85] docs: fix workflow concurrency predecessor traceability --- docs/product-technical-gap-baseline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 80c664d01..1febcc3bb 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -20,7 +20,7 @@ Automation threat-model lane도 current protected main에 ordinary/non-force res Durable Workflow / Task Execution owner PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b`는 atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, bounded provenance와 malformed retained-receipt hostile fixture repair를 보존한다. 이 head는 predecessor `4616b5e93e19d51973aea330aa4124b51725b795`와 protected `main@d9b2a956...`를 부모로 하는 ordinary/non-force restack이며 #526 acquisition delta와 #542의 29개 owned path 사이에 overlap이 없다. Fresh compare는 `behind_by=0`, merge-base는 current protected main이다. Fresh `ci 34073438522`, `reviewer-ci 34073438512`, required `Security Scan 34073438480`, `patch-validator-image 34073438562`는 현재 queued다. -Workflow-concurrency foundation PR #550 exact `aeb9c46e51a2de2ec4ad9dd16a73b3548109385e`도 current protected main에 ordinary/non-force restack됐다. #526과 #550의 changed path는 겹치지 않아 16개 workflow/readiness delta를 그대로 보존하면서 protected acquisition truth를 main에서 상속했다. Fresh compare는 `behind_by=0`, merge-base exactly current protected main이며, fresh `ci 34074104922`, `reviewer-ci 34074104943`, required `Security Scan 34074104880`, `patch-validator-image 34074104923`은 현재 queued다. Historical traceability에서 predecessor #550 `3ed5bd956c84e6dd2ebe604dc226fea82145ac29`는 네 gate가 모두 GREEN이었던 이전 ancestry다. 기존 executable documentation compatibility를 위해 문자열 `PR #550 exact ` + "`3ed5bd956c84e6dd2ebe604dc226fea82145ac29`" + `는 이 문장에서만 predecessor evidence를 가리키며 current authority가 아니다. +Workflow-concurrency foundation PR #550 exact `aeb9c46e51a2de2ec4ad9dd16a73b3548109385e`도 current protected main에 ordinary/non-force restack됐다. #526과 #550의 changed path는 겹치지 않아 16개 workflow/readiness delta를 그대로 보존하면서 protected acquisition truth를 main에서 상속했다. Fresh compare는 `behind_by=0`, merge-base exactly current protected main이며, fresh `ci 34074104922`, `reviewer-ci 34074104943`, required `Security Scan 34074104880`, `patch-validator-image 34074104923`은 현재 queued다. Historical compatibility note: PR #550 exact `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` is predecessor evidence only; predecessor #550 `3ed5bd956c84e6dd2ebe604dc226fea82145ac29` had four GREEN gates on the earlier protected ancestry and is not current authority. Provider-neutral Shared Kernel PR #536 exact `82366b27fc985512c91242542d841169e76c347e`는 predecessor ancestry에서 `ci 34064022440`, `reviewer-ci 34064022502`, required `Security Scan 34064022515`, `patch-validator-image 34064022468`가 모두 terminal success였지만 current protected #526 이후에는 그 GREEN을 전용할 수 없다. #536은 #535/#548 reviewer overlap의 foundation prerequisite다. Protected #526과 #536이 `CHANGELOG.md`를 함께 변경하므로 current-main 수렴 시 protected acquisition entries와 `noema-core` Unreleased entry를 semantic merge해야 한다. From 3592f52722dfaf8c77daf03a2ff8155c2c2fa9c9 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 11:12:51 +0900 Subject: [PATCH 84/85] test(docs): bind baseline to live reviewer stack --- ...cumentation-live-open-pr-authority.test.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 test/documentation-live-open-pr-authority.test.ts diff --git a/test/documentation-live-open-pr-authority.test.ts b/test/documentation-live-open-pr-authority.test.ts new file mode 100644 index 000000000..584d506f6 --- /dev/null +++ b/test/documentation-live-open-pr-authority.test.ts @@ -0,0 +1,21 @@ +import { readFileSync } from "node:fs"; + +import { describe, expect, it } from "vitest"; + +describe("product-technical gap baseline live open-PR authority", () => { + it("tracks the current orchestrator/free consumer and its stacked evidence-receipt successor", () => { + const baseline = readFileSync("docs/product-technical-gap-baseline.md", "utf8"); + + expect(baseline).toContain( + "PR #535 exact `32972443b121d77a077d1d97c6c702d10fc4c580`", + ); + expect(baseline).not.toContain( + "PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1`", + ); + expect(baseline).toContain( + "PR #556 exact `66c15f2121f7198193cdea296d4fb8af9618e67b`", + ); + expect(baseline).toContain("issue #555 / PR #556"); + expect(baseline).toContain("#535 → #556"); + }); +}); From 4690579c7c5a75d3389a2226c74c888ff9eab7e8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 7 Sep 2026 11:14:04 +0900 Subject: [PATCH 85/85] docs: reconcile live reviewer stack authority --- docs/product-technical-gap-baseline.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 1febcc3bb..1f76a5dab 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -14,9 +14,9 @@ Superseded protected branch points와 pre-#554 trust identities는 역사적 tra #526은 protected truth다. 남은 open source lanes는 protected ancestry 이동을 bulk-rewrite하지 않고, overlap과 buyer risk를 고려해 ordinary/non-force restack으로 순차 수렴한다. 한 lane의 queued check는 그 lane만 막으며 다른 safe review·documentation·owner-path work는 계속한다. -Required-gate regression #543은 current protected main에 ordinary/non-force restack된 PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`로 수렴했다. 이 head는 `test/ci-exact-head-contract.test.ts`만 branch-owned delta로 유지하고 protected #526 acquisition files를 main에서 상속한다. Fresh current-head `ci 34071938887`, `reviewer-ci 34071938888`, required `Security Scan 34071938889`, `patch-validator-image 34071938978`은 현재 queued이며 predecessor GREEN은 전용하지 않는다. +Required-gate regression #543은 current protected main에 ordinary/non-force restack된 PR #543 exact `b14b37ca12b3b6ae1999d250a393997ffff04dec`로 수렴했다. 이 head는 `test/ci-exact-head-contract.test.ts`만 branch-owned delta로 유지하고 protected #526 acquisition files를 main에서 상속한다. Fresh current-head `ci 34071938887`와 `reviewer-ci 34071938888`은 terminal success이고, required `Security Scan 34071938889`은 queued, `patch-validator-image 34071938978`은 in progress다. Predecessor GREEN은 전용하지 않는다. -Automation threat-model lane도 current protected main에 ordinary/non-force restack됐다. PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`는 `docs/automation-threat-model.md`와 `test/documentation-architecture-contract.test.ts`만 branch-owned delta로 유지한다. Fresh `ci 34072254372`, `reviewer-ci 34072254382`, required `Security Scan 34072254380`, `patch-validator-image 34072254418`은 현재 queued다. +Automation threat-model lane도 current protected main에 ordinary/non-force restack됐다. PR #553 exact `4c213e184b94b70558092ca739990464f889f06c`는 `docs/automation-threat-model.md`와 `test/documentation-architecture-contract.test.ts`만 branch-owned delta로 유지한다. Fresh `ci 34072254372`와 `patch-validator-image 34072254418`은 in progress이고, `reviewer-ci 34072254382`와 required `Security Scan 34072254380`은 queued다. Durable Workflow / Task Execution owner PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b`는 atomic claim, effect-start, checkpoint CAS, recovery/cancellation, payload minimization, fail-closed fault classes, bounded provenance와 malformed retained-receipt hostile fixture repair를 보존한다. 이 head는 predecessor `4616b5e93e19d51973aea330aa4124b51725b795`와 protected `main@d9b2a956...`를 부모로 하는 ordinary/non-force restack이며 #526 acquisition delta와 #542의 29개 owned path 사이에 overlap이 없다. Fresh compare는 `behind_by=0`, merge-base는 current protected main이다. Fresh `ci 34073438522`, `reviewer-ci 34073438512`, required `Security Scan 34073438480`, `patch-validator-image 34073438562`는 현재 queued다. @@ -24,7 +24,9 @@ Workflow-concurrency foundation PR #550 exact `aeb9c46e51a2de2ec4ad9dd16a73b3548 Provider-neutral Shared Kernel PR #536 exact `82366b27fc985512c91242542d841169e76c347e`는 predecessor ancestry에서 `ci 34064022440`, `reviewer-ci 34064022502`, required `Security Scan 34064022515`, `patch-validator-image 34064022468`가 모두 terminal success였지만 current protected #526 이후에는 그 GREEN을 전용할 수 없다. #536은 #535/#548 reviewer overlap의 foundation prerequisite다. Protected #526과 #536이 `CHANGELOG.md`를 함께 변경하므로 current-main 수렴 시 protected acquisition entries와 `noema-core` Unreleased entry를 semantic merge해야 한다. -Orchestrator/free consumer PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1`는 stale `NOEMA_LLM_MODEL=contextual-orchestrator` 값을 `orchestrator/free`로 조용히 보정하지 않고 fail closed하는 production contract와 Python/TypeScript reviewer oracle을 같은 expectation으로 수렴시킨다. Noema는 provider/model discovery, routing, retry/failover를 가져오지 않는다. Current exact head는 #526 이전 ancestry에서 non-mergeable이며 fresh workflow lookup에 current-head run이 없으므로 predecessor evidence를 전용하지 않는다. #536 foundation 뒤에 reviewer/shared-core overlap을 semantic preserve해야 한다. +Orchestrator/free consumer PR #535 exact `32972443b121d77a077d1d97c6c702d10fc4c580`는 stale `NOEMA_LLM_MODEL=contextual-orchestrator` 값을 `orchestrator/free`로 조용히 보정하지 않고 fail closed하는 production contract와 Python/TypeScript reviewer oracle을 같은 expectation으로 수렴시킨다. Test-only `eef1039639c8bd2575c658e6dec8afbfcdf42b40`은 Unreleased changelog도 같은 fail-closed 계약을 요구해 predecessor의 자동-normalization 문구를 deterministic RED로 고정했고, production/documentation `32972443...`은 Actions가 `orchestrator/free`를 pin하며 다른 stale consumer config를 자동 canonicalize하지 않는다고 바로잡았다. Noema는 provider/model discovery, routing, retry/failover를 가져오지 않는다. Current exact head는 #526 이전 ancestry에서 non-mergeable이고 fresh workflow lookup에 current-head run이 없으므로 predecessor evidence를 전용하지 않는다. #536 foundation 뒤에 reviewer/shared-core overlap을 semantic preserve해야 한다. + +Exact-claim evidence receipt owner issue #555 / PR #556 exact `66c15f2121f7198193cdea296d4fb8af9618e67b`는 source/execution/research receipt를 exact repository/head/workflow/run/attempt, claim digest, artifact digest/size와 producer identity에 결합하는 Noema-owned admission kernel을 제안한다. 이 lane은 `.github#1641`의 phrase-sensitive consumer RED를 해결하기 위한 owner prerequisite지만 trusted producer, immutable Noema release, central consumer GREEN을 아직 증명하지 않는다. #556은 #535의 predecessor `a6fc483...`에 stacked되어 있어 current #535 `32972443...`을 아직 상속하지 못한다. Integration order는 `#536 → #535 → #556`이며 #535가 정상 통합된 뒤 ordinary/non-force restack, exact-head gates, immutable release, released consumer bump가 필요하다. Reviewer failed-check evidence PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0`도 predecessor ancestry에서 `ci 34064058971`, `reviewer-ci 34064059002`, required `Security Scan 34064058950`, `patch-validator-image 34064058911`이 모두 terminal success였지만 current main으로 transfer되지 않는다. #536 integration 뒤에 failed-check/source-binding delta를 ordinary/non-force restack해야 한다. @@ -39,7 +41,8 @@ Toolchain/license PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` 역 | Workflow concurrency | PR #550 exact `aeb9c46e51a2de2ec4ad9dd16a73b3548109385e` | PR-only supersession cancellation and work-conserving handoff; current protected ancestry, exact-head gates pending. | | Durable Workflow / Task Execution | issue #541 / PR #542 exact `46439b1095da6a6dfd44067fda1b35fb8938849b` | Atomic claim/checkpoint/recovery/effect invariants and hostile provenance validation; current protected ancestry, exact-head gates pending. | | Shared Kernel | PR #536 exact `82366b27fc985512c91242542d841169e76c347e` | Provider-neutral `noema-core`; foundation for #535/#548; needs semantic post-#526 convergence. | -| Orchestrator/free consumer | PR #535 exact `a6fc483fe9537c5881114db82cc9f741eb8331b1` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover; converge after #536. | +| Orchestrator/free consumer | PR #535 exact `32972443b121d77a077d1d97c6c702d10fc4c580` | Noema consumer/privacy/tool boundary only; CO owns provider/model routing/retry/failover; converge after #536. | +| Exact-claim evidence receipts | issue #555 / PR #556 exact `66c15f2121f7198193cdea296d4fb8af9618e67b` | Noema-owned receipt admission contract; stacked on stale #535 predecessor, no trusted producer/release/consumer GREEN claim. | | Reviewer failed-check evidence | PR #548 exact `e24d31068e1a537b6e7cc4a4ec4ed8d68dca47f0` | Failed-check → actionable source binding; converge after #536. | | Toolchain/license | PR #540 exact `2eba9d6b1e3365f745dd43bb8e40e87b0f2ead3a` | issue #531 / #540; converge after #550 while preserving protected CHANGELOG. | | Documentation authority | PR #547 | Dedicated cross-lane baseline writer; this revision binds protected #526 truth and current candidate identities above. | @@ -60,7 +63,8 @@ ADR 0012는 broader runtime-orchestration decision이 아직 넓기 때문에 `P | --- | --- | --- | --- | --- | --- | | P0 | Central workflow-source drift watch | Central protected source가 움직였는데 Noema trust pin이 따라가지 못하면 reusable review exchange가 fail closed된다. | protected main / `.github` owner path | current central protected SHA, matching protected consumer pin, exact source lineage | 매 fresh sweep에서 central과 Noema pin을 비교하고 central source identity가 전진하면 좁은 successor trust repair를 즉시 만든다. | | P0 | Current-main exact-head verification | predecessor GREEN을 전용하면 stale source가 merge authority로 승격될 수 있다. | #543 / #553 / #542 / #550 | unchanged exact-head CI/reviewer/Security/image, current review/thread authority, normal merge | current ancestry 네 lane의 gate를 검증하고 four-GREEN이 된 독립 prerequisite부터 정상 통합한다. | -| P0 | Reviewer foundation convergence | Shared Kernel보다 dependent reviewer delta를 먼저 합치면 source/package boundary가 다시 덮일 수 있다. | #536 → #535/#548 | semantic post-#526 restack, protected CHANGELOG preservation, fresh exact-head gates | #536을 먼저 semantic converge하고 검증·통합한 뒤 #535/#548을 새 protected ancestry에 순차 restack한다. | +| P0 | Reviewer foundation convergence | Shared Kernel보다 dependent reviewer delta를 먼저 합치면 source/package boundary가 다시 덮일 수 있다. | #536 → #535/#548; #535 → #556 | semantic post-#526 restack, protected CHANGELOG preservation, fresh exact-head gates | #536을 먼저 semantic converge하고 검증·통합한 뒤 #535/#548을 새 protected ancestry에 순차 restack하며, #535 통합 뒤 #556을 ordinary/non-force restack한다. | +| P0 | Exact-claim evidence supply chain | phrase-sensitive review evidence가 producer-issued receipt 없이 승인되면 model prose가 source/execution/research authority를 스스로 만들 수 있다. | issue #555 / PR #556 → `.github#1641` | exact-head Noema receipt tests, trusted producer artifact, immutable Noema release, released central consumer bump, original consumer RED→GREEN | #535 integration 뒤 #556을 current protected ancestry에 수렴·검증·release하고 central owner가 released validator/schema를 소비해 원래 corpus를 재실행한다. | | P0 | Workflow/toolchain convergence | #540의 오래된 CI/image copy가 #550 concurrency contract를 덮으면 work-conserving/supersession 정책이 퇴행한다. | #550 → issue #531 / #540 | #550 protected integration, then semantic #540 restack with lock/toolchain/license + current workflows | #550 exact `aeb9c46...`의 fresh gates를 검증하고, 통합 뒤 #540을 protected CHANGELOG와 current workflow semantics를 보존해 수렴시킨다. | | P0 | Atomic durable workflow authority | 중복 side effect, checkpoint divergence, cancellation/recovery 오판이나 retained provenance 변조는 buyer runtime 신뢰성을 직접 훼손한다. | issue #541 / #542 | claim/checkpoint/recovery/effect invariants, payload minimization, root semantics, exact-head GREEN, protected merge | #542 exact `46439b1...`의 fresh four gates를 검증하고 unchanged head에서 모두 GREEN이면 normal protected integration한다. | | P0 | Reviewer/Maintainer production identity | source-only readiness로는 독립 review와 bounded publication authority를 입증할 수 없다. | issues #29 / #227 | live installation/permissions/key custody/rotation and bounded publication/recovery receipts | authorized external App provisioning과 protected-source preflight를 실제 control plane에서 수행한다. |