Commit Graph
5428 Commits
Author SHA1 Message Date
Martin Vogel aeeb2712d6 Merge origin/main into feat/issue-2061-swift-identity
Brings the branch up to date with main (612eee251). Two textual
conflicts, both where main added its Java external-call guard (#2667)
next to this branch's Swift candidate guard:

- src/pipeline/pass_calls.c: the registry lookup still runs only when
  the Swift candidates allow it, and now passes java_external.
- src/pipeline/pass_parallel.c: the registry fallback condition keeps
  both !java_external and count == 0.

No other file conflicted.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-05 01:49:25 +01:00
Martin Vogel ce6035dd68 test(swift): pin generic returns, try initializers and the parse retry
pipeline_swift_generic_return_keeps_label_match_issue2061: a callee's
generic parameter used as its return type, colliding with a project type
of the same name, leaves the variable unknown and its call keeps the
label match.

pipeline_swift_try_initializer_types_receiver_issue2061: `try await
Reader(...)` and `try ServerSocket(...)` type the variable; a subclass
receiver reaches its base class and the base class's extension in
another file, not same-labelled decoy members.

swift_conditional_retry_keeps_the_better_parse_issue2061: an `#error`
line from a dropped `#else` branch in a class body keeps the first parse,
so the class and its initializer stay in the graph.

The pipeline tests run sequential and parallel. Each test fails with its
fix reverted.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-05 01:48:27 +01:00
Martin Vogel 15906eb1f3 fix(swift): keep the first parse when masking directives reads less
The conditional-compilation retry always kept the masked re-parse. When
the dropped branch holds an `#error(...)` line inside a type body the
re-parse reads less of the file: Alamofire Protected.swift went from 3
to 14 unreadable lines and lost its Protected initializer.

The re-parse is now kept only when its error regions cover no more lines
than those of the first parse. Counting regions instead would reject
re-parses that split one large region into a few small ones; on
swift-nio that gave back 1,312 of the recovered lines.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-05 01:48:26 +01:00
Martin Vogel 8087c1c554 fix(swift): read a constructor type through try and await
`let socket = try ServerSocket(...)` and `let reader = try await
Reader(...)` left the variable untyped, so every member call on it went
to a label-only guess or was dropped. The initializer is now unwrapped
from `try` / `await` before its constructor type is read. Only a bare
type name counts there: `try Foo.make()` returns what make returns,
which the registry still infers from the call.

With the type in place the existing base-class and extension walk
applies: on swift-nio socket.close(), socket.bind(to:) and
socket.getLocalVsockAddress() in VsockAddressTest.swift resolve to
ServerSocket, BaseSocket and the BaseSocket extension in VsockAddress.swift.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-05 01:48:26 +01:00
Martin Vogel 837279303d fix(swift): keep the label match when an inferred receiver type is unknown
A variable whose type comes only from its initializer call
(`let p = loop.makePromise(of: Int.self)`) replaced the label match with
a typed lookup, and a failed lookup dropped the call. On swift-nio that
left 1,976 call sites without an edge that the label match had resolved.

The inferred type now only narrows the label match. When the inference
fails (overloads with different return types, an unknown callee or root,
a cycle) the receiver stays unknown, and when the inferred type has no
member with the call's name and labels the call keeps the label match.
Written types (annotations, parameters, constructor calls) and
non-project receivers behave as before. Inferring an initializer's own
type never uses a label match, so a guess cannot become a type.

A callee's own generic parameter used as its return type
(`func runSALOnEventLoop<Result>(...) -> Result`) names no type. It is
read from the declaration's generic clause in the qualified name and
leaves the bound variable unknown.

The four rows of pipeline_swift_capped_chain_returns_and_metatype_receivers
that expected no edge for an unknown receiver now expect exactly one
label-matched upload(_:) edge.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-05 01:48:26 +01:00
Martin Vogel 612eee2518 Merge pull request #2911 from DeusData/ci/freebsd-dispatch-workflow
ci(freebsd): add a dispatch-only, informational FreeBSD build workflow
2026-11-05 00:21:43 +01:00
Martin Vogel 55206a848e Merge pull request #2903 from tanishqbaweja/fix/manifest-walk-nul-file
fix(pipeline): skip a file named nul in the control-file walk instead of aborting the index (#2646)
2026-11-05 00:21:36 +01:00
Martin Vogel c1af82fd80 Merge pull request #2840 from halindrome/fix/watcher-reindex-cooldown
fix(watcher): pace re-indexes by the cost of the last successful run
2026-11-05 00:21:28 +01:00
Martin Vogel fe55b86c61 Merge pull request #2749 from tahodev/argv-grep-find-2634
refactor(search): run POSIX unscoped scan as argv stages, no shell (#2634)
2026-11-05 00:21:20 +01:00
Martin Vogel 86ad09434f Merge pull request #2667 from tfactor2/java-external-gate
feat(java): no name guess for calls on a proven-external receiver
2026-11-05 00:21:10 +01:00
Martin Vogel 4529a7268e Merge pull request #1862 from Andy11-cpu/persistent-install-hook-opt-out
feat(cli): persist install hook opt-out
2026-11-05 00:21:03 +01:00
Martin Vogel f13c847355 ci(freebsd): build the headless binary in the FreeBSD VM
The first proof run failed in both FreeBSD legs at `npm ci`: the UI
dependency tree pulls in onnxruntime-node, which publishes builds for
win32, darwin and linux only, so npm stops with EBADPLATFORM before the
frontend is built. The VM boot, the pkg prepare step, the gmake detection
and the source sync all worked.

The job now builds the headless binary (scripts/build.sh without
--with-ui) and drops node22/npm-node22 from the prepare step. That still
proves the C core builds and starts on FreeBSD; the UI bundle is
platform-independent JavaScript and is built on every other leg. The
aarch64 comment now says what is actually unproven.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-04 18:10:27 +01:00
Martin VogelandPedro Ramos e750c0531a ci(freebsd): add a dispatch-only, informational FreeBSD build workflow
Add .github/workflows/freebsd.yml, a standalone workflow triggered only
by workflow_dispatch. It builds the UI-embedded binary inside FreeBSD
15.1 and 14.4 x86_64 VMs (vmactions/freebsd-vm, full-SHA pin to v1.5.9)
with the canonical scripts/build.sh and runs the binary with --version.
It declares read-only permissions, uploads and publishes nothing, is not
part of ci-ok and is not called by release.yml or dry-run.yml, so a
FreeBSD red never gates a pull request or a release.

scripts/env.sh now detects FreeBSD and selects gmake there (BSD make
cannot read the GNU make syntax of Makefile.cbm) and make everywhere
else; the environment summary line reports the choice. scripts/build.sh
runs $MAKE at all three build call sites. macOS, Linux and Windows still
run make, so their builds are unchanged.

Distilled from #1422 by PR9000: the release matrix, the x86_64-host
choice, the aarch64 exclusion, the vmactions VM approach with a SHA pin,
fail-fast: false and the gmake detection all come from that pull
request, which built on the FreeBSD groundwork of #1093, #1423 and #1467.

Co-authored-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-04 18:10:27 +01:00
DavidHLP 1a6b2923c9 fix(swift): retain Sendable alias parameters in selectors
Signed-off-by: DavidHLP <lysf15520112973@163.com>
2026-11-04 06:29:56 -08:00
DavidHLP ff4b1ebe79 test(registry): avoid Windows near macro collisions
Signed-off-by: DavidHLP <lysf15520112973@163.com>
2026-11-04 06:15:08 -08:00
DavidHLP 6eddf54a13 fix(swift): resolve chains within SwiftPM target scope
Keep extension owners within visible targets and respect literal custom
SwiftPM roots, nested package boundaries and manifest invalidation.
Continue compatible call chains through declared return types and bounded
initializer inference. Recover conditional declaration ownership and
wrapped trailing closures, and preserve serial argument keywords.

Add extraction, registry and serial/parallel/incremental regressions.

Signed-off-by: DavidHLP <lysf15520112973@163.com>
2026-11-04 21:36:00 +08:00
DavidHLP 38df8e5a69 fix(swift): scope extension owners by module
Signed-off-by: DavidHLP <lysf15520112973@163.com>
2026-11-04 15:02:29 +08:00
DavidHLP c652f231b5 test(swift): reserve space for Windows temp directory paths
Signed-off-by: DavidHLP <lysf15520112973@163.com>
2026-11-03 19:26:50 -08:00
DavidHLP 05c7ba7515 Merge upstream main into Swift declaration identity
Signed-off-by: DavidHLP <lysf15520112973@163.com>
2026-11-03 18:14:27 -08:00
DavidHLP d33c6ac0ea fix(swift): resolve members declared in cross-file extensions
Include matching extension owners in typed Swift method and initializer lookup. Preserve owner metadata for incremental indexing and cover three-file resolution in sequential, parallel, and incremental runs.

Refs DeusData#2061

Signed-off-by: DavidHLP <lysf15520112973@163.com>
2026-11-03 18:07:40 -08:00
Martin Vogel d7d2e23c88 Merge origin/main into java-external-gate
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-04 00:05:36 +01:00
Martin Vogel f139c40db1 Merge origin/main into fix/manifest-walk-nul-file
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 23:20:57 +01:00
Martin Vogel 980c8ed932 Merge origin/main into persistent-install-hook-opt-out
Bring the branch up to main e0c7a1da6c
(#2395), which includes #1724 (index resource worker and publication
fence, 008b6c3585).

Conflict resolved (1 file):
- docs/CONFIGURATION.md: both sides appended rows to the "Current keys"
  table at the same spot. Resolved as main rows index_max_rss_mb and
  index_max_duration_seconds first, then the branch row install_hooks
  and its paragraph that closes the table. No conflict side was
  concatenated as-is; the branch paragraph must follow the last table
  row.

Auto-merged without conflict: README.md, src/cli/cli.c (CONFIG_KEYS
now holds the new index_max_rss_mb / index_max_duration_seconds keys
and install_hooks), src/main.c (worker publish-fence argv next to the
--hooks/--no-hooks help line).

Check: for all seven branch files, the zero-context patch-id of the
merged tree against main equals the branch own change. Semantic check:
the branch re-signs no function; main re-signed the daemon worker start
callback and the supervisor result struct, which the branch does not
use. No call site adapted.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 22:40:15 +01:00
Martin Vogel e0c7a1da6c Merge pull request #2395 from Studnicky/fix/swift-init-extraction
fix(extraction): attribute Swift lifecycle calls
2026-11-03 22:37:51 +01:00
Martin Vogel dd9558e694 Merge origin/main into fix/manifest-walk-nul-file
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 22:12:18 +01:00
Martin Vogel b9ba6c0360 Merge origin/main into argv-grep-find-2634
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 22:03:56 +01:00
Martin Vogel a4869bf231 Merge origin/main into fix/swift-init-extraction
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 21:21:11 +01:00
Martin Vogel 008b6c3585 Merge pull request #1724 from liuchong/feat/index-resource-worker
feat(index): add worker resource watchdogs
2026-11-03 21:20:43 +01:00
Martin Vogel 1fc7300cae Merge pull request #2499 from ankitbuilds99/fix/lint-mem-gate-warning-suffix
fix(ci): parse clang-tidy analyzer warning suffix
2026-11-03 19:53:15 +01:00
Martin Vogel 6ab3653b85 Merge origin/main into feat/index-resource-worker
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 18:09:48 +01:00
Martin Vogel 3a897a2d06 Merge origin/main into persistent-install-hook-opt-out
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 18:09:41 +01:00
Martin Vogel 97f8da2cb7 Merge origin/main into java-external-gate
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 18:09:34 +01:00
Martin Vogel dedd429215 Merge origin/main into fix/swift-init-extraction
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 18:09:19 +01:00
Martin Vogel f031c30fea Merge pull request #1784 from Pxx500/fix/mcp-frontend-recovery
fix(mcp): recover unsent requests after daemon loss
2026-11-03 18:08:32 +01:00
Martin Vogel 5830d284c5 Merge pull request #2896 from DeusData/fix/hermes-remover-empty-hooks
fix(cli): accept the emptied hooks: {} mapping in the Hermes hook editor
2026-11-03 18:08:22 +01:00
Martin Vogel 464bfb53ec Merge pull request #2878 from DeusData/dependabot/github_actions/actions/download-artifact-8.0.2
build(deps): bump actions/download-artifact from 8.0.1 to 8.0.2
2026-11-03 18:08:14 +01:00
Tanishq 79a5734112 fix(pipeline): skip a file named nul in the control-file walk instead of aborting the index (#2646)
semantic_manifest_control_entry() reads the metadata of every entry the
control-file walk lists, and one failed read fails the whole manifest.
On Win32 the plain path <dir>\nul names the NUL device, so a real file
named nul (Git Bash leaves one behind after `cmd > nul` or `2>nul`)
cannot be read: GetFileAttributesExW fails with
ERROR_INVALID_PARAMETER. The manifest returns CBM_NOT_FOUND and every
index run on the repository ends in CBM_PIPELINE_ABORT_PRESERVE_DB
(aborted_previous_preserved). Listing nul in .gitignore does not help,
because the walk visits every entry.

Only directories and control files can contribute to the manifest.
Decide the control name first and skip an entry that the listing
already shows to be neither, without reading it. A Windows listing
always carries the attributes; on POSIX an entry whose d_type is
DT_UNKNOWN is still read. Directories and control-named entries are
read exactly as before.

Signed-off-by: Tanishq <slatorgator3@gmail.com>
2026-11-03 12:36:41 +05:30
Martin Vogel 714a0cf04e Merge origin/main into fix/lint-mem-gate-warning-suffix
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 07:44:32 +01:00
Martin Vogel 190abae96f Merge pull request #2389 from harshitaajoshi/fix/php-inline-html-2000
fix(extract): parse PHP past inline HTML so symbols after ?> reach the graph (#2000)
2026-11-03 07:01:29 +01:00
Martin Vogel 35b50b9ca0 Merge branch 'main' into dependabot/github_actions/actions/download-artifact-8.0.2 2026-11-03 04:28:16 +01:00
Martin Vogel b8c5ec77c5 Merge origin/main into java-external-gate
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 03:46:43 +01:00
Martin Vogel d681c37d37 Merge branch 'main' into fix/hermes-remover-empty-hooks 2026-11-03 03:46:36 +01:00
Martin Vogel 7e67581448 Merge origin/main into persistent-install-hook-opt-out
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 03:04:38 +01:00
Martin Vogel 5689ea54ce Merge pull request #1561 from tmonestudio/codex/bt-240-truthful-index-freshness
feat(mcp): report truthful index freshness from checkout evidence
2026-11-03 03:04:02 +01:00
Martin Vogel 334a408b63 Merge pull request #2198 from astandrik/fix/1696-bench-runtime-isolation
fix(test): isolate benchmark harness daemon runtimes
2026-11-03 01:51:49 +01:00
Martin Vogel 08b84e4011 Merge origin/main into fix/php-inline-html-2000
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 01:40:29 +01:00
Martin Vogel b461b9137f Merge pull request #2781 from DeusData/dependabot/github_actions/actions/upload-artifact-7.0.2
build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2
2026-11-03 01:40:22 +01:00
Martin Vogel b42159e227 Merge origin/main into fix/mcp-frontend-recovery
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 01:28:38 +01:00
Martin Vogel 8ae04f4bd1 Merge pull request #2424 from mvanhorn/fix/1642-python-constructor-calls-init
fix(python): resolve ClassName() calls to __init__
2026-11-03 01:17:11 +01:00
Martin Vogel 7a1bee2548 fix(index): keep the publication fence off raw allocator sites
The memory-core ratchet (lint-memory-core) failed on the publication
fence commit: it added six raw free() calls, each releasing a block that
existing code allocates with raw calloc, malloc or strdup. cbm_free cannot
release such a block without the core class counters drifting, so every
new exit now reuses an existing release point instead:

- index_supervisor.c: worker_artifacts_create() creates the response, log
  and publish fence files and names the one that failed, so all three
  failures share the single artifact_create_failed exit.
- pipeline.c: a refused publication gate takes the existing source-changed
  abort exit (same CBM_PIPELINE_ABORT_PRESERVE_DB result and cleanup).
- mcp.c: index_request_names_free() is the one release point for the
  request name strings, used by index_worker_json_result() and
  index_args_serving_index_servable().

Raw-site counts return to the origin/main values (index_supervisor.c 8,
pipeline.c 129, mcp.c 765) with no baseline change. No behaviour change.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-03 01:05:17 +01:00