Common failure modes

Eleven patterns that recurred across the 44 assessed repos, counted exactly where a count could be reconciled, with named instances. These are the #2 practitioner question in one scroll: what goes wrong when one person directs an agent swarm at a clean-room rewrite. Every instance links to its brief and, from there, to the full packet.

Assessors: the protocol is RULEBOOK.md  ·  Builders: the runnable kit is starter-kit/  ·  Researchers: the suite synthesis starts at synthesis/00-overview.md

Section map. This page publishes the cross-suite pattern catalog held in synthesis/negative-patterns.md at the zip root (patterns P1 through P11, each carried with its evidence tier and confidence grade, counted exactly where a count could be reconciled, with named instances). The catalog is cited by path, not copied; the synthesis file that ships with the site is synthesis/00-overview.md. Tier labels follow RULEBOOK.md §1.

Six definitions. NODUS is the program's four-ring verdict scale (Invest, Pilot, Explore, Monitor) assigned per assessment packet. TRL is technology readiness level, scored 1 to 9 per packet. CI is continuous integration: the project's automated test runs (GitHub Actions or equivalent). The pin is the exact commit the assessment froze on; every claim is evaluated at the pin, not at HEAD. The rider is the license clause withholding all rights, including benchmarking and testing, from OpenAI, Anthropic, their affiliates, and anyone acting for them. Bus factor is how many people can leave before the project stalls; it is 1 for every repo here.
11 patterns Counts reconciled against the 44 packets Named instance per repo where the pattern applies

Tier labels: [Verified] confirmed by direct inspection · [CI-observed] observed executing on live CI · [Maintainer claim] asserted by the maintainer, not independently executed · [External] independent sources · [Inference] the analyst's judgment. Confidence: High / Medium / Low.

P1Bus factor 1

44/44 [Verified, High]

Every packet reports a single human maintainer with no second committer, no foundation, no succession plan. This is the one truly universal structural fact in the corpus. It is distinct from P3: bus factor is observed from commit authorship; P3 is a stated policy.

P2The OpenAI/Anthropic license rider

38/44 [Verified, High]

The non-OSI MIT+OpenAI/Anthropic rider withholds all rights, including benchmarking, testing, analyzing, and indexing, from OpenAI, Anthropic, their affiliates, and anyone acting for them. Breach typically means automatic termination plus a duty to destroy all copies (e.g. frankensim, frankenpandas). The rider was added after plain MIT (no license, then plain MIT on 2026-01-21, then the rider on 2026-02-21, then suite-wide enforcement) [Maintainer claim, High]. No direct maintainer rationale or legal-enforceability argument was found in the writing; anti-training intent is [Inference, Medium], not a maintainer statement.

Exceptions: franken_agent_detection is plain MIT with no rider (1/44), and five repos have no LICENSE or no operative grant (5/44): beads-for-frankentui, beads_for_franken_engine, franken_native_capsule, frankensim_website, frankensqlite_website.

P3Explicit refusal of outside contributions

19/44 [Maintainer claim, High]

Not inferred from bus factor or contribution files. Canonical wording (frankenpandas README): "I do not accept outside contributions for any of my projects… I'll have Claude or Codex review submissions via gh" [Verified, High]. Named: asupersync, franken_agent_detection, franken_code_browser, franken_lean, franken_manim, franken_markdown_website, franken_nlp, franken_ocr, franken_snowflake, franken_tts, frankenfs, frankenjax, frankenpandas, frankensim, frankensim_website, frankensqlite, frankensqlite_website, frankenterm, frankentui_website.

P4Documentation, status, and evidence drift

44/44 [Verified, High]

Framed broadly: README-vs-tree, badge-vs-CI, status-page-vs-pin, count staleness, release-note-vs-artifact. The program's own counter-machinery (franken_markdown's claims.tsv gate, franken_engine's claim matrix, frankengit's auto-demotion, franken_node's honesty manifest) has not stopped the pattern anywhere, including in the projects that built the machinery. One named instance per project:

Show all 44 named instances
  • asupersync — own drift audit found two hits (ecosystem tagline disproven; baseline.json drift)
  • beads-for-frankentui — drift ledger: 3,696 vs 3,700 counts; stale CHANGELOG file table
  • beads_for_franken_engine — "Live Dashboard" headline vs 197-day-stale data
  • franken_agent_detection — README/mod.rs say "15 connectors"; tree has 34 slugs, 32 connectors
  • franken_alignment — README present-tense/spec marketing vs pinned reality
  • franken_code_browser — IMPLEMENTATION_STATUS.md eight days stale at a ten-day-old tree
  • franken_drone_geometry_reconstruction — README/IMPLEMENTATION_STATUS say "28 members"; tree has 30
  • franken_engine — "Code Surface At A Glance" table stale on every count one month after verification
  • franken_lean — README "note on tense" confesses present-tense target sold as present state
  • franken_manim — README written in present tense as if the 1.0 design were realized; stale release summary
  • franken_markdown — 146,322 src lines at HEAD vs ~138,500 at the v1 draft's HEAD days apart
  • franken_markdown_website — Lab Notes strip "0.3.5" vs 0.4.2 wired vs 0.4.1 live
  • franken_native_capsule — nonexistent repository URL; stale repository URL
  • franken_networkx — README a drift source: tie-break 13→12, fuzz targets 33→34, delegation table, coverage matrix
  • franken_nlp — README/status-surface drift; present-tense problem
  • franken_node — benchmark fixtures reference franken_node "0.9.0" (no such release); v0.1.0 targets earlier commit
  • franken_numpy — README badge "G1 green" while CI fails at the G1 clippy gate at the pin [CI-observed, High]
  • franken_ocr — v0.8.0 badges vs v0.9.0 reality; "13–17 MB" binaries are 20.6–28.5 MB
  • franken_overlap — README present-tense spec; unmeasured superlatives
  • franken_remote — README "Develop and verify" stale on structure
  • franken_snowflake — badge "read + write live-success" vs in_progress proof bead
  • franken_surveillance_system — README "does not yet acquire camera feeds" contradicted by shipped code
  • franken_threed — README claims "no implementation" on a 217k-line tree
  • franken_tts — README still lists killed speculative-drafting in payoff; badge 0.1.9 vs Cargo.toml 0.1.10
  • franken_whisper — repo description "107K lines, 2000+ tests, zero unsafe" vs 365,978 lines and 33 unsafe blocks; CHANGELOG scope ends 2026-08-24
  • frankenfs — CHANGELOG scope window ends 2026-08-19, HEAD 2026-09-22; parity/manifest staleness
  • frankengit — crate count 47→49 and LOC drift between packet drafts days apart; lockfile newer than profile doc
  • frankengraphdb — README-vs-code drift class
  • frankenjax — README contradicts tree: 118 vs 162 primitives, 15 vs 17 crates
  • frankenlibc — drift instances documented in packet §4; badge/status vs pin
  • frankenmermaid — README internally inconsistent
  • frankenpandas — four README spots stale; two DISCREPANCIES.md entries stale
  • frankenredis — README counts 13 crates vs 16 at pin; "every component forbids unsafe" false
  • frankenscipy — README says 10,056 tests (10,174 counted); "not yet published" vs published
  • frankensearch — AGENTS.md still says "Tantivy BM25", stale since the 2026-09-01 Quill ruling
  • frankensim — 880 tracked test files vs 1,082 on disk 11 hours after inventory regeneration
  • frankensim_website — copy lags the code
  • frankensqlite — project-structure tree lists fsqlite-types at "2,800+ LOC, 64 tests" vs actual
  • frankensqlite_website — "26-crate workspace" vs 28 counted; staleness enforced by its own tests
  • frankensympy — README "green workspace tests" vs 786 consecutive red runs [CI-observed, High]
  • frankenterm — count stamps lag core LOC by ~50% (measured by the project's own stamper)
  • frankentorch — drift a structural liability at 6,305 commits
  • frankentui — phantom v0.9.0: CHANGELOG claims release + crates.io 0.9.0; reality v0.8.0 / crates.io 0.7.0 [External, High]
  • frankentui_website — "12 Workspace Crates" vs kernel's 20 at HEAD; "V0.1.1 Alive on Crates.io" is February truth

P5CI that cannot certify the pin

42/44 [CI-observed, High]

Only frankenscipy (G1–G9 green at pin) and franken_threed (green at pin plus analyst re-run) have public CI green at the assessed commit: 2/44. The other 42 split as follows. Narrow green lanes inside red projects (frankenfs's Artifact Gates, franken_snowflake's dependency-admissibility gate, frankenpandas's 15/19 green jobs) do not change the project verdicts.

P6Release artifact missing or not covering the pin

29/44 [External, High]

P7Zero independent validation

44/44 [External, High]

No packet found a third-party benchmark, code review, or production deployment of the assessed project, within the recall limits of the packet surveys. Partial external signals that are not validation: asupersync has registry-scale distribution (318,241 crates.io downloads, 78 reverse-dependency crate versions, some suite-internal); franken_agent_detection has 21,189 downloads and a downstream integration (CASS, same maintainer); several projects show trace downloads or stars (e.g. franken_markdown 104 stars/151 downloads, franken_ocr 2–81 per binary, frankenscipy 11–45 per crate). Distribution is not validation, and a downstream integration by the same maintainer is not independent.

The maintainer's own writing argues internal guardrails should not be trusted and demands external hard evidence (the 2024 alignment essays) [Maintainer claim, High], while the suite's negative evidence is almost entirely self-published. Credit the candor; do not treat it as independent validation [Inference, High].

P8Negative-evidence ledger culture (exact count declined)

program-wide; n/44 declined as unreconciled [Verified, High]

Publishing killed findings is the suite's signature honesty move. Largest counted: franken_numpy (67,641 lines), frankenpandas (44,086), frankenscipy (44,078), frankentorch (42,708), frankenlibc (41,205), franken_networkx (37,116), franken_whisper (26,846), frankenredis (26,485). Typed variants: frankengit (34 rows, 13 required classes), frankenmermaid (726 rows, mandatory A/A nulls). Thin end: franken_surveillance_system (48 lines). Two briefs estimated 22 and 23 packets; only 9 assessments assert a counted ledger size, so no exact n/44 is published. The ledger is shared culture; the schema discipline (required entry classes, prose/TSV correspondence, fail-closed finalizers) is not.

P9Velocity structurally exceeding review depth

named instances [External, High]

Commit velocity outruns any human's capacity to review it, and in one quantified case outruns the project's own audit machinery. Named instances:

  • franken_engine — 96 commits in one day; the bead journal (3,911 closed) is the only institutional memory
  • franken_code_browser — 206 commits across 2026-09-17→22, peaking at 101 in one day
  • frankensim — 999 commits in its first five days; 6,545 contributions in ~11 weeks. The frankensim packet quantifies the consequence: 202 test files outpaced the honesty inventory in 11 hours; development velocity exceeds audit velocity [Inference, Medium]
  • frankentorch — 6,305 commits, 6,104 by the maintainer
  • frankenpandas — 8,621 commits with agent co-authorship trailers
  • frankenterm — 21 releases; count stamps lag LOC by ~50%

P10The agent co-authorship irony

named instances; suite-wide prevalence declined [External, High]

The rider bars OpenAI/Anthropic (and anyone acting for them) from the code, while the commit record shows Claude-family co-authorship at scale: frankenredis (162/449 recent commits, 158 Claude-family), frankenpandas (398 Co-Authored-By hits, 394 Claude-family), frankenjax (52/100), frankentorch (~45%), franken_threed (agent-authored at scale with named personas), franken_numpy ("single human maintainer plus an agent swarm"), franken_tts (release notes carry "Generated with Claude Code" markers). Exact suite-wide prevalence is declined (trailer conventions lapse; windows differ). The maintainer's writing frames agents as the implementation workforce under human orchestration [Maintainer claim, High]; the rider makes the two leading agent-builders Restricted Parties. Both facts are stated; the tension is not resolved here.

P11Sibling-constellation coupling

named instances [Verified, High]

asupersync is the suite's runtime substrate: frankensqlite runs storage I/O on asupersync 0.5.0; frankensearch builds its core on it; frankensim locks it via [patch.crates-io] with xtask check-constellation verifying the sibling's git head; frankengit's lockfile resolves asupersync 0.5.0 while its integration profile plans against 0.4.x; franken_node adopts an asupersync transport; frankensympy cannot cold-build partly because path deps point at sibling checkouts (../asupersync, ../franken_numpy-pin); frankenfs's ledger failure cascades from a FrankenSQLite bug. frankenredis is the deliberate counter-case: it evaluated and rejected asupersync. Single-node cut-set: one maintainer's context switch freezes the substrate under the whole constellation [Inference, Medium].