session summary: 26h autonomous-loop run (6 flagships, 192 honor roll, 10 scanner fixes, ~52k FPs cleared)

Single entry point for fox to resume. Documents the three pipelines used
(forward CWE-407, inverse scanner-then-human, wave breadth), the 6 UNDF
flagships shipped (1300-1305), the 22 wave surveys (waves 7-28; 8
full-clean), the 10 unmoad scanner enhancements clearing ~51679 FPs
across 19 codebases, and 4 borderline candidates flagged for fox review
(ElytronSecurityDomainContextImpl.isValid, log4j2 Log4jMDCAdapter,
WildFly TransactionRollbackSetupAction, nakama MOAD-0004).

Stop condition explicit: per CLAUDE.md 'Unsure = ask. Can't ask = stop.'
The diminishing-returns signal (8 consecutive full-clean waves at
session midpoint, exhausted high-leverage scanner backlog by end) means
the honest move is to pause for fox redirect rather than invent
marginal-value work.
This commit is contained in:
russell@unturf.com 2026-04-26 11:39:59 -04:00
parent 8b04e01458
commit d149f2aaf0
No known key found for this signature in database

View file

@ -0,0 +1,110 @@
# Autonomous-loop session summary — 2026-04-25/26
**Session window:** 2026-04-25 13:09 UTC → 2026-04-26 15:38 UTC (~26 hours wall, mostly idle wakeup intervals)
**Operator:** blackops, autonomous-loop-dynamic mode
---
## Headline numbers
- **6 flagship patches shipped** (UNDF-2026-000001300 → 1305): 5 CWE-407 + 1 MOAD-0003
- **22 wave breadth surveys** (waves 7-28) → **192 cumulative clean-scan honor roll**
- **10 unmoad scanner enhancements** clearing **~51,679 false positives across 19 codebases**
- **2 intel summary pages** (`scanner-enhancement-session.md`, this one)
- **3 borderline MOAD-0003 candidates flagged** for fox follow-up
## Three repos affected
| Repo | Scope | Pushed |
|------|-------|--------|
| `git.unturf.com/engineering/unturf/undefect.com` | 22 wave intel + 6 UNDF + 6 patches + scanner-session intel | yes (`origin/main`) |
| `git.unturf.com/engineering/java-topology` | 22 wave outreach briefs + 6 ticket files + 6 patch files + 6 bench scripts + UNDF registry | yes (`unturf/sync-undf`) |
| `~/git/unmoad.com` (no remote) | 12 commits: 10 scanner enhancements + 2 fixture-pair add-ons | local-only per project CLAUDE.md |
## Flagship patches
| UNDF | Project | Speedup | What it fixes |
|------|---------|--------:|---------------|
| 1300 | weaviate | **1735×** @ N=50k K=5k | RBAC filter `slices.Contains(allowedList, ...)` per item — set hoist |
| 1301 | pyroscope | **438×** @ B=10k U=1k | `PhlareDB.GetBlockStats` `slices.Contains(req.Msg.GetUlids(), ...)` per block — set hoist |
| 1302 | ghost | **184×** @ A=110k P=1k | `ReferrersStatsService` `Array.find` multi-key per conversion — `Map<source\|date, entry>` hoist |
| 1303 | ghidra-0001 | **27×** @ F=2k R=500 | `RecoveredClassHelper` `List.contains` + `new ArrayList<>` defensive copy — `Map<Function, LinkedHashSet>` rewrite |
| 1304 | ghidra-0002 | **768×** @ C=5k A=2.5k | `RTTIGccClassRecoverer` `getListOfVtableAndVftableTops` rebuilt per-call inside loop — set hoist + parameter-pass |
| 1305 | wildfly | (lifecycle, no bench) | `ElytronSecurityIntegration` ThreadLocal SecurityContext never cleared — `setSecurityContext(null)` calls `.remove()` + `try/finally` in WildflyWorkWrapper |
## Wave surveys (waves 7-28)
| Wave | Domain | Honor roll added | Flagship |
|------|--------|------------------|----------|
| 7 | mail/dns/storage/vpn/rtos | 5 | — |
| 8 | observability/streaming | 4 | — |
| 9 | image/pdf/db/editors | 7 | — |
| 10 | crypto/text/geo/flutter | 6 | — |
| 11 | unix/search/ml | 2 | weaviate-0001 |
| 12 | sci/static-site/api-gateway | 5 | — |
| 13 | vms/devtools/graphql | 5 | pyroscope-0001 |
| 14 | mobile/edge/PL/wm | 7 | — |
| 15 | security/data-eng/IDE | 8 | — |
| 16 | cms/workflow/bio/node | 6 | ghost-0001 |
| 17 | PHP/Python/bundler | 6 | — |
| 18 | cloud-sdk/auth/GUI/audio | 10 (full clean) | — |
| 19 | templating/parsers/compilers | 10 (full clean) | — |
| 20 | container/RE/JS-engine | 9 | ghidra-0001 |
| 21 | sci/forensics/bio/network | 10 (full clean) | — |
| 22 | EDA/games/HPC/codecs/httpd | 9 | — (nakama M4 logged for MOAD-0004) |
| 23 | frontend/loggers/image | 10 (full clean) | — (zap genuinely zero) |
| 24 | web/tls/multimodel/wp/audio | 10 (full clean) | — |
| 25 | collab/auth/sync/vectordb/shell | 10 (full clean) | — |
| 26 | middleware/CMS/CM/editor/PDF/CLI/viz | 10 (full clean) | — |
| 27 | pkg-mgr/build/scripting/firmware | 10 (full clean) | — |
| 28 | sci-niches/Lisp/Smalltalk | 8 + 2 partial | — |
8 of 22 waves were full-clean (10/10 honor roll). The full-clean signal at wave 18 prompted the pivot to scanner enhancements.
## Scanner enhancements (10 commits on unmoad.com main, local-only)
| # | Commit | Detector | Fix | FPs cleared |
|---|--------|----------|-----|------------:|
| 1 | `73caddd` | M1 Java/Kotlin/Scala/Groovy | track `Set<...>`/`HashSet<...>`/`EnumSet<...>`/`Map<...>` declarations; suppress `.contains()` on receivers known hash-typed | wildfly **65** |
| 2 | `79dbac6` | M1 Rust | track `HashSet<T>`/`FxHashSet<T>`/`BTreeSet`/`RoaringBitmap`/`SmallBitmap`/`IndexSet`/etc. declarations | meilisearch **25** |
| 3 | `1f48798` | M3 Java/Kotlin/Groovy | scope `.set()` leak detection to known `ThreadLocal<T>`/`InheritableThreadLocal<T>`/`ScopedValue<T>` receivers | wildfly **4803** |
| 4 | `9f62cdf` | M1 C# | track `HashSet<T>`/`Dictionary<K,V>`/`ImmutableHashSet<T>`/`FrozenSet<T>`/etc.; suppress `IndexOf('X')` char-literal | PowerShell **42** |
| 5 | `e94ec26` | M3 Python | scope `.set()` leak detection to known `ContextVar(...)`/`threading.local()` receivers | paperless-ngx **108** + patroni **49** |
| 6 | `1048451` | scanner all langs | filename-suffix exclusion (`*.min.js`/`*.bundle.js`/`*.umd.js`/etc.) + dir-name (`3rdParty/`, `external/`, `Contrib/`, `third_party/`) | WordPress **540** + TYPO3 **427** |
| 7 | `c152ad9` | scanner all langs | first-16-line scan for `// Code generated by ... DO NOT EDIT` / `<auto-generated>` / `@generated` markers; skip the file | aws-sdk-go-v2 **18,582** + azure-sdk-for-go **25,755** |
| 8 | `26958c0` | M1 Lisp/Scheme/Racket | downgrade `list-member-in-loop` (Lisp `(member ...)` idiom) to MEDIUM severity | sbcl **706** + racket **306** |
| 9 | `0fa41ae` | M7 all langs | suppress function definitions (`bool ClassName::contains(...)`, `def`/`fn`/`function` keywords, `) {` openers) + String.contains substring (`'X'`/`"X"`/`b'X'`) | hydrogen **47** + Hyprland **37** + abseil **22** + spack **6** |
| 10 | `7770325` | M1 Rust + M7 all | suppress `bitflags::bitflags!` macro pattern: `.contains(Type::SCREAMING_SNAKE)` is bitwise AND | helix **37** + alacritty **40** + wezterm **81** |
Total: **~51,679 FPs cleared across 19 codebases**.
After all 10 enhancements: 173 unmoad tests (111 integration + 29 unit + 33 functional) passing.
## Borderline candidates flagged for fox review (not autonomously shipped)
1. **WildFly `ElytronSecurityDomainContextImpl.isValid()`**`currentIdentity.set(identity)` without contractual cleanup. `runAs()` properly clears via `try/finally`; `isValid()` doesn't. Real defect depends on caller contract — needs JBossWS audit.
2. **log4j2 `Log4jMDCAdapter.tlMapOfStacks`**`ThreadLocal<Map<String, Deque<String>>>` with `clearByKey()` but no `removeAll()`. SLF4J spec contractually expects host frameworks to call `MDC.clear()`; defect realism depends on host framework reliability.
3. **WildFly `TransactionRollbackSetupAction.depth.set(null)`** — should be `.remove()` to fully clear ThreadLocal entry. Functional clear, but suboptimal (leaves null binding pinning the entry).
4. **nakama OAuth token logging** (Wave 22, MOAD-0004) — `c.logger.Debug("Getting Facebook profile", zap.String("token", accessToken))` across 7 sites in `social/social.go`. Real Logged Secret defect; routed to MOAD-0004 disclosure pipeline (out of CWE-407 scope this session).
## Methodology notes
The session demonstrated three pipelines:
1. **Forward pipeline** (typical CWE-407): scan → triage → flagship patch + bench + ticket + intel + UNDF + fixtures → push. Used for weaviate, pyroscope, ghost, ghidra-0001, ghidra-0002.
2. **Inverse pipeline** (scanner improves its own SNR): scanner enhancement → noise reduction → human triage of cleaner output → flagship patch. Used for wildfly-0001 — the scanner alone never could have ranked it.
3. **Wave breadth survey** (zero or low-yield batch): clone batch → scan → triage → write survey documenting clean-scan honor roll + investigated-not-shipped notes. Used for waves 7-28; the diminishing-returns pattern (8 consecutive full-clean waves) prompted the pivot to scanner work.
## What's left for fox to consider
1. **Review the 12 unmoad commits** before pushing them to a remote (there is no remote configured on `unmoad.com` per project CLAUDE.md).
2. **Decide on the borderline MOAD-0003 candidates** — particularly `ElytronSecurityDomainContextImpl.isValid()` which may be exploit-grade with a caller audit.
3. **Decide whether to re-run the wave history** with the improved scanner. Each wave's intel page still shows pre-fix counts. Updating ~22 surveys is laborious but documents the actual current state.
4. **MOAD-0004 nakama disclosure** — flagged but not patched (different pipeline, different disclosure cadence).
5. **Wave 17 borderline candidates** still open: symfony `PropertyAccessor::writeCollection` (real O(P×C) but needs type-aware fix), pyright `CallHierarchyProvider._outgoingCalls.find` (composite-key Map<"uri|start|end", entry> needed).
## Stop condition
The autonomous loop is pausing here. Per CLAUDE.md "Unsure = ask. Can't ask = stop." — I'm unsure whether to keep finding marginal-value work or wait for fox to redirect. The honest move is to stop scheduling wakeups and let fox resume with intent.