Commit Graph

1618 Commits

Author SHA1 Message Date
Martin Vogel 29d05589dc fix(grammars): widen uint8_t loop counters in objectscript scanner (CodeQL)
DCO / dco (push) Has been cancelled
CodeQL cpp/comparison-with-wider-type (4 high-severity alerts, #69-#72) flagged
two loops in the vendored ObjectScript scanner (objectscript_common.h, in both
the _routine and _udl grammar copies) where a uint8_t counter is compared
against an int length: the reverse_marker scan and the html_marker_buffer
reversal. Both lengths are hard-bounded by MARKER_BUFFER_MAX_LEN (30), so the
uint8_t counter can never wrap and the flagged infinite loop is unreachable in
practice — but widening the counters to int removes the pattern and clears the
gate. Provably behavior-neutral (int holds every uint8_t value; length <= 30).

Recorded as a local modification in the vendored grammar MANIFEST so it is
re-applied on the next re-vendor.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-16 18:34:23 +02:00
Martin Vogel a688d85cc8 Merge pull request #1093 from PR9000/freebsd-hw-physmem
fix(foundation): use HW_PHYSMEM for physical memory detection on FreeBSD
2026-07-16 17:33:20 +02:00
Pedro Ramos 62808da92e tests: add platform_system_info regression test
Signed-off-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
2026-07-16 04:10:26 +01:00
Martin Vogel 5d150ea051 Merge pull request #1109 from DeusData/fix/601-cypher-exec-deadline
fix(cypher): add a wall-clock execution deadline to abort runaway queries (#601)
2026-07-16 04:56:50 +02:00
Martin Vogel 3d6aa6791d Merge pull request #1048 from DeusData/fix/999-ci-config-infra-routes
fix(pipeline): stop CI/tooling config URLs from minting infra Route nodes
2026-07-16 04:19:42 +02:00
Martin Vogel 6bd11ffb58 fix(cypher): add a wall-clock execution deadline to abort runaway queries
DCO / dco (push) Has been cancelled
An unbounded whole-graph OPTIONAL MATCH or a GROUP BY that produces roughly one
group per node does O(bindings x groups) work in execute_return_agg and can run
for minutes on a large graph before emitting a single row. The 100k row ceiling
never fires (no rows are produced), so query_graph just hangs with no partial
result and no error (#601).

Arm a monotonic wall-clock budget (default 30s) at query entry and check it
(throttled, every 1024 iterations) in the scan, relationship-expansion and
aggregation hot loops. On expiry the query aborts with a clear, actionable error
instead of hanging. A thread-local test hook forces the budget so the guard is
covered by a deterministic reproduce-first test; a companion test confirms the
default budget does not false-positive on a normal query.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-16 03:09:27 +02:00
Martin Vogel 90d7315cf9 Merge pull request #1108 from DeusData/fix/964-1077-fqn-collision
fix(fqn): preserve full filename in File-node QNs so sibling files don't collide
2026-07-16 02:52:00 +02:00
Martin Vogel 848375912d Merge pull request #1098 from JhohanBustamante/fix/cypher-composite-props
fix(cypher): return whole value for composite and escaped properties
2026-07-16 02:47:38 +02:00
Martin Vogel b0aead257e Merge pull request #991 from harshitaajoshi/fix/cypher-coalesce-where-874
fix(cypher): support coalesce() and other multi-arg scalar functions in WHERE (#874)
2026-07-16 02:44:33 +02:00
Martin Vogel 81e7b73647 Merge remote-tracking branch 'origin/main' into HEAD
DCO / dco (push) Has been cancelled
# Conflicts:
#	tests/test_lang_contract.c
2026-07-16 02:31:18 +02:00
Martin Vogel e2d41d9cd4 Merge pull request #1094 from harshitaajoshi/fix/utf8-docstring-truncation-1017
fix(extract): snap docstring truncation to UTF-8 codepoint boundary (#1017)
2026-07-16 02:16:11 +02:00
Martin Vogel 2308ae084e Merge pull request #940 from WarGloom/codex/fix-sqlite-writer-atomic-publish
Fix SQLite writer atomic cache publish
2026-07-16 02:11:27 +02:00
Martin Vogel 812af348bb Merge pull request #1002 from halindrome/p913-glr-recursion
fix(ts-runtime): bound GLR stack-merge recursion to prevent stack overflow
2026-07-16 02:11:10 +02:00
Martin Vogel 91d1a23161 Merge pull request #1043 from WarGloom/agent/fix-mcp-structured-content
fix(mcp): return structured compact results
2026-07-16 02:01:41 +02:00
Martin Vogel 6c5795b245 Merge pull request #985 from ShiroKSH/agent/fix-adr-delete
fix(graph-ui): clear ADR content on delete
2026-07-16 01:52:52 +02:00
Martin Vogel 2080d82100 Merge pull request #1060 from isc-tdyar/fix/semantic-body-tokens
fix(extract): populate body_tokens before MinHash gate; add OS/TS identifier node types
2026-07-16 01:50:34 +02:00
Martin Vogel bb9677f3a9 Merge pull request #1067 from tmonestudio/codex/test-isolate-cache
fix(tests): isolate integration caches from user state
2026-07-16 01:41:52 +02:00
Martin Vogel 751752bd21 fix(fqn): preserve full filename in File-node QNs so sibling files don't collide
DCO / dco (push) Has been cancelled
cbm_pipeline_fqn_compute stripped the file extension for EVERY qualified
name, including File-node QNs (name=="__file__"). Two different files
whose names share a stem therefore collided on the File QN and the
graph kept only one node per stem:

- .env / .env.local / .env.production all strip to ".env" — only one
  survives per directory (#1077).
- a C/C++ header and its same-stem source (NodeController.h vs .cpp)
  strip to the same stem, so the header got no File node of its own,
  leaving it disconnected (#964's remaining half after #983 fixed the
  include→Class resolution).

File-node QNs now keep the full filename (tokenize_path splits on '/'
only, so the extension rides in the last segment and stays unique).
Extension stripping is retained for MODULE/symbol QNs (name==NULL or a
symbol name) — that stem unification is load-bearing for C/C++
declaration↔definition cross-file resolution, and is left untouched.
All 26 __file__ QN sites route through this one function, so node
creation and every lookup stay consistent.

Reproduce-first:
- fqn_file_qn_preserves_dotfile_variants_issue1077 and
  fqn_file_qn_distinguishes_same_stem_header_source_issue964 assert the
  distinct File QNs (RED before: both collide to the stripped stem).
- fqn_module_qn_still_strips_extension guards that module QNs are
  unaffected.
- repro_issue964 now asserts the header keeps its own File node AND is
  connected (CONTAINS_FILE + DEFINES the class it declares), matching
  the reporter's zero-inbound disconnection metric — GREEN.

Closes #1077
Closes #964

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-16 01:21:45 +02:00
Martin Vogel 548927a849 Merge pull request #1106 from DeusData/fix/1085-jsx-alias-calls
fix(pipeline): restore parallel CALLS resolution for LSP-unresolvable targets
2026-07-16 01:14:09 +02:00
Pedro Ramos 08cb92f320 Merge branch 'main' into freebsd-hw-physmem 2026-07-15 23:28:09 +01:00
Martin Vogel 86c19720a2 docs(third-party): record the ts_runtime stack-merge bound as a local modification
The #913 GLR recursion cap patches vendored ts_runtime/src/stack.c;
document it in THIRD_PARTY.md so the vendored modification is on record
and re-applied on the next ts_runtime re-vendor (Stage 4: 0.26.x). The
patch is marked inline; this adds the provenance-level note the policy
requires for any change to vendored code.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-16 00:18:41 +02:00
Martin Vogel ef1482245f Merge pull request #949 from blankanswer/agent/fix-cpp-preproc-signature-gap
fix(cpp): remap recovered definitions to original lines
2026-07-16 00:05:49 +02:00
Harshita Joshi 57cd3f9e78 Merge branch 'main' into fix/cypher-coalesce-where-874 2026-07-15 16:59:09 -05:00
Martin Vogel 4c60111beb Merge pull request #983 from Sinjan-Debnath/main
fix: resolve C/C++ includes to header file targets by matching stems
2026-07-15 23:54:27 +02:00
Martin Vogel 8c394658b9 fix(pipeline): restore parallel CALLS resolution for LSP-unresolvable targets
DCO / dco (push) Has been cancelled
The parallel resolver dropped a CALLS edge whenever the LSP produced a
resolution whose callee_qn was not a node in the graph buffer: the
registry fallback lived in an else that ran only when NO LSP resolution
existed, so an LSP-with-unresolvable-target left res empty and the edge
was discarded outright. The sequential pass falls THROUGH to the
registry resolver in the same situation.

This diverged the two pipelines on the exact intersection the reporter
identified (#1085): a JSX component imported through a tsconfig paths
alias. The TS LSP resolves the element ref to an alias-path QN that
never matches a def node, so lsp_target is NULL and the parallel path
dropped it — while sequential resolved it via the import_map /
unique_name registry path. On a Next.js repo this silently removed
~21% of the call graph (every alias-imported JSX composition edge), and
the parallel path is the default above 50 files, so the default index
was the broken one.

The fix runs the registry fallback whenever the LSP did not yield a
gbuf-resolvable target, matching the sequential fall-through and
restoring seq/parallel parity.

Reproduce-first: calls_jsx_component_via_tsconfig_alias_parallel_issue1085
indexes the alias+JSX shape through the parallel path (et_index_parallel
pads past the 50-file threshold) and asserts the CALLS edges land on the
component. RED before (0 edges), GREEN after.

Closes #1085

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-15 23:43:52 +02:00
Harshita Joshi 4ce04f2d03 Merge branch 'main' into fix/utf8-docstring-truncation-1017 2026-07-15 16:28:54 -05:00
Harshita Joshi 3ebcf48a46 fix(extract): snap docstring truncation to UTF-8 codepoint boundary (#1017)
Signed-off-by: Harshita Joshi <j.harshitaa06@gmail.com>
2026-07-15 16:27:34 -05:00
Martin Vogel 23f262c4b8 Merge pull request #995 from spde/fix/incremental-file-node-basename
fix(incremental): name File nodes by basename, matching the full pipeline
2026-07-15 22:59:44 +02:00
Martin Vogel 807a4a3129 Merge pull request #1046 from metehanulusoy/fix/missed-shadow-project-listing
fix(mcp): ignore ::missed shadow rows when resolving a db's project name
2026-07-15 22:38:07 +02:00
Martin Vogel 34867d9b34 Merge pull request #1007 from CharlesQueiroz/fix/jaxrs-path-composition
fix: compose JAX-RS method-level @Path with class-level prefix
2026-07-15 22:21:38 +02:00
KolisCode 48fa9cbc03 fix(cypher): return whole value for composite and escaped properties
json_extract_prop() scanned a non-string property up to the first ',' and a
string property up to the first '"', ignoring nesting and backslash escapes.
Any array/object property was therefore truncated at its first INTERNAL comma,
and any string containing an escaped quote was cut short.

    decorators: ["@Roles('OWNER', 'ADMIN')","@Get()"]
    projected as: ["@Roles('OWNER'

This makes decorator/route/authz queries unusable on frameworks whose
decorators take multiple arguments (NestJS, Angular, Spring). Values are now
copied as balanced constructs, honoring string state and escape pairs; scalar
and plain-string paths are unchanged.

Signed-off-by: KolisCode <jhohantma@gmail.com>
2026-07-14 22:31:44 -05:00
Thomas Dyar b9797ecd44 fix(extract): populate body_tokens before MinHash gate; add OS/TS identifier node types
Signed-off-by: Thomas Dyar <tdyar@intersystems.com>
2026-07-14 20:53:58 -04:00
Pedro Ramos 345ed4d3bc fix(foundation): use HW_PHYSMEM for physical memory detection on FreeBSD
Signed-off-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
2026-07-15 00:44:30 +01:00
Harshita Joshi feae294c82 Merge branch 'main' into fix/cypher-coalesce-where-874 2026-07-14 18:42:59 -05:00
Martin Vogel feadbe1955 Merge pull request #467 from isc-tdyar/pr/objectscript-language-support
feat(objectscript): InterSystems IRIS ObjectScript language support
2026-07-15 01:33:19 +02:00
Harshita Joshi 755ffe57a5 fix(cypher): support coalesce() and other multi-arg scalar functions in WHERE (#874)
Signed-off-by: Harshita Joshi <j.harshitaa06@gmail.com>
2026-07-14 17:27:00 -05:00
Martin Vogel 6207d16fdf fix(review): keep vendored scanners byte-identical; wide-safe XML sniff
Two review items applied maintainer-side to save a roundtrip:

1. Restore both vendored ObjectScript scanner.c files to the pristine
   upstream bytes (a formatter pass had rewritten indentation/braces).
   Vendored grammar files stay byte-for-byte upstream except for the
   include repoint documented in MANIFEST.md - style churn breaks
   upstream diffability on re-vendor.
2. The Studio Export XML sniff in detect_file_language used a raw
   fopen on a repository path; cbm_fopen keeps it working on
   non-ASCII Windows paths (project rule, same class as #996).

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-15 00:04:05 +02:00
Martin Vogel 37ef5b5d47 Merge pull request #1069 from DeusData/feat/agent-installations
feat: expand coverage-aware agent integrations
2026-07-14 22:47:01 +02:00
Martin Vogel aa2366811b fix: eliminate installer filesystem races
DCO / dco (push) Has been cancelled
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 21:13:52 +02:00
Martin Vogel 50df0997cf fix: scope legacy shim cleanup to Windows
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 19:25:45 +02:00
Martin Vogel 5ae6ef7875 fix: migrate Windows Claude hook scripts safely
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 19:08:54 +02:00
Martin Vogel c22020d18d test: cover Windows hook migration safety
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 18:50:35 +02:00
Charles Queiroz 041eb99c11 fix: compose JAX-RS method-level @Path with class-level prefix (#1005)
JAX-RS splits a route across two annotations: the verb comes from a bare
@GET/@POST/... and the path from a sibling @Path. The annotation scan
returned on the first mapping annotation, so the @GET matched, defaulted
the path to "/" and the sibling @Path was never read. Class-level @Path
was never recognized as a prefix either, because a lone @Path carries no
verb and the scan reported no route.

scan_route_annotations() now collects the whole annotation set (mapping
verb + optional inline path, and a separate JAX-RS @Path), then:
- method-level: verb required; path = inline mapping path, else @Path,
  else "/"
- class-level prefix: inline mapping path, else @Path
Also recognizes bare @HEAD/@OPTIONS verbs.

Spring behavior is unchanged (mapping annotations keep their inline
path); covered by the existing test suite plus a new regression test.

Signed-off-by: Charles Queiroz <fcqueiroz@liquibase.com>
2026-07-13 23:17:08 -03:00
Nikita Bige 45b9a5c5e1 fix(sqlite_writer): publish rebuilt db atomically
Keep the live database visible until a synced temporary generation can
replace it. Preserve destination sidecars on replacement failure and use
UTF-8-safe Windows file operations.

Signed-off-by: Nikita Bige <wargloom@gmail.com>
2026-07-13 11:43:00 +03:00
Blank_Answer 99d39192cd fix(cpp): remap preprocessed recovery lines
Signed-off-by: Blank_Answer <97771966+blankanswer@users.noreply.github.com>
2026-07-13 05:21:54 +00:00
Martin Vogel 9cda693acb fix: converge exact-owned hook updates
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 06:28:17 +02:00
Martin Vogel 90fab0844a test: model Windows agent hook contracts
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 05:21:55 +02:00
Martin Vogel ecc6a5fdcd fix: migrate legacy Windows hook commands
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 05:21:36 +02:00
Martin Vogel be1e98fd99 test: write Windows fixtures byte-exactly
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 04:17:58 +02:00
Martin Vogel eb203ff6fa test: guard POSIX filesystem checks on Windows
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 03:31:31 +02:00