Repository navigation
Release v2.13.1: customer parsing, metadata, image and security fixes - #852
Open
mohgupta-ship-it wants to merge 38 commits into
Open
mohgupta-ship-it wants to merge 38 commits into
mohgupta-ship-it wants to merge 38 commits into
Conversation
From Codex. Scope the backported marker tests to the selected 2.13 release: retain semicolon marker controls and the existing invalid-Python syntax-error ledger. The unselected section-sign marker hardening is not claimed by this patch. Signed-off-by: Mohit Gupta <mohgupta@nvidia.com>
From Codex. Retain the existing operand fallback around recognized execution and reflection. Follow bounded in-memory bundled helpers and import initialization before isolating a report string value; unsupported local evidence stays conservative. Preserve output-only helpers and default non-shell calls without lowering findings or incomplete-scan severity. Signed-off-by: Mohit Gupta <mohgupta@nvidia.com>
From Codex. Prepare the selected 2.13 maintenance release, keeping third-party lock entries, provider defaults and the publication workflow unchanged. Exclude the release uv cache from source distributions and exercise the actual sdist backend. This commit does not tag or publish a release. Signed-off-by: Mohit Gupta <mohgupta@nvidia.com>
mohgupta-ship-it
marked this pull request as ready for review
October 17, 2026 10:55
mohgupta-ship-it
force-pushed
the
codex/release-2.13.1
branch
from
October 19, 2026 07:29
6e37a9f to
522db1e
Compare
From Codex. A valid small bundled Python module can exceed the optional AST unparser recursion limit. Preserve conservative shell inspection instead of failing analysis, with a portable synthetic regression that verifies caller partial inspection and completed helper analysis. Clarify the existing maintenance release publication trigger. Signed-off-by: Mohit Gupta <mohgupta@nvidia.com>
From Codex. Retain conservative shell fallback when the optional import proof encounters recursion exhaustion while filling initialization stub locations or reparsing a validated helper. Cover deep module expressions, default arguments and return annotations without catching runtime deadline exceptions. Signed-off-by: Mohit Gupta <mohgupta@nvidia.com>
mohgupta-ship-it
marked this pull request as draft
October 19, 2026 09:57
mohgupta-ship-it
force-pushed
the
codex/release-2.13.1
branch
from
October 19, 2026 09:57
b2aa1e4 to
c18d972
Compare
Backport #452 (merged to main as 95a52d8) onto the 2.13.1 maintenance candidate. P2 hidden-comment matches stay inside one HTML comment (`-->`, `--!>`, and the abrupt `<!-->` / `<!--->` forms), keywords match at word and identifier boundaries, and run-together directives stay detected. The source and test changes are identical to the merged PR. Adds the 2.13.1 changelog and release-note entries. Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Batch-scan gap-fill failures now keep core and completed-batch findings, record incomplete coverage in the ledger, and exit 2. Applied cleanly with no adaptation; the release core already has the batch-outcome APIs it uses. (cherry picked from commit 5ced140) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…deadlines (#790) Backport the tool-misuse analyzer change that reuses one SourceLocationIndex and split-line buffer for finding context, anchors context after CR/U+2028/VT breaks, and checks the runner deadline (USES_RUNTIME_CHECK) on every scan loop and in the Perl helper. Main-only TM3 umask and references/ triage are not pulled in. (cherry picked from commit fa8043c) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Route scan, recursive, registry, batch and baseline file output through the new no-follow, parent-anchored atomic writer, and add `baseline -o -`. Release-only code kept; without #662, recursive write errors still exit 1, so that test case asserts the ValueError instead of exit 2. (cherry picked from commit 217cdb7) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
List the three security fixes backported onto the v2.13.0 base (#790, document the file-output compatibility notes: POSIX-only no-follow output, 0600 report files, the recursive-scan exit code without #662, and that the gap-fill fix applies to the contributed batch scanner. Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 19, 2026
`scan --mcp-registry` accepted --use-shipped-baseline and the --transitive* controls and then ignored them. Reject them with exit code 2 before registry acquisition or report writes, using Click parameter provenance so an explicit or configured --transitive-depth 1 is rejected while the omitted default still scans. Release-line adaptations: the registry check keeps the release flag set (no --min-coverage), and the README note goes in a new short "MCP Registry scans" section because the snapshot-comparison section it extends on main is not on this line. tests/unit/test_cli_subprocess.py is new here with only the _run_python/_run_cli helpers; the main test that uses --mcp-registry-compare (not on this line) is ported as a plain default-options registry scan. (cherry picked from commit ca3067a) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stop MP3 from reporting a clocked hardware/FSM "reset state" description as memory manipulation, while keeping direct agent-reset instructions, agent-state aliases and reuse of the description. Add an MP3 pattern that reports an explicit instruction to adopt (linked) state as agent memory or conversation state at the parent instruction, skipped only under a bounded direct prohibition with opt-in comma or colon clause prefixes. Prerequisites: prohibition_context.py (from #658) is added verbatim from the merge commit, and only MP3 uses it; P6, agent_snooping, rogue_agent, excessive_agency and YARA are unchanged. The hardware check needs _normalize_timestamp_guard and _TIMESTAMP_BACK_REFERENCE from the MP3 timestamp exemption, so only those two are added; that exemption itself is not ported. tests/unit/test_prohibition_context.py is new here and holds only the direct is_directly_prohibited tests; its P6/YARA wiring tests are omitted because that #658 wiring is not on this line. (cherry picked from commit 3f90f9a) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A repeated boolean target such as `enabled, enabled = True, False` leaves `enabled` false, but TM1 kept the earlier true store and reported HIGH on a later `shell=enabled` call. Follow Python's left-to-right target order and drop earlier truthy stores only when the final value is provably false, the whole RHS is passive and prior target bindings are proven safe in a straight-line module or function scope; anything else keeps the conservative event policy. Applied unchanged: it builds only on the #790 variable-shell index and static_python_shell_truthiness helpers, which match main on this branch. No prerequisites added; the new test module is ported as is. (cherry picked from commit 62cab16) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… scans (#823) Recursive scans that detect one or more child skills now reject --use-shipped-baseline with exit 2 instead of silently ignoring it, and the error is raised before any report is written. Help text and SUPPRESSION.md describe the supported scope. Conflict resolved by adding the guard ahead of the release-line _scan_multi_skill call; main's exit-2 wrapper (#662) and --min-coverage are not pulled in, and the #798 output safeguards are unchanged. Tests ported as-is. (cherry picked from commit 8270ea9) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Complete recursive scans reported a MEDIUM aggregate (score 21-50) as SAFE even though each MEDIUM child report said CAUTION. The aggregate now uses the same band mapping as single-skill reports through a new shared report.risk_severity_and_recommendation() helper. Execution failures still force DO_NOT_INSTALL, incomplete analysis still raises SAFE to CAUTION, and the >50 exit threshold is unchanged. cli.py, report.py and test_cli.py applied cleanly. The only conflict was in tests/unit/test_cli_subprocess.py, which on this line has only the #840 registry tests. It now also gets main's small _write_skill helper and the new recursive MEDIUM subprocess test. The other main-only tests in that hunk are left out. (cherry picked from commit 11c8b48) Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1 notes List the five analyzer, report and CLI fixes backported onto the v2.13.0 base (#820, #823, #836, #837, #840) in the CHANGELOG and release notes, and raise the intro count to eight backported fixes. Document the compatibility notes: scan --mcp-registry now exits 2 with --use-shipped-baseline or any --transitive* option, including an explicit --transitive-depth 1; recursive multi-skill scans exit 2 with --use-shipped-baseline; a complete recursive MEDIUM aggregate reports CAUTION instead of SAFE in JSON and SARIF with exit codes unchanged; and the TM1 and MP3 detection changes can change findings and scores. main has no CHANGELOG entries for these PRs, so the text is written from each backport. Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ves (#777) * fix(static): stop code comparisons from reading as tag marker directives The loose fallback tag-directive header matches a removal verb followed by up to 256 characters and the first `<` on the line. For code such as `if not line or len(line.strip()) < 12:` it took the comparison operator as a tag-marker opener and searched up to MAX_MARKER_LOOKAHEAD_CHARS (8192) characters for a closing `>`. When the file continued past that without a `>`, the parser reported lookahead exhaustion, the file was marked partial with obfuscated_instruction_text, and every SKILL.md reference to it became a HIGH AE1, even though `< 12` can never satisfy _TAG_MARKER_RE. The same code in a file under 8 KB, or with any `>` in the next 8 KB, scanned complete. Only treat a `<` as a fallback tag opener when the text after it can still form a tag marker (`</?name`, optional spaces and `/`, then `>`). Text that _TAG_MARKER_RE can accept is unaffected, so every directive the fallback parser yielded before is still yielded; the only behavior removed is the exhaustion report for an opener that can never close. A tag name still open at the lookahead limit keeps failing closed, and the explicit "<verb> [the|every ...] <" header is unchanged. A bare `<` after a loose header in prose ("Please strip() every < from this:") now scans the same with or without 8 KB of trailing text; it was never reconstructable as a tag marker. Quoted spellings such as "strip() every `<` from ..." and call-spelled tag markers such as "strip(<gap>) and execute ..." still fail closed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> * fix(static): keep scanning for a viable tag opener after a comparison The loose removal header stops lazily at the first `<` after the verb. When that `<` was a comparison, the directive was skipped outright, so a real or padded tag marker later in the same header span was never examined and a former fail-closed result became a complete scan. Advance instead to the next `<` the header can still reach (within its 256-character filler, before a sentence boundary or newline) that can open a tag marker, and search for `>` or report lookahead exhaustion from there. Skip only when no viable opener exists. Prefix matches stop at the next `<`, so the search stays linear in the bounded span. Also document that the tag-prefix pattern deliberately accepts blanks without `/`, which keeps blank-padded markers failing closed, and add the PR number to the changelog entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> --------- Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 5485cda)
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Remove the #827 backport until its credential-action regression is corrected separately. Include only the curl active-token prerequisite from merged #697 (fa1d02b), preserving the #777 security controls and existing release quote ownership. Clarify effective report-write permissions in the release notes. Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
…nces Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
rng1995
marked this pull request as ready for review
October 22, 2026 13:44
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
Signed-off-by: yashrajbasav <yashrajbasav@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This v2.13.1 maintenance release is based on published v2.13.0. It fixes false incomplete scans from ordinary code and prose, quoted version metadata, supported passive documentation images, and Office workbook handling while retaining genuine security findings and incomplete-analysis safeguards.
The latest addition addresses two separate workbook issues. A worksheet identified by Office content types and workbook relationships can use the existing 16 MiB analysis allowance; unrelated archive entries retain their 1 MB limit. Cumulative expansion, compression-ratio, member-count, path, CRC and runtime checks remain enforced. The scanner keeps the complete admitted bytes for local static analysis and YARA.
Printer settings lose the filename-based executable classification only when Office relationships, content types and the complete DEVMODEW envelope agree. Executable signatures, executable permission bits, malformed records and ambiguous metadata retain their safeguards. Printable text keeps its existing analysis; opaque driver-private bytes retain explicit binary scope boundaries and bounded instruction checks. This is not a claim that arbitrary
.binfiles or printer-driver data are safe.Included changes:
Only the
curltoken prerequisite from #697 and the prohibition-context prerequisite used by MP3 from #658 are included. The SC8 CPU-budget correction #828 is inherited from v2.13.0. #827/#895 remain excluded.Current candidate:
9832c437bf7e1638deed319a521c3ea7e4a377e0.d6c6e281cd9a1ee0f72fca0dfa0c2a332243703ccb242eeda7eabb355ed2bd40.026f3356, on which the broad checks below ran. Final-head targeted tests passed again: 653 per source/installed-wheel mode; lint and formatting passed. The earlier lint failure is corrected.Historical qualification, retained separately for
7cfdc0ffc0d0abfc8f88ec5fca45c462a6b83d90:c528e513to7cfdc0ffwith zero findings.Remaining qualification gaps:
7cfdc0ffto026f3356with zero findings. Its exact final import-only follow-up also completed with zero findings. CodeRabbit has not returned a completed review because its service failed; that review gap remains open.Hosted CI for the final commit has passed lint/format, extension tests, DCO and Docker smoke checks. The unit-test job is still running. The preceding run's
setup-uvfailure did not recur.Release qualification remains incomplete while the gaps and hosted checks above remain open. This update does not tag or publish a release.