Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
5b239c7
test(trust): require current central workflow source
seonghobae Aug 30, 2026
f44f3a4
test(trust): follow latest audited central source
seonghobae Aug 30, 2026
614635a
fix(trust): roll trusted central workflow source forward
seonghobae Aug 30, 2026
a632b3b
docs(architecture): record current central trust roll-forward
seonghobae Aug 30, 2026
2c3a96e
test(trust): require current audited central workflow source
seonghobae Aug 30, 2026
cd77d98
fix(trust): pin current audited central workflow source
seonghobae Aug 30, 2026
5c7b90f
docs(trust): bind architecture to current audited central source
seonghobae Aug 30, 2026
6728842
merge(main): converge trusted workflow source lane
seonghobae Aug 30, 2026
ffdc742
merge(main): converge trusted workflow source lane
seonghobae Aug 30, 2026
b7b5280
test(trust): require current audited central source
seonghobae Aug 30, 2026
e60894e
fix(trust): roll forward audited central source
seonghobae Aug 30, 2026
18db12c
test(trust): require latest audited central workflow source
seonghobae Aug 30, 2026
e693edc
fix(trust): bind latest audited central workflow source
seonghobae Aug 30, 2026
f1d2c57
docs(architecture): record latest audited workflow source
seonghobae Aug 30, 2026
088348b
merge main into trusted workflow source roll-forward
seonghobae Aug 30, 2026
0a84b35
merge main into trusted workflow source roll-forward
seonghobae Aug 30, 2026
901e91f
test(trust): require current audited central source
seonghobae Aug 31, 2026
70d70da
fix(trust): roll forward audited central source
seonghobae Aug 31, 2026
54892c1
docs(architecture): record audited central source roll-forward
seonghobae Aug 31, 2026
0a95ec3
test(trust): require current audited central workflow source
seonghobae Aug 31, 2026
87be516
fix(trust): bind OIDC workflow source to audited central head
seonghobae Aug 31, 2026
09c46ec
docs(trust): record current audited central workflow source
seonghobae Aug 31, 2026
2c293ff
Merge protected main into trusted workflow roll-forward
seonghobae Aug 31, 2026
0bece50
test(trust): require current central workflow source
seonghobae Aug 31, 2026
816c7f8
test(trust): bind latest audited central source
seonghobae Aug 31, 2026
b967f6a
fix(trust): roll forward audited central workflow source
seonghobae Aug 31, 2026
f282917
docs(architecture): record current workflow-source trust
seonghobae Aug 31, 2026
d4729d2
test(trust): require current audited central workflow source
seonghobae Aug 31, 2026
0c9aa1d
fix(trust): bind OIDC source to current audited workflow commit
seonghobae Aug 31, 2026
b738504
docs(architecture): record current audited workflow source
seonghobae Aug 31, 2026
c3e66de
test(trust): require current central workflow source
seonghobae Aug 31, 2026
c80b6f9
test(trust): track current central review authority
seonghobae Aug 31, 2026
b8bf25e
fix(trust): bind current central review authority
seonghobae Aug 31, 2026
775ddf0
docs(architecture): record current review trust decision
seonghobae Aug 31, 2026
1fb5538
test(trust): track docs-only central source movement
seonghobae Aug 31, 2026
124dd79
fix(trust): follow audited docs-only central movement
seonghobae Aug 31, 2026
5f1aec3
docs(architecture): record docs-only central source roll-forward
seonghobae Aug 31, 2026
0778374
test(trust): require current central workflow source
seonghobae Aug 31, 2026
5fdd04f
fix(trust): bind current central source authority
seonghobae Aug 31, 2026
50eec78
docs(architecture): record current central source audit
seonghobae Aug 31, 2026
9da64c4
test(trust): require current central workflow source
seonghobae Aug 31, 2026
22e139d
fix(trust): roll forward current central workflow source
seonghobae Aug 31, 2026
cb83d42
docs(architecture): record current central trust audit
seonghobae Aug 31, 2026
05d2297
test(trust): require current central reviewer source
seonghobae Aug 31, 2026
2e08cd1
fix(trust): roll forward current central reviewer source
seonghobae Aug 31, 2026
ad35a8d
docs(architecture): audit current central reviewer source
seonghobae Aug 31, 2026
97dae86
test(trust): require current central workflow source
seonghobae Aug 31, 2026
25c4bd3
merge(main): converge trusted workflow roll-forward
seonghobae Aug 31, 2026
7f9085e
fix(trust): roll forward audited workflow source
seonghobae Aug 31, 2026
a4108ce
docs(architecture): record current trusted central source
seonghobae Aug 31, 2026
b220c19
chore(trust): converge audited workflow source onto current main
seonghobae Aug 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Routes have different meanings: `/health` is liveness, `/ready` is offline confi

This revision exposes both `ALLOWED_WORKFLOW_REF_PREFIX` and `ALLOWED_WORKFLOW_SHA`. Despite the legacy ref-binding name, `src/worker.ts` parses `ALLOWED_WORKFLOW_REF_PREFIX` as one **exact full workflow ref** and compares decoded `job_workflow_ref` or `workflow_ref` for exact equality. Wildcard, comma, whitespace, and prefix-sharing configuration forms are rejected. `src/runtime-entrypoint.ts` performs readiness dispatch and delegates `/exchange`; `src/entrypoint.ts` applies the distributed rate limiter before `src/worker.ts` performs its denial-only exact workflow-ref precheck. `src/index.ts` independently enforces the exact workflow ref/repository plus immutable `job_workflow_sha` or fallback `workflow_sha` after cryptographic verification. Missing, malformed, mismatched, or non-canonical configured source identity fails closed.

`wrangler.toml` pins `ALLOWED_WORKFLOW_SHA` to protected central `.github` commit `3a7941aa92de00b8b39fd11cbe7bf3da2fbbeddc`, audited after the central scheduler-only movement from predecessor `e03f473723dbcc15080fd580f46c0f8d409c939d`. The trusted `.github/workflows/noema-review.yml` blob remains byte-identical at `5c60782adb8be11d6538caea269a4bdfab7ab4d1`. The current central commit itself is not represented here as signed provenance; this is an explicit protected-ref plus exact-workflow-content trust decision, not a claim that unrelated central tree changes or future revisions are equivalent. GitHub OIDC `job_workflow_sha` binds the caller to the repository commit identity, so every later central commit movement still requires a new explicit Noema trust roll-forward and fresh exact-head evidence. The central repository remains a read-only dependency from Noema; known central consumer/scanner defects remain owned and repaired there rather than by weakening Noema verification.
`wrangler.toml` pins `ALLOWED_WORKFLOW_SHA` to protected central `.github` commit `1cbb6aaf0a24c3628d24c3dd6d9dcaa8a7eec0c5`. The exact trusted `.github/workflows/noema-review.yml` blob at that protected commit remains Git blob `064c4e5aeedcbb188196bd4800a0b918abd6da27`. Movement from `c8cc68a34bd19a91e2544acf08f2ead142ba702b` to current `1cbb6a...` leaves the workflow bytes unchanged but modifies the materialized trusted source tree in `scripts/ci/noema_review_gate.py` and its focused tests, adding one bounded correction attempt when the trusted verdict validator rejects an invalid changed-line/adversarial verdict. Because `noema-review.yml` materializes the complete trusted central source tree at its immutable workflow SHA and then executes `python3 -m scripts.ci.noema_review_gate`, this source-tree change is trust-relevant even though the workflow blob is unchanged; Noema re-audited the exact protected one-commit delta before accepting the new repository commit identity. More generally, Noema re-audits both the exact workflow blob and every relevant protected central delta before each repository-commit movement; ancestry alone is insufficient because GitHub OIDC `job_workflow_sha` binds the caller to that exact repository commit identity. The central repository remains a read-only dependency from Noema. The protected central OIDC consumer still reads a top-level `.token` from the exchange response while Noema's stable success envelope exposes the credential under `data.token`; that consumer defect remains central-owned and is not repaired by weakening or reshaping Noema's stable envelope.

The configured workflow ref and source SHA are operator authority bytes, not normalization input. The protected workflow-ref parser and authoritative verifier do not trim whitespace from these trust values before validation/comparison. A whitespace-bearing value therefore fails as unusable configuration rather than being normalized into a different trusted identity. On an active PR head this statement is candidate truth if the corresponding source delta is not yet on the live protected base.

Expand Down Expand Up @@ -152,4 +152,4 @@ Root README/customer copy may have a separate active owner; the canonical archit

The default shape is **small credential-exchange service + explicit state coordinators + external orchestration/review planes**. New model orchestration, artifact processing, repository mutation, or deployment authority should first be evaluated as a separate bounded component rather than folded into `/exchange`.

Architecture changes must keep source behavior, realistic regression tests, canonical documentation, traceability, and CHANGELOG semantics consistent without promoting active-PR behavior to protected truth.
Architecture changes must keep source behavior, realistic regression tests, canonical documentation, traceability, and CHANGELOG semantics consistent without promoting active-PR behavior to protected truth.
4 changes: 2 additions & 2 deletions test/trusted-workflow-source-rollforward.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { readFileSync } from "node:fs";
import { describe, expect, it } from "vitest";

const auditedCentralWorkflowSourceSha =
"3a7941aa92de00b8b39fd11cbe7bf3da2fbbeddc";
"1cbb6aaf0a24c3628d24c3dd6d9dcaa8a7eec0c5";

describe("trusted central workflow source revision", () => {
it("binds the deployed OIDC trust configuration to the audited central source commit", () => {
Expand All @@ -12,4 +12,4 @@ describe("trusted central workflow source revision", () => {
`ALLOWED_WORKFLOW_SHA = "${auditedCentralWorkflowSourceSha}"`,
);
});
});
});
2 changes: 1 addition & 1 deletion wrangler.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ALLOWED_AUDIENCE = "cwl-noema-review"
ALLOWED_REPOSITORY_OWNER = "ContextualWisdomLab"
ALLOWED_WORKFLOW_REPOSITORY = "ContextualWisdomLab/.github"
ALLOWED_WORKFLOW_REF_PREFIX = "ContextualWisdomLab/.github/.github/workflows/noema-review.yml@refs/heads/main"
ALLOWED_WORKFLOW_SHA = "3a7941aa92de00b8b39fd11cbe7bf3da2fbbeddc"
ALLOWED_WORKFLOW_SHA = "1cbb6aaf0a24c3628d24c3dd6d9dcaa8a7eec0c5"
GITHUB_API_BASE = "https://api.github.com"
NOEMA_RATE_LIMIT_PER_MINUTE = "60"
NOEMA_OIDC_JWKS_CACHE_TTL_SECONDS = "300"
Expand Down
Loading