Commit Graph
3540 Commits
Author SHA1 Message Date
morluto 73ee767656 fix(gdb): preserve invalid command configuration errors 2026-11-11 20:16:24 +08:00
morluto 2aa5ba836d fix(kuna): retain failed inventory admission as result 2026-11-11 20:16:24 +08:00
morluto c4e3e48574 fix(rizin): return command configuration failures 2026-11-11 20:16:24 +08:00
morluto 527c7c5d8b fix(rizin): reserve command capacity after limit validation 2026-11-11 20:16:24 +08:00
morluto 3ccb35a8b5 fix(kuna): admit regex settings before acquisition 2026-11-11 20:16:24 +08:00
morluto 40b6f1ab21 fix(kuna): preserve run ownership on deadline refusal 2026-11-11 20:16:24 +08:00
morluto 125de0bdc4 fix(kuna): retain the deadline owned by project export 2026-11-11 20:16:24 +08:00
morluto b3dcddc115 fix(providers): preserve bridge limits through error attribution 2026-11-11 20:16:24 +08:00
Cursor Agent b9be864801 fix(settings): parse runtime launch seeds at the operation boundary
Startup no longer rejects a runtime-owned REA_ seed, so update_analysis_settings can replace it. Debugger construction keeps only the restart-only caps, Kuna stores the launch baseline rather than a cached override, and the advertised operations include GDB close, Rizin close, Kuna list_procedures, and the stable-file ChangeTime callers.
2026-11-11 20:16:24 +08:00
Cursor Agent db5a0e0f4a test(jeb): assert the timeout limit source instead of a restart instruction
A launch-selected JEB deadline reports source setting and update_mode runtime. The recovery tells the caller to use update_analysis_settings.
2026-11-11 20:16:24 +08:00
Cursor Agent 2bac42cde5 fix(settings): apply runtime overrides before provider limit validation
JEB, Kuna, Windows, debugger, and Cutter consult an accepted override before rejecting an invalid launch value. JEB and Hopper startup deadlines keep default, setting, or runtime as the limit source, and a Kuna timeout without its own limit uses the selected project deadline source.
2026-11-11 20:16:24 +08:00
Cursor Agent 1613f2b777 fix(settings): keep limit provenance through wrappers and Cutter inspection
Startup timeout wrapping keeps the debugger setting limit. Pwntools and Kuna failures report the selected source. Cutter session and command operations can inspect the bridge ceiling.
2026-11-11 20:16:24 +08:00
Cursor Agent 649b9c089c fix(settings): enforce runtime caps on each GDB command and Cutter request
GDB reads the accepted command-output cap when it admits a command. Cutter uses that same accepted bridge ceiling for mismatch and request checks. Kuna project-timeout metadata includes the operations that wait on the shared export.
2026-11-11 20:16:24 +08:00
Cursor Agent b0541c80b3 feat(settings): read per-call REA_ limits from the operation snapshot
Part of #9881. Move the limits checked on each call into update_analysis_settings, keep their REA_ seeds and bounds, and reject updates outside the allowed range.
2026-11-11 20:16:24 +08:00
morluto 9924bf3445 test(mcp): own presentation fixture cleanup (#10103) 2026-11-11 19:50:51 +08:00
N0zoM1z0andgensokyo-dev 91b11f62c9 fix(settings): preserve syntax guard contracts across stack integration
Retain existing merge resolutions for update modes, source-scan failures and external-reader fixtures while replaying the settings layer on the merged inventory. Preserve parent provenance, candidate counts and presentation-test resource bounds.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-11-11 19:48:33 +08:00
morluto 804784720a fix(ci): fail when limit guard cannot scan sources 2026-11-11 19:48:33 +08:00
Cursor Agent 0ae186e196 fix(settings): classify caller-selected limits as parameter updates
analysis_timeout_ms, max_heap_mb, and command_timeout_ms keep the source chosen by the caller, the runtime override, or the built-in default. A request value reports update_mode parameter because update_analysis_settings cannot change that call.
2026-11-11 19:48:33 +08:00
Cursor Agent 58a1216a57 fix(settings): mark per-call parameters and keep historical receipts
artifact_limits and web-network budgets report update_mode parameter because update_analysis_settings cannot change them. The legacy-name scan no longer reads docs, and the 2026-11-09 Ghidra receipts are restored to the fields they recorded.
2026-11-11 19:48:33 +08:00
Cursor Agent be20bdfb26 feat(settings)!: replace effect with update_mode and pending_restart
Callers read update_mode to see whether update_analysis_settings can change a limit, and pending_restart only when a configured value is not active in this process.
2026-11-11 19:48:33 +08:00
Cursor Agent aee1178839 feat(settings)!: report when a limit change takes effect
Part of #9881. Add effect immediate or next_process and keep rea_restart_required, restart_required, and restartRequired as compatibility aliases.
2026-11-11 19:48:33 +08:00
N0zoM1z0andgensokyo-dev cc6c52b886 test(mcp): retain measured full-catalog execution budget
The prepared full/full fixture takes 31.73 seconds on two CPU cores; restoring a 20 second child deadline causes a real bounded-run failure. Keep the 60 second child budget and 70 second outer deadline.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-11-11 19:39:06 +08:00
morluto 3038caad2b test(mcp): restore presentation subprocess deadline 2026-11-11 19:39:06 +08:00
N0zoM1z0andgensokyo-dev d65cd41b78 test(mcp): align presentation deadlines and cancel unfinished child
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-11-11 19:39:06 +08:00
Cursor Agent 07d6fad807 test(mcp): give the catalog presentation child a 60s bound
A loaded shard killed the full-catalog child at its 20s limit.
2026-11-11 19:39:06 +08:00
morluto 0e0af455f2 fix(reference): preserve physical failures across late cancellation (#10072)
* fix(reference): preserve physical failures across late cancellation

* fix(reference): retain late cancellation alongside read failures

* fix(reference): preserve metadata errors through cancellation

* fix(reference): retain directory failure identity

* fix(reference): preserve parallel physical and cancellation outcomes

* fix(reference): preserve optional Git metadata absence
2026-11-11 18:53:08 +08:00
morluto 84041fff23 fix(process): retain cleanup ownership through input finalization (#10095) 2026-11-11 18:37:29 +08:00
morluto a16f5f4b5d fix(recovery): preserve bounded Wakaru failure and cleanup facts (#10087)
* fix(javascript): retain Wakaru diagnostics and cleanup ownership

* fix(recovery): preserve launch failure with late cancellation

* fix(recovery): retain cancellation through provider cleanup
2026-11-11 18:36:09 +08:00
morluto 94dd7b72f8 fix(flutter): preserve producer-attested cancellation and physical failures (#10089)
* fix(flutter): preserve physical failures and cancellation identity

* fix(flutter): preserve independent abort-shaped failures

* fix(flutter): retain cancellation through failed cleanup
2026-11-11 18:32:32 +08:00
N0zoM1z0andgensokyo-dev 87cd7070b6 test(native): cover call-input gaps through paging, budgets and MCP
Verify canonical aliases, parameter and edge refusal, provider truncation, zero-argument calls, source Evidence closure and historical snapshot profiles.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-11-11 18:24:58 +08:00
morluto 930c56d670 fix(native)!: enforce paired Swift literal coverage in shared dossiers (#10068)
* fix(native)!: enforce paired Swift literal coverage in shared dossiers

BREAKING CHANGE: Retained function dossiers containing only one Swift inventory are rejected. Regenerate observations through a canonical provider; both-absent unsupported observations remain valid.

* fix(contracts): advertise paired Swift literal coverage
2026-11-11 18:23:45 +08:00
morlutoandCursor Agent cb17828dd1 fix(reference): retain proven loader calls and unresolved targets (#9920)
* fix(reference): retain proven loader calls and unresolved targets

* refactor(reference): remove unused ancestor lookup

* fix(reference): drop loader calls that return a reassigned member

An immediate call could still use a member's original require initializer
because mutation facts were not built for a call-valued callee. A definite
assignment that precedes the call now replaces that initializer.

* fix(reference): select returned loaders from indexed read facts

* fix(reference): refresh loader facts for wrapped returned members

A sequence such as (0, box.load) still used the original require
initializer. Follow sequence, conditional, and logical returns to the
member before deciding whether a prior assignment replaced it.

* test(reference): record unresolved CommonJS targets in source evidence

unknown.cjs calls require with a non-literal target. The inventory now
keeps that coverage limitation on the file entry, and the boundary
fixture asserts it beside the resolved member relationships.

* fix(reference): cover opaque apply lists and assigned returned members

require.apply(null, args) has no normalized argument list, so the
inventory now records an unresolved target instead of complete coverage.
An assignment return such as f = box.load is followed to the member
before a prior replacement is trusted.

* fix(reference): keep self-defaulted module delegates loadable

Timing a member read at a later call made `box.load = box.load || null` observe its own write and drop the native delegate. Reads that already fed an earlier assignment stay at the member.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 18:23:15 +08:00
morluto 98f796c991 fix(json): preserve cancellation through input finalization (#10022)
* fix(json): preserve owned stream cancellation facts

* fix(process): classify completion after input cleanup

* fix(process): retain typed failures through input cleanup

* fix(process): preserve late cancellation through failed input cleanup
2026-11-11 05:22:00 -05:00
morluto 913c9fe194 fix(adb): preserve exact transport identity observations (#10062) 2026-11-11 18:18:35 +08:00
morluto 2f87d3edb8 fix(process)!: require stored symlink target bytes (#10082)
* fix(process)!: require stored symlink target bytes

* fix(process): retain symlink failures before cancellation
2026-11-11 18:17:53 +08:00
morluto 01707fcbde fix(javascript): preserve unknown export-shape comparisons (#10060) 2026-11-11 18:17:46 +08:00
morluto 61e3eb3ca7 fix(cutter): reject malformed UTF-8 protocol bytes (#10064)
fix(cutter): reject malformed UTF-8 before protocol admission
2026-11-11 18:17:31 +08:00
morluto a14a0c20ed fix(javascript): authenticate transfer bytes before decoding (#10078)
fix(javascript): authenticate raw analysis transfer bytes
2026-11-11 18:17:13 +08:00
morluto d1895841a4 fix(javascript): recover GraphQL selection prefixes and validate names (#10065)
fix(javascript): align GraphQL operation grammar
2026-11-11 18:16:50 +08:00
morluto f7d564f436 fix(javascript): preserve exact native-addon extension dispatch (#10083)
fix(javascript): preserve native addon extension spelling
2026-11-11 18:16:43 +08:00
morluto cb048c3ed5 fix(filesystem): preserve rejected prefix read failures (#10081)
fix(filesystem): preserve prefix read failures across cancellation
2026-11-11 18:16:13 +08:00
morluto dc5527b0bc test(filesystem): verify snapshot admission and retained output (#10091) 2026-11-11 05:15:41 -05:00
8052f8daf0 fix(elf): preserve virtual relocation identity (#9990)
* fix(elf): keep compressed storage out of decoded metadata facts

* fix(elf): preserve virtual relocation identity

Keep linked initializer backing and relocation values in their owning virtual
or ET_REL section coordinates. Replace the IL2CPP physical-copy materializer
with compact virtual value facts while preserving file-backed capacity.

Reuse initializer repairs and original regressions from ShuaixinHuang PRs
repair retains independent alias values instead of blanket alias refusal.

Co-authored-by: 帅鑫 Huang <1836656514@qq.com>

* fix(elf): admit compressed string tables the profile does not read

SHF_COMPRESSED string tables are rejected only when they name sections
or symbols. An unreferenced string table is not decoded, so it no longer
makes an otherwise analyzable ELF unsupported.

* fix(il2cpp): admit virtual pointer workspace before retention

* fix(elf): reject null relocation target sections

* fix(il2cpp): avoid decoding unrelated Mach-O words

* fix(il2cpp): preserve uncertainty in candidate scans

* fix(il2cpp): bound uncertain array candidates

* fix(il2cpp): preserve unknown registration candidates

* fix(il2cpp): classify type kinds before bound data

* fix(il2cpp): bind candidate counts to matching names

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: 帅鑫 Huang <1836656514@qq.com>
2026-11-11 18:13:18 +08:00
morlutoandCursor Agent b00138be64 fix(verification): retain failed cleanup owners and primary errors (#9993)
* fix(verifiers): retain native cleanup ownership on failure

* fix(verification): load cleanup fixtures through the module resolver

CodeQL's local threat model treats file contents passed to
vm.SourceTextModule as user-controlled code execution. Import the real
verifier modules and redirect their dependencies to static mocks instead
of compiling script text read from disk.

* fix(verifiers): own CLI and MCP process families

* fix(verifiers): retire workspaces after cleanup retry

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:39:19 +08:00
morlutoandCursor Agent 9f5f9c1289 fix(desktop): preserve capture evidence and output ownership (#9899)
* fix(desktop): retain capture identity and cleanup ownership

* fix(desktop): validate destinations and finish inputs before export

* fix(desktop): preserve package ownership and apt trust boundaries

* fix(sqlite): preserve observed facts and distinguish special real values

* fix(desktop): bind computer files to data-object metadata

* test(desktop): count the tagged negative-zero cell spelling

SQLite view cells encode negative zero as a real object so it stays
distinct from the text "-0". The byte budget follows that spelling.

* fix(desktop): keep unresolved discovered state directories

Canonicalizing an unreadable path or dangling symlink aborted capture
before the inventory could record that the path was unknown. Those
discovered directories now keep their absolute spelling in the scope.

* test(desktop): keep the capture scope suite within its line limit

The unresolved state-directory case lives beside the suite so the
existing callback stays within the lint limit.

* fix(desktop): retain cancellation through capture input cleanup

* fix(desktop): avoid reserved Pydantic settings properties

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:36:47 +08:00
morlutoandCursor Agent eff195d6aa fix(adb): reject unrepresentable activity arguments (#9918)
* fix(adb): reject unrepresentable activity arguments

* test(adb): lock complete activity component boundaries

The CLI and advertised schema still admitted a slash-free 512-character
component after admission required a nonempty package and class. Keep
that length sample rejected, admit a pattern-valid 512-character
component, and assert the typed field error.

* style(docs): format NTFS verification tables

oxfmt rejects the tables merged from main. The alignment is formatting
only, so static checks can run on this branch.

* test(adb): use a well-formed component for the length constraint

An over-long run of letters also fails the package/activity pattern, so the selector check reported both issues. The length fixture now has a valid component shape.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:26:41 +08:00
morluto 13abfdadff fix(workers): preserve artifact failures through cleanup (#10055)
* fix(browser): preserve worker artifact failures through cleanup

* fix(javascript): preserve checkpoint failures before late cancellation
2026-11-11 17:25:48 +08:00
morlutoandCursor Agent aece2e7e16 fix(process): preserve ownership through termination and cleanup (#9891)
* fix(process): revalidate ownership before signaling

* fix(process): retain cleanup ownership until completion

* fix(process): keep omitted live descendants unresolved

A non-empty process table that omits a retained live PID cannot authorize a signal or certify cleanup. An empty table can still describe a token-verified owner.

* fix(process): read omitted Darwin run tokens by PID

A live identity that ps omitted was still validated through Darwin
environment(), which rejects any PID absent from a second process table.
Ask the native reader for that PID directly so the launch token can bind.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:20:53 +08:00
morluto d54a41152e test(cli): capture effective status and restore host exit state (#9991) 2026-11-11 17:20:37 +08:00
morluto 9e79188ba8 fix(electron): install session permission policy on admission (#9989)
fix(electron): enforce session permission defaults and download identity
2026-11-11 17:20:22 +08:00