Skip to content

Commit f701caf

Browse files
authored
Merge pull request #21 from ngallodev/sync/upstream-step8
Sync upstream through 0ca6e7d (steps 6-8): 0 behind, MCP stays removed
2 parents 9f26f16 + 316bce2 commit f701caf

1,645 files changed

Lines changed: 1277861 additions & 513453 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.codebase-memory.json‎

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
"test_impact": {
3+
"version": 1,
4+
"tests": {
5+
"presets": {
6+
"c-cbm": true
7+
}
8+
},
9+
"rules": [
10+
{
11+
"id": "harness",
12+
"paths": ["tests/test_framework.h", "tests/test_helpers.*", "tests/test_main.c"],
13+
"action": "run_all"
14+
},
15+
{
16+
"id": "engine",
17+
"paths": [".codebase-memory.json", "src/mcp/test_impact*", "src/store/store_impact.*"],
18+
"action": "run_all"
19+
},
20+
{
21+
"id": "build",
22+
"paths": ["scripts/**", "test-infrastructure/**", "pkg/**"],
23+
"action": "run_all"
24+
},
25+
{
26+
"id": "grammars",
27+
"paths": ["internal/cbm/vendored/**"],
28+
"action": "run_all"
29+
},
30+
{
31+
"id": "fixtures",
32+
"paths": ["tests/fixtures/*/**"],
33+
"action": "referencing_tests",
34+
"key": "path_segment:2"
35+
},
36+
{
37+
"id": "contracts",
38+
"paths": ["tests/**/*.{sh,py,json,txt}"],
39+
"action": "ignore"
40+
},
41+
{
42+
"id": "notices",
43+
"paths": ["NOTICE*", "CHANGELOG*", "THIRD_PARTY*"],
44+
"action": "ignore"
45+
}
46+
],
47+
"unmapped_files": "run_all",
48+
"coverage": {
49+
"compatibility_paths": [
50+
"tests/test_framework.h",
51+
"tests/test_main.c",
52+
"tests/test_helpers.h",
53+
"Makefile.cbm",
54+
"scripts/test-impact/coverage-map.py",
55+
"scripts/test-impact/coverage-merge.py"
56+
]
57+
}
58+
}
59+
}

‎.gitattributes‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,10 @@ scripts/hooks/pre-commit text eol=lf
1515
# Chialisp grammar corpus: one case asserts CRLF comment termination, so this
1616
# file must keep its exact bytes on every platform (no eol conversion). (#919)
1717
tools/tree-sitter-chialisp/test/corpus/comments.txt -text
18+
19+
# llvm-profdata text captures: tests/test_profile_text_parser.py checks their
20+
# SHA-256, so they keep their exact bytes on every platform (no eol conversion).
21+
tests/fixtures/profile_text/*.proftext -text
22+
# Golden profile-map outputs: tests/test_profile_map_v2.py compares the
23+
# producer's LF bytes against them, so they keep their exact bytes too.
24+
tests/fixtures/profile_map_v2/*.tsv -text

‎.github/workflows/_lint.yml‎

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,31 @@
33
name: Lint & Security
44

55
on:
6-
workflow_call: {}
6+
workflow_call:
7+
inputs:
8+
lanes:
9+
description: 'PR lane selection (scripts/ci/select-lanes.sh JSON list); "all" = every job (dry run, release)'
10+
type: string
11+
default: all
712

813
permissions:
914
contents: read
1015

1116
jobs:
1217
lint:
18+
if: ${{ inputs.lanes == 'all' || contains(fromJSON(inputs.lanes), 'lint') }}
1319
# Pinned, not ubuntu-latest: the LLVM install below adds an
1420
# apt.llvm.org llvm-toolchain-NOBLE repo, which is 24.04 by name. When
1521
# GitHub moves ubuntu-latest to the next LTS this job breaks on a day
1622
# nobody chose. Pin the runner to the release the repo line already names.
1723
runs-on: ubuntu-24.04
1824
# 15 min proved too tight on a slow runner day and a timed-out lint reads
1925
# as "cancelled", which the release graph must treat as a hard stop; keep
20-
# a bound, but one only a genuine hang can hit (normal runtime ~5 min).
21-
timeout-minutes: 30
26+
# a bound, but one only a genuine hang can hit. 30 min stopped being that
27+
# in 2026-10: single-process cppcheck over a src tree that grew ~60 % in
28+
# files took the lint step from ~8 to 22-29 min, and three runs on
29+
# 2026-10-13 were cancelled at 30 min with cppcheck still alive.
30+
timeout-minutes: 45
2231
steps:
2332
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2433

@@ -64,6 +73,7 @@ jobs:
6473
# provability (never suppressed — the NOLINT ban applies here too).
6574
# Vendored-tree diagnostics are path-filtered, mirroring .cppcheck.
6675
lint-mem:
76+
if: ${{ inputs.lanes == 'all' || contains(fromJSON(inputs.lanes), 'lint-mem') }}
6777
# Pinned for the same reason as `lint`: llvm-toolchain-noble-21 below.
6878
runs-on: ubuntu-24.04
6979
timeout-minutes: 60

‎.github/workflows/_security.yml‎

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
name: Security Gate
55

66
on:
7-
workflow_call: {}
7+
workflow_call:
8+
inputs:
9+
lanes:
10+
description: 'PR lane selection (scripts/ci/select-lanes.sh JSON list); "all" = every job (dry run, release)'
11+
type: string
12+
default: all
813

914
permissions:
1015
contents: read
@@ -16,13 +21,18 @@ jobs:
1621
steps:
1722
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
1823
- name: "Layer 1: Static allow-list audit"
19-
run: scripts/security-audit.sh
24+
run: |
25+
bash tests/test_security_audit_subprocess_calls.sh
26+
scripts/security-audit.sh
2027
- name: "Layer 6: UI security audit"
21-
run: scripts/security-ui.sh
28+
run: |
29+
bash tests/test_security_ui_urls.sh
30+
scripts/security-ui.sh
2231
- name: "Layer 8: Vendored dependency integrity"
2332
run: scripts/security-vendored.sh
2433

2534
license-gate:
35+
if: ${{ inputs.lanes == 'all' || contains(fromJSON(inputs.lanes), 'license-gate') }}
2636
runs-on: ubuntu-latest
2737
timeout-minutes: 240
2838
steps:
@@ -41,6 +51,7 @@ jobs:
4151
run: scripts/audit-license-provenance.py
4252

4353
codeql-gate:
54+
if: ${{ inputs.lanes == 'all' || contains(fromJSON(inputs.lanes), 'codeql-gate') }}
4455
runs-on: ubuntu-latest
4556
timeout-minutes: 240
4657
# Without security-events:read this job inherits the workflow's

0 commit comments

Comments
 (0)