Commit Graph
5164 Commits
Author SHA1 Message Date
Martin Vogel ff74ab0982 Merge origin/main into fix/php-inline-html-2000
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-02 18:09:51 +01:00
Martin Vogel 9c19b5dd9e Merge pull request #2245 from lorenzozanee/fix/termux-portable-guard
fix(install): reject unsupported Android portable installs
2026-11-02 18:08:10 +01:00
Martin Vogel afe57369ee Merge pull request #2879 from DeusData/dependabot/github_actions/actions/setup-python-7.1.0
build(deps): bump actions/setup-python from 7.0.0 to 7.1.0
2026-11-02 18:08:02 +01:00
Martin Vogel c80a256999 Merge pull request #2207 from AmirF194/fix/lifetime-lock-probe-drops-held-lock
fix(daemon): stop the lifetime-lock probe from dropping a held lock
2026-11-02 18:07:53 +01:00
Martin Vogel 7a9b1cb0d3 Merge pull request #2838 from halindrome/perf/index-worker-priority
perf(index): run supervised index workers at below-normal CPU priority
2026-11-02 18:07:41 +01:00
Martin Vogel f78620fe6c Merge pull request #2747 from petterip/feat/nextjs-app-router-routes
feat(extraction): route Next.js App Router handlers (#759)
2026-11-02 18:07:31 +01:00
Martin Vogel c04e322d61 Merge branch 'main' into dependabot/github_actions/actions/setup-python-7.1.0 2026-11-01 23:20:24 +01:00
Martin Vogel a5b248f472 Merge pull request #2261 from tamerbak/docs/contributor-check-prerequisites
Docs/contributor check prerequisites
2026-11-01 23:19:34 +01:00
Martin Vogel 7a7ecb7356 test(install): keep the Android guard test off the network
Point CBM_DOWNLOAD_URL, the documented download-base override in
install.sh, at a closed loopback port. If a curl stub were ever missed
on some leg, the download would then fail locally instead of fetching
a real release.

Check that the uname stub is the one PATH resolves before running
install.sh. Otherwise the test would quietly exercise the real host
instead of an Android one and prove nothing.

Refs #1202

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 23:02:46 +01:00
Martin Vogel 9f278b7ed3 Merge pull request #2880 from DeusData/dependabot/github_actions/ossf/scorecard-action-2.5.0
build(deps): bump ossf/scorecard-action from 2.4.4 to 2.5.0
2026-11-01 22:58:22 +01:00
Martin Vogel 79f674efe0 Merge origin/main into fix/termux-portable-guard
Brings the branch up to current main (it was 2061 commits behind) so
the new Step 0x2 runs inside the current scripts/test.sh. No conflicts.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 22:44:24 +01:00
Martin Vogel 8b2b0d769f fix(install): say that Termux is not a supported platform yet
The guard told users to build from source with scripts/build.sh in
Termux, which reads as a supported path. Source builds under Termux
still have open problems tracked in #1202, so the message now says
why the portable binary cannot run there and that a source build may
work but is not supported yet, pointing at #1202.

The test still matches Android/Termux in the new message.

Refs #1202

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 22:43:59 +01:00
Martin Vogel 1fc70c2024 test(install): run the Android guard test as Step 0x2 of scripts/test.sh
scripts/test.sh lists every shell contract test explicitly and does
not glob tests/, so an unlisted test never ran on any leg. Register
tests/test_install_android_guard.sh as Step 0x2, right after Step 0x,
in the same two-line shape as its neighbours.

Give the two PATH stubs (uname, curl) the same shebang every other
stub under tests/ uses, so they are proper executables on every leg
instead of relying on the shell fallback for files without one.

Refs #1202

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 22:43:58 +01:00
Martin Vogel 17415f6a38 test(install): rename the Android guard test to the test_*.sh convention
Every shell contract test under tests/ is named test_*.sh with
underscores. A pure rename, so history and blame follow the file.

Refs #1202

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 22:43:58 +01:00
Martin Vogel e8cb85cf0f Merge origin/main into fix/php-inline-html-2000
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 21:30:01 +01:00
Martin Vogel 616ba4111f Merge origin/main into perf/index-worker-priority
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 21:29:54 +01:00
Martin Vogel edc2301b02 Merge pull request #2503 from DeusData/dependabot/github_actions/msys2/setup-msys2-2.33.0
build(deps): bump msys2/setup-msys2 from 2.32.0 to 2.33.0
2026-11-01 21:29:38 +01:00
Martin Vogel 7e3024dbb8 Merge origin/main into fix/lifetime-lock-probe-drops-held-lock
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 20:51:22 +01:00
Martin Vogel 384e730744 Merge origin/main into docs/contributor-check-prerequisites
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 19:38:17 +01:00
dependabot[bot] 083bc94d5e build(deps): bump ossf/scorecard-action from 2.4.4 to 2.5.0
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.4 to 2.5.0.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/2d1146689b8cda280b9bc96326124645441f03bc...fa7117db83c52d787ae5a89f350999701505d78e)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-01 18:34:52 +00:00
dependabot[bot] 11f20c578b build(deps): bump actions/setup-python from 7.0.0 to 7.1.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/5fda3b95a4ea91299a34e894583c3862153e4b97...6d4fd22b20465ccc0f7354476588e8df7c9ca0e0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-01 18:34:44 +00:00
Martin Vogel 358501f6c7 Merge pull request #2727 from DeusData/chore/codeql-action-v4.39.0
ci: bump the CodeQL actions to v4.39.1 together and group their Dependabot updates
2026-11-01 19:30:11 +01:00
Martin Vogel df2b068532 Merge pull request #2507 from DeusData/dependabot/github_actions/actions/attest-4.2.2
build(deps): bump actions/attest from 4.1.0 to 4.2.2
2026-11-01 18:48:55 +01:00
dependabot[bot] 1f56c7d6bb build(deps): bump msys2/setup-msys2 from 2.32.0 to 2.33.0
Bumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.32.0 to 2.33.0.
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/msys2/setup-msys2/compare/66cd2cce69caa17b53920067426061ca1de3a884...ec48f7c5447b3140e2b088413ae3a55687bccb6e)

---
updated-dependencies:
- dependency-name: msys2/setup-msys2
  dependency-version: 2.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-01 16:06:58 +00:00
Petteri Ponsimaa 6e54ac3ce7 Merge origin/main into feat/nextjs-app-router-routes
Main took semantic index version 12 for its Markdown section change, so
the Next.js App Router routes move to version 13 with their own history
entry. pipeline_nextjs_semantic_upgrade_issue759 now starts from a
version-12 index.

Signed-off-by: Petteri Ponsimaa <petterip@gmail.com>
2026-11-01 17:19:23 +02:00
Martin Vogel caad969154 ci: pin every CodeQL action to v4.39.1
Main already moved upload-sarif to v4.39.1 (#2779). Move init and analyze to
the same commit, 9b3254085494b55a0f7c4c2b3d2d52cc712ce370 (the commit the
v4.39.1 tag points to), so all three CodeQL actions run one version again.
The pin comment follows the form Dependabot wrote for upload-sarif. The
codeql-action Dependabot group added earlier on this branch keeps the three
in lockstep from here on.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 16:12:47 +01:00
Martin Vogel 45ceb80ccd Merge origin/main into chore/codeql-action-v4.39.0
Conflict in .github/workflows/scorecard.yml resolved to the main version:
main already pins upload-sarif to 9b3254085494b55a0f7c4c2b3d2d52cc712ce370
(v4.39.1, #2779), which supersedes this branch's v4.39.0 pin.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 16:12:13 +01:00
dependabot[bot] 54e079587d build(deps): bump actions/attest from 4.1.0 to 4.2.2
Bumps [actions/attest](https://github.com/actions/attest) from 4.1.0 to 4.2.2.
- [Release notes](https://github.com/actions/attest/releases)
- [Changelog](https://github.com/actions/attest/blob/main/RELEASE.md)
- [Commits](https://github.com/actions/attest/compare/59d89421af93a897026c735860bf21b6eb4f7b26...1e69f48acb82d1966a394da916b4c1698aa569d6)

---
updated-dependencies:
- dependency-name: actions/attest
  dependency-version: 4.2.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-01 15:09:38 +00:00
Martin Vogel 6c0ce230ee Merge pull request #2779 from DeusData/dependabot/github_actions/github/codeql-action/upload-sarif-4.39.1
build(deps): Bump github/codeql-action/upload-sarif from 4.38.1 to 4.39.1
2026-11-01 16:08:06 +01:00
Martin Vogel 587f134e5c Merge pull request #2385 from HazielMagallanes/fix/opencode-v2-setup-hooks
fix(cli): register OpenCode 2 hooks via the setup context
2026-11-01 14:27:30 +01:00
Martin Vogel 6926a65018 Merge pull request #2872 from DeusData/ci/apt-fail-fast
ci: fail fast when an apt mirror stalls
2026-11-01 14:17:02 +01:00
Martin Vogel fb88365dc0 fix(cli): add no OpenCode 2 compaction note until one has run on a real host
The V2 compaction hook pushed a plain object into the compaction request's
event.messages. OpenCode's Message is a schema class at v2.2.5, and nobody has
run this path on a real 2.x host. The try/catch only guards the array push,
which cannot throw. If OpenCode rejects the object, that happens inside its own
compaction, out of the plugin's reach, so an untested note could break
compaction for every OpenCode 2 user. Losing the note costs far less.

Remove the V2 compaction registration and the sessionHooksRegistered flag it
needed. The V2 tool hook, proven on OpenCode 2.2.5, stays, and so does the
1.18.x experimental.session.compacting path. OpenCode 2 sessions still get the
session note on the first tool result of a session. A later change can add a
note after compaction together with a real 2.x run.

The replacement test pins that the generated module registers no session hook
and touches neither event.messages, a system property nor an instruction entry.

Refs #2204

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 12:55:46 +01:00
Martin Vogel e3a9fa34ed ci: let apt fail over between mirrors instead of hanging
The hosted Ubuntu x64 runners read the archive through
mirror+file:/etc/apt/apt-mirrors.txt. With Acquire::Retries above 0
(including the apt default of 3), a failover from a dead first entry
of that list (connection refused, DNS failure or a stalled host) to
the next entry goes idle: apt-get fetches a few InRelease files from
the second mirror and then waits until the step timeout. With
Acquire::Retries=0 the same failover completes. Seen on noble
(apt 2.8.3) and jammy (apt 2.4.14).

Every apt step this branch hardened now picks the retry count at
runtime, applied to both update and install: 0 when the runner has the
mirror list (moving to the next mirror is the retry), 3 otherwise
(arm64 runners and any host with plain sources keep their retries).
--error-on=any, the http and https timeouts and the step timeouts are
unchanged.

Proof: the step text extracted from the edited _build.yml (update plus
install of zlib1g-dev), run under bash -e in ubuntu:24.04 and
ubuntu:22.04 containers with runner-shaped mirror lists:
- first mirror refused: exit 0 in 8 s / 9 s, every index and deb
  fetched from the second mirror
- first mirror stalled (192.0.2.1): exit 0 in 68 s / 69 s, one 30 s
  timeout each for update and install, then the second mirror
- healthy first mirror: exit 0 in 7 s / 9 s
- no mirror list, plain sources: the prefix keeps Retries=3, exit 0
  in 8 s / 7 s
- every mirror dead: update exits 100 in under 1 s, install skipped
- revert check, the previous step text with a dead first mirror
  (refused or stalled): idle with no Packages index at the 180 s cap
  on both releases

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 12:32:45 +01:00
Martin Vogel a545a0aa8c ci: fail apt-get update on any fetch error
apt-get update exits 0 when index fetches fail: it only prints
"W: Some index files failed to download. They have been ignored, or
old ones used instead." and the job breaks later at install time with
a misleading "Unable to locate package", or installs from stale lists.
Add --error-on=any to every apt-get update this branch hardens, placed
after the -o options as in test-infrastructure/Dockerfile.msan, so the
update step itself fails when an index cannot be fetched.

Proof in ubuntu:24.04 (apt 2.8.3) and ubuntu:22.04 (apt 2.4.14)
containers with a runner-shaped mirror+file:/etc/apt/apt-mirrors.txt
source and the same -o options CI passes:
- every mirror unreachable: exit 100 with the flag (E: lines), exit 0
  without it (W: lines, zero Packages lists), on both apt versions
- first mirror refused or stalled (30 s connect timeout) and the real
  archive second: the Ign: failover lines do not trip the flag, exit 0
  with every index fetched (measured with Acquire::Retries=0)
- the image sources with the flag: exit 0 and no Ign/W/E lines, so the
  option is understood by apt 2.4 and 2.8
- green hosted-runner logs (ubuntu-24.04 and ubuntu-22.04 legs) show no
  Ign/Err/W/E lines in the update step

With Acquire::Retries=3 a mirror failover leaves apt idle after the
InRelease failover, with or without the flag and also for a plain
apt-get update; that apt behaviour predates this change and is
unchanged by it.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 10:08:28 +01:00
Martin Vogel d3d0bc8452 fix(cli): never create note-only content for an empty OpenCode 2 result
Tool.Result allows content: [], and for it the array branch of
appendResult pushed a text part that held only the session note, so the
note became the whole content of the tool result. Add a text part only
when the array already holds a part; an empty array now falls through to
the string output branch, or the result is returned unchanged.

Pin it in a new agent_clients test: the part-adding push sits inside the
non-empty array branch, ahead of the string output fallback, and no
unguarded array branch is left.

Refs #2204

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 09:33:17 +01:00
Martin Vogel f531be2500 fix(cli): keep the OpenCode 2 compaction note inside the compaction
The OpenCode 2 compaction hook receives the compaction request, whose
messages are the input the summary is built from. Add the post-compaction
session note there as a text message, mirroring the 1.18.x path that
pushes it into output.context. Session instruction entries are rendered
into the system array of every later request, so the note no longer goes
through ctx.session.instructions.entry, and event.system stays untouched.
Registration and the push still fail open.

Pin it in a new agent_clients test: the push sits inside the compaction
registration, carries a user text part, is guarded by an array check, and
the generated module names neither a system property nor an instruction
entry. The #2077 test drops the assertions that pinned the old channel.

Refs #2204

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 09:33:03 +01:00
Martin Vogel 339cd51660 ci: fail fast when an apt mirror stalls
On 2026-11-01 two Linux jobs hung in `sudo apt-get update` right after
"Get:5 https://archive.ubuntu.com/ubuntu noble-security InRelease" until
their job limit; the build never started in either:

- PR 2641, test-tsan x86 (run 41251045506, job 124688326533): the
  "Install deps (Ubuntu)" step ran 2 h until the 120-minute job limit.
- PR 2395, test-unix gcc x86 (run 41256855177, job 124705168264): the
  same step ran 4 h until the 240-minute job limit.

Both logs show the azure mirror ignored after about 15 s, the fallback to
archive.ubuntu.com, and then no output until the cancel. The default apt
http timeout (120 s) did not end the stall.

Rule applied to every workflow step whose run block calls apt:

- A step-level timeout-minutes. 10 for steps that only provision packages
  (green runs on 2026-11-01 and the last green dry run: 5 to 76 s); 20 for
  the three pr.yml steps that also run scripts/build.sh (green: 246 to
  331 s). A stalled mirror now fails the step in minutes instead of
  holding the runner until the job limit.
- `-o Acquire::Retries=3 -o Acquire::http::Timeout=30
  -o Acquire::https::Timeout=30` on every apt-get update and install,
  with the -o options before the subcommand as in
  test-infrastructure/Dockerfile.msan.

Nothing else changes: no action, runner, package or step-order changes.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 09:23:09 +01:00
Martin Vogel f159b4c21d Merge pull request #1731 from henry-hz/upstream-pr/elixir-complexity
fix(elixir): functions carry no complexity, fingerprint or line count
2026-11-01 09:04:28 +01:00
Martin Vogel 65acd4277b Merge pull request #2092 from Blysspeak/feat/graph-gate-contract
feat(cli): opt-in exit contract for index_repository
2026-11-01 08:58:40 +01:00
Martin Vogel 9aa44426f7 Merge origin/main into feat/graph-gate-contract
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 07:17:42 +01:00
Martin Vogel f29e74f276 Merge pull request #1781 from agn-7/feat/codex-skill-location-compat
fix(codex): migrate skill to documented user path
2026-11-01 07:16:59 +01:00
Martin Vogel 01ac4fe6a9 Merge origin/main into feat/codex-skill-location-compat
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 05:25:28 +01:00
Martin Vogel 09ea34041c Merge pull request #2842 from pcristin/codex/fix-2816-trace-recursion
fix(mcp): expose recursion metadata in trace_path
2026-11-01 03:44:00 +01:00
Martin Vogel 12920dae15 Merge origin/main into feat/codex-skill-location-compat
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 03:03:02 +01:00
Martin Vogel 96c2fef6db Merge pull request #2641 from crisacm/fix/2204-opencode-extension-untouched
fix(cli): leave a user-owned OpenCode module untouched instead of appending the block
2026-11-01 03:01:55 +01:00
Martin Vogel 6e0c59f5cf Merge pull request #2867 from DeusData/fix/cs-lsp-nested-types-global-ns
fix(cs-lsp): resolve nested types through type qualifiers, bind global-namespace types
2026-11-01 02:50:53 +01:00
Martin Vogel b3c6becee7 Merge origin/main into codex/fix-2816-trace-recursion
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 02:08:20 +01:00
Martin Vogel 29aa74867b Merge pull request #2022 from mvanhorn/fix/1084-background-index-cpu
fix: preserve CPU headroom during background indexing
2026-11-01 02:07:30 +01:00
Martin Vogel 21c253ff63 fix(cs-lsp): never pool global-namespace types as partial twins
cs_lookup_method searches the other declarations of a type (same simple
name, same declared namespace: `partial` pieces, reference-assembly
copies) before it walks the base classes. With global-namespace types now
carrying the namespace "", every same-name type declared without a
namespace anywhere in the repository became a twin of every other one.
Across a repository that is a different type per assembly (each test
project has its own Program or Helper), so a member missing on the
receiver bound to an unrelated type ahead of the receiver's own base.

cs_namespace_twins returns no twins for a type in the global namespace.

Test: cs_lsp::cslsp_global_namespace_types_are_not_partial_twins runs the
production Tier-2 C# registry builder over cross-file defs: two unrelated
global Helper types and a base class. RED without the guard:
stop_base=0 stop_unrelated_global_twin=1. GREEN with it.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-11-01 01:13:02 +01:00
Martin Vogel dad89184cb fix(cs-lsp): look up the global namespace in C# spec order
C# looks a simple type name up namespace by namespace, innermost outward.
At each namespace N it checks the members of N, then the usings of the
namespace declaration enclosing the reference. The global namespace is
the last N, and its declaration is the compilation unit. So a type
declared without a namespace hides a type that only a compilation-unit
`using` imports, while a `using` inside a namespace body still wins over
the global namespace. Step 8b used to rank every using before the global
namespace.

- CBMCSUsing records whether a directive sits inside a namespace body
  (in_namespace). cs_collect_imports tracks it per node, including the
  compilation-unit siblings after a file-scoped namespace; the cross-file
  entry pre-loads the pipeline import list without placement and the AST
  walk upgrades it.
- cs_visible_namespaces ranks a simple name as: enclosing namespaces
  innermost outward, namespace-body usings, the global namespace "", and
  last the compilation-unit usings.

Ranking the global namespace that high also requires that only a type
proven global claims it. The vendored grammar does not parse a
`ref partial struct` with members, and error recovery dissolves the
enclosing namespace, so every type after it in that namespace surfaced
with no namespace. Mapped to "" those types outranked the real, imported
declaration: on dotnet/runtime 5,313 CALLS moved from implementation
files into reference assemblies (System.Runtime.cs, which declares
DefaultInterpolatedStringHandler as a `ref partial struct`).
cs_type_decl_namespace now returns "" only when the compilation unit
parsed without errors and NULL (unknown, invisible to step 8b, as on
main) otherwise; cs_top_level_namespace passes that through.

Tests:
- parallel_csharp_nested_type_and_global_namespace_binding: the
  compilation-unit `using` probe now expects the global type (spec), and
  a new namespace-body `using` probe expects the imported one. RED with
  the previous order: cu_using=0/0.
- parallel_csharp_parse_damaged_namespace_is_not_global (sequential and
  parallel). RED without the clean-parse rule: real=0 no_damaged=0 on
  both paths.
- cs_lsp::cslsp_decl_namespace_global_needs_clean_parse: extractor
  contract ("" for a clean global type, the namespace when found, never
  "" after a parse error).

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