Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
410 commits
Select commit Hold shift + click to select a range
cbe761b
Implement resumable wallet sync and portable recovery candidate
ty-everett Oct 10, 2026
2e97617
Keep storage manager fixtures offline and release owned test resources
ty-everett Oct 10, 2026
e5bb42a
Align governed wallet invariants and measured HTTP harness allowance
ty-everett Oct 10, 2026
a25103f
Prepare offline action fixture trackers before synthetic wallet spending
ty-everett Oct 10, 2026
1dc238a
Allow measured native recovery cases bounded harness headroom
ty-everett Oct 10, 2026
4efe864
Fix snapshot shutdown errors and completed-profile fixture admission
ty-everett Oct 10, 2026
9f3108d
Preserve retained guarded-source cleanup error identity
ty-everett Oct 10, 2026
9b6a48c
fix(wallet): preserve SQLite profile compatibility and concrete clean…
ty-everett Oct 10, 2026
9164a7c
fix(wallet): retain owned catalog and read legacy rowid images
ty-everett Oct 10, 2026
bc909e5
fix(wallet): retain complete publication receipt for native recovery
ty-everett Oct 10, 2026
b2e3749
test(wallet): compare native recovery against its durable original user
ty-everett Oct 10, 2026
a97a5e9
test(wallet): exercise intended snapshot transport and offline funding
ty-everett Oct 10, 2026
12d78da
test(wallet): install the actual precommit crash hook
ty-everett Oct 10, 2026
0093d5f
Preserve retained error identity and revoke queued index work
ty-everett Oct 10, 2026
5e88a4d
Batch fresh private source counts and exact seal comparisons
ty-everett Oct 10, 2026
662210e
Restore sealed corruption oracles and admit measured native fixture work
ty-everett Oct 10, 2026
bb1f678
Retain both physical guards in synthetic binary corruption tests
ty-everett Oct 10, 2026
9a139a5
Preserve actual chunk length in sealed corruption controls
ty-everett Oct 10, 2026
64953f8
fix(wallet): preserve legacy archive flags and SQLite locale ties
ty-everett Oct 10, 2026
2dd31bd
fix(wallet): narrow certificate names before locale comparison
ty-everett Oct 10, 2026
5f00e7c
test(wallet): use genuine historical certificate schema for scan regr…
ty-everett Oct 10, 2026
2906053
test(wallet): bind offline legacy workflows to exact fixture chain roots
ty-everett Oct 10, 2026
798470d
test(wallet): qualify full native archive with measured fixture admis…
ty-everett Oct 10, 2026
892e68e
fix(wallet): preserve IDB flags and account for independent native mo…
ty-everett Oct 10, 2026
41323cc
test(wallet): admit and measure complete customer import recovery
ty-everett Oct 10, 2026
8646128
fix(wallet): retain physical row identities in fresh native import me…
ty-everett Oct 10, 2026
fb3fbc3
fix(wallet): install incoming ID ledger in explicit current profile b…
ty-everett Oct 10, 2026
ea70069
Preserve packed row identity in complete Knex projection
ty-everett Oct 10, 2026
7d8ba7d
Bind validated native extent coordinates as SQLite integers
ty-everett Oct 10, 2026
f5cccf8
Keep native integer coordinate bindings portable through exact SQL casts
ty-everett Oct 10, 2026
1aa2870
Establish the real retained read view in native extent regression
ty-everett Oct 10, 2026
0a2b130
Record complete native transport qualification counts
ty-everett Oct 10, 2026
e908462
Observe drained progress in complete native customer recovery
ty-everett Oct 10, 2026
e0eb852
Measure complete customer import and recovery within a finite workflo…
ty-everett Oct 10, 2026
25be279
Keep complete customer qualification within the supported source life…
ty-everett Oct 10, 2026
19201a0
test(wallet): verify native reservation counter storage type
ty-everett Oct 10, 2026
652c7b7
fix(wallet): preserve integer native reservation counters
ty-everett Oct 10, 2026
3ff0865
test(wallet): require query-only mode on genuine private native readers
ty-everett Oct 10, 2026
d853f08
fix(wallet): admit query-only mode on private native read leases
ty-everett Oct 10, 2026
7989cd8
perf(wallet): budget native page caches within the existing heap
ty-everett Oct 10, 2026
7e52596
build(wallet): pin the qualified native cache-budget component
ty-everett Oct 10, 2026
a68cb59
Select complete occupied fixture merge allocation with checkpoint hea…
ty-everett Oct 10, 2026
ce40e2f
Admit full occupied fixture proof and checkpoint allocation envelope
ty-everett Oct 10, 2026
01add17
Add genuine composed current-field physical coordinate regression
ty-everett Oct 10, 2026
3dfc5ac
Preserve native physical coordinate in indexed current field selection
ty-everett Oct 10, 2026
940cd14
test(wallet): reproduce legacy request metadata defaults in native wr…
ty-everett Oct 10, 2026
185365e
fix(wallet): preserve legacy broadcast defaults in native metadata wr…
ty-everett Oct 10, 2026
8b1ef6b
test(wallet): compare request reconstruction with native SQL defaults
ty-everett Oct 10, 2026
72e20c9
fix(wallet): reconstruct native request insert defaults exactly
ty-everett Oct 10, 2026
686c08e
test(wallet): qualify occupied native request identity matching
ty-everett Oct 10, 2026
7eeef7c
fix(wallet): preserve archived request keys for indexed merge
ty-everett Oct 10, 2026
c87b80f
test(wallet): specify portable request source HEX grammar
ty-everett Oct 10, 2026
bf303fa
fix(wallet): preserve portable HEX request source identity
ty-everett Oct 10, 2026
aa2fc51
test(wallet): exercise actual occupied request sources and refusal gu…
ty-everett Oct 10, 2026
a987ae5
test(wallet): preserve linked archive keys in occupied source fixture
ty-everett Oct 10, 2026
dbe08a8
test(wallet): stage genuine structured data for occupied source regre…
ty-everett Oct 10, 2026
c47104e
fix(wallet): retain provisional ownership for bounded staged ranges
ty-everett Oct 10, 2026
cca3698
test(wallet): select genuine structured native receiver scope
ty-everett Oct 10, 2026
9b75e4b
Configure native test executable paths and reproducible delivery
ty-everett Oct 10, 2026
3fae8e2
Pin the qualified compiler recipe for native test delivery
ty-everett Oct 10, 2026
9dc67dd
Provide the isolated original native qualification fixture directory
ty-everett Oct 10, 2026
66e5fb3
test(wallet): admit complete composed recovery with finite original l…
ty-everett Oct 10, 2026
3f867ac
ci(wallet): provision qualified native coverage and verify all origin…
ty-everett Oct 10, 2026
ee121a9
test(ci): enforce finite native cohort bounds and verify original run…
ty-everett Oct 10, 2026
2e7504f
fix(ci): require complete native wallet coverage for dependency changes
ty-everett Oct 10, 2026
8b14207
fix(ci): provision pinned ARM64 native runtime for wallet mutation ta…
ty-everett Oct 10, 2026
25966af
test(ci): retain exact wallet platform metadata in partition expectat…
ty-everett Oct 10, 2026
bf90953
test(ci): execute copied scope selector with its real CLI entry point
ty-everett Oct 10, 2026
50e8d8d
Admit complete fixture reads and retain native comparison regression
ty-everett Oct 10, 2026
a6174fc
Exercise native comparison regression within its authenticated scope
ty-everett Oct 10, 2026
3d6aa5b
Use physical read-only native scopes for frozen structured validation
ty-everett Oct 10, 2026
251f733
fix(wallet): adopt qualified native read-mode component
ty-everett Oct 10, 2026
2bfc6ce
test(wallet): size complete workflow chunks for supported workload
ty-everett Oct 10, 2026
bd8ac17
test(wallet): retire slower full-workflow chunk experiment
ty-everett Oct 10, 2026
92904dd
Merge current main into held wallet sync implementation
ty-everett Oct 10, 2026
564d081
Batch fresh immutable prefix definition checks
ty-everett Oct 10, 2026
6042123
Merge current main into held wallet sync implementation
ty-everett Oct 10, 2026
fd6ac23
Merge current main into held wallet sync implementation
ty-everett Oct 10, 2026
2385f1d
Merge current main into held wallet sync implementation
ty-everett Oct 11, 2026
49a4b49
fix(wallet): preserve native read-only mode during import preparation
ty-everett Oct 11, 2026
59d2429
test(wallet): qualify native import preparation under authenticated o…
ty-everett Oct 11, 2026
7feee8a
fix(wallet): derive private parser chunks from frame emission bound
ty-everett Oct 11, 2026
d65f7a8
test(wallet): admit complete authenticated staging property campaigns
ty-everett Oct 11, 2026
549fdf5
test(wallet): admit measured two-profile native snapshot work
ty-everett Oct 11, 2026
27b7552
ci(wallet): require every original native pair case at exact head
ty-everett Oct 11, 2026
9a38697
test(wallet): retain full native functional obligations outside mutat…
ty-everett Oct 11, 2026
c25a493
Select bounded wallet component suites and bridge original native bro…
ty-everett Oct 11, 2026
03c45f7
Preserve broader native controller ownership after narrowing mutation…
ty-everett Oct 11, 2026
6a0ec42
Correct exact tracked Linux component test paths and reject case drift
ty-everett Oct 11, 2026
56a6149
Preserve exact tracked paths for the complete affected component univ…
ty-everett Oct 11, 2026
a196d8a
Deliver source-pinned native ARM64 Chrome for real browser component …
ty-everett Oct 11, 2026
b52eea0
fix(quality): route pinned browser delivery through selected Jest globs
ty-everett Oct 11, 2026
07993fc
fix(quality): admit native browser case and cleanup before parent cutoff
ty-everett Oct 11, 2026
aaaf340
fix(quality): align native browser admission with measured request wo…
ty-everett Oct 11, 2026
7aab063
Resolve wallet Jest compiler config before mutation sandbox relocation
ty-everett Oct 11, 2026
99c273d
Bind compiler inputs across all wallet mutation targets and qualify r…
ty-everett Oct 11, 2026
1d69bd1
Keep compiler custody separate from functional inputs and verify old …
ty-everett Oct 11, 2026
0d560f3
Capture wallet compiler path before Stryker copies Jest configuration
ty-everett Oct 11, 2026
c5651d7
Keep canonical compiler transform free of unnecessary fallback
ty-everett Oct 11, 2026
54dbd27
fix(wallet): preserve browser compilation and honest coverage in muta…
ty-everett Oct 11, 2026
6f778eb
fix(governance): validate standalone browser test compiler profile
ty-everett Oct 11, 2026
4330f78
test(wallet): compare actual relocated browser compiler output
ty-everett Oct 11, 2026
d0fb2d9
test(wallet): share the original aggregate index working allowance
ty-everett Oct 11, 2026
322621e
fix(wallet): admit the measured simultaneous native SQLite workload
ty-everett Oct 11, 2026
da7030f
fix(wallet): pin qualified native connection-admission component
ty-everett Oct 11, 2026
68dd063
fix(wallet): retire drained decoded scratch before page writer
ty-everett Oct 11, 2026
0707c9c
fix(wallet): charge metadata descriptors by bounded field count
ty-everett Oct 11, 2026
fd033d7
fix(wallet): bound inline text metadata by actual fields
ty-everett Oct 11, 2026
2f49d7d
test(wallet): measure complete inventory at initial 128KiB admission
ty-everett Oct 11, 2026
80a4f24
test(wallet): inspect inventory through actual private query-only reader
ty-everett Oct 11, 2026
0e64577
test(wallet): freeze native source before final inventory comparison
ty-everett Oct 11, 2026
6aba1c5
test(wallet): qualify inventory capacity from measured workload
ty-everett Oct 11, 2026
78f4472
fix(wallet): share complete native source and host build recipes
ty-everett Oct 11, 2026
debffe2
test(wallet): inspect complete authored driver capture independently
ty-everett Oct 11, 2026
eb23abc
Check native candidate image target before build receipts
ty-everett Oct 11, 2026
6022351
Add Windows first-artifact bootstrap preparation and compilation
ty-everett Oct 11, 2026
b61c97f
Preserve bootstrap cleanup errors and reject Windows path aliases
ty-everett Oct 11, 2026
24ff691
Verify bootstrap manifest error preservation and physical cleanup retry
ty-everett Oct 11, 2026
28abd9b
Wire Windows bootstrap process Job and original-worker evidence handoff
ty-everett Oct 11, 2026
988bb76
Reject worker control characters without lint suppression
ty-everett Oct 11, 2026
d3d113b
Make Linux native qualification and provisioning select the actual qu…
ty-everett Oct 11, 2026
f59d208
fix(wallet): bootstrap first Linux native artifact contracts without …
ty-everett Oct 11, 2026
6550e2d
fix(wallet): wire Unix first-artifact contracts for private Darwin bu…
ty-everett Oct 11, 2026
034cf3f
Qualify the exact Linux x64 native component without platform fallback
ty-everett Oct 11, 2026
e655d8e
Complete Darwin protected installation and ordinary actor qualificati…
ty-everett Oct 11, 2026
ab29fb4
Correct Darwin installation CLI refusal table argument rows
ty-everett Oct 11, 2026
5e5db0b
feat(wallet): add existing Windows Hyper-V bootstrap worker adapter
ty-everett Oct 11, 2026
e244c46
test(wallet): correct Windows host work-order path fixtures
ty-everett Oct 11, 2026
6c6dd7c
feat(ci): deliver architecture-specific pinned Linux x64 browser
ty-everett Oct 11, 2026
95627ef
Fix native frozen-comparison collection progress authorization
ty-everett Oct 11, 2026
9771682
Use the actual installed journal clock in native collection regression
ty-everett Oct 11, 2026
971a885
Exercise scratch cleanup through the genuine drained comparison lifec…
ty-everett Oct 11, 2026
ecb9272
Adopt independently qualified native comparison collection fix on Lin…
ty-everett Oct 11, 2026
aab83d1
Adopt qualified Linux x64 native collection correction and document v…
ty-everett Oct 11, 2026
8733550
Retain the original copy deadline after native SQL drainage
ty-everett Oct 11, 2026
7160089
Format copy handoff lifecycle documentation
ty-everett Oct 11, 2026
f1712b2
Admit measured complete customer qualification lifetime
ty-everett Oct 11, 2026
d01e4d3
Give distinct customer operations initial bounded admissions
ty-everett Oct 11, 2026
630b6c8
Release expired native TEXT metadata only after physical owner drainage
ty-everett Oct 11, 2026
c01b610
Place real expiry regression after schema setup and synchronize gener…
ty-everett Oct 11, 2026
1bfe3a7
Batch independently verified checkpoint deltas within existing resour…
ty-everett Oct 11, 2026
17345cf
Retry deferred metadata observers after completed physical disposal
ty-everett Oct 11, 2026
1af24d1
test(wallet): authenticate disposal retry fixture before native handoff
ty-everett Oct 11, 2026
f918e56
Check composed copied image before comparison scratch collection
ty-everett Oct 11, 2026
da73c20
Keep native collection cursor stable when both queues are empty
ty-everett Oct 11, 2026
e7b2f7c
Implement durable incremental private checkpoint windows
ty-everett Oct 11, 2026
ea0ad2c
Preserve occupied native proof identities and verify exact archive sp…
ty-everett Oct 11, 2026
4646376
Use measured bounded qualification allowances for native proof identi…
ty-everett Oct 11, 2026
d764ccc
Prepare measured full native runner qualification allowances
ty-everett Oct 11, 2026
1b8c2ab
Check native scope drainage against durable refold boundaries
ty-everett Oct 11, 2026
2d4a5b5
Correct independent native merge JSON key order and document implemen…
ty-everett Oct 11, 2026
efde160
Give every complete native merge contract a mandatory bounded CI lane
ty-everett Oct 11, 2026
0f71800
Align full property oracles with current private filesystem and copy …
ty-everett Oct 11, 2026
e36fadf
Reduce repeated authenticated payload validation and snapshot allocation
ty-everett Oct 11, 2026
23d98b2
Use packed dense arrays for captured authenticated bytes
ty-everett Oct 11, 2026
6c2f079
Validate captured owned authentication bytes without a second descrip…
ty-everett Oct 11, 2026
b3cc760
perf(chirp): hash bounded typed views without array expansion
ty-everett Oct 12, 2026
a95d229
fix(uhrp): synchronize bounded CHIRP hash updates
ty-everett Oct 12, 2026
13bf46c
test(uhrp): avoid Jest Math lookup overhead in full service suites
ty-everett Oct 12, 2026
48fe031
fix(uhrp): resolve patched Handlebars in cloud test tooling
ty-everett Oct 12, 2026
6e2d316
Bind Math in wallet Jest native fixtures
ty-everett Oct 12, 2026
2fd0eae
Identify mismatched native action contract columns
ty-everett Oct 12, 2026
4c61d2b
Preserve native proof storage identities during sync
ty-everett Oct 12, 2026
38683cc
Align native pair source view with original fixture lifetime
ty-everett Oct 12, 2026
b6170a7
Budget full native pair fixtures for measured coverage overhead
ty-everett Oct 12, 2026
c891b54
Keep native index crash fixtures before the dependent journal migration
ty-everett Oct 12, 2026
468e3a8
Verify the current journal migration after native index recovery
ty-everett Oct 12, 2026
8524bae
Accept owned MySQL index declarations and retain strict schema verifi…
ty-everett Oct 12, 2026
af58e67
docs(wallet): regenerate owned MySQL verification release note
ty-everett Oct 12, 2026
59d1ab3
test(wallet): bind native MySQL capture to current migrated schema
ty-everett Oct 12, 2026
421ac8b
test(wallet): retain current schema binding through MySQL request rec…
ty-everett Oct 12, 2026
e241716
test(wallet): size complete native MySQL fixtures from observed OOM
ty-everett Oct 12, 2026
75167bf
test(wallet): verify exact measured MySQL fixture memory ownership
ty-everett Oct 12, 2026
24b19e1
test(wallet): reset owned journal before initial server crash boundary
ty-everett Oct 12, 2026
4e9cca5
test(wallet): isolate custom journal policies from production migrati…
ty-everett Oct 12, 2026
6b3b7e1
test(wallet): retain historical SQLite journal fixture setup
ty-everett Oct 12, 2026
c32a153
test(wallet): align whole-system fixtures with integrated owners
ty-everett Oct 12, 2026
d701e91
test(wallet): admit native resume fixture lifetime and cleanup
ty-everett Oct 12, 2026
ddbed04
test(wallet): preserve valid published journal identities in native r…
ty-everett Oct 12, 2026
29813b1
test(wallet): admit both complete copy windows in native UNIQUE recov…
ty-everett Oct 12, 2026
af53352
test(wallet): align native harnesses with fixture lifetimes
ty-everett Oct 12, 2026
bf11b54
test(wallet): retain native integration failure causes
ty-everett Oct 12, 2026
d0f06b0
fix(wallet-toolbox): drain native merge frames and honor sealed journ…
ty-everett Oct 12, 2026
715e620
test(wallet-toolbox): qualify complete native fixtures and regenerate…
ty-everett Oct 12, 2026
506a4f7
test(wallet-toolbox): preserve fatal TEXT probe cleanup errors
ty-everett Oct 12, 2026
53c4949
test(wallet-toolbox): admit complete authenticated native merge workflow
ty-everett Oct 12, 2026
1c24f23
test(wallet): retain bounded authenticated merge phase timing
ty-everett Oct 12, 2026
0923bfb
perf(wallet): avoid duplicate same-view packed schema verification
ty-everett Oct 12, 2026
c54a7f5
test(wallet): target actual baseline observer naming family
ty-everett Oct 12, 2026
9915964
docs(wallet): record same-view schema verification efficiency
ty-everett Oct 12, 2026
29785ab
Preserve native merge failure causes and admit complete authenticated…
ty-everett Oct 12, 2026
070df0e
Correct authenticated native fixture custody driver and replay chunks
ty-everett Oct 12, 2026
c65b16f
Carry upstream confirmed IndexedDB internalization fix into candidate
ty-everett Oct 12, 2026
e1e88b2
Reconcile current main with wallet candidate documentation
ty-everett Oct 12, 2026
7c94564
Preserve recipient ownership when storage already has the proof
ty-everett Oct 12, 2026
b1e4f9c
Guard the observed stored-proof regression result
ty-everett Oct 12, 2026
fb5dbf8
Complete authenticated native merge CI routing and documentation
ty-everett Oct 12, 2026
be9951f
Fix clean wallet build and repository control dependencies
ty-everett Oct 12, 2026
e9e8bb1
fix(wallet): provision the qualified UDL SQLite source
ty-everett Oct 12, 2026
33f58ee
Reuse own-data codec descriptors for remote sync dictionaries
ty-everett Oct 12, 2026
1994117
Merge main #892 while preserving #544 integration
ty-everett Oct 12, 2026
7b71fd4
fix(infra): patch Handlebars in standalone service locks
ty-everett Oct 12, 2026
76cd1d3
fix(wallet): bind qualification reads to inspected descriptors
ty-everett Oct 12, 2026
e046280
Merge main #884 request-bound conflict review into held #569
ty-everett Oct 12, 2026
f3d2986
Validate native Argon2 worker message channel admission
ty-everett Oct 12, 2026
f0a4f94
Use an explicit resolved Argon2 rejection-test promise
ty-everett Oct 12, 2026
f54aa5d
fix(wallet): measure complete MySQL certificate qualification budget
ty-everett Oct 12, 2026
fcc70c3
fix(wallet): preserve PostgreSQL journal cleanup no-ops
ty-everett Oct 12, 2026
7cad3b3
test(wallet): bind PostgreSQL rollback migrator getter
ty-everett Oct 12, 2026
759d982
fix(wallet): preserve streamed text and reader-only destination contr…
ty-everett Oct 12, 2026
1047cf3
test(wallet): preserve native field retirement and window oracles
ty-everett Oct 12, 2026
b90013f
test(wallet): retain native field cleanup failures safely
ty-everett Oct 12, 2026
7e74fe9
fix(wallet): build owned staging crash fixtures and align allocation …
ty-everett Oct 12, 2026
c571f0d
test(wallet): retain actual private symlink rejection identity
ty-everett Oct 12, 2026
541b280
test(wallet): align authenticated read and native delta contracts
ty-everett Oct 12, 2026
fba9889
Align full wallet integration fixtures with exact descriptor and cohe…
ty-everett Oct 13, 2026
88474cc
Align private filesystem and native lease refusal fixtures with curre…
ty-everett Oct 13, 2026
4a4552a
Align full native streamed test guards with existing fixture lifetime…
ty-everett Oct 13, 2026
05478cd
Align native component fixtures with real packed metadata and measure…
ty-everett Oct 13, 2026
a909d95
test(wallet): admit complete native candidate fixture workloads
ty-everett Oct 13, 2026
8d7ffce
fix(wallet): retain authenticated native source read routing
ty-everett Oct 13, 2026
eaf85df
test(wallet): exercise genuine native replay scopes
ty-everett Oct 13, 2026
8af2102
test(wallet): exercise original encrypted native source replay
ty-everett Oct 13, 2026
5cb1404
Merge current main profile recovery fix into held 569
ty-everett Oct 13, 2026
a3f8175
docs(wallet): reconcile main profile release metadata
ty-everett Oct 13, 2026
fbcdbdf
Merge main: preserve single-layer internalize metadata
ty-everett Oct 13, 2026
86902f2
Merge main: retain receipt coordination and regtest sync contracts
ty-everett Oct 16, 2026
6603b59
fix(wallet): enter native comparison after reopening completed compos…
ty-everett Oct 16, 2026
0dd67ad
feat(wallet): preserve durable receipt claims across native composition
ty-everett Oct 16, 2026
bc18834
fix(wallet): count nested assertions in expanded native receipt
ty-everett Oct 16, 2026
0a13ebc
fix(wallet): observe new receipt family through existing native ABI
ty-everett Oct 16, 2026
b1b12e3
fix(wallet): satisfy receipt migration before fresh native layout
ty-everett Oct 16, 2026
b7692f7
test(wallet): retain valid migration rollback fixture contracts
ty-everett Oct 16, 2026
f4719da
Complete operational regtest sync and current migration qualification
ty-everett Oct 16, 2026
aebae8f
Align qualification guards with original inner lifetimes
ty-everett Oct 16, 2026
f01cae9
Complete populated native bootstrap and preserve qualification actors
ty-everett Oct 16, 2026
ec52f26
Preserve signed sync-state provenance through bootstrap and bounded j…
ty-everett Oct 16, 2026
43baa0c
Complete retained recovery inventory and bounded nested history spelling
ty-everett Oct 16, 2026
32ae55b
Configure pinned browser sandbox ownership and complete real HTTP los…
ty-everett Oct 16, 2026
7be17c4
Admit measured native schema fixture while preserving quota refusal c…
ty-everett Oct 16, 2026
66d00b1
Batch complete staged field schema comparisons without caching admission
ty-everett Oct 16, 2026
d8d75b4
Pack bounded archive chunks and complete measured qualification owner…
ty-everett Oct 16, 2026
a21b028
Bound native root-copy CI report input to stdin
ty-everett Oct 16, 2026
691c5a7
Bind browser cleanup to checked descriptor and admit measured Metro d…
ty-everett Oct 16, 2026
a789f02
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Oct 16, 2026
ea6db40
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Oct 17, 2026
72ed8c0
fix(wallet): retain bounded catalog checks and measured mobile budgets
ty-everett Oct 17, 2026
8cbf716
fix(wallet): consume admitted native COPY row budgets
ty-everett Oct 17, 2026
28f7f01
perf(wallet): batch prior custody within admitted limits
ty-everett Oct 17, 2026
d646e0c
style(wallet): align caught error binding names
ty-everett Oct 17, 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
  •  
  •  
  •  
240 changes: 218 additions & 22 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

7 changes: 3 additions & 4 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,9 @@ jobs:
language:
- actions
- javascript-typescript
# The only Python files are deterministic OpenAPI output under
# conformance/generated/**. The CodeQL config excludes that owned
# generated boundary, while codegen CI verifies its specs, locked
# generator, and output.
# Scan the independently authored BRC-118 conformance oracle.
# Generated OpenAPI clients remain excluded by the owned registry.
- python
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ jobs:
cache: pnpm
- name: Install deps
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Verify independent BRC-118 wire and signature vectors
run: python3 conformance/runner/scripts/brc118-vectors.py
- name: Build TS runner dependencies
run: >-
pnpm -r
Expand Down
25 changes: 23 additions & 2 deletions .github/workflows/mutation-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,11 @@ jobs:
mutation-tests:
name: Mutation / ${{ matrix.target }} / ${{ matrix.partition }}
needs: prepare
runs-on: ubuntu-latest
runs-on: ${{ matrix.wallet_native && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
# Preserve the acknowledged wallet/overlays90-minute target union.
timeout-minutes: ${{ contains(fromJSON('["revenue-lineage-package","revenue-lineage-graph","sdk-revenue-listing-funding","output-lookup-session-records","output-lookup-session-payloads","wallet-recovery-codec","wallet-recovery-installation","wallet-recovery-store","wallet-funding-store","wallet-recovery-transitions","wallet-recovery-controller","root-eviction-storage","root-eviction-journal","root-eviction-records","wallet-retained-snapshot","wallet-snapshot-sync","wallet-snapshot-sync-destination","wallet-snapshot-sync-rows","wallet-snapshot-archive","wallet-snapshot-remote-http"]'), matrix.target) && 90 || 45 }}
# Complete snapshot source-guard service qualification took 58m35s locally,
# before hosted checkout/install. Preserve the 45-minute default elsewhere.
timeout-minutes: ${{ contains(fromJSON('["revenue-lineage-package","revenue-lineage-graph","sdk-revenue-listing-funding","output-lookup-session-records","output-lookup-session-payloads","wallet-recovery-codec","wallet-recovery-installation","wallet-recovery-store","wallet-funding-store","wallet-recovery-transitions","wallet-recovery-controller","root-eviction-storage","root-eviction-journal","root-eviction-records","wallet-retained-snapshot","wallet-snapshot-journal","wallet-snapshot-sync","wallet-snapshot-sync-destination","wallet-snapshot-sync-rows","wallet-snapshot-archive","wallet-snapshot-remote-http","wallet-snapshot-remote-reader","wallet-snapshot-remote-service"]'), matrix.target) && 90 || 45 }}
permissions:
contents: read
strategy:
Expand All @@ -130,6 +132,25 @@ jobs:
- name: Restore build outputs
run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz

- name: Deliver the pinned native browser for selected wallet component tests
if: matrix.wallet_native
run: node scripts/provision-wallet-native-browser.mjs --target "${{ matrix.target }}"

- name: Provision the qualified native wallet test executable
if: matrix.wallet_native
run: bash scripts/provision-wallet-native-tests.sh

- name: Preserve native component delivery evidence
if: always() && matrix.wallet_native
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: mutation-native-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.target }}-${{ matrix.partition }}
path: |
${{ runner.temp }}/ts-wallet-native-tests.*/component-delivery.json
${{ runner.temp }}/ts-wallet-native-tests.*/brc38-qualification-*/component-delivery-failure.json
if-no-files-found: ignore
retention-days: 7

- name: Enforce the governed mutation-quality ratchet
env:
MUTATION_VERBOSE: '0'
Expand Down
2 changes: 1 addition & 1 deletion .sonarcloud.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sonar.exclusions=packages/verifast/src/wasm/bdk-core.*,conformance/generated/**,
# into self-contained Docker/package build contexts and checked byte-for-byte
# in CI. Analyze the code for issues, but do not report intentional generated
# copies as source duplication.
sonar.cpd.exclusions=**/*.test.ts,**/*.test.tsx,**/*.spec.ts,**/*.spec.tsx,**/*.man.test.ts,**/__test__/**,**/__tests__/**,**/test/**,**/tests/**,**/*.vectors.ts,**/eslint.config.js,infra/wab/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/rateLimitPolicy.ts,infra/uhrp-server-cloud-bucket/src/security/rateLimitPolicy.ts,infra/message-box-server/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts,infra/message-box-server/src/security/edgePolicy.ts,infra/chaintracks-server/src/security/edgePolicy.ts,packages/overlays/overlay-express/src/security/edgePolicy.ts,packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/resourceLimits.ts,infra/uhrp-server-cloud-bucket/src/utils/network.ts,infra/wallet-infra/src/KnexPaymentReplayStore.ts,infra/uhrp-server-basic/src/chirp/core/**,infra/uhrp-server-cloud-bucket/src/chirp/core/**,infra/uhrp-server-basic/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/contracts.ts,infra/uhrp-server-cloud-bucket/src/chirp/commitIndex.ts,infra/uhrp-server-cloud-bucket/src/chirp/routes.ts,infra/uhrp-server-cloud-bucket/src/chirp/bodyMiddleware.ts,infra/chaintracks-server/src/telemetry.ts,infra/wab/src/telemetry.ts,infra/uhrp-server-basic/src/telemetry.ts,infra/uhrp-server-cloud-bucket/src/telemetry.ts,infra/wallet-infra/src/telemetry.ts,infra/message-box-server/src/telemetry.ts
sonar.cpd.exclusions=**/*.test.ts,**/*.test.tsx,**/*.spec.ts,**/*.spec.tsx,**/*.man.test.ts,**/__test__/**,**/__tests__/**,**/test/**,**/tests/**,**/*.vectors.ts,**/eslint.config.js,infra/wab/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/rateLimitPolicy.ts,infra/uhrp-server-cloud-bucket/src/security/rateLimitPolicy.ts,infra/message-box-server/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts,infra/message-box-server/src/security/edgePolicy.ts,infra/chaintracks-server/src/security/edgePolicy.ts,packages/overlays/overlay-express/src/security/edgePolicy.ts,packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/resourceLimits.ts,infra/uhrp-server-cloud-bucket/src/utils/network.ts,infra/wallet-infra/src/KnexPaymentReplayStore.ts,infra/uhrp-server-basic/src/chirp/core/**,infra/uhrp-server-cloud-bucket/src/chirp/core/**,infra/uhrp-server-basic/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/contracts.ts,infra/uhrp-server-cloud-bucket/src/chirp/commitIndex.ts,infra/uhrp-server-cloud-bucket/src/chirp/routes.ts,infra/uhrp-server-cloud-bucket/src/chirp/bodyMiddleware.ts,infra/chaintracks-server/src/telemetry.ts,infra/wab/src/telemetry.ts,infra/uhrp-server-basic/src/telemetry.ts,infra/uhrp-server-cloud-bucket/src/telemetry.ts,infra/wallet-infra/src/telemetry.ts,infra/message-box-server/src/telemetry.ts,infra/uhrp-server-cloud-bucket/dev/bin/nodemon.js,infra/uhrp-server-cloud-bucket/dev/check-watch.cjs,infra/wab/dev/bin/nodemon.js,infra/wab/dev/check-watch.cjs
# Narrow compatibility exceptions are registered with owner, evidence, review
# dates, and objective removal conditions in repository-health/exceptions.json.
sonar.issue.ignore.multicriteria=werrProtocolNames,curveSingletonAlias,curveSingletonReturn,scriptOpcodeDispatch
Expand Down
92 changes: 71 additions & 21 deletions conformance/META.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,20 @@
"sdk.keys.publickey",
"sdk.crypto.signature"
],
"BRC-74": ["sdk.transactions.merklepath", "broadcast.merklepath"],
"BRC-77": ["sdk.compat.bsm"],
"BRC-31": ["messaging.brc31.authrite-signature"],
"BRC-29": ["wallet.brc29.payment-derivation", "payments.brc29-payment-protocol"],
"BRC-74": [
"sdk.transactions.merklepath",
"broadcast.merklepath"
],
"BRC-77": [
"sdk.compat.bsm"
],
"BRC-31": [
"messaging.brc31.authrite-signature"
],
"BRC-29": [
"wallet.brc29.payment-derivation",
"payments.brc29-payment-protocol"
],
"BRC-100": [
"wallet.brc100.getpublickey",
"wallet.brc100.createhmac",
Expand Down Expand Up @@ -55,25 +65,65 @@
"wallet.brc100.getversion",
"wallet.storage.adapterconformance"
],
"BRC-121": ["payments.brc121"],
"BRC-26": ["storage.uhrp-http"],
"BRC-167": ["storage.chirp-v1"],
"BRC-62": ["overlay.submit"],
"BRC-22": ["overlay.lookup", "overlay.topicmanagement"],
"BRC-20": ["broadcast.arcsubmit", "broadcast.merklepath"],
"BRC-21": ["sync.gasprotocol"],
"BRC-40": ["sync.brc40"],
"BRC-14": ["sdk.scripts.evaluation"],
"merkle-service": ["broadcast.merkle-service"],
"message-box": ["messaging.messagebox-http"],
"chaintracks-v2": ["sync.chaintracks-v2-http"],
"BRC-141": ["transport.air-gap-optical"],
"BRC-103": ["auth.brc31-handshake", "messaging.authsocket"],
"BRC-104": ["auth.brc31-handshake"]
"BRC-121": [
"payments.brc121"
],
"BRC-26": [
"storage.uhrp-http"
],
"BRC-167": [
"storage.chirp-v1"
],
"BRC-62": [
"overlay.submit"
],
"BRC-22": [
"overlay.lookup",
"overlay.topicmanagement"
],
"BRC-20": [
"broadcast.arcsubmit",
"broadcast.merklepath"
],
"BRC-21": [
"sync.gasprotocol"
],
"BRC-40": [
"sync.brc40"
],
"BRC-14": [
"sdk.scripts.evaluation"
],
"merkle-service": [
"broadcast.merkle-service"
],
"message-box": [
"messaging.messagebox-http"
],
"chaintracks-v2": [
"sync.chaintracks-v2-http"
],
"BRC-141": [
"transport.air-gap-optical"
],
"BRC-103": [
"auth.brc31-handshake",
"messaging.authsocket"
],
"BRC-104": [
"auth.brc31-handshake",
"payments.brc118"
],
"BRC-118": [
"payments.brc118"
],
"BRC-105": [
"payments.brc118"
]
},
"stats": {
"total_files": 77,
"total_vectors": 6706,
"total_files": 78,
"total_vectors": 6712,
"last_updated": "2026-10-07"
},
"regression_index": {
Expand Down
22 changes: 17 additions & 5 deletions conformance/PARITY_MATRIX.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
"source": "ts-stack conformance corpus",
"description": "Machine-readable parity status for cross-language SDK implementations (Go, Rust, Python). Use this to track and drive conformance.",
"summary": {
"total_files": 77,
"total_vectors": 6706,
"fully_required_files": 58,
"total_files": 78,
"total_vectors": 6712,
"fully_required_files": 59,
"files_with_intended": 17,
"files_with_mixed_status": 15,
"vectors_by_status": {
"required": 6502,
"required": 6508,
"intended": 204,
"skipped": 7
},
"by_reason_category": {
"fully_supported": 1283,
"fully_supported": 1289,
"governed_vector_skip": 50,
"historical_regression": 36,
"partial_ts_behavioral_difference": 5122,
Expand Down Expand Up @@ -145,6 +145,18 @@
"reason_category": "fully_supported",
"categories": []
},
{
"path": "payments/brc118.json",
"id": "payments.brc118",
"total_vectors": 6,
"file_level_parity": "required",
"effective_status": "required",
"required_count": 6,
"intended_count": 0,
"skipped_count": 0,
"reason_category": "fully_supported",
"categories": []
},
{
"path": "payments/brc121.json",
"id": "payments.brc121",
Expand Down
96 changes: 96 additions & 0 deletions conformance/runner/scripts/brc118-vectors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/usr/bin/env python3
"""Independent stdlib RFC 7578 reader, wire writer, and BRC-104 preimage oracle.

Run without arguments to verify the checked-in corpus. --write regenerates it.
This is an independent fixture oracle, not a claimed external wallet integration.
"""
import base64
import json
import struct
import sys
from email import policy
from email.parser import BytesParser
from pathlib import Path

ROOT = Path(__file__).resolve().parents[3]
DESTINATION = ROOT / 'conformance/vectors/payments/brc118.json'
REVISION = '2b959b13f1f73040d13cc4eb14edbfc376f8010b'
BOUNDARY = '----BsvPayment00112233445566778899aabbccddeeff'
PAYMENT = '{"derivationPrefix":"AA==","derivationSuffix":"AQ==","transaction":"AQID"}'


def varint(number):
if number < 0:
return b'\xff' + struct.pack('<Q', (1 << 64) + number)
if number < 253:
return bytes([number])
if number <= 65535:
return b'\xfd' + struct.pack('<H', number)
if number <= 4294967295:
return b'\xfe' + struct.pack('<I', number)
return b'\xff' + struct.pack('<Q', number)


def field(value):
value = value.encode('utf-8') if isinstance(value, str) else value
return varint(len(value) if value else -1) + value


def vector(name, payload, media_type=None, quoted=False):
prefix = ('--' + BOUNDARY + '\r\nContent-Disposition: form-data; name="x-bsv-payment"'
'\r\nContent-Type: application/json\r\n\r\n').encode('ascii')
wire = prefix + PAYMENT.encode('utf-8')
if payload is not None:
wire += ('\r\n--' + BOUNDARY + '\r\nContent-Disposition: form-data; name="body"'
'\r\nContent-Type: ' + media_type + '\r\n\r\n').encode('ascii') + payload
wire += ('\r\n--' + BOUNDARY + '--\r\n').encode('ascii')
content_type = 'multipart/form-data; boundary=' + ('"' + BOUNDARY + '"' if quoted else BOUNDARY)
# Python's standard MIME parser is independent of both TS writer and parser.
message = BytesParser(policy=policy.default).parsebytes(
('MIME-Version: 1.0\r\nContent-Type: ' + content_type + '\r\n\r\n').encode('ascii') + wire)
parts = list(message.iter_parts())
assert not message.defects and len(parts) == (1 if payload is None else 2)
assert parts[0].get_param('name', header='content-disposition') == 'x-bsv-payment'
assert parts[0].get_payload(decode=True) == PAYMENT.encode('utf-8')
if payload is not None:
assert parts[1].get_param('name', header='content-disposition') == 'body'
# Nested multipart payloads are deliberately opaque to BRC-118.
if not media_type.startswith('multipart/'):
assert parts[1].get_payload(decode=True) == payload
headers = {'authorization': 'Bearer conformance-fixture', 'content-type': content_type, 'x-bsv-example': 'fixture'}
nonce = bytes(range(32))
preimage = nonce + field('POST') + field('/paid') + field('?q=%E9%9B%AA&order=1') + varint(len(headers))
for key, value in sorted(headers.items()):
preimage += field(key) + field(value)
preimage += field(wire)
return {
'id': 'payments.brc118.' + name,
'description': 'Exact multipart bytes and authenticated preimage: ' + name,
'input': {'payment_json': PAYMENT, 'boundary': BOUNDARY, 'quoted_boundary': quoted,
'payload_base64': None if payload is None else base64.b64encode(payload).decode(),
'payload_content_type': media_type, 'method': 'POST', 'path': '/paid',
'query': '?q=%E9%9B%AA&order=1', 'request_id_hex': nonce.hex(), 'headers': headers},
'expected': {'body_base64': base64.b64encode(wire).decode(), 'content_type': content_type,
'request_preimage_hex': preimage.hex()},
'tags': ['brc-118', 'exact-bytes', 'independent-python-oracle']
}


corpus = {
'$schema': '../../schema/vector.schema.json', 'id': 'payments.brc118',
'name': 'BRC-118 Multipart Transport and BRC-104 Request Preimages', 'version': '1.0.0',
'brc': ['BRC-104', 'BRC-105', 'BRC-118'], 'reference_impl': '@bsv/sdk; independent Python stdlib oracle',
'parity_class': 'required',
'notes': 'Reviewed BRCs commit ' + REVISION + '; peer-to-peer/0104.md, payments/0105.md, payments/0118.md. Payment fields are synthetic transport bytes, not a spendable transaction. Non-multipart released signature preimages remain unchanged.',
'vectors': [vector('json-whitespace-utf8', '{ "snow": "雪" }\n'.encode(), 'application/json; charset=utf-8'),
vector('binary-nul', bytes([0, 128, 255, 13, 10, 0]), 'application/octet-stream'),
vector('empty', b'', 'text/plain'), vector('absent', None),
vector('nested-multipart', b'--inner\r\nContent-Disposition: form-data; name="field"\r\n\r\nvalue\r\n--inner--\r\n', 'multipart/form-data; boundary=inner'),
vector('quoted-boundary', b'quoted', 'text/plain', True)]
}

if '--write' in sys.argv:
DESTINATION.write_text(json.dumps(corpus, indent=2, ensure_ascii=False) + '\n')
else:
assert json.loads(DESTINATION.read_text()) == corpus, 'BRC-118 corpus differs from independent oracle'
print(f'Verified {len(corpus["vectors"])} independent BRC-118 wire/preimage vectors at BRCs {REVISION}')
44 changes: 43 additions & 1 deletion conformance/runner/ts/dispatchers/payments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,46 @@
*/

import { expect } from '@jest/globals'
import { AuthFetch, type WalletInterface } from '@bsv/sdk'
import { buildMultipartPayment } from '@bsv/sdk/auth/utils/paymentTransport'
import { toHex, Writer } from '@bsv/sdk/primitives/utils'

async function dispatchBRC118(
input: Record<string, unknown>,
expected: Record<string, unknown>
): Promise<void> {
const payload =
input.payload_base64 === null
? undefined
: {
bytes: new Uint8Array(Buffer.from(input.payload_base64 as string, 'base64')),
contentType: input.payload_content_type as string
}
const encoded = buildMultipartPayment(
input.payment_json as string,
payload,
1024 * 1024,
input.boundary as string
)
expect(Buffer.from(encoded.body).toString('base64')).toBe(expected.body_base64)
const client = new AuthFetch({} as WalletInterface) as unknown as {
serializeRequest(
method: string,
headers: Record<string, string>,
body: Uint8Array,
url: URL,
nonce: number[]
): Promise<Writer>
}
const writer = await client.serializeRequest(
input.method as string,
input.headers as Record<string, string>,
encoded.body,
new URL(`https://fixture.invalid${input.path as string}${input.query as string}`),
Array.from(Buffer.from(input.request_id_hex as string, 'hex'))
)
expect(toHex(writer.toArray())).toBe(expected.request_preimage_hex)
}

// ── Helpers ───────────────────────────────────────────────────────────────────

Expand Down Expand Up @@ -336,14 +376,16 @@ function dispatchBRC121(input: Record<string, unknown>, expected: Record<string,

// ── Main entry point ──────────────────────────────────────────────────────────

export const categories: ReadonlyArray<string> = ['brc29-payment-protocol', 'brc121']
export const categories: ReadonlyArray<string> = ['brc29-payment-protocol', 'brc121', 'brc118']

export function dispatch(
category: string,
input: Record<string, unknown>,
expected: Record<string, unknown>
): void | Promise<void> {
switch (category) {
case 'brc118':
return dispatchBRC118(input, expected)
case 'brc29-payment-protocol':
return dispatchBRC29PaymentProtocol(input, expected)
case 'brc121':
Expand Down
Loading
Loading