Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
311 commits
Select commit Hold shift + click to select a range
347265f
test: rebind pending ledger after CI policy correction
cpunion Sep 28, 2026
176df1f
docs: checkpoint fork CI and shard timing
cpunion Sep 28, 2026
d48456c
test: rebind pending ledger after CI checkpoint
cpunion Sep 28, 2026
6eff69c
ci: preflight workflow policy before costly jobs
cpunion Sep 28, 2026
fcc9771
test: rebind pending ledger after CI preflight
cpunion Sep 28, 2026
26d58cf
fix: retry authenticated module fetch after HTTP2 GOAWAY
cpunion Sep 28, 2026
4fa556d
test: rebind pending ledger after GOAWAY retry
cpunion Sep 28, 2026
082861a
docs: record complete fork CI failure audit
cpunion Sep 28, 2026
456ca85
test: rebind pending ledger after complete CI audit
cpunion Sep 28, 2026
f274e08
ci: install LLVM 22 before root policy preflight
cpunion Sep 28, 2026
5a894a2
test: rebind pending ledger after preflight toolchain fix
cpunion Sep 28, 2026
b57b635
perf: batch Go package checks within discovery target
cpunion Sep 28, 2026
be711e2
test: verify batched asmdecl isolates invalid package ABI
cpunion Sep 28, 2026
904b77d
perf: bound parallel translation of independent corpus packages
cpunion Sep 28, 2026
27bd419
docs: checkpoint full fork CI and staged corpus speedup
cpunion Sep 28, 2026
9ff1f52
test: rebind pending ledger for optimized corpus runner
cpunion Sep 28, 2026
09cc485
test: record verified optimized corpus evidence
cpunion Sep 28, 2026
4c806bf
ci: use common runner for corpus aggregate
cpunion Sep 29, 2026
eadc7a7
test: reset corpus evidence for runner fix
cpunion Sep 29, 2026
f66c019
ci: use common runners on fork jobs
cpunion Sep 29, 2026
f263750
test: rebind pending ledger for common runners
cpunion Sep 29, 2026
6745bcc
ci: use stable public Linux runners on fork
cpunion Sep 29, 2026
5856a99
test: reset corpus ledger for stable fork runners
cpunion Sep 29, 2026
cfeddc0
ci: use proven ubuntu-24.04 fork runners
cpunion Sep 29, 2026
d897d46
test: reset corpus ledger for proven fork runners
cpunion Sep 29, 2026
44cfa71
ci: use official GitHub runners on fork
cpunion Sep 29, 2026
5a0699c
test: reset corpus ledger for official fork runners
cpunion Sep 29, 2026
e1fb891
fix: stop discovery cache writers before workspace cleanup
cpunion Sep 29, 2026
fe02870
test: bind pending corpus evidence to cleanup repair
cpunion Sep 29, 2026
2b787db
test: record passing repaired shard 38 and partial shard 42
cpunion Sep 29, 2026
a08a79c
test: record both repaired discovery shards passing
cpunion Sep 29, 2026
29d624c
test: record complete passing cleanup corpus evidence
cpunion Sep 29, 2026
2f0c7ea
test: queue 1113 newly discovered assembly versions for concurrent co…
cpunion Sep 29, 2026
fdaa4de
test: bind pending coverage to expanded frozen inventory
cpunion Sep 29, 2026
fafdf29
fix: preserve ABI0 outgoing arguments and typed callback frames
cpunion Sep 29, 2026
c80f434
fix: support both raw KVM hypercall encodings on x86
cpunion Sep 29, 2026
9087dde
test: invalidate stale assembly evidence for ABI0 and hypercall repairs
cpunion Sep 29, 2026
4757e11
fix: lower raw Intel enqueue command family and retry flags
cpunion Sep 29, 2026
e70f9c3
test: bind pending corpus evidence to enqueue family repair
cpunion Sep 29, 2026
9ad0ecc
fix: lower VEX packed moves across aggregate FP fields
cpunion Sep 29, 2026
6e6b2ad
fix: namespace x86 local labels away from IR values
cpunion Sep 29, 2026
add7556
fix: sign-extend x86 RIP-relative local addresses
cpunion Sep 29, 2026
293f29c
test: classify frozen Sonic fork separately from canonical coverage
cpunion Sep 29, 2026
3829b96
fix: preserve macros across multiline block comments
cpunion Sep 29, 2026
bf9484f
feat: decode complete raw ARM64 SVE predicate while family
cpunion Sep 29, 2026
a2fba1e
feat: decode raw ARM64 SVE reciprocal-step family
cpunion Sep 29, 2026
1e2a002
fix: preserve x86 register slot names and assert escaped block labels
cpunion Sep 29, 2026
8c04c0a
test: pin modernc uint128 ABI0 signature layout
cpunion Sep 29, 2026
d994d7a
docs: separate llgo integration coverage from assembly corpus
cpunion Sep 29, 2026
970c138
arm64: read typed ABI0 result slots through FP operands
cpunion Sep 29, 2026
230fcb0
Refresh reported assembly libraries to latest releases
cpunion Sep 29, 2026
c6dca37
Compile curated corpus objects with LLVM 22 at O0
cpunion Sep 30, 2026
b24b8ee
Keep newest discovery record per exact module path
cpunion Sep 30, 2026
a06847e
Verify sharded ledger keeps major module paths independent
cpunion Sep 30, 2026
f71b606
Preserve independent v0 and v1 discovery lines
cpunion Sep 30, 2026
67c8a0e
Document closed fork validation PR and next staging gate
cpunion Sep 30, 2026
3aeb6b7
Refresh pending assembly evidence for latest scan and source
cpunion Sep 30, 2026
9d91962
Require evidenced completion for assembly discovery ledger
cpunion Sep 30, 2026
825d72f
Bind pending assembly inventory to stricter evidence schema
cpunion Sep 30, 2026
dcd3af2
Reject assembly skips without retained reasons and evidence
cpunion Sep 30, 2026
af4d5b0
Compare committed assembly ledger with current corpus reports
cpunion Sep 30, 2026
06326dc
Refresh pending ledger provenance after live comparison gate
cpunion Sep 30, 2026
e2201fd
Keep stable scoped reasons in assembly skip ledger
cpunion Sep 30, 2026
9d87c39
Bind pending ledger to compact skip evidence
cpunion Sep 30, 2026
9d8e716
Collapse generated discovery records in GitHub diffs
cpunion Sep 30, 2026
866e06c
Rebind pending assembly evidence after diff metadata
cpunion Sep 30, 2026
7b729a6
Decode the complete raw x86 end-branch family
cpunion Sep 30, 2026
f5f9f7d
Import the contiguous inventory through the October 2025 cutoff
cpunion Sep 30, 2026
a2ba64b
Bind pending assembly evidence to the complete cutoff inventory
cpunion Sep 30, 2026
06f0b0f
Normalize per-target skip evidence to scanned assembly paths
cpunion Sep 30, 2026
d232095
Bind pending evidence to portable target skip summaries
cpunion Sep 30, 2026
b219b49
Decode WAITPKG as a complete typed raw instruction family
cpunion Sep 30, 2026
e182df5
Bind pending assembly ledger to WAITPKG repairs
cpunion Sep 30, 2026
373194c
Validate per-candidate evidence at the assembly completion gate
cpunion Sep 30, 2026
f5cb88e
Bind the pending assembly ledger to the strict completion gate
cpunion Sep 30, 2026
307ebde
Use complete command diagnostics for precise foreign asmdecl attribution
cpunion Sep 30, 2026
f7bc674
Complete raw ADCX and ADOX through the shared typed carry grammar
cpunion Sep 30, 2026
1e02644
Bound discovery build-cache lifetime to each parallel batch
cpunion Sep 30, 2026
ceba217
Keep Go-accepted equal-width aggregate moves in assembly verification
cpunion Sep 30, 2026
add956f
Replay failing discovery shards first without reducing complete coverage
cpunion Sep 30, 2026
304b679
Reset assembly outcomes for the frozen ADX and asmdecl verification b…
cpunion Sep 30, 2026
2794312
Register typed instruction grammar regressions as executable tests
cpunion Sep 30, 2026
585ab69
Preserve real ARM64 system-register reads through the complete Go enc…
cpunion Sep 30, 2026
9b538cf
Bind pending assembly coverage to the complete ARM64 MRS grammar
cpunion Sep 30, 2026
2a0f004
Fail closed on unresolved immediates and expand macros at Go token bo…
cpunion Sep 30, 2026
754cbeb
Invalidate stale assembly passes after strict constant-resolution rep…
cpunion Sep 30, 2026
700bdd5
Honor ARM64 TEXT frame size for derived stack accesses
cpunion Sep 30, 2026
6d02e75
fix(arm64): lower complete FP integer pair byte spans
cpunion Sep 30, 2026
d02f760
fix(arm64): preserve large TEXT frames with dynamic LLVM backing
cpunion Sep 30, 2026
85cc570
fix(arm64): validate FP scalar slot offset extents
cpunion Sep 30, 2026
52ec192
fix(arm64): resolve named PC targets by source instruction
cpunion Sep 30, 2026
28d1dc5
arm64: preserve scalar pre and post indexed memory writeback
cpunion Sep 30, 2026
4224bd7
Document runtime-discovered ARM64 verification boundaries
cpunion Sep 30, 2026
f8f5308
Test and classify Go-rejected decoder writeback overlap
cpunion Sep 30, 2026
4e5aa2e
fix(arm64): retain Go zero-immediate writeback aliases
cpunion Sep 30, 2026
08e7ce2
fix(arm): model scalar symbol references as actual memory operations
cpunion Sep 30, 2026
f486e09
fix(discovery): retry bounded Git HTTPS TLS disconnects
cpunion Sep 30, 2026
22ab85c
Require pre-filter source plans for native-layout exceptions
cpunion Sep 30, 2026
bc13b3e
arm64: distinguish symbolic scalar memory from addresses
cpunion Sep 30, 2026
c14b0c8
arm64: honor Go zero-immediate symbolic stores
cpunion Sep 30, 2026
546459c
fix(arm64): prove local register calls and returns with LLVM CFG edges
cpunion Sep 30, 2026
9f98fdd
fix(discovery): never classify assembler tool failures as source excl…
cpunion Sep 30, 2026
c214f66
fix(arm): require real PC context for symbolic moves
cpunion Sep 30, 2026
0f7ba3a
fix(arm64): fail closed on escaped local code and native call effects
cpunion Sep 30, 2026
a784cfb
test(arm): execute symbol scratch-register and conditional side effects
cpunion Sep 30, 2026
31577d9
fix(corpus): reject crashed or silent Go tools as source exclusions
cpunion Sep 30, 2026
61ff5e1
fix(arm): preserve register address constants and flags
cpunion Sep 30, 2026
c6957d7
fix(arm64): require a proved native tail and caller frame contract
cpunion Sep 30, 2026
50c4c8d
fix(scan): restrict official opcode inventory to registered name arrays
cpunion Oct 1, 2026
10b0c15
test: audit official opcode namespace baseline migration
cpunion Oct 1, 2026
5df9a03
fix(arm): fail closed on unproved hardware PC state
cpunion Oct 1, 2026
4603ab0
fix(arm64): prove caller SP restoration and unreachable returns
cpunion Oct 1, 2026
0ecb749
fix(arm64): model register address rows and implicit literal scratch
cpunion Oct 1, 2026
502cb97
test(arm64): restore entry SP in writeback form oracle
cpunion Oct 1, 2026
2280d6f
fix: give ARM64 compile-only probes a state-independent exit
cpunion Oct 1, 2026
d5cbe94
test(arm64): match historical address encoder table layouts
cpunion Oct 1, 2026
c9dbb4c
fix(arm64): preserve source epilogues after unlabelled raw pools
cpunion Oct 1, 2026
76c68dd
fix(arm64): distinguish register control targets from stack memory
cpunion Oct 1, 2026
f8cae32
fix(corpus): retain Go-accepted unspecified TEXT arguments
cpunion Oct 1, 2026
91b8717
feat: inventory exact Go assembler frontend registrations
cpunion Oct 1, 2026
7026a90
docs: replace PR 40 checkpoint with current verification boundaries
cpunion Oct 1, 2026
1ae7b04
test: record context-required ARM64 native indirect control forms
cpunion Oct 1, 2026
b5bad10
fix(arm64): retain declared Go ABI0 outgoing frame metadata
cpunion Oct 1, 2026
a74a6d4
perf(arm64): avoid copying read-only stack proof operands
cpunion Oct 1, 2026
1abb6b3
fix(corpus): require exact-source proofs for ordinary exclusions
cpunion Oct 1, 2026
2518bc3
fix(corpus): require complete source proofs for ordinary passes
cpunion Oct 1, 2026
a5be9c1
test(arm64): preserve native caller FP alias contract oracles
cpunion Oct 1, 2026
ae37ca1
fix(arm64): prove source Go frames and caller links for symbol tails
cpunion Oct 1, 2026
697e561
fix(arm64): derive raw layout from source RET frame expansion
cpunion Oct 1, 2026
06d1b7e
Unify raw SVE lowering and typed control effects
cpunion Oct 1, 2026
296902a
Model closed Linux ARM kuser register and carry ABI
cpunion Oct 1, 2026
1da3086
Require source frame and LR proof for ARM kuser continuations
cpunion Oct 1, 2026
c7941e3
Prove ARM CPSR initialization across source control flow
cpunion Oct 1, 2026
7314ea2
test(corpus): observe builtin target features through actual Go driver
cpunion Oct 1, 2026
354bff2
Route every ARM64 public translation through source-state proofs
cpunion Oct 1, 2026
794b98b
Share typed raw floating register effects with LLVM lowering
cpunion Oct 1, 2026
c229175
Check exact Go package compilation without executable linking
cpunion Oct 1, 2026
5727d68
fix(corpus): bind builtin feature inventory to actual Go source version
cpunion Oct 1, 2026
b31ce5c
Share typed raw SIMD register effects with floating families
cpunion Oct 1, 2026
0d28b14
fix(arm): model complete barrel carry and basic multiply flags
cpunion Oct 1, 2026
de19414
test(arm): register opcode extraction regression outside fixture
cpunion Oct 1, 2026
cd2b46a
test(arm): supply source carry in isolated instruction fixtures
cpunion Oct 1, 2026
5c0bd98
Match explicit assembler CPU macros to actual Go target versions
cpunion Oct 1, 2026
b04e009
Share precise raw ARM64 state and memory continuation effects
cpunion Oct 1, 2026
9335afa
Bind assembler experiment macros to actual Go package-role registration
cpunion Oct 1, 2026
3d798f8
Refresh guarded integration checkpoint and remaining verification gates
cpunion Oct 1, 2026
6bdbcee
arm64: model declared Go register aggregates and caller-save availabi…
cpunion Oct 1, 2026
aba726b
arm64: retain narrow Go register result bits through typed effects
cpunion Oct 1, 2026
2c75d44
Test real return contracts and reject invalid x86 RET operands
cpunion Oct 1, 2026
de4f1cb
test(arm64): prove framed tail SP and separate private frame contracts
cpunion Oct 1, 2026
cf84a8d
Test ARM64 forms with real restored source continuations
cpunion Oct 1, 2026
9806a23
Share complete ARM64 paired atomic grammar and continuation effects
cpunion Oct 1, 2026
22fec7b
arm: add explicit physical machine entry and return state shim
cpunion Oct 1, 2026
c2a2b24
Preserve source-required feature profiles with canonical shared obser…
cpunion Oct 1, 2026
3900b03
Replay ordinary source scopes under actual target feature profiles
cpunion Oct 1, 2026
865b3fa
Refresh integrated proof repairs and remaining verification work
cpunion Oct 1, 2026
1d19d75
Bind direct assembler source probes to actual feature profiles
cpunion Oct 1, 2026
a763555
fix(corpus): use architecture-aware scalar broadcast access widths
cpunion Oct 1, 2026
c93400a
Bound profile symbol probes by candidate deadlines
cpunion Oct 1, 2026
617a074
Reuse canonical feature observations with actual driver rechecks
cpunion Oct 1, 2026
06937f9
Canonicalize CPU-only profile expectations for JSON replay
cpunion Oct 1, 2026
30ff286
test(arm64): derive RetArg ABIInternal entry from its Go declaration
cpunion Oct 1, 2026
22eeb05
refactor: keep Go binding in a caller-owned internal LLVM context
cpunion Oct 1, 2026
f2d0b8c
Keep feature membership helper in production builds
cpunion Oct 1, 2026
146c0e0
Exercise concurrent feature observers and deep-clone ownership
cpunion Oct 1, 2026
69e9f37
Inventory bounded Go CPP conditions and audit registered semantics
cpunion Oct 1, 2026
2b5ebf0
Refresh current verification and source-return audit checkpoint
cpunion Oct 1, 2026
b0f37e3
Preserve complete x86 raw near-return width and caller-stack contracts
cpunion Oct 1, 2026
443e62e
fix(arm64): fold proved private register leaves into the caller CFG
cpunion Oct 1, 2026
3694996
fix: close ARM64 private helper platform and address escape proofs
cpunion Oct 1, 2026
83055d6
test: cover private ARM64 continuation musl objects and negatives
cpunion Oct 1, 2026
809febe
Guard byte-exact x86 TEXT against omitted Go prologue and frame trans…
cpunion Oct 1, 2026
edd3452
Bind actual Go subtool bytes, routes and owned-cache observations
cpunion Oct 1, 2026
d7523da
Clarify subtool observation checks and avoid wrapping nil errors
cpunion Oct 1, 2026
8ecc1e8
fix: require bounded memory contracts for x86 raw near returns
cpunion Oct 1, 2026
937d724
Guard production corpus CPP inputs against exact ZIP and stage mutations
cpunion Oct 1, 2026
a50f087
Fail closed on unbound ARM FP addresses
cpunion Oct 1, 2026
b853ac1
Require concrete source diagnostics for corpus exclusions and ledger …
cpunion Oct 1, 2026
9415db0
fix: bind x86 raw return FP accesses to exact typed slots
cpunion Oct 1, 2026
ac3681d
Refresh guarded integration and source applicability verification che…
cpunion Oct 1, 2026
feb0f80
fix: accept ABI0 TEXT tail alignment without inventing FP storage
cpunion Oct 1, 2026
0461877
test: keep native return negatives separate from raw operand probes
cpunion Oct 1, 2026
d37e8f4
fix: use canonical Go byte storage for x86 bool frame fields
cpunion Oct 1, 2026
e8b9ce3
test: preserve raw return negatives across remaining x86 form families
cpunion Oct 1, 2026
6331829
Guard CPP-only CPU profiles before pass or exclusion credit
cpunion Oct 1, 2026
7a9af37
Only propose ARM64 CPP environments registered by Go
cpunion Oct 1, 2026
647df01
Share actual Go feature observations with compiler consumers
cpunion Oct 1, 2026
8fa1018
Bind explicit CPU profiles to actual package and CPP consumers
cpunion Oct 1, 2026
d8c6a27
Replay exact CPU profile scopes and compiler consumption proofs
cpunion Oct 1, 2026
4a1fdd0
Consume source-required CPU profiles in ordinary discovery production
cpunion Oct 1, 2026
58e1442
Require schema10 profile consumer evidence across reports and ledger
cpunion Oct 1, 2026
dfd8e51
Keep CI and ledger entry points on profile-aware protocols
cpunion Oct 1, 2026
792de7b
Compare independently verified assembly ledgers by bound scope semantics
cpunion Oct 1, 2026
960fca0
prove raw x86 static reads against materialized source objects
cpunion Oct 1, 2026
1f7d029
Keep the independently verified LLVM 22 contract across hosts
cpunion Oct 1, 2026
c1c0695
docs: refresh CI and llgo regression handoff after bounded repairs
cpunion Oct 1, 2026
6b0c20a
mark x86 runtime host applicability with required cross gate
cpunion Oct 1, 2026
1c8f282
test: derive LEA frame operands from real Go syntax
cpunion Oct 1, 2026
469d504
fix: close ordinary custom-tag scopes over shared package assembly
cpunion Oct 1, 2026
77b7509
fix: compile data-only assembly into real LLVM objects
cpunion Oct 1, 2026
228303a
Authenticate independent proxy metadata for legacy module profile con…
cpunion Oct 1, 2026
18af336
fix(arm64): prove typed prefetch and DCZID effects
cpunion Oct 1, 2026
b35fd3a
feat: expose source-order active assembly include preprocessing
cpunion Oct 1, 2026
d423b40
fix: use Go assembly identifier grammar in CPP controls
cpunion Oct 1, 2026
cb9c30a
feat: generate bound Go assembly layout headers
cpunion Oct 1, 2026
470947b
Bound ordinary CPU profiles to noninstrumented Go partners
cpunion Oct 1, 2026
16ce27c
fix: prove macro-only assembly and emit real empty objects
cpunion Oct 1, 2026
440a03c
Create the owned shard cache before actual Go tool routing
cpunion Oct 1, 2026
2b60670
fix: respect inactive macro controls during assembly preprocessing
cpunion Oct 1, 2026
cccf298
test: retain Go 1.20 assembly header oracle coverage
cpunion Oct 1, 2026
c6b807f
docs: refresh bounded CI and user-regression checkpoint
cpunion Oct 1, 2026
4d8a488
arm64: prove bounded DC ZVA native store effects
cpunion Oct 1, 2026
6c100d6
arm64: reject unproved ZVA symbol address extents
cpunion Oct 1, 2026
c3ab6d0
Reject ARM64 ZVA with unresolved DATA address extent
cpunion Oct 1, 2026
a13cc31
Add independently verified generated Go header metadata queries
cpunion Oct 1, 2026
fbf94e7
test: include DC ZVA in the reviewed raw-state family guard
cpunion Oct 1, 2026
2032194
Bind generated assembly headers to independent compiler consumption
cpunion Oct 1, 2026
ba1aced
fix: preserve typed DATA address relocations across native and wasm t…
cpunion Oct 1, 2026
b7938b2
arm64: preserve unexposed fresh call frames without retaining FP aliases
cpunion Oct 1, 2026
11d5392
Register deferred CPP origins without erasing generated feature condi…
cpunion Oct 1, 2026
a050aa3
Bind generated Go headers to actual discovery package profile consumers
cpunion Oct 1, 2026
6d4a896
Bind generated headers to actual native empty assembly objects
cpunion Oct 1, 2026
fdcb804
docs: replace PR40 checkpoint with current validation boundaries
cpunion Oct 1, 2026
0ef7016
guard generated-header imports with the original whole ZIP identity
cpunion Oct 1, 2026
a7d8d11
converge deferred CPP registration on a bounded monotonic root union
cpunion Oct 1, 2026
079bebf
compare independently verified generated headers across physical hosts
cpunion Oct 1, 2026
137d015
fix(corpus): replace only validated legacy pending ledgers
cpunion Oct 1, 2026
9fa0db1
test: bind reflect dynamic stubs to actual Go ABI0 objects
cpunion Oct 1, 2026
05edc95
fix(wasm): preserve source-bound packed function PCs and MOV widths
cpunion Oct 1, 2026
ad9454e
fix(corpus): read complete verified JSONL records without token trunc…
cpunion Oct 1, 2026
a8343a3
test(wasm): execute actual Go runtime with portable Node helper
cpunion Oct 1, 2026
0caf43a
docs: refresh reviewed repair and verification boundaries
cpunion Oct 1, 2026
0dad3b6
testdata: regenerate pending assembly queue with audited v2 writer
cpunion Oct 1, 2026
55b34e0
testdata: retain audited current-head partial assembly outcomes
cpunion Oct 1, 2026
c057aa9
Record audited Linux priority-shard results without claiming completion
cpunion Oct 1, 2026
c879181
fix: isolate proven private ARM64 frames from pointer stores
cpunion Oct 1, 2026
b31d9bd
fix: prove bounded ARM64 local frame-address reads
cpunion Oct 1, 2026
d6d6c13
fix(arm): type CPSR save/restore forms and preserve Go status masks
cpunion Oct 1, 2026
0d1e323
Fix Go assembly directive EOF across include inputs
cpunion Oct 1, 2026
71b136f
Validate CPP includes against their selected source origin
cpunion Oct 1, 2026
bea54b5
fix: use actual Go package roles for test-named ordinary assembly
cpunion Oct 1, 2026
5823448
arm64: add explicit required typed closure entry contract
cpunion Oct 1, 2026
70a1757
fix: bind Go-selected zero-byte assembly siblings to the tested sourc…
cpunion Oct 1, 2026
186acb6
feat: lower complete ARM64 raw SM3 family with execution oracles
cpunion Oct 1, 2026
de77145
fix(corpus): preserve bulk source diagnostic evidence
cpunion Oct 1, 2026
3ffd5d8
test: observe every NZCV flag across ARM64 SM3 execution
cpunion Oct 1, 2026
19b16a6
docs: replace PR40 repair checkpoint and preserve evidence boundaries
cpunion Oct 1, 2026
1d1cee5
chore: reset stale assembly outcomes for the current repair source
cpunion Oct 1, 2026
7880b85
fix(corpus): reject invalid diagnostic column fallback
cpunion Oct 1, 2026
47ea649
ledger: reset validation provenance after strict diagnostic source ch…
cpunion Oct 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
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Discovery records are generated, diffable source data. Keep manifests visible
# by default so reviewers can inspect counts, cursors and evidence provenance.
testdata/discovery/ledger/records/*.jsonl linguist-generated
testdata/discovery/assembly-ledger/records/*.jsonl linguist-generated
45 changes: 45 additions & 0 deletions .github/scripts/priority-completion.test.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const { test } = require('node:test');

const workflow = fs.readFileSync(path.join(__dirname, '../workflows/go-ci.yml'), 'utf8');

function jobSection(name) {
const start = workflow.indexOf(`\n ${name}:\n`);
assert.notEqual(start, -1, `missing job ${name}`);
const rest = workflow.slice(start + 1);
const next = rest.slice(1).search(/^ [a-zA-Z0-9_-]+:\s*$/m);
return next < 0 ? rest : rest.slice(0, next + 1);
}

test('all other entry jobs require successful priority completion', () => {
for (const name of [
'fmt', 'build', 'benchmark', 'reported_library_list', 'discovered_library_corpus',
'stdlib-corpus', 'cross-runtime', 'test', 'arm-scan', 'race', 'coverage',
]) {
const section = jobSection(name);
assert.match(section, /^ needs: discovered_library_priority$/m, name);
// Native needs success gating must not be bypassed by always()/!cancelled().
assert.doesNotMatch(section, /^ if:/m, name);
}
assert.doesNotMatch(workflow, /^ priority_started:/m);
});

test('all failed shards run and no priority failure can become success', () => {
const priority = jobSection('discovered_library_priority');
assert.match(priority, /^ fail-fast: false$/m);
assert.doesNotMatch(priority, /continue-on-error:/);
assert.match(priority, /^ needs: ci_policy$/m);
assert.doesNotMatch(priority, /^ if:/m);
});

test('cheap CI policy checks pass before expensive corpus or test jobs start', () => {
const policy = jobSection('ci_policy');
assert.match(policy, /bash scripts\/install-ci-llvm22-ubuntu\.sh/);
assert.match(policy, /node --test \.github\/scripts\/priority-\*\.test\.cjs/);
assert.match(policy, /go test \. -run '\^TestCI' -count=1/);
assert.doesNotMatch(policy, /^ (needs|if):/m);
assert.ok(workflow.indexOf('\n ci_policy:\n') <
workflow.indexOf('\n discovered_library_priority:\n'));
});
103 changes: 103 additions & 0 deletions .github/scripts/priority-discovery-cache.test.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
const assert = require('node:assert/strict');
const fs = require('node:fs');
const os = require('node:os');
const path = require('node:path');
const { spawnSync } = require('node:child_process');
const test = require('node:test');

const source = fs.readFileSync(
path.resolve(__dirname, '../../scripts/check-discovered-library-corpus.sh'),
'utf8',
);

function runCorpusFixture(t, failedShard = '', priorityShards = '') {
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'plan9asm-cache-test-'));
t.after(() => fs.rmSync(root, { recursive: true, force: true }));
const scripts = path.join(root, 'scripts');
const bin = path.join(root, 'bin');
fs.mkdirSync(scripts);
fs.mkdirSync(bin);
const calls = path.join(root, 'calls');
const verified = path.join(root, 'verified');
const caches = path.join(root, 'caches');
fs.mkdirSync(caches);
const runner = path.join(scripts, 'check-discovered-library-corpus.sh');
fs.writeFileSync(runner, source, { mode: 0o755 });
fs.writeFileSync(path.join(bin, 'xargs'), `#!/usr/bin/env bash
set -euo pipefail
status=0
while IFS= read -r shard; do
test -d "$PLAN9ASM_DISCOVERY_BUILD_CACHE"
printf '%s\t%s\n' "$shard" "$PLAN9ASM_DISCOVERY_BUILD_CACHE" >> "$FIXTURE_CALLS"
if [[ "$shard" == "$FIXTURE_FAILED_SHARD" ]]; then
status=123
fi
done
exit "$status"
`, { mode: 0o755 });
fs.writeFileSync(path.join(scripts, 'verify-discovered-library-corpus.sh'), `#!/usr/bin/env bash
set -euo pipefail
printf 'verified\n' >> "$FIXTURE_VERIFIED"
`, { mode: 0o755 });
const result = spawnSync('bash', [runner, 'all', '5'], {
encoding: 'utf8',
timeout: 10000,
env: {
...process.env,
PATH: `${bin}${path.delimiter}${process.env.PATH}`,
TMPDIR: caches,
PLAN9ASM_DISCOVERY_PARALLELISM: '2',
PLAN9ASM_DISCOVERY_PRIORITY_SHARDS: priorityShards,
FIXTURE_CALLS: calls,
FIXTURE_VERIFIED: verified,
FIXTURE_FAILED_SHARD: failedShard,
},
});
assert.ifError(result.error);
const records = fs.existsSync(calls)
? fs.readFileSync(calls, 'utf8').trim().split('\n')
.map((line) => line.split('\t'))
: [];
return { result, records, caches, verified };
}

test('discovery shares a cache only within each bounded parallel batch', (t) => {
const { result, records, caches, verified } = runCorpusFixture(t);
assert.equal(result.status, 0, result.stderr);
assert.deepEqual(records.map(([shard]) => shard), ['0', '1', '2', '3', '4']);
assert.equal(records[0][1], records[1][1]);
assert.equal(records[2][1], records[3][1]);
assert.equal(new Set(records.map(([, cache]) => cache)).size, 3);
assert.deepEqual(fs.readdirSync(caches), []);
assert.equal(fs.readFileSync(verified, 'utf8'), 'verified\n');
});

test('failed discovery batches keep failures, clean caches and run the final gate', (t) => {
const { result, records, caches, verified } = runCorpusFixture(t, '2');
assert.notEqual(result.status, 0);
assert.deepEqual(records.map(([shard]) => shard), ['0', '1', '2', '3', '4']);
assert.deepEqual(fs.readdirSync(caches), []);
assert.equal(fs.readFileSync(verified, 'utf8'), 'verified\n');
});

test('priority shards run first without omitting or repeating other shards', (t) => {
const { result, records, caches, verified } = runCorpusFixture(t, '', '4,2');
assert.equal(result.status, 0, result.stderr);
assert.deepEqual(records.map(([shard]) => shard), ['4', '2', '0', '1', '3']);
assert.equal(records[0][1], records[1][1]);
assert.equal(records[2][1], records[3][1]);
assert.equal(new Set(records.map(([, cache]) => cache)).size, 3);
assert.deepEqual(fs.readdirSync(caches), []);
assert.equal(fs.readFileSync(verified, 'utf8'), 'verified\n');
});

test('invalid priority lists fail before starting corpus work', (t) => {
for (const priority of ['5', '2,2', '-1', '1,,2', ',1', '1,', '01', '1 x',
'18446744073709551616']) {
const { result, records, caches, verified } = runCorpusFixture(t, '', priority);
assert.notEqual(result.status, 0, `accepted invalid priority ${priority}`);
assert.deepEqual(records, []);
assert.deepEqual(fs.readdirSync(caches), []);
assert.equal(fs.existsSync(verified), false);
}
});
89 changes: 89 additions & 0 deletions .github/scripts/priority-jobs.test.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
const assert = require('node:assert/strict');
const { createHash } = require('node:crypto');
const fs = require('node:fs');
const path = require('node:path');
const { test } = require('node:test');

const workflow = fs.readFileSync(path.join(__dirname, '../workflows/go-ci.yml'), 'utf8');

function jobSection(name) {
const start = workflow.indexOf(`\n ${name}:\n`);
assert.notEqual(start, -1, `missing job ${name}`);
const rest = workflow.slice(start + 1);
const next = rest.slice(1).search(/^ [a-zA-Z0-9_-]+:\s*$/m);
return next < 0 ? rest : rest.slice(0, next + 1);
}

function shards(section) {
const match = section.match(/^ shard:\n((?: - \d+\n)+)/m);
assert.ok(match, 'missing shard matrix');
return Array.from(match[1].matchAll(/^ - (\d+)$/gm),
([, value]) => Number(value));
}

test('priority and remaining matrices partition all 64 shards exactly once', () => {
const priority = shards(jobSection('discovered_library_priority'));
const remaining = shards(jobSection('discovered_library_corpus'));
// Retain instruction/ABI regressions and the cache cleanup failure from
// fork run 36509240233.
assert.deepEqual(priority, [5, 29, 36, 38, 39, 42]);
assert.deepEqual([...priority, ...remaining].sort((a, b) => a - b),
Array.from({ length: 64 }, (_, index) => index));
for (const name of ['discovered_library_priority', 'discovered_library_corpus']) {
const section = jobSection(name);
assert.match(section, /discovered-corpus \(shard \$\{\{ matrix\.shard \}\}\/64\)/);
assert.match(section, /check-discovered-library-corpus\.sh "\$\{\{ matrix\.shard \}\}" 64/);
}
});

test('failed exact versions rehash into priority shards', () => {
const priority = shards(jobSection('discovered_library_priority'));
for (const exactVersion of [
'github.com/Qitmeer/go-ethereum@v1.10.12',
'github.com/RookieCoderrr/neo3fura-ctrverification@v0.0.0-20221201045318-9878de6dbeed',
'github.com/SysVerification/gokv@v0.0.0-20250508184610-d007325b6ee8',
'github.com/reddit/milvus/pkg/v3@v3.0.0-20260702082229-182134e29ebf',
'github.com/apernet/hysteria/app/v2@v2.12.3',
'github.com/HyNetwork/hysteria/app@v1.3.5',
'github.com/intel/ixl-go@v0.0.0-20260223204051-3e809238f558',
]) {
const hash = createHash('sha256').update(exactVersion).digest();
const shard = Number(hash.readBigUInt64BE(0) % 64n);
assert.ok(priority.includes(shard), `${exactVersion} belongs to shard ${shard}`);
}
});

test('priority and remaining shards use identical test and artifact steps', () => {
function steps(name) {
const section = jobSection(name);
return section.slice(section.indexOf(' steps:\n')).trim();
}
assert.equal(steps('discovered_library_priority'), steps('discovered_library_corpus'));
assert.match(jobSection('discovered_library_corpus_verify'),
/needs: \[discovered_library_priority, discovered_library_corpus\]/);
});

test('discovery matrices have no explicit concurrency cap', () => {
for (const name of ['discovered_library_priority', 'discovered_library_corpus']) {
assert.doesNotMatch(jobSection(name), /^ max-parallel:/m, name);
}
});

test('local discovery helpers use the CI shard count by default', () => {
for (const name of [
'check-discovered-library-corpus.sh',
'discovery-status.sh',
'update-assembly-ledger.sh',
]) {
const script = fs.readFileSync(path.join(__dirname, '../../scripts', name), 'utf8');
assert.match(script, /shard_count=\$\{2:-64\}/, name);
}
});

test('discovery matrices verify checksums against direct signed databases', () => {
for (const name of ['discovered_library_priority', 'discovered_library_corpus']) {
const section = jobSection(name);
assert.match(section, /^ GOSUMDB:.*sum\.golang\.google\.cn.*sum\.golang\.org https:\/\/sum\.golang\.org/m, name);
assert.doesNotMatch(section, /^ GOSUMDB: ['"]?off/m, name);
}
});
Loading
Loading