whitepaper: re-add 10 missing entries + 11 new defects this session, count 578→590; rebuild PDF

This commit is contained in:
russell@unturf.com 2026-03-27 22:18:31 -04:00
parent e4ee168b1e
commit 2e4f7807d5
401 changed files with 3914 additions and 114 deletions

View file

@ -1 +1,10 @@
eca6ab526da1cbb21b2464b67650c8d9 undefect-cwe407-2026-03-27.pdf
33dc45d94dcb2b6cec4f7036497571d7 executive-summary.pdf
ba0de5d1546aa2971492f74616f13f47 full-paper.pdf
3fda5736a004c621f52701c92a7ca7f5 undefect-cwe407-2026-03-24.pdf
f076f22e9e70a94f51884562aad6fdc5 undefect-cwe407-2026-03-25.pdf
5da33a4087fdca81f70cce84656afc7f undefect-cwe407-2026-03-26.pdf
cc46c7ebb61d23a0c3e33cbe86977fd8 undefect-cwe407-2026-03-27.pdf
ff52abf9f47a7e6bb25e4519b1325090 undefect-minecraft-enterprise-java-2026-03-24.pdf
c7fe499eb004271b384a31ac01b38852 undefect-minecraft-enterprise-java-2026-03-25.pdf
818d29731df88333d29cfdd3eefeb3a2 undefect-minecraft-enterprise-java-2026-03-26.pdf
247fe2afd56be7dabda54875bc60d77f undefect-minecraft-enterprise-java-2026-03-27.pdf

View file

@ -39,7 +39,7 @@ A single well-crafted implementation serves as the genetic blueprint.
4. **Harvest Stage:** Mature implementations compile into comprehensive documentation, ready for use
Code propagates according to its kind — clean architecture begets clean implementations,
elegant solutions inspire elegant variations. The process of generating 578 validated
elegant solutions inspire elegant variations. The process of generating 590 validated
defect patches across 240 ecosystems in a single research wave demonstrates how truth,
properly seeded, multiplies. Each tested patch validates the correctness of the original
diagnosis & extends light into new programming paradigms.
@ -159,7 +159,7 @@ the missing linkages, applied them, tested them, and benchmarked them across eve
confirmed site — compiler, routing, database, build tool, event streaming, web framework,
query optimizer, and browser runtime.
**578 sites patched. 3 deferred (PostgreSQL -0001/-0005; MongoDB -0005 IndexBounds).
**590 sites patched. 3 deferred (PostgreSQL -0001/-0005; MongoDB -0005 IndexBounds).
1 fixable-upstream (Erlang OTP). 1 fixable-pending (swipl-0003). 2 not-worth-fixing.
3 unpatched (Minecraft, Create mod). No language left behind.
@ -249,6 +249,9 @@ stacks, Spark schemas — this is the dominant build cost.
| javac-0002b | OpenJDK javac | `Infer.java:1747` — uncached closure DFS | **PATCHED** |
| javac-0004 | OpenJDK javac | `Dependencies.java:197` — `List.contains+add` | **PATCHED** |
| javac-0005 | OpenJDK javac | `InferenceContext.java:506` — `List.containsAll()` | **PATCHED** |
| javac-0006 | OpenJDK javac | `code/Types.java:3240` — `interfaceCandidates()` `candidates2.contains(s)` O(S²) javac List scan per symbol in membersClosure loop; fix: `LinkedHashSet` shadow (200×) | **PATCHED** |
| javac-0007 | OpenJDK javac | `comp/InferenceContext.java:294` — `notifyChange()` recomputes `inferencevars.diff(inferredVars)` O(N×M) inside freeTypeListeners loop (L iterations); fix: hoist `diff()` (160×) | **PATCHED** |
| eclipse-jdt-0001 | Eclipse JDT | `compiler/lookup/Scope.java:4273,4295` — `minimalErasedCandidates()` BFS `typesToVisit ArrayList.contains(superType)` O(N²) per `lub()` / ternary / multi-catch inference; fix: `LinkedHashSet` (251×) | **PATCHED** |
| ts-0001 | TypeScript | `checker.ts:11503` — `resolutionTargets[]` linear scan | **PATCHED** |
| ts-0002 | TypeScript | `checker.ts:5256` — `visitedSymbols` array | **PATCHED** |
| ts-0003 | TypeScript | `checker.ts:5763` — `visitedSymbolTables` array | **PATCHED** |
@ -303,6 +306,7 @@ stacks, Spark schemas — this is the dominant build cost.
| hibernate-0003 | Hibernate ORM | `mapping/Index.java` — `ArrayList.contains()` in `addColumn()` dedup; O(C²) | **PATCHED** |
| hibernate-0004 | Hibernate ORM | `boot/model/process/spi/InFlightMetadataCollectorImpl.java` — `ArrayList.contains()+add(0,…)` in `buildRecursiveOrderedFkSecondPasses()`; O(D²) inheritance chain | **PATCHED** |
| hibernate-0005 | Hibernate ORM | `engine/internal/StatisticalLoggingSessionEventListener.java` — `ArrayList.contains()` in `orderHierarchy()` recursive sort; O(T²) hierarchy | **PATCHED** |
| hibernate-0006 | Hibernate ORM | `persister/entity/AbstractEntityPersister.java:665` — subclass property closure `aliases.contains(columnAlias)` O(T²) across hierarchy; fix: `LinkedHashSet` (378×) | **PATCHED** |
| efcore-0001 | EF Core | `Metadata/Internal/PropertyExtensions.cs:72` — `List<IProperty>.Contains()` in `FindGenerationProperty()` BFS FK traversal; O(D²) per `SaveChanges()` call (250×) | **PATCHED** |
| efcore-0002 | EF Core | `Metadata/IReadOnlyProperty.cs:248` — `List<T>.Contains()` in `AddPrincipals()` recursive traversal; O(P²) principal chain (250×) | **PATCHED** |
| sqlalchemy-0001 | SQLAlchemy | `sql/compiler.py:1392` — `_values_bindparam: List[str]` in `_process_numeric()`; `name not in _values_bindparam` O(B) per bind param; O(B²) for large UPDATE/INSERT | **PATCHED** |
@ -367,6 +371,7 @@ stacks, Spark schemas — this is the dominant build cost.
| openvpn-0001 | OpenVPN | `ssl_ncp.c:272,388`; `dco.c:468` — `tls_item_in_cipher_list()` strtok O(n×m) per TLS handshake at 3 call sites; fix: pre-split array (high multiplier) | **PATCHED** |
| vlc-0001 | VLC | `src/modules/modules.c` — `module_find()` O(n) linear scan per plugin lookup; O(R×n) at resolution time (96×) | **PATCHED** |
| prometheus-0001 | Prometheus | `labels/labels.go` — `Builder.Labels()` `slices.Contains(del)` O(L×D) per label set build; fix: `map[string]struct{}` (101×) | **PATCHED** |
| prometheus-0002 | Prometheus | `rules/group.go:1090` — `dependencyMap.dependencies()` iterates all map entries calling `slices.Contains(dependents, r)` O(R×D) per rule → O(R²×D) AnalyseRules; fix: inverted `map[Rule][]Rule` (93×) | **PATCHED** |
| otel-collector-0001 | OTel Collector | `pcommon/map.go` — `Map.Get()` O(n) called inside all `Put*` constructors in O(n) build loop; fix: pre-build `map[string]int` index (75×) | **PATCHED** |
| cockroachdb-0001 | CockroachDB | `sql/opt/exec/execbuilder/` — `IndexesUsed.add()` `slices.Contains` on growing slice per plan node (248×) | **PATCHED** |
| cockroachdb-0002 | CockroachDB | `sql/opt/` — `slices.Contains` on operator list per rewrite rule application (248×) | **PATCHED** |
@ -397,6 +402,7 @@ stacks, Spark schemas — this is the dominant build cost.
| allegro5-0001 | Allegro 5 | `addons/audio/openal.c` — `al_play_sample()` free-slot linear scan O(N) per audio trigger; fix: idle-slot `Deque` (256×) | **PATCHED** |
| sdl2-0001 | SDL2 | `src/joystick/SDL_joystick.c` — `SDL_GetJoystickFromID()` O(N) linear scan per joystick event; fix: `unordered_map<ID, joystick*>` (128×) | **PATCHED** |
| grafana-0001 | Grafana | `public/app/core/utils/dag.ts` — `dfs()` visited-array `Array.includes()` O(N²) per time-range refresh; fix: `Set` (100×) | **PATCHED** |
| grafana-0002 | Grafana | `pkg/services/folder/folderimpl/folder.go:253` + `dashboard_service.go` — `slices.Contains` on growing permission UID slice inside 4 `for p := range folderPermissions` loops; O(P²) per folder/dashboard permission sync; fix: `map[string]bool` (249×) | **PATCHED** |
| clickhouse-0001 | ClickHouse | `src/Analyzer/ColumnTransformers.h` — `findReplacementExpression()` `std::find` on `replacements_names` O(C×T×R); fix: `unordered_map` index (200×) | **PATCHED** |
| duckdb-0001 | DuckDB | `src/optimizer/` — `CorrelatedColumns::AddCorrelatedColumn()` `std::find` O(n) per merge call; O(n²) `MergeCorrelatedColumns()`; fix: `column_binding_set_t` shadow set | **PATCHED** |
| rocksdb-001 | RocksDB | `lock/point/point_lock_manager.cc:791,1513,1706` — `std::find` on `LockInfo.txn_ids autovector` in 3 hot-path lock/unlock functions; O(T²) shared-lock churn | **PATCHED** |
@ -437,6 +443,7 @@ stacks, Spark schemas — this is the dominant build cost.
| spring-0003 | Spring Framework | `context/event/AbstractApplicationEventMulticaster.java` — `allListeners ArrayList.contains()` per listener add; O(L²) total (200×) | **PATCHED** |
| spring-0004 | Spring Framework | `context/event/AbstractApplicationEventMulticaster.java` — `DefaultListenerRetriever.allListeners ArrayList.contains()` same pattern (200×) | **PATCHED** |
| spring-0005 | Spring Framework | `core/annotation/AnnotationTypeMapping.java` — `aliases ArrayList.contains()` in nested while(mapping)+for(attributes) loop; O(A²×M) at boot (200×) | **PATCHED** |
| spring-0006 | Spring Framework | `webmvc/.../resource/VersionResourceResolver.java:136` — `addFixedVersionStrategy()` `patternsList.contains(prefix+p)` O(N²) at init; fix: `HashSet` (1000×) | **PATCHED** |
| micronaut-0001 | Micronaut | `inject/src/.../ClassUtils.java` — `hierarchy ArrayList.contains()` in `while(superclass)+populateInterfaces` recursive loop; O(H²) class hierarchy scan (250×) | **PATCHED** |
| micronaut-0002 | Micronaut | `core/annotation/MutableAnnotationMetadata.java` — `annotationList ArrayList.contains()` inside `for(parents)` loop; O(P×\|annotationList\|) (200×) | **PATCHED** |
| micronaut-0003 | Micronaut | `context/env/EnvironmentPropertySource.java` — `excludes/includes List.contains()` inside `for(env.entrySet())` loop; O(E×N) per environment scan (50×) | **PATCHED** |
@ -626,14 +633,17 @@ stacks, Spark schemas — this is the dominant build cost.
| flink-0002 | Apache Flink | `table/api/.../RowTypeUtils.java:43,49` — `checklist/result List<String>.contains()` in nested for+do-while; O(N×M²) field dedup (37×) | **PATCHED** |
| flink-0003 | Apache Flink | `flink-table/.../AggregateReduceGroupingRule.java:88` — `newGroupingList List<Integer>.contains()` inside for loop; O(G²) query planning (50×) | **PATCHED** |
| flink-0004 | Apache Flink | `flink-table/.../DynamicSinkUtils.java` — `updatedColumnNames List<String>.contains()+indexOf()` in schema-columns loop; O(C×U); fix: `HashSet`+`Map` (48×) | **PATCHED** |
| flink-0005 | Apache Flink | `flink-table/.../DynamicPartitionPruningUtils.java:325` — `convertDppFactSide()` `fieldNames List<String>.indexOf()+contains()` O(A×F + K×A) in dim-partition join planning; fix: `HashMap`+`HashSet` (22×) | **PATCHED** |
| nifi-0001 | Apache NiFi | `StandardControllerServiceProvider.determineEnablingOrder()` — recursive topo-sort uses `List<ControllerServiceNode>.contains()` O(S²); same structural defect as airflow/maven; fix: companion `HashSet` (16.7×) | **PATCHED** |
| artemis-0001 | ActiveMQ Artemis | `BindingsImpl.routeFromCluster()` — `idsToAckList List<Long>.contains()` inside `while (buff.hasRemaining())` per-message hot routing loop; O(R×A); fix: `HashSet<Long>` (25×) | **PATCHED** |
| pulsar-0001 | Apache Pulsar | `client/.../GetTopicsResult.java:117` — `grouped ArrayList.contains()` in for loop over topic list; O(N²) dedup (25×) | **PATCHED** |
| pulsar-0002 | Apache Pulsar | `functions/runtime/.../JavaInstanceRunnable.java:987` — `allFields List<String>.contains()` in for loop; O(F×K) schema field scan (87×) | **PATCHED** |
| kafka-0006 | Apache Kafka | `streams/.../tasks/DefaultTaskManager.java:62,105` — `lockedTasks ArrayList<TaskId>.contains()` in `assignNextTask()` per executor cycle; O(T×L) rebalance stall (76×) | **PATCHED** |
| kafka-0007 | Apache Kafka | `streams/.../StreamsPartitionAssignor.java` — `assignTasksToThreads()` `PriorityQueue.contains(task)` O(T) per consumer×task; O(C×T²) total; fix: parallel `HashSet` + `LinkedHashSet` (14-109×) | **PATCHED** |
| kafka-0008 | Apache Kafka | `clients/.../serialization/ListDeserializer.java` — `nullIndexList ArrayList<Integer>.contains(i)` O(S×N) per element in CONSTANT_SIZE deserialization loop; fix: `HashSet<Integer>` (24×) | **PATCHED** |
| pulsar-0003 | Apache Pulsar | `broker/.../persistent/PersistentTopic.java:549,1991` — `replicationClusters List<String>.contains()` in replicators loop; O(C×R) per topic check (10×) | **PATCHED** |
| pulsar-0004 | Apache Pulsar | `broker/.../persistent/PersistentTopic.java:2152` — `shadowTopics List<String>.contains()` in shadow-replicators loop; O(S×R) per check (10×) — fix mirrors NonPersistentTopic | **PATCHED** |
| pulsar-0005 | Apache Pulsar | `client/.../PartialRoundRobinMessageRouterImpl.java:73` — `partialList CopyOnWriteArrayList<Integer>.contains()` in stream filter over N partitions; O(N×L) per routing call; fix: `HashSet<Integer>` (104×) | **PATCHED** |
| spring-0001 | Spring Framework | `context/BeanFactoryUtils.java:521` — `ArrayList.contains()` in `mergeNamesWithParent()`, O(B²) over bean count | **PATCHED** |
| spring-0002 | Spring Framework | `context/ConfigurationClassParser.java:422,653` — `ImportStack extends ArrayDeque`, O(n) `contains()` per candidate | **PATCHED** |
| presto-0001 | Presto | `planner/iterative/rule/PushDownDereferences.java:206` — `ImmutableList.contains()` on `getOutputVariables()` per dereference | **PATCHED** |
@ -776,6 +786,7 @@ stacks, Spark schemas — this is the dominant build cost.
| onos-0003 | ONOS (SDN) | `utils/misc/` — `roleinfo backups ImmutableList` O(n) membership scan per topology event | **PATCHED** |
| jetty-0001 | Jetty | `jetty-http/src/main/java/.../HttpFields.java` — `QuotedCSV.getValues()` `LinkedList.contains()` O(n²); fix: `LinkedHashSet` (50×) | **PATCHED** |
| mysql-0003 | MySQL | `sql/sql_base.cc` — `setup_fields()` `std::find` O(F²) iterator recovery after `split_sum_func` growth; fix: position index map (250×) | **PATCHED** |
| mysql-0004 | MySQL | `storage/innobase/dict/dict0dict.cc` — `dict_index_find_and_set_cols()` `std::find` on `col_added/v_col_added` vectors O(F²) per field during `CREATE INDEX`/`ALTER TABLE`; fix: `unordered_set<ulint>` (99×) | **PATCHED** |
| crystal-0002 | Crystal compiler | `src/compiler/crystal/semantic/type_inference.cr` — `add_type()` dedup `Array#includes?` O(T²) per type merge; fix: `Set(Type)` shadow (400×) | **PATCHED** |
| crystal-0003 | Crystal compiler | `src/compiler/crystal/semantic/type_declaration_processor.cr:602` — `compute_non_nilable_outside_single()` `Array#includes?` O(A×N) ancestor loop; fix: `Set` before loop | **PATCHED** |
| crystal-0004 | Crystal compiler | `src/compiler/crystal/semantic/type_inference.cr` — `add_to_including_types()` `Array#includes?` O(N) inside type inclusion loop; fix: `Set(Type)` seen-set (72×) | **PATCHED** |
@ -788,6 +799,7 @@ stacks, Spark schemas — this is the dominant build cost.
| postgresql-0006 | PostgreSQL | `src/backend/optimizer/util/tlist.c` — `add_to_flat_tlist()` `tlist_member` O(T) inside `foreach(exprs)`; O(E×T) total; fix: pointer-identity seen-set | **PATCHED** |
| postgresql-0007 | PostgreSQL | `src/backend/optimizer/util/tlist.c` — `add_new_columns_to_pathtarget()` `list_member` O(T) inside `foreach(exprs)`; fix: `HashSet` from target->exprs | **PATCHED** |
| postgresql-0008 | PostgreSQL | `src/backend/optimizer/path/joinpath.c` — `paraminfo_get_equal_hashops()` `list_member` O(N) dedup in foreach loop; O(N²) Memoize path planning; fix: `Bitmapset` | **PATCHED** |
| postgresql-0009 | PostgreSQL | `src/backend/catalog/pg_inherits.c` — `typeInheritsFrom()` BFS `list_member_oid(visited, this_relid)` O(V²) per type cast at query parse time; fix: `HTAB` hash set (99×) | **PATCHED** |
| wireshark-0001 | Wireshark | `epan/dfilter/dfilter.c` — `dfilter_interested_in_field()` int[] linear scan per color-filter per capture; fix: keep the compile-time `GHashTable` at runtime (O(1)) | **PATCHED** |
| elasticsearch-0002 | Elasticsearch | `ingest/src/main/java/.../IngestDocument.java` — `appendFieldValue()` `List.contains()` O(n) per append in bulk ingest pipelines; fix: `HashSet` shadow | **PATCHED** |
| opensearch-0001 | OpenSearch | `server/src/main/java/.../ImmutableCacheStatsHolder.java` — `filterLevels()` O(n²) `levelsList.contains()` per stat level; fix: `HashSet` | **PATCHED** |
@ -858,7 +870,7 @@ where D is the depth of the diamond chain. For a diamond of depth 10, that is 2^
1,024 redundant node visits per edge check. Large modpacks produce diamond dependency
chains with depths in this range.
**578 sites patched. 3 deferred (PostgreSQL -0001/-0005; MongoDB -0005 IndexBounds). 1 fixable-upstream (Erlang OTP — sltab patch). 1 fixable-pending (swipl-0003 attr_unify_hook). 2 not-worth-fixing. 3 unpatched (Minecraft, Create mod). 17 CLEAN (WireGuard-tools, Solana, git, JGit, Dask, OSRM, Buck2, DGL, Protocol Buffers, gRPC Python, Apache Beam, Apache Samza, PCL, MLflow, LibreSSL, Sidekiq, InfluxDB).**
**590 sites patched. 3 deferred (PostgreSQL -0001/-0005; MongoDB -0005 IndexBounds). 1 fixable-upstream (Erlang OTP — sltab patch). 1 fixable-pending (swipl-0003 attr_unify_hook). 2 not-worth-fixing. 3 unpatched (Minecraft, Create mod). 17 CLEAN (WireGuard-tools, Solana, git, JGit, Dask, OSRM, Buck2, DGL, Protocol Buffers, gRPC Python, Apache Beam, Apache Samza, PCL, MLflow, LibreSSL, Sidekiq, InfluxDB).**
---