Commit Graph
4584 Commits
Author SHA1 Message Date
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 01e8c6447a fix(artifacts): keep an all-zero MD5 note as metadata (#9986)
* fix(artifacts): keep an all-zero MD5 note as metadata

A Godot member with an all-zero MD5 records a limitation instead of a
digest. That note is the metadata difference from a member that claims
an MD5. A caveat without a one-sided integrity claim stays unchanged.

* fix(artifacts): compare declared digests without limitation text

A one-sided declared_integrity claim is already a metadata difference.
The limitation-array helper could not change that result and treated
unrelated observation caveats as source metadata. Remove it.

* test(artifacts): describe the one-sided MD5 claim as the metadata fact

The Godot acceptance case still expects metadata when one member has a
declared MD5 and the other has an all-zero MD5. That difference is the
missing claim, not the reader's limitation note.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 05:07:30 -05:00
8cc2a1ae6e fix(pe): preserve certificate name RDN grouping (#10048)
* fix(pe): 保留证书名称的 RDN 分组

* fix(pe): distinguish multi-valued RDNs in certificate name text

Join attributes that share an RDN with "+" and keep ", " between RDNs,
in encoded order. RFC 4514's RDN reversal is not applied, so names made
only of single-valued RDNs keep their existing spelling.

OID 2.5.4.10 is organizationName, so one RDN renders as
commonName=A+organizationName=B and two RDNs as
commonName=A, organizationName=B.

---------

Co-authored-by: AixSxT <245164663+AixSxT@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 04:58:03 -05: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 a896e35c47 fix(javascript): preserve semantic effects and graph evidence (#9900)
* fix(javascript): preserve semantic facts across writes and implicit effects

* fix(javascript): preserve bundler identities and helper bindings

* fix(javascript): retain semantic graph evidence and coverage

* test(javascript): include the request link in endpoint traces

Response consumers now also link the originating request to the response, so an endpoint trace reports both that association and the response's json consumer.

* fix(javascript): keep source accessors known after a copied value escapes

An unknown computed getter makes accessor lookup consider every property.
A spread copy already records a value escape, and that escape was treated
as an unknown getter on the source, so the next read escaped the whole
object. Accessor lookup still fails closed for unknown writes and calls.

* fix(javascript): keep Object.defineProperty identified at its own call

The call that escapes Object was treated as a prior replacement of
defineProperty, so a descriptor value never replaced the exported sender
and bundled IPC paths were dropped.

* fix(javascript): keep Vite preload calls that precede reassignment

Helper identity used every write to the binding, so a later assignment
erased a call that had already read the canonical helper. Use the binding
value at the call when that order is known.

* fix(javascript): apply Vite cache mutations before a later reassignment

A later helper write made the whole-binding initializer check ignore an earlier cache mutation. Identity at that mutation uses the same ordered read as the call.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 17:33:47 +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 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 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 4d0f6d9b42 fix(ci): retain Hopper fixture receipt counts (#9976) 2026-11-11 17:22:14 +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 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 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 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 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
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
morluto fcc353518a fix(managed): preserve completed imports on retention refusal (#9962) 2026-11-11 17:16:46 +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 2e67d57d0f fix(browser): distinguish shutdown admission from failed cleanup (#10038) 2026-11-11 17:15:15 +08:00
morluto 827b808248 fix(captures): reject malformed UTF-8 command output (#10056)
fix(captures): reject malformed UTF-8 producer text
2026-11-11 17:14:02 +08:00
morluto 9cd1eadfb7 fix(browser): reject malformed UTF-8 CDP protocol bytes (#10040) 2026-11-11 17:13:45 +08:00
morluto 4a02ca95de test(desktop): require gzip export root removal (#9988)
test(desktop): verify refused gzip export leaves no output
2026-11-11 17:12:44 +08:00
N0zoM1z0andgensokyo-dev 528c46ae92 test(pe): verify target refusal through CLI and stdio MCP
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-11-11 17:11:06 +08:00
morlutoandCursor Agent 77100250de fix(desktop)!: preserve build evidence and validate task inputs (#9898)
* fix(desktop)!: preserve build evidence and validate task inputs

BREAKING CHANGE: Witnessing requires the current generated verifier. Re-export bundles with older evaluators using the original capture Evidence and task inputs.

* test(desktop): match reader source inspection diagnostics

Unreadable reader sources now report the source inspection failure, including the operating-system reason, instead of the old file wording.

* fix(environment): advertise canonical bundle names (#9939)

fix(environment): advertise portable bundle name constraints

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 04:10:44 -05:00
morlutoandCursor Agent a7ec7271d6 fix(setup): preserve client configuration and ownership (#9894)
* fix(config): preserve client settings during launcher refresh

* fix(setup): retain parsed client launcher ownership

* fix(uninstall): retain resource cleanup diagnostics

* test(setup): keep temporary paths inside the workspace root

Resolve setup fixtures through the test workspace path helper so joined paths stay under the temporary root.

* test(setup): validate temporary paths before filesystem calls

Contain workspace children and the symlink target before creating the launcher alias so a temporary path cannot leave its root.

* test(setup): expect owned command identity in BOM registration status

Aligned client registration status includes command_identity. The BOM
read-back compared the status without that field, so an owned launcher
failed the equality check.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 04:10:32 -05:00
N0zoM1z0andgensokyo-dev a08e40b924 test(reference): verify relocated dangling-directory commitments through CLI
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-11-11 16:52:07 +08:00
morlutoandCursor Agent ada8fcfe82 fix(targets): admit distinct host slices and one-sided digests (#10016)
* fix(targets): select a preferred Mach-O host subtype

Host admission refused every extra slice of the host CPU type, so arm64
plus arm64e and arm64e ABI variants never became universal targets. Rank
known subtypes and keep the earliest capability variant. Identical
subtypes and ties between unlisted bases still fail closed.

* fix(artifacts): treat a one-sided declared digest as metadata

An all-zero Godot MD5 was visible only because limitation text differed.
After comparison stopped using that prose, a claim on one side and no
claim on the other lost its metadata dimension. Compare the structured
integrity claim instead.

* fix(browser): keep unavailable resource inventories unknown

Directional coverage treated a resource retained from an invalid protocol
tree as an addition against a complete peer. An unavailable collection is
not a truncated sample, so it cannot prove membership.

* fix(native): read the admitted Mach-O slice for metadata

Capability-variant admission chose the first slice, then dispatch
metadata and slice tools ranked the FAT file again and rejected that
pair. Pass the admitted offset, and refuse a winner set that repeats
a subtype.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-11-11 03:41:55 -05:00
morluto b94d811500 fix(cli): retain cancellation observed during final cleanup (#9944) 2026-11-11 03:20:06 -05:00