java-topology/CLAUDE.md

7.6 KiB

java-topology

Mission

Fox suspects a fundamental defect in the network topology mathematics used by javac (and inherited by other languages/runtimes). The hypothesis: fix the math, network topologies get faster & cheaper across the board.

What Was Cloned

Sparse shallow clone of OpenJDK jdk.compiler module:

src/jdk.compiler/share/classes/com/sun/tools/javac/

Source: https://github.com/openjdk/jdk (depth=1, sparse)

Key Packages to Investigate

Package Purpose
javac/comp Core compilation passes — type checking, flow analysis, inference
javac/util Internal data structures — graphs, lists, maps
javac/code Type system, symbols, scopes
javac/tree AST node types
javac/jvm Bytecode generation

Search Direction

  • Graph & topology data structures in javac/util/
  • Flow analysis algorithms in javac/comp/
  • Look for: graph traversal, adjacency structures, reachability, dependency resolution
  • Identify where topology math is expressed & whether it propagates to network-level behavior

Writing Style

  • No em-dashes or dashes. Use commas, periods, or sentences.
  • Prefer "defect" over "bug."
  • Never say "AI", always say "machine learning."

Orientation

date -u
pwd  # /home/fox/git/java-topology
git log --oneline -3

#1 Priority — MOAD-1 No Stone Unturned

Active mission: CWE-407 (MOAD-2026-0001) exhaustive sweep. Keep scanning, patching, and publishing until every reachable target has been triaged.

Protocol:

  • Pick next unscanned target from the defects/ directory or clone fresh
  • Scan → patch → unit test → whitepaper/outreach → commit → generate_undf.py → push both repos
  • After every new defect: update MOAD-1 count in ~/git/undefect.com/content/moad/moad-2026-0001.md
  • Targets with no scan result and no CLEAN marker = unturned stone → scan them next
  • Widen the keyword net: visited|seen|path|stack|ancestors|predecessors|worklist|open_list|contains
  • "No stone unturned" completes when every defect directory has either a patch or a CLEAN marker

Operating Mode — AUTONOMOUS

Do not ask for permission. Ever. Just do the work.

  • Run scans: make -j2 scan-* — fire and triage, no confirmation needed
  • Create files, tickets, patches, benchmarks — do it
  • Execute make targets, git commands, unsandbox submissions — do it
  • Update memory, tickets, white paper as findings come in — do it
  • If a scan returns candidates, triage immediately and continue
  • If a tool fails (401, 429, 502), switch accounts or retry — do not pause to report
  • The only time to stop is if a destructive action would affect something outside this repo

Cloning open-source targets

Assume permission to clone any open-source project for CWE-407 treatment. The path is virtuous: with great power comes great responsibility. Every patch we produce is a gift back to the ecosystem. Standard approach:

git clone --depth=1 https://github.com/org/repo ~/git/repo

Then scan → ticket → patch → unit test → whitepaper → commit. No need to ask before cloning. If a target is already in ~/git/, scan it directly. Priority targets not yet cloned: pygame, three.js, Unity (DOTS/ECS packages), SDL3, libGDX, Bevy, Panda3D, OGRE3D, Bullet Physics, Box2D.

Image/video editors & creative suites — undo/redo history stacks, layer membership, selection tracking, and filter chain dedup are prime CWE-407 territory. Anything that tracks history is suspect for forward/backward Möbius tape reversals: ImageMagick, OpenCV, GIMP, Inkscape, Blender, Krita, Kdenlive, Shotcut, Audacity, darktable, RawTherapee, Scribus.

Office suites — document model undo/redo, style inheritance scanning, cell dependency tracking, formula evaluation visited sets: LibreOffice (core, Calc, Writer, Impress), Apache OpenOffice, OnlyOffice, Calligra.

BitTorrent clients — peer/piece/tracker list membership: libtorrent, qBittorrent, Transmission, Deluge, aria2.

Credential priority: ~/.unsandbox/accounts.csv — use --account 1 (russ-test) and --account 0 (portal-playground) for parallel -j2 runs. No env vars needed.

No stone unturned complete as of 2026-03-29. All 320 defect directories have a patch or CLEAN marker. 629 confirmed sites, 571 UNDF assigned. Next wave: deeper scans on single-defect targets (allegro5, caddy, ceph, grafana, etc.) or clone new targets not yet in defects/.

UNDF Numbering System

Every defect in this repo gets a UNDF-2026-XXXXXXXXX identifier (9-digit, covers 999,999,999 entries).

Lockfile

~/git/java-topology/UNDF-REGISTRY.json — source of truth. Maps defect-id → UNDF-2026-XXXXXXXXX. Never edit manually. Never re-sort. IDs are permanent once assigned.

When you add a new defect

Run the generator from ~/git/undefect.com/:

cd ~/git/undefect.com && python3 generate_undf.py

This will:

  1. Scan all defects/*/patch/*.patch for new defect IDs
  2. Append new UNDF numbers to UNDF-REGISTRY.json (existing numbers never change)
  3. Stamp each new patch with # UNDF: UNDF-2026-XXXXXXXXX header (idempotent)
  4. Generate new content/undf/undf-2026-XXXXXXXXX.md posts
  5. Regenerate content/undf-registry.md index

Then commit both repos:

# java-topology — lockfile + stamped patches
cd ~/git/java-topology
git add UNDF-REGISTRY.json defects/
git commit -m "undf: assign UNDF numbers, stamp patches"
git push unturf master

# undefect.com — new posts + updated registry
cd ~/git/undefect.com
make html
git add -A
git commit -m "undf: N new UNDF posts (UNDF-2026-XXXXXXXXX through UNDF-2026-XXXXXXXXX)"
git push

Current counts (update when generator runs)

813 assigned | 813 UNDF posts | last run: 2026-03-30

Patch stamp format

# UNDF: UNDF-2026-000000001
--- a/path/to/file

Generator is idempotent — safe to re-run at any time.

Whitepaper Build Rules

Always use the Makefile to build PDFs. Never call pandoc directly outside the Makefile.

make -C whitepaper              # build all PDFs (full paper + minecraft + outreach)
make -C whitepaper pdf-cwe407   # full CWE-407 paper only
make -C whitepaper pdf-minecraft # minecraft enterprise paper only
make -C whitepaper pdf-outreach  # all 14 outreach briefs + MD5SUMS

MD5 checksums: After any PDF generation, MD5SUMS must exist next to the PDF output.

  • Outreach briefs: whitepaper/outreach/MD5SUMS (auto-generated by make pdf-outreach)
  • Full paper / minecraft: generate manually with md5sum *.pdf > MD5SUMS in whitepaper/
  • Commit MD5SUMS alongside the PDFs — they are the integrity proof for distribution.

Enriched-Minecraft Benchmarks

Three tiers:

make bench-three-tier       # run all three, print summary table
make bench-unpatched        # control: defect present, ~19s reload
make bench-mitigated        # same game, fixed, ~3s reload
make bench-enriched         # D=48/1000NS/32xrefs — new territory, starts clean

Human play test (server stays up, Ctrl-C to stop):

make play-unpatched         # localhost:25565  — feel the lag
make play-mitigated         # localhost:25566  — same game, responsive
make play-enriched          # localhost:25567  — enriched-minecraft experience

The "enriched" tier is the killer demo: a modpack with D=24 diamond tag chains and 300 namespaces is a configuration that does not exist in the wild today — vanilla StackOverflows during world load before you even get to play. On patched it starts fine.

Domain: unrichment.com — register manually. Same un- prefix as undefect.com, plays on "enriched uranium", positions the brand for the enriched-minecraft demo. Secure before publishing the whitepaper.