fix(review-transport): dispatch continuations with app token - #2540
seonghobae wants to merge 13 commits into
Conversation
Exchange the GitHub Actions OIDC assertion for the repository-scoped OpenCode GitHub App token before Strix or Noema redispatches a continuation to the central .github repository. Remove the consumer-scoped github.token fallback and preserve fail-closed transport behavior. Exact local verification: - safe_load: Strix and Noema workflow YAML - PYTHONPATH=. python -W error -m pytest -q 5162 passed, 10 skipped, 40 subtests passed - git diff --check
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Ordinary exact-head restack receipt for Parents are the prior #2540 head Fresh combined-tree evidence (Python 3.12.14): Strix and Noema workflow YAML parsed; Merge remains HOLD: Security Scan and SAST are pending, CodeQL is queued, there are zero unresolved threads, and no qualifying independent APPROVED review exists. Ready is review admission only. |
|
@coderabbitai review Please review exact head |
|
Draft blocker — current head is not mergeableExact reviewed head: Two substantive defects remain:
This PR remains Draft / Proposed. I am repairing the parser test-first here. The cross-repository capability belongs in the canonical Noema owner as a versioned, least-privilege contract and immutable release; consumer adoption must follow that release. No PAT fallback, bypass, or merge is justified. |
|
Exact-head parser repair receipt for RED executed the actual Strix and Noema continuation exchange shell blocks: numeric OIDC, object App token, and multiline App token values were accepted by the parent and could reach This does not resolve central-dispatch authority. Retained protected evidence proves the same consumer exchange→central dispatch sequence fails HTTP 403. Canonical owner work is tracked at ContextualWisdomLab/noema#735 and requires a versioned immutable least-privilege release before consumer pin/adoption. PR remains Draft / merge HOLD. Fresh exact-head Checks and qualifying independent review are required; Noema #735 is a substantive prerequisite. No bypass, force update, destructive rebase, PAT fallback, auto-merge, or closure was used. |
|
Independent re-review found no Critical or Important defect and confirmed all malformed cases RED→GREEN. Its sole Minor finding was a vacuous-test risk: rejection-only assertions would also pass an always-failing exchange. Follow-up exact head Fresh verification after the review repair: four affected files Draft / merge HOLD remains unchanged: Noema #735 immutable owner release and consumer pin are substantive prerequisites; new exact-head Checks and qualifying protected review remain non-passing until terminal. |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head COMMENT review for d49ad6c693dbaafd8ec1b5f28c6be89a1a5eb569 against stacked prerequisite 9d3ec75d6fbca20a6ac56de37408997fcafb01ea.
Independent diff review found no Critical or Important defect. The strict jq -ser contract rejects non-string, empty, whitespace-bearing, multiline, malformed, and multiple-object responses before credential use. Actual parent/current workflow-shell execution reproduced all three required exploit cases RED→GREEN. The review's sole Minor finding—rejection-only tests could pass an always-failing exchange—was repaired on this head with positive controls requiring successful valid exchange, the exact single mask line, and the exact single output record.
Fresh evidence: four affected test files 120 passed with warnings fatal; combined Python 3.12.14 suite 5172 passed, 6 skipped, 40 subtests passed; both YAML files parse; git diff --check passes. Documentation correctly retains the known HTTP 403 and Noema #735 immutable owner-release prerequisite.
This COMMENT is not approval. The PR is correctly Draft and is not merge-ready until Noema publishes and .github pins the versioned target/action-bound capability, hosted exact-head Checks are terminal GREEN, and protected review admission is satisfied.
|
Owner-boundary currentization for exact head Noema #735 has selected a separate versioned broker contract, The PR body now records that exact boundary. The current legacy exchange plus local Owner design evidence: ContextualWisdomLab/noema#735 (comment) |
|
Exact-head carryover receipt for This head now preserves the current production recurrence from Verified predecessor integration from #2510:
Fresh docs-bound verification: |
|
Canonical owner handoff: ContextualWisdomLab/noema#736 now carries the Proposed least-privilege continuation broker design and TDD plan at exact head This is documentation-only and Draft. It does not unblock this consumer PR. Keep #2540 Draft until Noema implements and releases the versioned endpoint/schema, this PR pins that immutable release, and a real exact-head Noema/Strix continuation reaches the fixed central event and produces a fresh model verdict. |
Pre-restack rationale: preserve canonical security ownerCurrent #2540 head Plan: ordinary two-parent merge current #2530 into current #2540, resolve only the two documentation collisions by retaining both factual deltas, run focused security/transport contracts and the full exact-tree suite, then update the existing #2540 branch with #2540 remains Draft/Proposed and blocked on the unfinished Noema continuation-dispatch owner release; the restack does not claim that dependency complete. No bypass, force push, destructive rebase, auto-merge, release, or closure. |
Exact-head security-successor restack receipt
The previous Security Scan failed on inherited PyO3 0.22.6. This ordinary restack carries the canonical #2531/#2530 PyO3 0.29.2, PyJWT 2.14.0, and urllib3 2.8.0 repairs instead of copying them. Fresh exact-tree evidence:
This PR remains Draft / Proposed / HOLD. Noema #735/#736 has not produced an immutable broker release, and new exact-head hosted Checks/review are not yet merge authority. No merge, auto-merge, bypass, Force Push, rebase, release, or close was performed. |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head review for 612d8e77cf13eba84782a22587a72d3ffb4b6c6e against stacked prerequisite a2f73a4bc82ca783c114fa6e5020c511c948f0b7.
[P1] Reject control characters before raw credential emission. Both new exchange blocks accept any nonempty string for which test("[[:space:]]") is false, then emit it with jq -r into Bash command substitution. A JSON credential containing NUL is therefore accepted by jq; Bash prints warning: command substitution: ignored null byte in input, deletes the byte, exits zero, and continues with a different credential. Minimal reproduction of the production predicate with {"token":"abc\\u0000def"} produced status=0 length=6 value=abcdef. On the OIDC leg the mutated value reaches the exchange Authorization header; on the App-token leg it reaches ::add-mask:: and $GITHUB_OUTPUT. This violates the stated fail-closed/exact credential boundary even though newline injection is blocked.
Acceptance: add actual-shell RED fixtures for NUL and at least one other C0 control character in both OIDC and App-token fields; reject them inside jq before -r output so no curl Authorization, mask, or output record is produced; preserve the current valid-response positive controls and the typed/multi-object/whitespace matrix. An exact token grammar is preferable where the two credential formats permit it; otherwise reject every control character explicitly.
Current-head hosted evidence is also non-passing: Security Scan 36741151937 failed in dependency-review job 109975641239 and OSV job 109975641271; CodeQL 36741151901 is skipped. SAST 36741151872 and Metadata 36741151940 succeeded, but they do not override the source finding or failed/skipped gates. The Noema #735/#736 immutable broker dependency remains unresolved. Keep Draft; no merge, auto-merge, bypass, or rerun is justified before a source change and fresh exact-head verification.
|
Inherited PyJWT finding repaired through ordinary successor integration at exact head |
|
P1 control-character finding repaired test-first at exact head
Fresh exact-head Checks are running. Noema #735/#736 is still an unreleased prerequisite, so Draft / merge HOLD remains; no force update, bypass, or manual rerun. |
|
Exact restack receipt after current #2530 advancement
The exact ASCII credential grammar and NUL/BEL fail-closed repair remain intact. Noema #735/#736 is still unreleased, so the PR remains Draft / Proposed and merge is not authorized. |
Exact-head integrated repair receiptP1 is repaired on exact head
This remains Draft / Proposed / merge HOLD. Fresh hosted exact-head Checks and a qualifying independent review are required, and Noema #735/#736 must still publish the immutable broker capability before the adapter can claim end-to-end transport completion. No rerun, bypass, merge, force update, or closure was performed. |
|
Canonical owner repair snapshot:
Therefore the owner source is repaired but merge/release authority is not complete. |
|
Owner dependency refresh: Noema #736 is now at exact head |
|
Base-move conflict repaired non-destructively at exact head The PR is mechanically mergeable, ahead 12 / behind 0, with the same nine-file effective delta (+434/-12). The complete current Gap baseline retains both review-transport sections and all current owner security evidence. Exact-head Security |
Goal
Harden the proposed Strix/Noema continuation adapter without overstating the unresolved cross-repository authorization boundary.
Exact root cause
Two separate defects were found:
jq -r '.value // empty'/'.token // empty'and only tested-z. Numeric OIDC values, object App tokens, and multiline App tokens exited zero; multiline content could inject extra$GITHUB_OUTPUTrecords.ContextualWisdomLab/.github. Retained protected evidence already exercises that sequence and ends withResource not accessible by integration (HTTP 403):late-life-anxiety-reanalysis@34032cff52e8522db6ea0aad9f68ae0217e86ee3,local/supervisor-audit-20260912/current-ci/103571810868.log, blobcb91b0c0bfe1ff9001cab9e1675d97b00cfcef32, exchange/dispatch/failure at lines 141/158/173.Repair in this Draft
id-token: write; do not restore the consumergithub.tokenfallback.Canonical owner dependency
The missing target/action-bound capability belongs to Noema: ContextualWisdomLab/noema#735. The owner-selected v1 shape is a synchronous
POST /v1/continuation-dispatchesbroker: Noema validates exact OIDC/workflow/PR/head/base authority, performs one internally mapped central dispatch with a target-only installation token, and returns signed evidence without returning any GitHub credential. This consumer must replace its legacy exchange plus localgh apisequence only after Noema publishes an immutable versioned release. No PAT fallback, inherited central secret, source copy, consumer-visible broad installation token, or undocumented extension of the legacy endpoint is acceptable.Exact verification
Exact published head:
48dbe4e7a080a0235cb0a244820c87232dada1f2Exact published tree:
a53818695d4f5ac141ff6173da165b8f47b68c252 passed.120 passed, warnings fatal.29 passed, warnings fatal.5307 passed, 7 skipped, warnings fatal.18,729/18,729statements and7,642/7,642branches (100%); production Docstrings 100%.yaml.safe_load.git diff --check: clean.Predecessor delta integration
This exact head completely carries the valid delta from #2510 while correcting its overclaim:
github.tokenfallback;docs/product-technical-gap-baseline.mdretain the incident, ownership, acceptance gates, and currentcontextual-orchestrator#1349@832291c11da301e919d9dc20fda99f0847142dd8Noema 429→93-second wait→central HTTP 403 recurrence;Fresh docs-bound verification after this carryover:
27 passed, 4 subtests passedwith warnings fatal;git diff --checkclean.Stack and merge state
5a91ce9f9c3e773aa1172f1055fd791ccde8fdaa.a92a201802d802867100c63b7da081e3bbf4861eand current fix(ci): integrate parser, security, response, and coverage gates #25305a91ce9f9c3e773aa1172f1055fd791ccde8fdaa; the latter carries the complete 3,709-line product-gap source restoration plus the canonical security, response-lifecycle, and coverage ancestry.GitHub permission-model consequence
GitHub's official repository-dispatch endpoint requires
Contents: writefor GitHub App installation and fine-grained tokens. Because GitHub exposes no narrower dispatch-only token permission, this Draft's consumer-visible App-token exchange cannot be the released least-privilege solution even if installation targeting is repaired. Noema #735 must instead broker the single allowlisted central dispatch server-side and return an exact-revision receipt without exposing a GitHub credential. After that immutable owner release, this consumer must replace—not merely parameterize or rename—the legacy/exchange_github_app_tokenstep and regenerate exact-head tests and Checks.2026-10-01 security-successor restack receipt
The prior exact-head Security Scan failed only on inherited PyO3
0.22.6. This head fixes that ownership error by ordinarily merging the current #2530 successor rather than copying security code. The current ancestry preserves PyO30.29.2, PyJWT2.15.0, and urllib32.8.0source/lock contracts. The only merge conflicts wereCHANGELOG.mdanddocs/product-technical-gap-baseline.md; both resolutions retain the complete ordered factual sections from both parents. Independent staged-tree review found no Critical, Important, or Minor finding. The Noema broker remains unfinished, so this restack does not authorize Ready or merge.2026-10-01 PyJWT security-successor restack receipt
The Security Scan finding on prior head
612d8e77…was inherited from the central Strix lock. Canonical owner #2531 repaired GHSA-42vr-xj54-vc7v at9b4258de…; #2530 integrated it atf6a8bf5a…; this Draft now preserves both histories in ordinary two-parent commit9e7f376d6d219570b3d042370f32ddd6dbdc44cc(treedeeac68f02bb73f6a664fac9fcc2e085781b5f79). The first-parent delta is exactly the six-file owner repair and the Noema broker prerequisite remains unresolved, so this is carryover—not Ready or merge authorization.2026-10-01 control-character review repair
612d8e77…: the whitespace predicate accepted both NUL and BEL. Bash changedabc\\u0000defintoabcdefand continued with status 0.37fb147a9dcb44a781c7cf7ca7f7a5ae4d29313eadmits only[A-Za-z0-9._-]+inside jq before raw output in all six Strix/Noema exchange fields.a92a2018…, all 31 hosted Checks are terminal: 16 success and 15 intentionally skipped, with no failure or pending job. Qualifying approval remains absent and the Noema fix(deps): bump cryptography to 50.0.0 and constrain aiohttp >=3.14.3 in strix CI lock #735/fix(ci): snapshot dependencies on default-branch pushes so dependency-review has a base #736 immutable broker dependency remains unresolved, so this PR remains Draft / Proposed / merge HOLD.2026-10-01 current security-owner evidence restack receipt
Exact head
83cf434823e61021951328fc9b65cd3d2c4bd8e4(tree9f0390420011827555dffe8e33aa9047abfadafe) is an ordinary two-parent merge of the reviewed control-character repair37fb147a…and current #25305b3a76ea…. The first-parent file delta is exactly three owner documentation refinements; both workflow files and both NUL/BEL actual-shell regression files are byte-preserved. Compare evidence is ahead 4 / behind 0 from the prior #2540 head and ahead 9 / behind 0 from the current base. This restack preserves the Noema #735/#736 immutable-release HOLD and does not authorize Ready or merge.2026-10-01 complete control-character evidence integration
Fast-forward child
a92a201802d802867100c63b7da081e3bbf4861e(treedb123f2792c509202c28a4b9fa7c2cfdd7a51139) extends the reviewed NUL/BEL evidence without changing the six workflow predicates: it adds SOH to both continuation actual-shell cases, binds NUL/SOH rejection for the existing Strix metadata exchange, and aligns CHANGELOG, doctoring, and the product-gap baseline. Focused evidence is 52 affected tests and the combined warning-fatal suite is 5,300 passed, 5 skipped, and 40 subtests. Hosted exact-head Checks are 16 success / 15 skipped / 0 failure / 0 pending. This is source/evidence completion only; approval remains 0 and Noema #735/#736 remains an immutable-release prerequisite.2026-10-01 current source-integrity owner refresh
Exact head
48dbe4e7a080a0235cb0a244820c87232dada1f2(treea53818695d4f5ac141ff6173da165b8f47b68c25) is an ordinary two-parent merge of prior #2540a92a201802d802867100c63b7da081e3bbf4861eand current #25305a91ce9f9c3e773aa1172f1055fd791ccde8fdaa. The sole content conflict was the product/technical Gap baseline: the canonical restored 3,709-line owner artifact was retained and the two #2540 review-transport Gap sections were reapplied, producing 3,721 lines. The effective delta against current #2530 remains exactly the same nine reviewed #2540 files (434 additions, 12 deletions); the ref update was fast-forward andforce=false.Fresh exact-tree evidence: focused workflow/Gap contracts 58 passed; complete Python 3.14.7 warning-fatal suite 5,307 passed, 7 skipped;
git diff --checkGREEN. Exact-head Security36790272276and SAST36790272400are terminal-success; Draft-gated CodeQL36790272294is terminal-skipped and is not acceptance evidence. There are zero review threads and no qualifying APPROVED review. The Noema #735/#736 immutable broker release and consumer pin remain unresolved, so the PR stays Draft / Proposed / merge HOLD.2026-10-01 latest security-owner restack (authoritative)
a4c1c7052d4a78bccc381f943d570ba00acd84f0; exact tree:b362e267910615aa617eb650d48cb53860415d4c.48dbe4e7a080a0235cb0a244820c87232dada1f2and current canonical fix(ci): integrate parser, security, response, and coverage gates #2530813f16fad7528b035d6ae4386cd176c9a67413c1; the branch ref advanced withforce=false.docs/product-technical-gap-baseline.md, was resolved from the complete current owner source. Both fix(review-transport): dispatch continuations with app token #2540 review-transport sections remain, alongside the owner's Maturin, LiteLLM, security, and source-integrity evidence.36804492171and SAST36804492204are terminal GREEN; CodeQL36804492185is Draft-gated skipped and is not acceptance evidence. Noema fix(deps): bump cryptography to 50.0.0 and constrain aiohttp >=3.14.3 in strix CI lock #735/fix(ci): snapshot dependencies on default-branch pushes so dependency-review has a base #736 immutable release, consumer pin, Ready-admitted CodeQL/authenticated verdicts, and qualifying independent approval remain mandatory; no bypass, auto-merge, closure, or release is authorized.2026-10-01 Noema owner exact-head gate refresh
81568910dccff168681b9b923e2c7667861b1063on base1204a075ac15b924e2f907804ba99c337d1a3ac7.36790870778, reviewer-ci36790870754, Security36790870914, and patch-validator-image36790870794are terminal GREEN; all eight review threads are resolved.2026-10-01 current Maturin-owner restack
d8bc25753dcec4cb83b816835568c0e11a27f4e5; exact tree:12f663b1b35c986555a7bba3763fa1067f534a5c.a4c1c7052d4a78bccc381f943d570ba00acd84f0and current canonical fix(ci): integrate parser, security, response, and coverage gates #2530dc54310c8c5ee6637274e7e82f5ea53d64ad91e6; the branch ref advanced withforce=false.docs/product-technical-gap-baseline.md. Resolution retains both the review-transport credential-character Gap and the owner Maturin response-lifecycle/stacked-quality Gap. The effective owner-to-leaf delta remains the same nine review-transport files, ahead 13 / behind 0 with merge base exactly current fix(ci): integrate parser, security, response, and coverage gates #2530.compileall, conflict-marker inspection, andgit diff --checkpass. Canonical owner run 36813245691 separately proves 5,314 passed, 5 skipped, 40 subtests, 100% statement/branch coverage, 100% production docstrings, and Python 3.10 compatibility on the exact inherited owner bytes.2026-10-01 current Noema owner evidence (authoritative)
7487485a858f3d26827cabf153bdad3925ab577d, stacked on prerequisite Noema#737 exact head5d9b4d00f1b692f3b911f4a56d834831d5b65bee.36834849920, reviewer-ci36834849874, and patch-validator-image36834849867are terminal GREEN. A current-head Security run is absent because the stacked base is outside the protected-main Security ruleset; the earlier four-GREEN statement above is historical and is not current acceptance evidence.POST /exchangesection, duplicate TRD numbering, and route-specific attribution to/v1/continuation-dispatches. Review threads are 0, but qualifying APPROVED reviews remain 0.36827780015, patch-validator-image36827780026, Security Scan36827779881, and reviewer-ci36827780022; qualifying APPROVED reviews remain 0.