Skip to content

Latest commit

 

History

History
101 lines (81 loc) · 4.15 KB

File metadata and controls

101 lines (81 loc) · 4.15 KB

Empty-linter topology and readiness

Implemented product paths

stdlib/ByteDetector.affine ──(AffineScript, build-only)──► src/core/ByteDetector.bun.js
                                                              (legacy minimum core)
src/core/UnicodeData.bun.js ──► src/core/ScalarScanner.bun.js ──┐
src/core/Render.bun.js                                          │
src/core/ScannerIO.bun.js  ── enumeration, fatal UTF-8, routing │
src/containers/ (zip · ooxml · pdf · hidden-style)              ├─► scanFile()
src/core/Settings.bun.js  ── config.ncl (Ni subset) / .json     │
                                                                ▼
                              ┌────────────── scripts/empty-lint-ci.js (stable CI gate)
                              ├────────────── src/cli/Main.bun.js (audit · show · plan ·
                              │              approve · apply · verify · tui)
                              └────────────── src/tui/ (interactive UI)
                                                                │
              Repair state machine (src/core/Repair.bun.js) ◄───┘
              audit → propose → approve → apply-to-copy → verify → refuse
                                                                │
              schemas/ (diagnostic · repair-plan · provenance · rescan)
              scripts/sync-downstream.js ─► userscript + VS Code extension

Every record the product emits is versioned JSON validated in-repo against the shipped schemas. The dogfood gate plants positive and negative controls before trusting the repository result, never suppresses scanner errors, and never modifies files.

Honest readiness

Capability Status Evidence or remaining work

Basic code-point detector (legacy minimum)

Implemented

AffineScript type-check plus its Bun test suite

Expanded detector catalogue (bidi, tags, VS, fillers, controls, zalgo)

Implemented, tested

tests/UnicodeData_test.js, tests/ScalarScanner_test.js; scalar columns, byte offsets, UTF-8 bytes, escaped context

Settings (config.ncl active + validated)

Implemented, tested

tests/Settings_test.js, tests/Cli_test.js — distinct failures for invalid values and unsupported Nickel features

Safe repair pipeline (plan/approve/apply-to-copy/verify/refuse + patch
provenance + rescan)

Implemented, tested

tests/Repair_test.js, tests/IetfIncident_test.js

Machine-readable schemas

Implemented, tested

schemas/; real emitted records validated in tests/SchemaValidator_test.js

TUI (scan/filter/inspect/plan/approve/apply-to-copy)

Implemented; IO shell thin

Pure model + renderer + key decoder tested in tests/Tui_test.js

Container detectors (OOXML/PDF/spreadsheet/hidden styles)

Implemented, tested

tests/Containers_test.js with in-memory synthetic documents

Repository audit gate (stable entry point, exit codes)

Implemented

Seven+ end-to-end controls in tests/empty_lint_ci_test.js plus expansion

Downstream drift control (userscript, VS Code extension)

Implemented, gated

scripts/sync-downstream.js --check in CI

IETF incident acceptance fixture

Implemented, tested

tests/IetfIncident_test.js (every issue-#74 bullet asserted)

Expanded catalogue in AffineScript

Not implemented

Upstream compiler work keeps the reviewed JS engine as the interim source

Idris-backed scanner/repair proof

Not demonstrated

Proof obligations must be connected to the active implementation

Computed-style / JS-driven hidden-text analysis

Not implemented

Markup detector is a documented pattern detector only

Suite integration (Spline, Cleave, ForthWall)

Proposed / proposal-only

Groove manifest records the honest statuses; no duplicate engine created

No overall completion percentage is published: combining implemented and aspirational components into one percentage would imply evidence that does not exist.