Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
419 commits
Select commit Hold shift + click to select a range
dbc851e
Preserve C# executable call structures
cuzzo Jul 27, 2026
93b9b60
Model exact scip-dotnet standard library costs
cuzzo Jul 27, 2026
3921c40
Normalize C# conditional access invocations
cuzzo Jul 27, 2026
1751bf8
Model C# callback and formatting contracts
cuzzo Jul 27, 2026
27bdf52
Join C# preprocessor split signatures to bodies
cuzzo Jul 27, 2026
ebe2f74
Extract C# local functions through recovery trees
cuzzo Jul 27, 2026
1d3cad3
Model C# virtual object dispatch costs
cuzzo Jul 27, 2026
deeea32
Analyze C# local function complexity
cuzzo Jul 27, 2026
f178c0c
Model C# delegate fields as parametric callbacks
cuzzo Jul 27, 2026
757834f
Cover remaining scip-dotnet runtime descriptors
cuzzo Jul 27, 2026
5de56bb
Join nested C# preprocessor recovery methods
cuzzo Jul 27, 2026
6b12c46
Normalize C# primitive aliases for cost lookup
cuzzo Jul 27, 2026
a20e3aa
Recover scip-dotnet local types across preprocessor branches
cuzzo Jul 27, 2026
dbd8a25
Model compiler-typed local C# callbacks
cuzzo Jul 27, 2026
0cfac0c
Model C# interface dispatch from compiler identity
cuzzo Jul 27, 2026
a87e984
Resolve C# constructor delegation sets
cuzzo Jul 27, 2026
9aa05ad
Propagate C# pattern collection call types
cuzzo Jul 27, 2026
bd6171e
Model C# runtime latency contracts
cuzzo Jul 27, 2026
1d6c7d6
Infer C# LINQ callback parameter types
cuzzo Jul 27, 2026
9fe3138
Model reviewed C# base constructors
cuzzo Jul 27, 2026
8651408
Normalize C# generic call identities
cuzzo Jul 27, 2026
20c5295
Model scip-clang C++ standard library costs
cuzzo Jul 27, 2026
0f4266a
Propagate C++ using aliases into call types
cuzzo Jul 27, 2026
e649c7c
Model C++ template receiver dispatch symbolically
cuzzo Jul 27, 2026
e54aa69
Propagate C++ local and callable types
cuzzo Jul 27, 2026
746dfb3
Consume scip-clang C++ macro definitions
cuzzo Jul 27, 2026
3897cd3
Resolve relative C++ namespace calls across files
cuzzo Jul 27, 2026
47f2d68
Model reserved std namespace calls in C++
cuzzo Jul 27, 2026
5c50b28
Converge C++ aliases across project configurations
cuzzo Jul 27, 2026
72454e4
Model inactive C++ platform runtime branches
cuzzo Jul 27, 2026
747f4fc
Model C++ template-owned calls symbolically
cuzzo Jul 27, 2026
12a0420
Join C++ overload return types in chained calls
cuzzo Jul 27, 2026
4522ece
Track full C++ template call expressions
cuzzo Jul 27, 2026
8460734
Analyze C++ inline class method bodies
cuzzo Jul 27, 2026
8c25d31
Trace dependent C++ aliases parametrically
cuzzo Jul 27, 2026
cf9c4d7
Preserve C++ local types across initializers
cuzzo Jul 27, 2026
5f2c5d2
Ignore C++ defined preprocessor predicates
cuzzo Jul 27, 2026
538288b
Resolve C++ callable fields through parameters
cuzzo Jul 27, 2026
58a2134
Resolve inherited C++ template calls
cuzzo Jul 27, 2026
c0a9dcf
Analyze wrapped C++ owner methods
cuzzo Jul 27, 2026
0c5a743
Price proven C++ scalar operators
cuzzo Jul 27, 2026
d3693eb
Model ordered C++ collections
cuzzo Jul 27, 2026
d3fccf1
Reject malformed C++ local types
cuzzo Jul 27, 2026
db9f1d2
Resolve C++ namespace calls through overloads
cuzzo Jul 27, 2026
0c36271
Type explicit C++ receiver expressions
cuzzo Jul 27, 2026
12a8524
Preserve decorated C++ template owners
cuzzo Jul 27, 2026
41723ee
Price bounded source macro definitions
cuzzo Jul 27, 2026
7460e86
Price C++ alias constructors
cuzzo Jul 27, 2026
71e0bf8
Track dependent C++ auto locals
cuzzo Jul 27, 2026
e7ed5c3
Skip C++ decltype auto qualifiers
cuzzo Jul 27, 2026
e1e56a5
Model proven C++ stream and JSON calls
cuzzo Jul 27, 2026
a8ef26a
Resolve inherited C++ atomic fields
cuzzo Jul 27, 2026
afe1cf1
Preserve C++ trailing return types
cuzzo Jul 27, 2026
558c780
Propagate SCIP call result contracts
cuzzo Jul 27, 2026
3b07b5d
Reject C++ initializer reads as declarations
cuzzo Jul 27, 2026
c1fa96d
Infer C++ collection element receivers
cuzzo Jul 27, 2026
b6f761d
Model C++ abstract dispatch contracts
cuzzo Jul 27, 2026
238c04f
Resolve C++ injected class receivers
cuzzo Jul 27, 2026
a05ca21
Refactor language policy behind adapters
cuzzo Jul 27, 2026
4ac8fb7
Resolve inherited C++ template calls past nested owners
cuzzo Jul 27, 2026
e891187
Resolve C++ smart-pointer field projections
cuzzo Jul 27, 2026
124dea4
Model inherited C++ callback sorting
cuzzo Jul 27, 2026
62a9ece
Model C++ predicate algorithms parametrically
cuzzo Jul 27, 2026
0a3f403
Resolve C++ local swap imports without recursion
cuzzo Jul 27, 2026
000f5ff
Project C++ indexed map receiver types
cuzzo Jul 27, 2026
f319375
Enforce generated complexity precedence
cuzzo Jul 27, 2026
ba80981
Trust only source-proven stdlib summaries
cuzzo Jul 27, 2026
d5ee762
Prevent Rust impl normalization cycles
cuzzo Jul 27, 2026
b032e7c
Generate Rust stdlib complexity summaries
cuzzo Jul 27, 2026
5bea2cf
Build stdlib summaries from manifests
cuzzo Jul 27, 2026
04a4455
Generalize SCIP stdlib summary generation
cuzzo Jul 27, 2026
0fbe65a
Add compatible stdlib symbol bridges
cuzzo Jul 28, 2026
ad68f47
Generate C# CoreLib complexity summary
cuzzo Jul 28, 2026
694b769
Generate Kotlin stdlib complexity summary
cuzzo Jul 28, 2026
79541f3
Separate stdlib index staging from analysis inputs
cuzzo Jul 28, 2026
1dd5acf
Generate exact libstdc++ complexity summaries
cuzzo Jul 28, 2026
54256ba
Support cross-indexer stdlib summaries
cuzzo Jul 28, 2026
26cda68
Normalize generated C runtime control flow
cuzzo Jul 28, 2026
77527a8
Use post-SCIP completeness for summary export
cuzzo Jul 28, 2026
3d91c1f
Pin scip-php consumer index identity
cuzzo Jul 28, 2026
08c85f7
Attest C libc consumer environments
cuzzo Jul 28, 2026
f39c0fb
Attest JavaScript runtime environments
cuzzo Jul 28, 2026
1f99fc4
Record safe Ruby stdlib identity requirements
cuzzo Jul 28, 2026
e6f5895
Inventory remaining static SCIP languages
cuzzo Jul 28, 2026
bb1a622
Make scip-php version patch portable
cuzzo Jul 28, 2026
e695184
Integrate Ruby runtime observations through SCIP
cuzzo Jul 28, 2026
98f050b
Fix Ruby runtime SCIP tracing under real workloads
cuzzo Jul 28, 2026
544e30a
Make runtime SCIP improve Ruby Big-O coverage
cuzzo Jul 28, 2026
4232b84
Improve runtime SCIP Big-O inference
cuzzo Jul 28, 2026
6c2dea0
Improve Ruby runtime SCIP identity propagation
cuzzo Jul 28, 2026
89a2d39
Handle Ruby block destructuring in runtime SCIP
cuzzo Jul 28, 2026
12a2e6b
Move runtime SCIP inference into FactMine
cuzzo Jul 28, 2026
ac683d5
Fix relative-profile Big-O gap diagnostics
cuzzo Jul 28, 2026
e694db6
Unify runtime SCIP evidence with FactMine
cuzzo Jul 29, 2026
3bd7327
Separate runtime coverage from semantic gaps
cuzzo Jul 29, 2026
5698737
Require exact runtime callsite anchors
cuzzo Jul 29, 2026
aab0eaf
Preserve runtime observation provenance in SCIP
cuzzo Jul 29, 2026
4ad0640
Map CRuby runtime symbols from generated source summaries
cuzzo Jul 29, 2026
ed9772a
Generalize stdlib symbol bridge fanout
cuzzo Jul 29, 2026
1e9222b
Support relative paths in SCIP Big-O comparisons
cuzzo Jul 29, 2026
6541402
Normalize portable SCIP owners in Big-O reporting
cuzzo Jul 29, 2026
fbc30b9
Profile CRuby regexp source in core stdlib mapping
cuzzo Jul 29, 2026
9e63020
Model CRuby coercion callbacks and external effects
cuzzo Jul 29, 2026
bca5d66
Raise SlopCop dynamic provider coverage
cuzzo Jul 29, 2026
f197132
Add incremental compressed runtime evidence snapshots
cuzzo Jul 29, 2026
bb921d1
Make incremental runtime collection test-aware
cuzzo Jul 29, 2026
76b2652
Mark failed incremental traces stale
cuzzo Jul 29, 2026
b307a75
Preserve runtime call selectors in trace plans
cuzzo Jul 29, 2026
1dae916
Close runtime evidence identity gaps
cuzzo Jul 29, 2026
32cb1aa
Propagate runtime record identities through CFG
cuzzo Jul 29, 2026
78288fa
Optimize runtime SCIP collection
cuzzo Jul 29, 2026
089fa0e
Preserve direct runtime dependency evidence
cuzzo Jul 29, 2026
34b2ae4
Improve runtime evidence flow precision
cuzzo Jul 29, 2026
c3f5b0c
Define canonical runtime evidence v1 protocol
cuzzo Jul 29, 2026
bf7ec18
Harden and index runtime evidence projection
cuzzo Jul 29, 2026
211eb39
Close Ruby runtime shape and writer gaps
cuzzo Jul 29, 2026
483beda
Make runtime evidence completeness field-specific
cuzzo Jul 30, 2026
0281586
Preserve runtime target provenance
cuzzo Jul 30, 2026
85a4634
Correlate ambiguous runtime evidence in FactMine
cuzzo Jul 30, 2026
fad52bb
Project runtime evidence through FactMine CFG
cuzzo Jul 30, 2026
b058a2f
Define executable runtime evidence conformance
cuzzo Jul 30, 2026
8f2e6c3
Make runtime evidence conformance exact
cuzzo Jul 30, 2026
2e62944
Make runtime evidence conformance exhaustive
cuzzo Jul 30, 2026
e927acd
Conform generated runtime identities
cuzzo Jul 30, 2026
4347ec1
Close generated runtime evidence contracts
cuzzo Jul 30, 2026
7159eae
Conform transparent runtime dispatch
cuzzo Jul 30, 2026
9c132a5
Conform repeated Ruby writer anchors
cuzzo Jul 30, 2026
1c6708f
Keep injected state costs parametric
cuzzo Jul 30, 2026
a984b6c
Conform Ruby runtime wrapper evidence
cuzzo Jul 30, 2026
1b17420
Conform excluded generated record evidence
cuzzo Jul 30, 2026
9523084
Conform logarithmic Ruby callback evidence
cuzzo Jul 30, 2026
05e21bd
Conform Ruby native dependency evidence
cuzzo Jul 30, 2026
0c368de
Enforce production runtime evidence conformance
cuzzo Jul 30, 2026
4bac854
Enforce runtime evidence result conformance
cuzzo Jul 30, 2026
b22f113
Stop re-arming TracePoints on the runtime SCIP hot path
cuzzo Jul 30, 2026
9c2c923
Share callsite anchors so their plan-demand memo works
cuzzo Jul 30, 2026
6150cde
Prototype the Ruby runtime-SCIP observation loop in C
cuzzo Jul 30, 2026
ea2e9e6
Report only real callee definition sites in native evidence
cuzzo Jul 30, 2026
a9f4133
Recover the callsite line for wrapper-mediated calls
cuzzo Jul 30, 2026
8c86e69
Emit method parameter and return evidence from the native collector
cuzzo Jul 30, 2026
9d168fb
Emit collection slot evidence for reader-returned collections
cuzzo Jul 30, 2026
a11be99
Recover the evidence the native collector was losing to frames and roles
cuzzo Jul 30, 2026
55be900
Observe demanded state writes in C instead of by rewriting source
cuzzo Jul 30, 2026
886d31a
Recover exception, break and wrapper results in the native collector
cuzzo Jul 30, 2026
ab25efe
Remove Ruby tracing and source rewriting; the collector is the C exte…
cuzzo Jul 30, 2026
93239e4
Emit the runtime trace as one artifact the join can be moved off
cuzzo Jul 30, 2026
507c375
Join a runtime trace against the plan in Rust
cuzzo Jul 30, 2026
d32a39e
Reproduce the runtime evidence exactly from a trace, in Rust
cuzzo Jul 30, 2026
06f8fdb
Move the collect-time join from Ruby to FactMine
cuzzo Jul 30, 2026
e5d63dd
Parse the trace plan once per collect, not once per shard
cuzzo Jul 30, 2026
638faec
Stop restating "nothing happened here" for every planned anchor
cuzzo Jul 30, 2026
b5f9976
Stop pretty-printing the canonical evidence
cuzzo Jul 30, 2026
5e0b519
Parse the evidence once per emit instead of three times
cuzzo Jul 30, 2026
d8faafe
Shard by min(cores, test files), and time collect by stage
cuzzo Jul 30, 2026
b96cbfb
Join every shard in one parallel FactMine call
cuzzo Jul 30, 2026
442d451
Test the binary that ships, and write shard traces in parallel
cuzzo Jul 30, 2026
3c9a2bb
Merge shard evidence where it is already in memory
cuzzo Jul 30, 2026
62c21da
Unit-test the join, and say what sparse evidence actually forbids
cuzzo Jul 30, 2026
9e3966a
Account for the Rust join by stage, and stop stringifying to compare
cuzzo Jul 30, 2026
fc351da
Merge protocol messages instead of round-tripping through JSON
cuzzo Jul 30, 2026
552b997
Test target resolution and the document boundaries
cuzzo Jul 30, 2026
7e8ae81
Separate encoding a value from validating a document
cuzzo Jul 30, 2026
912f905
Let a shard write its own trace instead of a later serial stage
cuzzo Jul 30, 2026
20b2c5c
Load the trace writer's dependencies only where the trace is written
cuzzo Jul 30, 2026
3c1fb2c
Read Sorbet signatures in Rust, checked against the Ruby it replaces
cuzzo Jul 30, 2026
8bb82ec
Assemble the collector's instrumentation plan in Rust
cuzzo Jul 31, 2026
f6d0c1d
Reshape the static facts in Rust too, removing the last Ruby from pla…
cuzzo Jul 31, 2026
9a6a03a
Translate observed calls into evidence in Rust
cuzzo Jul 31, 2026
e004a0b
Derive a value's type domain in the collector, not in Ruby
cuzzo Jul 31, 2026
66a4a1d
Delete the Ruby event recorder the collector replaced
cuzzo Jul 31, 2026
723771d
Build the trace document outside the program being traced
cuzzo Jul 31, 2026
4c7529f
Resolve who a call reached in the collector, not in Ruby
cuzzo Jul 31, 2026
53977ba
Observe T.let in the collector instead of in Ruby
cuzzo Jul 31, 2026
9cf166d
Record what the rest of the collector's Ruby removal depends on
cuzzo Jul 31, 2026
b0ec9da
Record why a C wrapper cannot replace a define_method wrapper
cuzzo Jul 31, 2026
5abf622
Observe collection mutations in the collector instead of in Ruby
cuzzo Jul 31, 2026
3dedf97
Keep the record tables in the collector
cuzzo Jul 31, 2026
f7c484a
Observe record declarations in the collector instead of in Ruby
cuzzo Jul 31, 2026
50620df
Observe OpenStruct in the collector instead of in Ruby
cuzzo Jul 31, 2026
b687773
Delete the Ruby shape code the collector replaced
cuzzo Jul 31, 2026
5d048c1
Shape the collector's rows outside the program being traced
cuzzo Jul 31, 2026
5bfb9ed
Delete the tracer Ruby the collector no longer needs
cuzzo Jul 31, 2026
defddd6
Record what the last Ruby in a traced program costs to move
cuzzo Jul 31, 2026
658fb40
Correct which part of the bootstrap is suspected of crashing
cuzzo Jul 31, 2026
0007938
Rule out the truncated-VALUE theory for the bootstrap crash
cuzzo Jul 31, 2026
f217801
Bisect the bootstrap crash to a two-call window
cuzzo Jul 31, 2026
8e7483b
Take the last Ruby out of the traced program
cuzzo Jul 31, 2026
3a84f4c
Index the runtime overlay's joins instead of rescanning
cuzzo Jul 31, 2026
da86e0c
Stop the runtime overlay repeating work it already did
cuzzo Jul 31, 2026
93de686
Record what the VM saw, separately from what it means
cuzzo Jul 31, 2026
83d1fc1
Derive the value domain in Rust, proved against the collector
cuzzo Jul 31, 2026
863474b
Recognize a tuple in Rust too
cuzzo Jul 31, 2026
8f495dc
Derive the collector's value domains outside the traced program
cuzzo Jul 31, 2026
d726b15
Record what a shard's trace document is, byte for byte
cuzzo Jul 31, 2026
f6f63b0
Pin the collector document's rows too
cuzzo Jul 31, 2026
32f7504
Shape the collector's documents into rows in Rust
cuzzo Jul 31, 2026
d875c44
Build the collector's flat plan in Rust
cuzzo Jul 31, 2026
6a38115
Record the traced runtime's engine, not just its version
cuzzo Jul 31, 2026
c2ebfe4
Build each shard's trace document in Rust
cuzzo Jul 31, 2026
941a31b
Keep one join, and delete the Ruby one
cuzzo Jul 31, 2026
87aeb6c
Emit the runtime SCIP index in Rust
cuzzo Jul 31, 2026
8b2ec8b
Merge evidence in Rust, rebasing included
cuzzo Jul 31, 2026
0fd63e9
Derive the function inventory in Rust
cuzzo Jul 31, 2026
c1320f5
Record what finishing the collect orchestration needs
cuzzo Jul 31, 2026
9bb2ce5
Do a shard's bookkeeping in Rust
cuzzo Jul 31, 2026
a278469
Select the incremental shards in Rust
cuzzo Jul 31, 2026
bf54ba0
Run the traced programs from Rust
cuzzo Jul 31, 2026
fa53fa9
Pin the workload's test order
cuzzo Jul 31, 2026
d2df423
Plan the workload's shards in Rust
cuzzo Jul 31, 2026
e64ee49
Preserve the canonical artifacts from Rust
cuzzo Jul 31, 2026
79d32cf
Delete the coverage lookup the bookkeeping port replaced
cuzzo Jul 31, 2026
d5a37fb
Build the trace plan in Rust
cuzzo Jul 31, 2026
20bf3c3
Collect without a Ruby process driving it
cuzzo Jul 31, 2026
5959783
Dispatch collect to the binary, and nothing else
cuzzo Jul 31, 2026
9ea9d35
Find the collector where it ships, and shard a collect by test file
cuzzo Jul 31, 2026
19e3694
Find FactMine where nil-kill is installed, and run the Ruby side in i…
cuzzo Jul 31, 2026
80d39b7
Collect incrementally without a Ruby to decide what changed
cuzzo Jul 31, 2026
d39ec80
Hold an incremental collect to the evidence a full one would produce
cuzzo Jul 31, 2026
fd71ede
Delete the Ruby a collect no longer runs
cuzzo Jul 31, 2026
9783d44
Describe the collect that exists rather than the one being planned
cuzzo Jul 31, 2026
471929a
Delete the runtime tracer path no language could reach
cuzzo Jul 31, 2026
aeffec6
Say what sparse evidence forbids in the shared negative controls too
cuzzo Jul 31, 2026
fdb8b44
Stop advertising the commands that were deleted
cuzzo Jul 31, 2026
ed4ab38
Point the mutant-tools spec at gigasail
cuzzo Jul 31, 2026
d7f2d66
Let a shared example expect a different answer where a language differs
cuzzo Jul 31, 2026
a822555
Point everything left behind by the lineage rename at gigasail
cuzzo Jul 31, 2026
b99fed3
Count the two kinds of exposure event apart
cuzzo Jul 31, 2026
58104bf
Read gigasail's SQL where the split put it
cuzzo Jul 31, 2026
67bc480
Build the collector before the specs that need it, and stop type-chec…
cuzzo Jul 31, 2026
f05d359
Profile struct.c in the indexed regexp surface
cuzzo Jul 31, 2026
79c35c7
Charge the parse budget to the parse, not to starting Ruby
cuzzo Jul 31, 2026
2942459
Trace the corpus with the collector that exists
cuzzo Jul 31, 2026
0f988b4
Run the workflow here, since Actions cannot run it any more
cuzzo Jul 31, 2026
8200dda
Reclaim instrumented target trees between jobs
cuzzo Jul 31, 2026
fddfe02
Keep sorbet out of the local caches
cuzzo Jul 31, 2026
5bd7ab4
Give each job a clean coverage resultset
cuzzo Jul 31, 2026
0d02d8b
Keep a developer's home directory out of the profile oracles
cuzzo Jul 31, 2026
bfaeab0
Record the golden shard under a root that is not someone's home direc…
cuzzo Jul 31, 2026
65341d2
Let the Big-O tests find whichever FactMine binary was built
cuzzo Jul 31, 2026
afbbba9
Do not fail the leak gate on a missing Bencher token
cuzzo Jul 31, 2026
a310411
Give the gem SARIF analyzers room for a branch this size
cuzzo Jul 31, 2026
f991c6e
Upload to Bencher again now the token is set
cuzzo Jul 31, 2026
a206cf9
Build the release binaries once and share them
cuzzo Aug 1, 2026
78b0237
Stop analyzing what the UI serves
cuzzo Aug 1, 2026
ad29190
Put the shared binaries where the tests look, and stop timing out mid…
cuzzo Aug 1, 2026
08fc38b
Exclude served assets from the architecture corpus
cuzzo Aug 1, 2026
c4d5ba0
Project syntax facts in parallel, not just parse them
cuzzo Aug 1, 2026
ce5c953
Let syntax-facts callers select the document fields they read
cuzzo Aug 1, 2026
9366a03
Stop running the WIP architecture experiments in CI
cuzzo Aug 1, 2026
5b213d4
Exclude served assets from SlopCop constraint scanning
cuzzo Aug 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
205 changes: 117 additions & 88 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions .github/workflows/mutants-manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,16 @@ jobs:
git fetch --no-tags --depth=1 "https://github.com/${GITHUB_REPOSITORY}.git" "${BASE_SHA}"
args+=(--since "${BASE_SHA}")
fi
MUTANT_JOBS="$(nproc)" bundle exec ruby gems/lineage/tools/mutant-converters/ruby_mutant.rb "${args[@]}"
MUTANT_JOBS="$(nproc)" bundle exec ruby gems/gigasail/tools/mutant-converters/ruby_mutant.rb "${args[@]}"
# Store facts compressed (giga ingest-mutants reads .gz transparently).
facts="/tmp/clear-ruby-mutants-${{ matrix.shard }}/mutant-facts.json"
[ -f "$facts" ] && gzip -f "$facts"
- uses: actions/upload-artifact@v4
if: always()
with:
name: ruby-mutant-facts-${{ matrix.shard }}
path: |
/tmp/clear-ruby-mutants-${{ matrix.shard }}/mutant-facts.json
/tmp/clear-ruby-mutants-${{ matrix.shard }}/mutant-facts.json.gz
/tmp/clear-ruby-mutants-${{ matrix.shard }}/*.log
if-no-files-found: warn
retention-days: 14
Expand Down
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@
!/GEMINI.md
!/Gemfile
!/Gemfile.lock
/.cache/
/.ci-local/
/kcov-bin/
/nil-kill-golden*/
/nil-kill-missing-evidence*/
!/gems/
!/gems/**
!/LICENSE
Expand All @@ -30,6 +35,11 @@
!/compiler/**
!/docs/
!/examples/
/.cache/
/.ci-local/
/kcov-bin/
/nil-kill-golden*/
/nil-kill-missing-evidence*/
!/gems/
!/manifesto/
!/site/
Expand Down Expand Up @@ -202,3 +212,4 @@ gems/decomplex/target/
gems/fact-mine/target/
gems/hazard-contract/target/
gems/nil-kill/target/
kcov-bin/
4 changes: 4 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ PATH
boobytrap (>= 0.0.1)
decomplex (= 0.0.1)
espalier (>= 0.0.1)
google-protobuf (>= 4.31, < 5)
parlour
rbs-trace
sorbet-runtime
Expand Down Expand Up @@ -120,6 +121,9 @@ GEM
path_expander (~> 2.0)
prism (~> 1.7)
sexp_processor (~> 4.8)
google-protobuf (4.35.1-x86_64-linux-gnu)
bigdecimal
rake (~> 13.3)
highline (3.0.1)
ice_nine (0.11.2)
io-console (0.8.2)
Expand Down
6 changes: 5 additions & 1 deletion clear
Original file line number Diff line number Diff line change
Expand Up @@ -1401,7 +1401,11 @@ when 'test'
merged = ZigCoverageSupport.merge!('examples-benchmarks')
puts "Merged Zig coverage: #{merged}" if merged
end
exit(failed_names.any? ? 1 : 0)
# A detected memory leak is a failure, not a warning: the run prints
# "MEMORY LEAKS: N" but must also exit non-zero, or `clear test <dir>`
# reports success on a leak and any caller (CI, an agent, a human checking
# $?) is silently told the suite is clean.
exit((failed_names.any? || leak_tests.any?) ? 1 : 0)
else
source = File.expand_path(source)
gen_script = File.join(CLEAR_ROOT, 'transpile-tests', 'gen.rb')
Expand Down
4 changes: 2 additions & 2 deletions codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ flags:
- zig/
carryforward: false
joined: false
lineage-rust:
gigasail-rust:
paths:
- gems/lineage/
- gems/gigasail/
carryforward: false
joined: false
go:
Expand Down
4 changes: 2 additions & 2 deletions compiler/spec/minivm_bc_run_env_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@

it "preserves RUBYOPT while nil-kill source instrumentation is active" do
ENV["NIL_KILL_TRACE"] = "1"
ENV["RUBYOPT"] = "-r./gems/nil-kill/lib/nil_kill/runtime_trace.rb"
ENV["RUBYOPT"] = "-r./gems/nil-kill/ext/nil_kill_trace/nil_kill_trace.so"

expect(Object.new.send(:clear_build_env)["RUBYOPT"]).to eq("-r./gems/nil-kill/lib/nil_kill/runtime_trace.rb")
expect(Object.new.send(:clear_build_env)["RUBYOPT"]).to eq("-r./gems/nil-kill/ext/nil_kill_trace/nil_kill_trace.so")
end
end
8 changes: 4 additions & 4 deletions compiler/spec/mutant_tools_spec.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
require "tmpdir"

require_relative "../../gems/lineage/tools/mutant-converters/support" unless defined?(MutationTesting)
require_relative "../../gems/lineage/tools/mutant-converters/ruby_mutant" unless defined?(RubySpecMutants)
require_relative "../../gems/lineage/tools/mutant-converters/semantic_mutant" unless defined?(SemanticMutants)
load File.expand_path("../../gems/lineage/tools/mutant-converters/zig-mutants", __dir__) unless defined?(Lineage::MutantConverters::ZigMutants)
require_relative "../../gems/gigasail/tools/mutant-converters/support" unless defined?(MutationTesting)
require_relative "../../gems/gigasail/tools/mutant-converters/ruby_mutant" unless defined?(RubySpecMutants)
require_relative "../../gems/gigasail/tools/mutant-converters/semantic_mutant" unless defined?(SemanticMutants)
load File.expand_path("../../gems/gigasail/tools/mutant-converters/zig-mutants", __dir__) unless defined?(Lineage::MutantConverters::ZigMutants)

RSpec.describe MutationTesting do
describe ".parse_mutant_summary" do
Expand Down
14 changes: 7 additions & 7 deletions compiler/spec/sql_cov_sarif_generator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
it "uploads only native advisory hazards and reports unresolved facts" do
Dir.mktmpdir("sql-cov-sarif-spec") do |dir|
repo = File.join(dir, "repo")
sql_dir = File.join(repo, "gems/lineage/sql/storage")
sql_dir = File.join(repo, "gems/gigasail/giga-core/sql/storage")

Check notice

Code scanning / Decomplex

looks simple, behaves non-locally: hidden dispatch/mutation/IO/context/reflection/reopen -- *POSSIBLE* (noisy) Note test

False Simplicity: [hidden_io] File.join support=766, scatter=235
out_dir = File.join(dir, "out")
fake_bin = File.join(dir, "fake-sql-cov")
argv_log = File.join(dir, "argv.json")
Expand Down Expand Up @@ -55,7 +55,7 @@
generator,
"--repo=#{repo}",
"--out-dir=#{out_dir}",
"--setup=gems/lineage/sql/storage/init_schema.sql",
"--setup=gems/gigasail/giga-core/sql/storage/init_schema.sql",
"--sql-cov-bin=#{fake_bin}"
)
expect(status).to be_success, stderr
Expand All @@ -68,7 +68,7 @@
expect(run.dig("properties", "scannedFiles")).to eq(1)
expect(run.dig("properties", "skippedNonQueryFiles")).to be_empty
expect(run.dig("results", 0, "locations", 0, "physicalLocation", "artifactLocation", "uri"))
.to eq("gems/lineage/sql/storage/query.sql")
.to eq("gems/gigasail/giga-core/sql/storage/query.sql")

markdown = File.read(File.join(out_dir, "sql-cov.md"))
expect(markdown).to include("1 unresolved schema facts")
Expand All @@ -80,7 +80,7 @@
it "normalizes generated identifiers, skips non-query SQL, and fails on scan errors" do
Dir.mktmpdir("sql-cov-sarif-spec") do |dir|
repo = File.join(dir, "repo")
sql_dir = File.join(repo, "gems/lineage/sql/storage")
sql_dir = File.join(repo, "gems/gigasail/giga-core/sql/storage")

Check notice

Code scanning / Decomplex

looks simple, behaves non-locally: hidden dispatch/mutation/IO/context/reflection/reopen -- *POSSIBLE* (noisy) Note test

False Simplicity: [hidden_io] File.join support=766, scatter=235
out_dir = File.join(dir, "out")
fake_bin = File.join(dir, "fake-sql-cov")
input_log = File.join(dir, "input.sql")
Expand All @@ -107,7 +107,7 @@
generator,
"--repo=#{repo}",
"--out-dir=#{out_dir}",
"--setup=gems/lineage/sql/storage/init_schema.sql",
"--setup=gems/gigasail/giga-core/sql/storage/init_schema.sql",
"--sql-cov-bin=#{fake_bin}"
)
expect(status).to be_success, stderr
Expand All @@ -116,15 +116,15 @@
run = JSON.parse(File.read(File.join(out_dir, "sql-cov.sarif"))).fetch("runs").first
expect(run.dig("properties", "scannedFiles")).to eq(1)
expect(run.dig("properties", "skippedNonQueryFiles"))
.to eq(["gems/lineage/sql/storage/configure.sql"])
.to eq(["gems/gigasail/giga-core/sql/storage/configure.sql"])

File.write(fake_bin, "#!/usr/bin/env ruby\nwarn 'cannot scan'\nexit 2\n")
_stdout, stderr, status = Open3.capture3(
RbConfig.ruby,
generator,
"--repo=#{repo}",
"--out-dir=#{out_dir}",
"--setup=gems/lineage/sql/storage/init_schema.sql",
"--setup=gems/gigasail/giga-core/sql/storage/init_schema.sql",
"--sql-cov-bin=#{fake_bin}"
)
expect(status).not_to be_success
Expand Down
4 changes: 2 additions & 2 deletions docs/agents/csmith.md
Original file line number Diff line number Diff line change
Expand Up @@ -1049,7 +1049,7 @@ paired with much stronger mutation evidence.
The permanent command is:

```text
bundle exec ruby gems/lineage/tools/mutant-converters/semantic_mutant.rb \
bundle exec ruby gems/gigasail/tools/mutant-converters/semantic_mutant.rb \
--out /tmp/clear-semantic-mutants --jobs 32 --timeout 60 --min-new-kills 1
```

Expand Down Expand Up @@ -1233,7 +1233,7 @@ the semantic adapter and historical template as independent coverage.
The permanent differential command is:

```text
bundle exec ruby gems/lineage/tools/mutant-converters/semantic_mutant.rb \
bundle exec ruby gems/gigasail/tools/mutant-converters/semantic_mutant.rb \
--out /tmp/clear-semantic-mutants-final-148 \
--jobs 32 --timeout 60 --min-new-kills 1
```
Expand Down
8 changes: 4 additions & 4 deletions docs/agents/mutants.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
This branch turns mutation testing on for the three test surfaces that carry
compiler correctness:

- Ruby specs: `gems/lineage/tools/mutant-converters/ruby_mutant.rb`
- Ruby specs: `gems/gigasail/tools/mutant-converters/ruby_mutant.rb`
- transpile-tests: `tools/mutants/transpile_tests.rb`
- fuzz templates: `tools/fuzz/mutants/run.rb`

Expand Down Expand Up @@ -42,7 +42,7 @@ cannot produce a summary, has no selected tests, drops below its baseline, or
exceeds its timeout budget. Advisory subjects still run and report coverage, but
do not block CI until they are promoted.

The subject matrix lives in `gems/lineage/tools/mutant-converters/src_subjects.yml`.
The subject matrix lives in `gems/gigasail/tools/mutant-converters/src_subjects.yml`.

Current matrix:

Expand All @@ -69,7 +69,7 @@ Important implementation details:
Current local validation:

```sh
MUTANT_JOBS=32 bundle exec ruby gems/lineage/tools/mutant-converters/ruby_mutant.rb --since HEAD --out /tmp/clear-ruby-mutants-full-2
MUTANT_JOBS=32 bundle exec ruby gems/gigasail/tools/mutant-converters/ruby_mutant.rb --since HEAD --out /tmp/clear-ruby-mutants-full-2
```

Result: exit 0. Hard-gated changed subjects passed; untouched subjects skipped;
Expand Down Expand Up @@ -251,5 +251,5 @@ Additional validation on this branch:
- `bundle exec prspec`: 6,167 examples, 0 failures.
- `bundle exec prspec spec/ --tag integration`: 237 examples, 0 failures.
- `bundle exec srb tc`: no errors.
- Mutation tooling syntax check: all `gems/lineage/tools/mutant-converters/**/*.rb`,
- Mutation tooling syntax check: all `gems/gigasail/tools/mutant-converters/**/*.rb`,
`tools/mutants/**/*.rb`, and `tools/fuzz/mutants/**/*.rb` parsed successfully.
Loading
Loading