Last updated: 2026-09-27 Status: Rust core green (fmt + 6 tests + clippy); frontend prototype, no build pipeline
┌─────────────────────────────────────────┐
│ USER / BROWSER │
│ (Firefox / PDF Forms) │
└───────────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ EXTENSION UI LAYER │
│ (AffineScript — prototype) │
│ ┌───────────┐ ┌───────────────────┐ │
│ │ Popup UI │ │ Content Script │ │
│ └─────┬─────┘ └────────┬──────────┘ │
└────────│─────────────────│──────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────┐
│ BACKGROUND SERVICE │
│ (AffineScript — prototype) │
└───────────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ CORE PROCESSING (WASM) │
│ (Rust pdftool_core, AcroForms) │
└───────────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ DATA LAYER │
│ (IndexedDB, Local Storage) │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ REPO INFRASTRUCTURE │
│ .machine_readable/ Containerfile │
│ .github/workflows/ wiki/ │
└─────────────────────────────────────────┘
Read this as what exists and is verified, not as what is written down. The AffineScript layers are prototypes: the sources exist, but there is no compiler configuration, no package manifest and no bundle pipeline in this checkout, so there is nothing to build, run or release. Percentages below reflect working, verified code — not the presence of files.
COMPONENT STATUS NOTES ───────────────────────────────── ────────────────── ───────────────────────────────── EXTENSION LAYERS Popup UI (AffineScript) ██░░░░░░░░ 20% src/popup.affine prototype; no build Background Script ██░░░░░░░░ 20% src/background.affine prototype Content Script █░░░░░░░░░ 10% src/content.affine prototype Extension bundle pipeline ░░░░░░░░░░ 0% deno.json removed in #43; no toolchain CORE (RUST/WASM) pdftool_core (WASM) ████████░░ 80% detect_blocks + fill_blocks, 6 tests green AcroForm Writeback ████████░░ 80% Tx / Ch / Btn only; no Sig Ruled-line & cell detection ░░░░░░░░░░ 0% NOT IMPLEMENTED — the "hand spacing" case Error Taxonomy ██████████ 100% 20 stable BW_* codes REPO INFRASTRUCTURE Rust CI (fmt/test/clippy) ██████████ 100% ci.yml rust-core job — green Lock Sync Gate ██████████ 100% lock-sync-gate.yml — green on main Documentation ████████░░ 80% README/TOPOLOGY/wiki corrected 2026-09-27 .machine_readable/ ██████████ 100% STATE.a2ml tracking Containerfile ██████████ 100% Reproducible dev env ───────────────────────────────────────────────────────────────────────────── OVERALL: █████░░░░░ ~50% Rust core ready; extension not release-ready
Block Detection ───► AcroForm Parser ───► WASM Bridge ───► Extension UI
(Rust) (Rust) (JS) (AffineScript)
lopdf 0.34 ─────────► rust/pdftool_core ─────────► detect_blocks / fill_blocks
See docs/ecosystem/ECOSYSTEM.adoc for the boundary statement and the
adjacent-project list, and
docmatrix#71 for the
versioned composition contract.
This file is maintained by both humans and AI agents. When updating:
-
After completing a component: Change its bar and percentage
-
After adding a component: Add a new row in the appropriate section
-
After architectural changes: Update the ASCII diagram
-
Date: Update the
Last updatedcomment at the top of this file
Progress bars use: █ (filled) and ░ (empty), 10 characters wide.
Percentages: 0%, 10%, 20%, … 100% (in 10% increments).
Rule of honesty: a bar describes working, verified code. A file that
exists but cannot be compiled, run or tested is 0%, however large it is. The
deno.json deletion in #43 (2026-08-24) is why the extension layers are low
despite having sources.