Repository navigation
Keep strict execution context checks inside the protected pilot - #288
Conversation
|
Security design disposition for the concrete compatibility path on #288: The narrow SDK-checker/workflow correction is the right source direction; current head The present failure is real and correctly retained: the exact shared-contract run reaches 261 other passing controls and refuses The compatible correction should remain exactly bounded:
This path does not justify changing Disposition: specific correction design PASS; #288 exact head HOLD pending the concrete script+workflow successor and complete terminal qualification. AI #27 and all live positive/negative, expected-issuer, concurrency and rollback controls remain separate. |
|
The requested Rust checker compatibility slice is now draft sdk-rust#212, exact head Only its three source-document reads now resolve from I invoked the actual candidate checker from both the SDK root and an unrelated workspace root, passing the same explicit absolute build tree; both validate all 372 pages. The actual predecessor fails the non-root invocation with FileNotFoundError for General retains the separate central workflow split and exact successor qualification; this slice does not relax the protected-context guard. Normal SDK source CI is running. Security's exact design disposition 6647438732 and all remaining central source/live gates remain as recorded. Normal integration also matches the existing |
|
Security review of current successor The Rust workflow split itself is correct and matches the now-reviewed SDK #212 contract: candidate build/copy operations retain The new x=cd; $x /tmp; python scripts/validate.py
$'cd' /tmp; python scripts/validate.py
x=c; y=d; "$x$y" /tmp; python scripts/validate.pyQuoted evaluator/startup paths are also outside the word check, for example: bash -c 'cd /tmp; python scripts/validate.py'
BASH_ENV=/tmp/startup bash scripts/validate.shThe first treats the whole This cannot be safely corrected by adding a few more forbidden substrings. Return a closed helper-step language that refuses anything not provably root-preserving—for example, a deliberately bounded simple-command grammar with literal command names and arguments—or conservatively refuse shell/parameter expansion, inline environment assignments, Required fail-before/pass-after controls include the five examples above in direct steps and representative nested helper closure, while retaining positive Disposition: exact |
|
Normal source successor
The actual Rust analytics correction is merged as All App/key/settings/Environment/required-rule/live-pilot authority remains held. Please review this exact source and finite catalog after terminal current CI; no prior source disposition is carried. |
|
|
Security review of final successor The executable successor was reviewed at parent The previous shell-language blocker is closed. New run text is admitted only as newline-separated literal commands from a small command/interpreter grammar. Expansion, command construction, operator/redirection/continuation syntax, inline assignment, evaluator options, startup/PATH/function injection and hidden dynamic targets refuse; literal The finite compatibility catalog is source-accepted at these independently reproduced path/full-byte identities:
The catalog is path plus complete raw-workflow SHA-256 in protected checker code, never a candidate assertion, diff heuristic, or unchanged-baseline grant. Any edit, relocation, new workflow or hash mismatch loses the exception. The exception bypasses only the arbitrary-Bash grammar for those five exact reviewed bytes; helper-containing steps still require root working directory, the reviewed/default shell, safe startup environment, and recursive shell-helper inspection. Changed referenced shell bytes do not inherit a workflow identity. Python/helper program behavior remains explicitly outside this shell-context check. The cancellation identity is compatibility data only, not fixture/runtime permission. This source PASS allows General to select normal protected integration of this exact pair and subsequently review a separately bounded pilot proposal. It supplies no App/key/variable/secret/Environment mutation, ruleset/required-check change, Check Run issuance, candidate execution, live pilot, rollback or multi-repository acceptance. AI #27 and issuer identity/concurrency/failure/rollback/live evidence remain separate gates; no catalog identity may be updated without another exact source review. |
|
General completed normal source integration at exact reviewed head Actual main is I retain terminal actual-main qualification and safe exact-branch cleanup. The original retained recovery branch remains preserved. This source delivery does not close the independent-enforcement requirement or AI #27. Read-only capability reconciliation confirms the existing |
|
General's actual-main source acceptance and cleanup are complete. All three original main workflows at The PR's direct Sonar inventory was zero open findings at the exact reviewed head. This is not a zero-debt claim for the entire main branch: direct main inventory retains 103 historical findings (34 critical / 42 major / 27 minor; 13 vulnerability classifications, eight bug classifications and 82 smells), with the newest predating this source work. General owns concrete triage under #187; no blanket dismissal or suppression is applied. The owned source branch was clean and merged, deleted normally locally/remotely, and remote absence verified. Retained recovery This completes #288's source delivery. Independent enforcement in #237 / AI #27 remains open for the separate human-only App/key provisioning and reviewed pilot/live/rule acceptance. No App, credential, environment configuration or required-rule change occurred. |



The reverted protected-policy pilot changed ordinary helper interpretation and broke unchanged CLI/Rust callers. This successor preserves ordinary preflight at rollback main and puts the stricter input language in the protected reader. Shared policy changes permit only the pinned App-token action and byte-exact protected workflow.
The Rust visual workflow now builds in its existing candidate directory and invokes the analytics checker from workspace root with an explicit build path. The SDK checker source-root correction is merged and actual-main/artifact/live-qualified in sdk-rust #212; content assertions remain unchanged.
The protected reader uses a closed literal-command grammar for new run text and referenced shell helpers. A finite protected-code catalog binds five existing complex workflows by complete raw file identity; edits or relocated copies cannot inherit it. Helper root/shell/startup and nested shell checks still apply. Candidate code remains bounded data. YAML aliases, depth, duplicate keys and recursion have separate refusal controls.
At current source, 141 focused controls pass. Controlled real Bash executions reproduce all five bypasses on the held predecessor; the successor refuses those forms directly and in nested helpers. The unchanged ten-repository ordinary corpus passes both rollback and successor validators. Ordinary shared-function ASTs remain identical outside the three exact exception-handling functions. Fresh hosted qualification and Security's exact-source disposition are required; prior green checks do not clear the predecessor's HOLD.
No App/key, variable/secret, Environment, event-policy setting, required rule or live check is provisioned by this work. Source acceptance and a separately admitted one-repository pilot remain prerequisites for AI #27. Refs #240 and ai#27; this PR does not close enforcement acceptance.