Commit Graph
7118 Commits
Author SHA1 Message Date
morlutoandCursor Agent 37d2d207d2 fix(browser): drain admitted operations before closing provider (#10033)
fix(browser): drain complete CDP operations during shutdown

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:28:39 +08:00
morlutoandCursor Agent 67f74c5fb9 fix(setup): retain Hopper operation failure attribution (#9958)
* fix(setup): retain Hopper operation failure attribution

* fix(setup): retain falsy Hopper abort reasons from body reads

After response headers, Node's fetch body reader rejects a null, false,
0, or empty-string abort with a fresh AbortError instead of that reason.
Replace that substituted error with the caller's reason. A body
AbortError while the caller has not aborted still propagates.

* fix(setup): preserve independent response body aborts

* fix(setup): identify aborts through owned transport

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:28:23 +08:00
morlutoandCursor Agent 83f0a4d238 fix(ci)!: verify exact conformance fixture records (#9977)
* fix(ci)!: verify exact conformance fixture records

BREAKING CHANGE: Regenerate unversioned conformance manifests with npm run build:fixtures. Schema version 2 separates exact string markers from intentional fragments and rejects the ambiguous strings field.

* test(conformance): wait out a cold verifier instead of treating SIGTERM as rejection

The compiler-produced complete/REA_C_ENTRY run was killed by its 10s
execFile timeout on the loaded source-test runner, with empty stderr and
SIGTERM. The stricter record checks already passed locally and for the
other compiler-produced cases. Assert the process status and give that
cold run room inside the test budget.

* fix(ci): preserve carriage returns in nm symbol records

nm -j terminates each name with LF. A carriage return before that LF is
part of the symbol. Splitting on CR LF dropped it, so a renamed symbol
ending in CR matched the name without it.

* test(ci): supervise conformance verifier subprocesses

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:28:10 +08:00
morlutoandCursor Agent 654feeef9c fix(api-contract): retain partial OpenAPI evidence (#9908)
* fix(api-contract): retain partial OpenAPI evidence

* docs(api-contract): describe partial OpenAPI Evidence on interruption

Early failures still keep the file snapshot hash. Cancellation or the
retained-facts limit after a row now returns authenticated Evidence, and
the guide explains how to reuse that partial inventory.

* fix(api-contract): count finished paths and keep earlier diagnostics

A path counts only after its item is read, so a path refused before
traversal does not increase path_entries_examined. A paths diagnostic
that exhausts the retained-facts allowance still keeps diagnostics
already stored, including invalid info.

* test(api-contract): keep invalid info when paths exhaust the allowance

The paths diagnostic can fail after invalid info is already stored. The
partial report must still carry that diagnostic and count no path entries.

* docs(api-contract): name every retained row and the view source

The hash remains only when no operation, reference, or diagnostic row was
kept. Partial Evidence is reread through inspect_analysis_view's source
and view, not as separate Evidence fields.

* test(api-contract): verify interrupted inventory evidence

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:27:00 +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
morluto 2bb266b39b fix(frida): retain cancellation through final cleanup (#9963)
fix(frida): retain caller cancellation through failed session cleanup
2026-11-11 17:25:27 +08:00
morluto fcf8b99a77 fix(reverse): preserve owned command failure attribution (#9964)
fix(reverse): preserve owned command failure provenance during cancellation
2026-11-11 17:25:20 +08:00
morluto 7c0a658cb4 fix(export): preserve committed journal and function failure facts (#9965)
fix(decompile): preserve committed export failure facts
2026-11-11 17:24:28 +08:00
morluto d3eb3f6478 fix(ghidra): validate seed outcome conservation (#9969) 2026-11-11 17:24:20 +08:00
morluto b4654b493d fix(adb): preserve path facts and cancelled acquisition receipts (#9984)
* fix(adb): preserve path facts and cancelled acquisition receipts

* fix(adb): retain late cancellation alongside failures
2026-11-11 17:24:07 +08:00
morluto 65765eb495 fix(ghidra): bind naming outcomes to admitted request keys (#9973)
* fix(ghidra): bind naming outcomes to requested addresses

* refactor(ghidra): retain admitted naming request facts
2026-11-11 17:23:51 +08:00
morluto 46d79ecd78 fix(ida): retain HTTP response cleanup through close (#9975)
* fix(http): retain response cleanup through connection close

* fix(ida): cancel acquired diagnostics during close
2026-11-11 17:23:44 +08:00
morluto e5fe737677 fix(native): preserve source graph coverage through UI tracing (#10030)
* fix(native): preserve graph truncation through UI tracing

* fix(native): preserve source and local trace cutoff causes
2026-11-11 17:23:37 +08:00
morlutoandCursor Agent 6151e13835 fix(browser): preserve independently observed storage identities (#10029)
fix(browser): retain partial storage identity evidence

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:22:30 +08:00
morlutoand帅鑫 Huang dd928466cb fix(desktop): admit ELF library identities before selection (#9981)
* fix(desktop): admit ELF library identities before selection

Preserve known library identity through later metadata failures, skip proven
foreign candidates, and keep unknown candidate selection unresolved.

Restore the reviewed repair from closed PR #9875 against pinned main,
including the original producer and inventory regression cases.

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

* fix(desktop): search compatible linker cache candidates

---------

Co-authored-by: 帅鑫 Huang <1836656514@qq.com>
2026-11-11 17:22:23 +08:00
morluto 4d0f6d9b42 fix(ci): retain Hopper fixture receipt counts (#9976) 2026-11-11 17:22:14 +08:00
morluto f6e31acd74 fix(gpu): distinguish AMD metadata capacity from corruption (#9979) 2026-11-11 17:21:45 +08:00
morlutoand帅鑫 Huang 59e36cf86e fix(elf): preserve unwind LEB128 signs and reject overflow (#9980)
Validate the final 64-bit payload before interpreting unwind LEB operands,
and retain valid ten-byte signed padding. Keep invalid records incomplete
without discarding independent valid FDEs.

Adapted from ShuaixinHuang’s closed PR #9872, original head
021ab3ad62. Original fixture, regression
and documentation changes are retained; decoder comments are shortened.

Co-authored-by: 帅鑫 Huang <1836656514@qq.com>
2026-11-11 17:21:38 +08:00
morlutoandCursor Agent e504e09aeb fix(elf): keep compressed storage out of decoded metadata facts (#9892)
* fix(elf): keep compressed storage out of decoded metadata facts

* 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(elf): keep requirement names when verdef declares no entries

A compressed GNU version-definition section with sh_info 0 has no
definitions to decode. Skipping it leaves requirement names in place
instead of clearing them as an unread compressed table.

* fix(elf): skip empty version requirements before storage reads

* fix(elf): skip empty compressed version-requirement tables

A GNU verneed section with sh_info 0 has no requirement records. Reading
its compressed bytes was a version failure and partial coverage; the
declared count now skips that read.

* fix(mips): distinguish compressed metadata storage (#9959)

* fix(elf): note a missing symbol table only when a relocation needs it

A sectionless image with direct DT_INIT and DT_FINI no longer becomes incomplete solely because DT_SYMTAB does not match a decoded table. The same note remains when a dynamic relocation asks for a symbol.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:21:19 +08:00
morluto ea00ca2d46 fix(verify): preserve Ghidra oracle state and coverage (#9994)
* fix(verify): check checkpoint state before restoring fixtures

* fix(verify): require applicable Ghidra decoder controls

* refactor(verify): require explicit instruction fixture facts
2026-11-11 17:21:11 +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 1c7d7b6cc3 docs(skill): correct offline inspection descriptions and guidance (#9992)
* docs(skill): align offline inspection guidance with current contracts

* docs(apple): describe actual IPS image join criteria
2026-11-11 17:20:45 +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
morluto e7c4a26316 fix(native): retain command cleanup across source finalization (#10009) 2026-11-11 17:20:14 +08:00
morluto 12a32d934a fix(artifacts): retain Deno member streams through finalization (#10007) 2026-11-11 17:20:03 +08:00
morluto 38a0dafa76 fix(verify): bind managed manifest facts to stable snapshots (#10004) 2026-11-11 17:19:55 +08:00
morlutoandCursor Agent df25c923c4 fix(providers): reject malformed UTF-8 bridge responses (#10034)
* fix(providers): reject malformed UTF-8 bridge responses

* fix(providers): release a drained NDJSON frame's backing buffer

A response that ends on its newline left an empty view of the whole
concatenated allocation. Provider clients keep the line buffer for the
session, so that frame stayed resident. Replace an exhausted tail with
an empty allocation and keep a real unconsumed tail.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:19:47 +08:00
morluto 3896f72552 fix(environment): preserve null bodies and unique member matches (#10014) 2026-11-11 17:19:37 +08:00
morluto 44ef32c1c0 fix(binary): seal session admission during shutdown (#10012)
fix(session): seal binary work admission during shutdown
2026-11-11 17:19:24 +08:00
morlutoandCursor Agent 5b02119b69 fix(native): bind initializer evidence to selected Mach-O slices (#10013)
* fix(native): bind initializer evidence to selected Mach-O slices

* fix(native): reject initializer slices outside the artifact

* test(native): retain completed initializer evidence on late cancellation

completeProviderEvidence keeps the finished report on
AnalysisCancelledError.partialObservation and the caller's abort reason.
The regression only checked the error tag, so dropping that evidence
would pass. Restore both structured assertions.

* fix(native): bind initializer facts to the selected slice label and range

A universal report could keep an arm64 cpu_type beside an x86_64 slice
label, and entry file offsets only had to fall inside the container.
Require the slice architecture to match the request, and require each
slot and value file offset to lie in that slice.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:19:16 +08:00
morluto 7f0555b75e fix(verify): reject unknown Android guardian cleanup observations (#10001) 2026-11-11 17:19:03 +08:00
morluto 4812843e5b fix(gdb): preserve MI framing and reject lossy result facts (#9982) 2026-11-11 17:18:18 +08:00
morluto e55ce72d9d fix(cli): cancel reference source imports through cleanup (#9954)
* fix(cli): retain cancellation observed during final cleanup

* fix(cli): cancel reference source imports through cleanup

* fix(cli): preserve signal status through command logging
2026-11-11 17:18:05 +08:00
morluto 34d844dcad fix(analysis): preserve batch facts when traversal stops (#9955) 2026-11-11 17:17:58 +08:00
morluto 98bc82f1e1 fix(capabilities): include optional composed source effects (#9956)
* fix(capabilities): include optional composed source effects

* fix(capabilities): declare prior engine retirement effects
2026-11-11 17:17:51 +08:00
morluto f2e73ca8b6 fix(desktop): preserve cancellation and portable name contracts (#10074)
* fix(desktop): preserve cancellation during reader cleanup

* fix(contracts): advertise portable name restrictions
2026-11-11 17:17:39 +08:00
morluto 876bc145a7 fix(wasm): retain cancellation during failed inspection finalization (#9983) 2026-11-11 17:17:26 +08:00
morlutoandCursor Agent bb200646e5 fix(views)!: distinguish unavailable artifact collections (#9893)
* fix(views)!: distinguish unavailable artifact collections

Keep missing BEAM tables and unavailable Go and Rust build metadata
separate from decoded empty collections. Retain producer limitations
on model metadata, tensor, and type pages.

BREAKING CHANGE: BEAM, Go, and Rust analysis view pages for unavailable
collections now report coverage.status "unavailable", coverage.total
null, and coverage.exhausted false. Refresh saved result schemas and
handle unknown totals before using coverage to infer absence.

* test(views): expect unavailable Go dependency pages

Missing Go build metadata is unavailable coverage, so the MCP page reports a null total instead of an empty collection.

* test(fixtures): ignore a torn build-computer note line

The cancellation test reads the helper's note file while the append is
still in progress. An empty file or an unfinished last line is not a
record yet. A completed line still has to parse.

* fix(fixtures): reject terminated malformed build-computer notes

Trim removed the final newline, so a completed corrupt record looked like
a torn append and the preceding notes were returned. Keep the terminator
and parse every finished line.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:17:18 +08:00
morlutoandCursor Agent 17b91a9853 fix(firmware): distinguish empty ESP flash partitions from missing bytes (#9907)
* fix(firmware): distinguish empty ESP flash partitions from missing bytes

* fix(firmware): keep empty ESP partitions that start before the dump

A zero-byte partition below the selected flash origin was reported as
unread and omitted from the inventory. It declares no bytes to read, so
the plan keeps the empty region and the zero-byte diagnostic.

* fix(firmware): clamp an empty partition before the flash origin

A zero-byte partition below the selected origin has no file bytes. Its
inventory offset is the start of the carrier, which stays nonnegative.

* fix(firmware): clamp empty ESP entries that start before the dump

A zero-byte partition below the caller origin kept a negative file
offset, which the inventory published as a negative source location.
The empty entry now sits at the start of the carrier.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:17:09 +08:00
morluto fcd364069a fix(apple): retain Interface Builder facts during finalization (#9953) 2026-11-11 17:17:01 +08:00
morluto e9e106f580 fix(artifacts): reject stopped Mach-O slice traversals (#9952) 2026-11-11 17:16:54 +08:00
morluto fcc353518a fix(managed): preserve completed imports on retention refusal (#9962) 2026-11-11 17:16:46 +08:00
morluto 2b570ae194 fix(managed): validate the complete declared CLI header extent (#9968) 2026-11-11 17:16:16 +08:00
morlutoandCursor Agent 66498b4f7c fix(agentenv): bind solve results to the named verifier (#9978)
* fix(agentenv): bind solve results to the named verifier

* fix(agentenv): retain a planned solve pass through selected-verifier binding

Cleanup and cancellation tests plan a completed pass with no criterion
rows. An empty selected-verifier result list is unscored, so those
reports lost outcome passed even though sandbox retention and the
cancellation cause were unchanged. Record one selected result for a
planned pass or miss so the bound outcome stays the planned one.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:16:09 +08:00
morluto e6114e81dc test(mcp): require unknown-key admission diagnostics (#9985) 2026-11-11 17:16:02 +08:00
morluto ecf6ac9f8d fix(electron): admit provider reports and bind selected inputs (#10041)
* fix(electron): admit runtime observations before publishing evidence

* fix(electron): retain passive observation source JSON
2026-11-11 17:15:54 +08:00
morluto 550b7df262 fix(browser): admit provider reports and preserve source evidence (#10037)
* fix(browser): admit observations before promoting evidence

* fix(browser): retain admitted source JSON in evidence

* test(browser): verify source retention preserves producer redaction
2026-11-11 17:15:47 +08:00
morluto ca7c263dd6 fix(browser): admit query expansion and guard saved-value publication (#10052)
fix(browser): admit query expansion and active response saves
2026-11-11 17:15:40 +08:00