Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
363 commits
Select commit Hold shift + click to select a range
e66b35f
[pitboss/grind] deferred session-0015 (20260517T044708Z-e058)
May 17, 2026
5b90a67
[pitboss/grind] deferred session-0016 (20260517T044708Z-e058)
May 17, 2026
5b4181e
[pitboss/grind] deferred session-0017 (20260517T044708Z-e058)
May 17, 2026
f87ef7f
[pitboss/grind] deferred session-0018 (20260517T044708Z-e058)
May 17, 2026
b5696c9
[pitboss/grind] deferred session-0019 (20260517T044708Z-e058)
May 17, 2026
a2acfac
[pitboss/grind] deferred session-0020 (20260517T044708Z-e058)
May 17, 2026
01eb67e
[pitboss/grind] deferred session-0021 (20260517T044708Z-e058)
May 17, 2026
f4793b0
[pitboss/grind] deferred session-0022 (20260517T044708Z-e058)
May 17, 2026
b638cad
[pitboss/grind] deferred session-0023 (20260517T044708Z-e058)
May 17, 2026
27e9aea
[pitboss/grind] deferred session-0024 (20260517T044708Z-e058)
May 17, 2026
bcf2b48
[pitboss/grind] deferred session-0025 (20260517T044708Z-e058)
May 17, 2026
cd638de
[pitboss/grind] deferred session-0026 (20260517T044708Z-e058)
May 17, 2026
a384ead
[pitboss/grind] deferred session-0027 (20260517T044708Z-e058)
May 17, 2026
72ec252
[pitboss/grind] deferred session-0028 (20260517T044708Z-e058)
May 17, 2026
19d13a0
[pitboss/grind] deferred session-0029 (20260517T044708Z-e058)
May 17, 2026
b41b24c
[pitboss/grind] deferred session-0030 (20260517T044708Z-e058)
May 17, 2026
fbd5700
[pitboss/grind] deferred session-0033 (20260517T044708Z-e058)
May 17, 2026
f4ef3a8
[pitboss/grind] deferred session-0034 (20260517T044708Z-e058)
May 17, 2026
dc0cff5
[pitboss/grind] deferred session-0035 (20260517T044708Z-e058)
May 17, 2026
7dc488f
[pitboss/grind] deferred session-0036 (20260517T044708Z-e058)
May 17, 2026
44da078
[pitboss/grind] deferred session-0037 (20260517T044708Z-e058)
May 17, 2026
4a2acf1
[pitboss/grind] deferred session-0038 (20260517T044708Z-e058)
May 17, 2026
16834a6
[pitboss] phase 01: Track L.0 — `FrameworkAdapter` trait + per-lang d…
May 17, 2026
3ebdb5e
[pitboss] phase 02: Track J.0 — Capability corpus registry refactor +…
May 17, 2026
fdb42c0
[pitboss] sweep after phase 02: 2 deferred items resolved
May 17, 2026
f446f1e
docs(license): add internal license grants overview and Grant 1 for N…
elicpeter May 17, 2026
01fcaab
docs(license): update formatting, clarify language in internal grants…
elicpeter May 17, 2026
9dc60b5
[pitboss] phase 03: Track J.1 + Track L.1 — `DESERIALIZE` corpus + Ja…
May 17, 2026
b5e6ddd
[pitboss] sweep after phase 03: 1 deferred items resolved
May 17, 2026
8583b29
[pitboss] phase 04: Track J.2 + Track L.2 — `SSTI` corpus + Jinja2 / …
May 17, 2026
637b733
[pitboss] sweep after phase 04: 2 deferred items resolved
May 18, 2026
4de925c
[pitboss] phase 05: Track J.3 + Track L.3 — `XXE` corpus + DocumentBu…
May 18, 2026
993bfab
[pitboss] sweep after phase 05: 1 deferred items resolved
May 18, 2026
b2eeaab
[pitboss] phase 06: Track J.4 + Track L.4 — `LDAP_INJECTION` corpus +…
May 18, 2026
a32075a
[pitboss] phase 07: Track J.5 + Track L.5 — `XPATH_INJECTION` corpus …
May 18, 2026
59d627c
[pitboss] sweep after phase 07: 1 deferred items resolved
May 18, 2026
e0e49f6
[pitboss] phase 08: Track J.6 + Track L.6 — `HEADER_INJECTION` corpus…
May 18, 2026
5697763
[pitboss] sweep after phase 08: no items resolved
May 18, 2026
b881af5
[pitboss] phase 09: Track J.7 + Track L.7 — `OPEN_REDIRECT` corpus + …
May 18, 2026
97e4dff
[pitboss] sweep after phase 09: 1 deferred items resolved
May 18, 2026
d8f88d9
[pitboss] phase 10: Track J.8 + Track L.8 — `PROTOTYPE_POLLUTION` cor…
May 18, 2026
61a9e4e
[pitboss] sweep after phase 10: 1 deferred items resolved
May 18, 2026
6784d73
[pitboss] phase 11: Track J.9 + Track L.9 — `CRYPTO`, `JSON_PARSE`, `…
May 18, 2026
d91351a
docs(license): update Grant 1 to reflect Nyctos rebranding
elicpeter May 18, 2026
7509cfe
[pitboss] sweep after phase 11: 2 deferred items resolved
May 18, 2026
df9fd2b
[pitboss] phase 12: Track L.10 — Flask / Django / FastAPI / Starlette…
May 18, 2026
9ed837b
[pitboss] sweep after phase 12: 3 deferred items resolved
May 18, 2026
04bf7b9
[pitboss] phase 13: Track L.11 — Express / Koa / NestJS / Fastify ada…
May 18, 2026
6768594
[pitboss] sweep after phase 13: 1 deferred items resolved
May 18, 2026
78023cc
[pitboss] phase 14: Track L.12 — Spring / Quarkus / Micronaut / Jakar…
May 18, 2026
3d3fdc2
[pitboss] sweep after phase 14: 2 deferred items resolved
May 18, 2026
b797365
[pitboss] phase 15: Track L.13 — Rails / Sinatra / Hanami adapters
May 18, 2026
323abca
[pitboss] sweep after phase 15: 4 deferred items resolved
May 18, 2026
7ddb7b9
[pitboss] phase 16: Track L.14 — Laravel / Symfony / CodeIgniter adap…
May 18, 2026
5393fe2
[pitboss] sweep after phase 16: no items resolved
May 20, 2026
2b96c60
[pitboss] phase 17: Track L.15 — Gin / Echo / Fiber / Chi adapters + …
May 20, 2026
1b2f9cb
[pitboss] phase 18: Track M.0 — New `EntryKind` variants: `ClassMetho…
May 20, 2026
b374f89
[pitboss] phase 19: Track M.1 — `ClassMethod` end-to-end (all langs)
May 20, 2026
fedc507
[pitboss] sweep after phase 19: 1 deferred items resolved
May 20, 2026
bd0135e
[pitboss] phase 20: Track M.2 — `MessageHandler` end-to-end (Kafka / …
May 20, 2026
00b0fba
[pitboss] sweep after phase 20: 2 deferred items resolved
May 20, 2026
f9bd51c
[pitboss] phase 21: Track M.3 — `ScheduledJob` + `GraphQLResolver` + …
May 20, 2026
3b49b4d
[pitboss/grind] deferred session-0001 (20260520T233019Z-6958)
May 21, 2026
a1a8a21
[pitboss/grind] deferred session-0002 (20260520T233019Z-6958)
May 21, 2026
67ffeed
[pitboss/grind] deferred session-0003 (20260520T233019Z-6958)
May 21, 2026
787da29
[pitboss/grind] cleanup session-0004 (20260520T233019Z-6958)
May 21, 2026
c885a8d
[pitboss/grind] deferred session-0005 (20260520T233019Z-6958)
May 21, 2026
9a0529e
[pitboss/grind] deferred session-0006 (20260520T233019Z-6958)
May 21, 2026
bb8484b
[pitboss/grind] deferred session-0007 (20260520T233019Z-6958)
May 21, 2026
a6f3455
[pitboss/grind] marketing session-0008 (20260520T233019Z-6958)
May 21, 2026
38cc0ce
[pitboss/grind] deferred session-0009 (20260520T233019Z-6958)
May 21, 2026
2801216
[pitboss/grind] deferred session-0010 (20260520T233019Z-6958)
May 21, 2026
2276750
[pitboss/grind] deferred session-0011 (20260520T233019Z-6958)
May 21, 2026
b468f31
[pitboss/grind] cleanup session-0012 (20260520T233019Z-6958)
May 21, 2026
d4fdd83
[pitboss/grind] deferred session-0013 (20260520T233019Z-6958)
May 21, 2026
ba0f83a
[pitboss/grind] deferred session-0014 (20260520T233019Z-6958)
May 21, 2026
1e122b6
[pitboss/grind] deferred session-0015 (20260520T233019Z-6958)
May 21, 2026
be4021d
[pitboss/grind] deferred session-0001 (20260521T143544Z-f898)
May 21, 2026
b376631
[pitboss/grind] deferred session-0002 (20260521T143544Z-f898)
May 21, 2026
6341afe
[pitboss/grind] deferred session-0003 (20260521T143544Z-f898)
May 21, 2026
54e218c
[pitboss/grind] cleanup session-0004 (20260521T143544Z-f898)
May 21, 2026
bec7bbf
[pitboss/grind] deferred session-0005 (20260521T143544Z-f898)
May 21, 2026
3a35cd6
cargo fmt
elicpeter May 21, 2026
159a779
[pitboss/grind] deferred session-0001 (20260521T201327Z-3848)
May 21, 2026
d99361c
[pitboss/grind] deferred session-0002 (20260521T201327Z-3848)
May 21, 2026
368f628
[pitboss/grind] deferred session-0003 (20260521T201327Z-3848)
May 21, 2026
f827552
[pitboss/grind] cleanup session-0004 (20260521T201327Z-3848)
May 21, 2026
0625be2
[pitboss/grind] deferred session-0005 (20260521T201327Z-3848)
May 21, 2026
d47aec5
[pitboss/grind] deferred session-0006 (20260521T201327Z-3848)
May 21, 2026
cf00cff
[pitboss/grind] deferred session-0007 (20260521T201327Z-3848)
May 21, 2026
ad15761
[pitboss/grind] marketing session-0008 (20260521T201327Z-3848)
May 21, 2026
2548a4a
[pitboss/grind] deferred session-0009 (20260521T201327Z-3848)
May 21, 2026
3c42743
[pitboss/grind] deferred session-0010 (20260521T201327Z-3848)
May 21, 2026
ca4349d
[pitboss/grind] cleanup session-0012 (20260521T201327Z-3848)
May 21, 2026
86ab2aa
[pitboss/grind] deferred session-0013 (20260521T201327Z-3848)
May 21, 2026
c95dcc0
[pitboss/grind] deferred session-0014 (20260521T201327Z-3848)
May 22, 2026
3b62269
[pitboss/grind] deferred session-0015 (20260521T201327Z-3848)
May 22, 2026
e0104a4
[pitboss/grind] marketing session-0016 (20260521T201327Z-3848)
May 22, 2026
b4677bf
[pitboss/grind] deferred session-0017 (20260521T201327Z-3848)
May 22, 2026
c81f39b
[pitboss/grind] deferred session-0018 (20260521T201327Z-3848)
May 22, 2026
dd9da4e
[pitboss/grind] deferred session-0019 (20260521T201327Z-3848)
May 22, 2026
de24d25
[pitboss/grind] cleanup session-0020 (20260521T201327Z-3848)
May 22, 2026
b8773a1
[pitboss/grind] deferred session-0021 (20260521T201327Z-3848)
May 22, 2026
3a6439c
[pitboss/grind] deferred session-0022 (20260521T201327Z-3848)
May 22, 2026
b0d5527
[pitboss/grind] deferred session-0023 (20260521T201327Z-3848)
May 22, 2026
662780a
[pitboss/grind] marketing session-0024 (20260521T201327Z-3848)
May 22, 2026
cf65e73
[pitboss/grind] deferred session-0025 (20260521T201327Z-3848)
May 22, 2026
0e13654
[pitboss/grind] deferred session-0026 (20260521T201327Z-3848)
May 22, 2026
8248590
[pitboss/grind] deferred session-0027 (20260521T201327Z-3848)
May 22, 2026
3d8f988
[pitboss/grind] deferred session-0030 (20260521T201327Z-3848)
May 22, 2026
945836b
[pitboss/grind] deferred session-0001 (20260522T043516Z-29b8)
May 22, 2026
ebe3a4f
[pitboss/grind] deferred session-0002 (20260522T043516Z-29b8)
May 22, 2026
987fc1d
[pitboss/grind] deferred session-0003 (20260522T043516Z-29b8)
May 22, 2026
d6e570e
[pitboss/grind] cleanup session-0004 (20260522T043516Z-29b8)
May 22, 2026
eacec70
[pitboss/grind] deferred session-0005 (20260522T043516Z-29b8)
May 22, 2026
ed63433
[pitboss/grind] deferred session-0006 (20260522T043516Z-29b8)
May 22, 2026
e2940fc
[pitboss/grind] deferred session-0007 (20260522T043516Z-29b8)
May 22, 2026
77865d5
[pitboss/grind] marketing session-0008 (20260522T043516Z-29b8)
May 22, 2026
189bcb7
[pitboss/grind] deferred session-0009 (20260522T043516Z-29b8)
May 22, 2026
205fb14
[pitboss/grind] deferred session-0011 (20260522T043516Z-29b8)
May 22, 2026
824a266
[pitboss/grind] cleanup session-0012 (20260522T043516Z-29b8)
May 22, 2026
6f58921
[pitboss/grind] deferred session-0013 (20260522T043516Z-29b8)
May 22, 2026
60914be
[pitboss/grind] deferred session-0014 (20260522T043516Z-29b8)
May 22, 2026
ba6e12a
[pitboss/grind] deferred session-0015 (20260522T043516Z-29b8)
May 22, 2026
0415106
[pitboss/grind] marketing session-0016 (20260522T043516Z-29b8)
May 22, 2026
fe1f895
[pitboss/grind] deferred session-0017 (20260522T043516Z-29b8)
May 22, 2026
41f2a2d
[pitboss/grind] deferred session-0018 (20260522T043516Z-29b8)
May 22, 2026
1fad701
[pitboss/grind] deferred session-0019 (20260522T043516Z-29b8)
May 22, 2026
f265140
[pitboss/grind] cleanup session-0020 (20260522T043516Z-29b8)
May 22, 2026
cc183a8
[pitboss/grind] deferred session-0021 (20260522T043516Z-29b8)
May 22, 2026
e9c3515
[pitboss/grind] deferred session-0022 (20260522T043516Z-29b8)
May 22, 2026
e44f6ee
[pitboss/grind] deferred session-0023 (20260522T043516Z-29b8)
May 22, 2026
c751c4b
[pitboss/grind] marketing session-0024 (20260522T043516Z-29b8)
May 22, 2026
853fd28
[pitboss/grind] deferred session-0025 (20260522T043516Z-29b8)
May 22, 2026
ed237ab
[pitboss/grind] deferred session-0026 (20260522T043516Z-29b8)
May 22, 2026
cfb2402
[pitboss/grind] deferred session-0027 (20260522T043516Z-29b8)
May 22, 2026
9062cd6
[pitboss/grind] cleanup session-0028 (20260522T043516Z-29b8)
May 22, 2026
3221107
docs(configuration): improve clarity and formatting in configuration …
elicpeter May 22, 2026
fd50549
refactor(dynamic): ensure unique workdir names to avoid conflicts, im…
elicpeter May 22, 2026
e4258d6
[pitboss/grind] deferred session-0001 (20260522T163126Z-7d60)
May 22, 2026
3486056
[pitboss/grind] deferred session-0002 (20260522T163126Z-7d60)
May 22, 2026
0e4e393
[pitboss/grind] deferred session-0003 (20260522T163126Z-7d60)
May 22, 2026
0d4ab22
[pitboss/grind] cleanup session-0004 (20260522T163126Z-7d60)
May 22, 2026
94a3d12
[pitboss/grind] deferred session-0005 (20260522T163126Z-7d60)
May 22, 2026
77d6710
[pitboss/grind] deferred session-0006 (20260522T163126Z-7d60)
May 22, 2026
9e6b01c
[pitboss/grind] deferred session-0007 (20260522T163126Z-7d60)
May 22, 2026
33b5c69
[pitboss/grind] marketing session-0008 (20260522T163126Z-7d60)
May 22, 2026
2c61324
[pitboss/grind] deferred session-0009 (20260522T163126Z-7d60)
May 22, 2026
089fe35
[pitboss/grind] deferred session-0010 (20260522T163126Z-7d60)
May 22, 2026
6c43228
[pitboss/grind] deferred session-0011 (20260522T163126Z-7d60)
May 22, 2026
ad18008
[pitboss/grind] cleanup session-0012 (20260522T163126Z-7d60)
May 22, 2026
e360a1d
[pitboss/grind] deferred session-0013 (20260522T163126Z-7d60)
May 22, 2026
727bbbd
[pitboss/grind] deferred session-0014 (20260522T163126Z-7d60)
May 22, 2026
9070b1a
[pitboss/grind] deferred session-0015 (20260522T163126Z-7d60)
May 22, 2026
5cb8056
[pitboss/grind] marketing session-0016 (20260522T163126Z-7d60)
May 22, 2026
1e5f27f
[pitboss/grind] deferred session-0017 (20260522T163126Z-7d60)
May 22, 2026
4bcdec3
refactor(dynamic): ensure unique workdir names to avoid conflicts, im…
elicpeter May 23, 2026
ca075a7
refactor(dynamic): add multi-method support to RouteShape, update fra…
elicpeter May 23, 2026
fe09986
refactor(dynamic): standardize shell commands across fixtures, add `_…
elicpeter May 23, 2026
aaa1fd7
refactor(dynamic): enhance SQS framework binding logic and auto-detec…
elicpeter May 23, 2026
17fa611
refactor(dynamic): enhance framework bindings with SSA receiver type …
elicpeter May 23, 2026
cc083eb
refactor(dynamic): unify message middleware collection across brokers…
elicpeter May 24, 2026
f7310b2
refactor(dynamic): improve SSA receiver type validation, refactor fra…
elicpeter May 24, 2026
3027c1a
refactor(dynamic): improve SSA receiver type checks, enhance framewor…
elicpeter May 24, 2026
f49211d
refactor(dynamic): enhance resolver detection for frameworks, refine …
elicpeter May 24, 2026
baa9a36
refactor(dynamic): add recursive dependency resolution for SSA receiv…
elicpeter May 24, 2026
43ab4aa
refactor(dynamic): add framework-aware route detection, improve Rust/…
elicpeter May 24, 2026
0e8c900
refactor(dynamic): add cross-file route detection for frameworks, enh…
elicpeter May 25, 2026
acec041
refactor(dynamic): add recursive dependency resolution for Java, Go, …
elicpeter May 25, 2026
8786d1b
refactor(dynamic): enhance Rust receiver construction with recursive …
elicpeter May 25, 2026
6e9cc0b
refactor(dynamic): add recursive dependency resolution for C++ receiv…
elicpeter May 25, 2026
680fc6b
refactor(dynamic): add recursive dependency resolution for C receiver…
elicpeter May 25, 2026
9c323d0
refactor(dynamic): enhance project file indexing for Go and Rust with…
elicpeter May 25, 2026
5e1e5cb
refactor(dynamic): centralize stub initialization for test cases, enh…
elicpeter May 25, 2026
6d0e4a5
refactor(dynamic): add Phase 17 end-to-end tests for Go and Rust fram…
elicpeter May 25, 2026
cb3b39d
refactor(dynamic): enhance Django CBV handling by distinguishing `Cla…
elicpeter May 25, 2026
68bdd30
refactor(dynamic): improve fallback handling for sandbox restrictions…
elicpeter May 25, 2026
170d202
refactor(dynamic): expand Go framework support with updated route dis…
elicpeter May 26, 2026
c57cd23
refactor(dynamic): add broker loopback stubs for Kafka, SQS, Pub/Sub,…
elicpeter May 26, 2026
61bfc0c
refactor(dynamic): replace Spring annotation stubs with real dependen…
elicpeter May 26, 2026
41c7b73
refactor(dynamic): replace reflective invocation with route replay lo…
elicpeter May 26, 2026
aaf49ac
refactor(dynamic): enhance Ruby harness with framework-specific route…
elicpeter May 26, 2026
ed398e2
refactor(dynamic): replace PHP route stubs with framework-aware route…
elicpeter May 26, 2026
ed96f94
refactor(dynamic): centralize runtime dependency handling across fram…
elicpeter May 26, 2026
6ee2bdd
refactor(dynamic): introduce publish/poll/commit cycle for Kafka, exp…
elicpeter May 26, 2026
9bf085e
refactor(dynamic): introduce SQL profile for migration hardening with…
elicpeter May 27, 2026
0903231
refactor(dynamic): enhance event recording across brokers, improve SQ…
elicpeter May 27, 2026
433036a
refactor(dynamic): add SQS loopback HTTP emulator with real SDK compa…
elicpeter May 27, 2026
57d3677
**refactor(dynamic): add Kafka HTTP emulator with publish/poll/commit…
elicpeter May 27, 2026
a55849f
**refactor(dynamic): add HTTP emulators for Pubsub, Rabbit, and NATS …
elicpeter May 27, 2026
a12f7ef
**refactor(dynamic): introduce NATS protocol emulator with publish/de…
elicpeter May 27, 2026
8eeb959
**refactor(dynamic): introduce framework-specific fallback logic for …
elicpeter May 27, 2026
d5c51c5
refactor(dynamic): prioritize real clients over HTTP fallbacks for Ra…
elicpeter May 27, 2026
fd5e1f3
**refactor(dynamic): add AMQP protocol emulator for Rabbit with publi…
elicpeter May 27, 2026
030b054
refactor(dynamic): extend Rabbit AMQP protocol emulator with exchange…
elicpeter May 27, 2026
1a0e2d2
refactor(dynamic): extend Kafka protocol emulator with binary protoco…
elicpeter May 27, 2026
ed8decb
refactor(dynamic): add GraphQL framework-specific fallbacks with Juni…
elicpeter May 27, 2026
fd39304
refactor(dynamic): enhance migration harnesses with Prisma, Sequelize…
elicpeter May 27, 2026
71fade1
refactor(dynamic): extend framework-specific fallbacks with Spring Ha…
elicpeter May 27, 2026
c3a1550
refactor(scan): implement IndexWriteQueue for single-writer SQLite ha…
elicpeter May 28, 2026
3d710c8
refactor(dynamic): integrate worker timeout handling, JSON response p…
elicpeter May 28, 2026
bd76cd5
refactor(dynamic): introduce build pools for Python, C, C++, Go, Ruby…
elicpeter May 29, 2026
acdc71c
refactor(scan, dynamic): implement cap-routed concurrency lanes for b…
elicpeter May 29, 2026
635b213
refactor(server, scan): introduce target management with active targe…
elicpeter May 29, 2026
c050188
feat(dynamic): add `PartiallyConfirmed` status for finer-grained sink…
elicpeter May 29, 2026
08a2568
feat(eval-corpus): implement OWASP Benchmark v1.2 acceptance with pre…
elicpeter May 29, 2026
a5929bb
chore: remove stale scheduled_tasks.lock file
elicpeter May 29, 2026
2a4d49b
chore: remove stale scheduled_tasks.lock file
elicpeter Jun 1, 2026
e083353
feat(eval-corpus): add Track R.2 polyglot corpora (RailsGoat, DVWA, D…
elicpeter Jun 1, 2026
6bca7a7
feat(dynamic): replace fixed canary with per-spec cryptographically-r…
elicpeter Jun 1, 2026
130bf90
feat(dynamic): update to version 0.8.0 with enhanced dynamic verifica…
elicpeter Jun 1, 2026
738f1fe
feat(dynamic): implement entry-driven verification with fallback to s…
elicpeter Jun 1, 2026
7027dbc
feat(dynamic): remap command injection sink cap to `CODE_EXEC`, updat…
elicpeter Jun 1, 2026
8a41866
feat(dynamic): extend per-language undrivable entry detection with Go…
elicpeter Jun 1, 2026
d3bfd6c
feat(dynamic): add Java path-traversal payload support, update harnes…
elicpeter Jun 2, 2026
e64fb25
style(dynamic): improve code readability by reformatting long lines a…
elicpeter Jun 2, 2026
9914d26
style(all): reformat long lines across files for improved code readab…
elicpeter Jun 2, 2026
67a2e75
feat(build): enhance license file packaging logic and add Rust toolch…
elicpeter Jun 2, 2026
467d41d
feat(ci): replace toolchain stripping with PATH-level deny wrappers f…
elicpeter Jun 2, 2026
8ee6e3a
feat(dynamic): enhance corpus sync script with improved payload parsi…
elicpeter Jun 2, 2026
ec76c9e
style(dynamic): reformat struct initialization for improved readabili…
elicpeter Jun 2, 2026
9c99f6c
feat(ssa): optimize branch condition handling via constant folding, e…
elicpeter Jun 2, 2026
321d0a6
cargo fmt
elicpeter Jun 2, 2026
879f965
style(comments): remove decorative comment borders across files for c…
elicpeter Jun 2, 2026
1f5777f
feat(dynamic): replace fixed sleeps with `drain_events_until` for rel…
elicpeter Jun 2, 2026
1ebeb23
feat(lint): centralize `clippy::collapsible_if` allowance in Cargo.to…
elicpeter Jun 2, 2026
5615074
feat(dynamic): add synthetic-fallback handling for partial confirmati…
elicpeter Jun 3, 2026
4c824ed
refactor(ssa): streamline operand iteration and formatting in `ssa_tr…
elicpeter Jun 3, 2026
c29cf69
feat(tests): support partial confirmations with synthetic-fallback ha…
elicpeter Jun 3, 2026
2e456c1
chore(lint): suppress `dead_code` warnings for const-eval functions t…
elicpeter Jun 3, 2026
c2cd6f0
feat(dynamic, eval): enhance hardening validation, CI budget tuning, …
elicpeter Jun 3, 2026
eb4332e
docs: update inline references and improve XSS detection in Java serv…
elicpeter Jun 3, 2026
7468d22
tests, docs: simplify `OnceLock` usage in Linux sandbox tests, update…
elicpeter Jun 3, 2026
2009397
feat(dynamic): improve sandbox hardening and build caching
elicpeter Jun 3, 2026
ddf9ff1
fixed some dynamic and static bugs and failing test cases
elicpeter Jun 3, 2026
7fe1abd
fix failing tests and rules
elicpeter Jun 3, 2026
b32dc7a
fix failing tests
elicpeter Jun 3, 2026
d84505f
fix missing var
elicpeter Jun 3, 2026
b16d468
update java test cases to pass on java 18
elicpeter Jun 3, 2026
425a9ed
fixed python venv config
elicpeter Jun 3, 2026
2e12c19
fix java
elicpeter Jun 4, 2026
8974b91
fix linux java
elicpeter Jun 4, 2026
3edb17e
fix linux java
elicpeter Jun 4, 2026
9696537
ci fixes
elicpeter Jun 4, 2026
18baf71
edited ci to --no-fail-fast and potential java fixes
elicpeter Jun 4, 2026
03b698d
fixed dynamic sandbox hardening to graft /proc
elicpeter Jun 4, 2026
52bd729
fixing failing ci
elicpeter Jun 4, 2026
e66b031
fixed codeigniter vuln never confirms
elicpeter Jun 4, 2026
db35cdf
fix failing ci
elicpeter Jun 4, 2026
061e1f9
fix failing ci + update docs
elicpeter Jun 5, 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
  •  
  •  
  •  
19 changes: 19 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# nextest configuration
#
# See https://nexte.st/docs/configuration/ for the full schema.

# ── Test groups ──────────────────────────────────────────────────────────────
#
# `hostile-input-timing` serialises the two timing-bounded
# `hostile_input_tests` cases that pass under nextest in isolation but fail
# under the full-suite parallel run on darwin (resource contention from the
# other ~4000 tests pushes them past their internal budget). Pinning them to
# a single thread within their own group keeps their wall-clock predictable
# without slowing the rest of the suite.

[test-groups]
hostile-input-timing = { max-threads = 1 }

[[profile.default.overrides]]
filter = 'binary(hostile_input_tests) and (test(very_long_single_line_parses) or test(many_small_functions_do_not_explode))'
test-group = 'hostile-input-timing'
103 changes: 94 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ on:
branches: ["master"]
pull_request:
branches: ["master"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand Down Expand Up @@ -197,8 +198,8 @@ jobs:
- name: Compile check at MSRV
run: cargo check --all-features --tests

rust-stable-test:
name: rust-stable-test
rust-stable-test-linux-without-docker:
name: rust-stable-test / linux-without-docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
Expand All @@ -210,8 +211,59 @@ jobs:

- uses: taiki-e/install-action@nextest

- name: Rust tests (stable)
run: cargo nextest run --all-features
- name: Rust tests (stable, no docker)
run: cargo nextest run --no-fail-fast --all-features

rust-stable-test-linux-with-docker:
name: rust-stable-test / linux-with-docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
cache: true

- uses: taiki-e/install-action@nextest

- name: Pull language images for sandbox tests
run: |
docker pull python:3-slim
docker pull node:20-slim
docker pull eclipse-temurin:21-jre-jammy
docker pull php:8-cli

- name: Smoke-test interpreter availability
run: |
docker run --rm python:3-slim python3 --version
docker run --rm node:20-slim node --version
docker run --rm eclipse-temurin:21-jre-jammy java -version
docker run --rm php:8-cli php --version

- name: Rust tests with docker (sandbox escape gate)
run: cargo nextest run --no-fail-fast --all-features --test dynamic_sandbox_escape --test dynamic_parity

escape-positive-control:
name: escape-positive-control
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
cache: true

- uses: taiki-e/install-action@nextest

- name: Pull python image
run: docker pull python:3-slim

- name: Escape positive control (gate wiring check)
run: |
cargo nextest run --no-fail-fast --all-features --test dynamic_sandbox_escape \
-- --include-ignored positive_control_cap_sys_admin

cross-platform-smoke:
name: cross-platform-smoke
Expand All @@ -234,7 +286,7 @@ jobs:
run: cargo build --release --all-features

- name: Smoke tests
run: cargo nextest run --all-features --test integration_tests --test pattern_tests --test cli_validation_tests
run: cargo nextest run --no-fail-fast --all-features --test integration_tests --test pattern_tests --test cli_validation_tests

rust-beta-test:
name: rust-beta-test
Expand All @@ -250,7 +302,7 @@ jobs:
- uses: taiki-e/install-action@nextest

- name: Rust tests (beta)
run: cargo nextest run --all-features
run: cargo nextest run --no-fail-fast --all-features

cargo-package:
name: cargo-package
Expand Down Expand Up @@ -299,16 +351,18 @@ jobs:
cache: true
cache-key: benchmark-gate-release

- uses: taiki-e/install-action@nextest

- name: Build benchmark + perf test binaries
run: cargo test --release --all-features --test benchmark_test --test perf_tests --no-run
run: cargo nextest run --release --all-features --test benchmark_test --test perf_tests --no-run

- name: Accuracy regression gate (P/R/F1)
run: cargo test --release --all-features --test benchmark_test -- --ignored --nocapture benchmark_evaluation
run: cargo nextest run --no-fail-fast --release --all-features --test benchmark_test --run-ignored only --no-capture benchmark_evaluation

- name: Performance regression gate
env:
NYX_CI_BENCH: "1"
run: cargo test --release --all-features --test perf_tests -- --nocapture
run: cargo nextest run --no-fail-fast --release --all-features --test perf_tests --no-capture

- name: Upload benchmark results
if: always()
Expand All @@ -317,3 +371,34 @@ jobs:
name: benchmark-results
path: tests/benchmark/results/latest.json
if-no-files-found: warn

corpus-marker-audit:
name: corpus-marker-audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Marker collision audit (§16.3)
run: python3 scripts/corpus_dashboard.py
# Exits non-zero if any oracle marker from one cap appears in another
# cap's payload bytes. This catches cross-cap oracle collisions that
# would cause false-positive confirmed verdicts.

- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
cache: true

- uses: taiki-e/install-action@nextest

- name: Corpus unit tests (no_marker_collisions, all_payloads_have_fixture_paths)
run: cargo nextest run --no-fail-fast --lib -p nyx-scanner dynamic::corpus
env:
RUST_LOG: error

- name: Corpus dashboard sync check (Python/Rust payload table parity)
run: python3 scripts/check_corpus_sync.py
167 changes: 167 additions & 0 deletions .github/workflows/corpus_promote.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
name: Corpus Promote

# Weekly automated promotion-PR template.
#
# Scans fuzz-discovered/ for candidates not yet in src/dynamic/corpus.rs
# and opens a PR proposing them for human review (§16.4 — no auto-merge).
#
# Also runs the marker-collision audit as a hard gate: if any collision is
# found the workflow fails rather than proposing the promotion.

on:
schedule:
# Sundays at 09:00 UTC — offset from the fuzz run (06:00 UTC) so
# discovered candidates are ready before the promotion job runs.
- cron: "0 9 * * 0"
workflow_dispatch:
inputs:
dry_run:
description: "Dry run (print PR body but do not open)"
required: false
default: "false"

permissions:
contents: write
pull-requests: write

concurrency:
group: corpus-promote
cancel-in-progress: true

jobs:
promote:
name: Propose corpus promotions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
cache: true

- uses: actions/setup-node@v6
with:
node-version: 20
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: Build frontend
working-directory: frontend
run: |
npm ci
npm run build

# ── Marker collision audit ──────────────────────────────────────────────
- name: Marker collision audit
run: |
set -euo pipefail
cargo build --features dynamic -p nyx-scanner 2>/dev/null || true
cd fuzz/dynamic_corpus
cargo run -- audit-markers
env:
RUST_LOG: error

# ── Discover candidates ─────────────────────────────────────────────────
- name: Find promotion candidates
id: candidates
run: |
set -euo pipefail
count=0
files=""
if [ -d fuzz-discovered ]; then
while IFS= read -r f; do
# Skip .gitkeep, sidecar JSONs, and files already listed in corpus.rs.
[[ "$f" == *".gitkeep" ]] && continue
[[ "$f" == *".json" ]] && continue
bytes=$(xxd -p "$f" | tr -d '\n')
if ! grep -q "$bytes" src/dynamic/corpus.rs 2>/dev/null; then
count=$((count + 1))
files="$files $f"
fi
done < <(find fuzz-discovered -type f | sort)
fi
echo "count=$count" >> "$GITHUB_OUTPUT"
echo "files=$files" >> "$GITHUB_OUTPUT"

- name: Skip if no new candidates
if: steps.candidates.outputs.count == '0'
run: |
echo "No new candidates found in fuzz-discovered/. Nothing to promote."

# ── Open promotion PR ───────────────────────────────────────────────────
- name: Open promotion PR
if: >
steps.candidates.outputs.count != '0' &&
github.event.inputs.dry_run != 'true'
env:
GH_TOKEN: ${{ github.token }}
CANDIDATE_COUNT: ${{ steps.candidates.outputs.count }}
CANDIDATE_FILES: ${{ steps.candidates.outputs.files }}
run: |
set -euo pipefail
branch="corpus-promote-$(date +%Y%m%d)"
git checkout -b "$branch"

# Stage candidate files into fuzz-discovered (already there).
# The PR body provides the reviewer with everything they need.

# Build PR body into a temp file to avoid shell re-interpolation of
# sidecar JSON content (which may contain backticks or $(...) sequences).
body_file=$(mktemp)

cat > "$body_file" <<'PREAMBLE'
## Corpus Promotion Proposal

This PR was generated automatically by the weekly corpus-promote workflow.
It does **not** auto-merge — a human reviewer must approve each candidate
before it can land in `src/dynamic/corpus.rs` (§16.4).

### Candidates

The following payloads were discovered by the internal mutation fuzzer and
confirmed via `sink_hit && oracle_fired` against instrumented fixtures:

PREAMBLE

for f in $CANDIDATE_FILES; do
sidecar="${f}.json"
printf -- '- `%s`\n' "$f" >> "$body_file"
if [ -f "$sidecar" ]; then
printf ' ```json\n' >> "$body_file"
cat "$sidecar" >> "$body_file"
printf '\n ```\n' >> "$body_file"
fi
done

cat >> "$body_file" <<'CHECKLIST'

### Review checklist

- [ ] Bytes are a genuine attack vector, not a fixture artifact
- [ ] Oracle marker is unique (no collision with other caps)
- [ ] `fixture_paths` updated in `src/dynamic/corpus.rs`
- [ ] `since_corpus_version` set to next version
- [ ] `CORPUS_VERSION` bumped and bump history updated

_Generated by corpus_promote.yml — do not auto-merge._
CHECKLIST

git add fuzz-discovered/ || true
git diff --cached --quiet || git commit -m "chore: add ${CANDIDATE_COUNT} fuzzer-discovered corpus candidates"

git push origin "$branch"

gh pr create \
--title "chore(corpus): promote ${CANDIDATE_COUNT} fuzzer-discovered payload(s)" \
--body "$(cat "$body_file")" \
--base master \
--label "corpus-promotion" || true

rm -f "$body_file"

- name: Dry run summary
if: github.event.inputs.dry_run == 'true'
run: |
echo "Dry run: would promote ${{ steps.candidates.outputs.count }} candidate(s)."
echo "Files: ${{ steps.candidates.outputs.files }}"
5 changes: 5 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ jobs:
steps:
- uses: actions/checkout@v6

- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
cache: true

- name: Cache mdbook
id: cache-mdbook
uses: actions/cache@v5
Expand Down
Loading
Loading