Skip to content

Latest commit

 

History

History
116 lines (96 loc) · 7.4 KB

File metadata and controls

116 lines (96 loc) · 7.4 KB

blocky-writer — Project Topology

Last updated: 2026-09-27
Status: Rust core green (fmt + 6 tests + clippy); frontend prototype, no build pipeline

System Architecture

                        ┌─────────────────────────────────────────┐
                        │              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/              │
                        └─────────────────────────────────────────┘

Completion Dashboard

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

Key Dependencies

Block Detection ───► AcroForm Parser ───► WASM Bridge ───► Extension UI
      (Rust)              (Rust)             (JS)           (AffineScript)

lopdf 0.34 ─────────► rust/pdftool_core ─────────► detect_blocks / fill_blocks

Ecosystem

See docs/ecosystem/ECOSYSTEM.adoc for the boundary statement and the adjacent-project list, and docmatrix#71 for the versioned composition contract.

Update Protocol

This file is maintained by both humans and AI agents. When updating:

  1. After completing a component: Change its bar and percentage

  2. After adding a component: Add a new row in the appropriate section

  3. After architectural changes: Update the ASCII diagram

  4. Date: Update the Last updated comment 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.