|
1 | 1 | ;; SPDX-License-Identifier: PMPL-1.0-or-later |
2 | | -(state (metadata (version "0.2.0") (last-updated "2026-02-14") (status active)) |
| 2 | +(state (metadata (version "0.3.0") (last-updated "2026-02-14") (status active)) |
3 | 3 | (project-context |
4 | 4 | (name "presswerk") |
5 | 5 | (purpose "High-assurance local print router and server for iOS/Android") |
6 | | - (completion-percentage 65)) |
| 6 | + (completion-percentage 75)) |
7 | 7 | (components |
8 | | - (component "presswerk-core" (status "complete") (description "Shared types, errors, config — 244-line types, 70-line errors")) |
9 | | - (component "presswerk-security" (status "complete") (description "age encryption, SHA-256 integrity, Ed25519 certs, SQLite audit trail — 14 tests")) |
10 | | - (component "presswerk-document" (status "complete") (description "PDF read/merge/split/rotate, image processing, scan enhancement, OCR — 7 tests")) |
11 | | - (component "presswerk-print" (status "complete") (description "Full IPP/1.1 server (1936 lines), IPP client, mDNS discovery, SQLite job queue — 40 tests")) |
| 8 | + (component "presswerk-core" (status "complete") (description "Shared types, errors, config — 248-line types, 70-line errors")) |
| 9 | + (component "presswerk-security" (status "complete") (description "age encryption, SHA-256 integrity, Ed25519 certs, SQLite audit trail — 14 tests, 3 benchmarks")) |
| 10 | + (component "presswerk-document" (status "complete") (description "PDF read/merge/split/rotate, image processing, scan enhancement with perspective correction, OCR — 7 tests, 1 benchmark")) |
| 11 | + (component "presswerk-print" (status "complete") (description "Full IPP/1.1 server (2170 lines), IPP client, mDNS discovery, SQLite job queue — 47 tests, 3 benchmarks")) |
12 | 12 | (component "presswerk-bridge" (status "unverified") (description "iOS objc2 (894 lines) + Android JNI (973 lines) — detailed but untested on device")) |
13 | | - (component "presswerk-app" (status "functional") (description "Dioxus UI with 10 pages, routing, AppServices layer, settings")) |
| 13 | + (component "presswerk-app" (status "functional") (description "Dioxus UI with 10 pages, routing, AppServices layer with fallback mode, settings")) |
14 | 14 | (component "abi-proofs" (status "complete") (description "5 Idris2 files: Types, Protocol, Encryption, Layout, Bridge — no Admitted")) |
15 | | - (component "ffi-zig" (status "complete") (description "C-compatible FFI with 5 tests — lifecycle, transitions, hash, version"))) |
| 15 | + (component "ffi-zig" (status "complete") (description "C-compatible FFI with 5 tests — lifecycle, transitions, hash, version")) |
| 16 | + (component "benchmarks" (status "complete") (description "Criterion benchmarks for security (3), print (3), document (1) — 7 total")) |
| 17 | + (component "ci-workflows" (status "complete") (description "21 GitHub Actions workflows including security.yml, release.yml, bench.yml")) |
| 18 | + (component "containerfile" (status "complete") (description "Multi-stage chainguard-based Containerfile for headless print server")) |
| 19 | + (component "trustfile" (status "complete") (description "Haskell-based security verification — 7-step hyperpolymath standard"))) |
16 | 20 | (metrics |
17 | | - (rust-files 43) |
18 | | - (rust-lines 10219) |
| 21 | + (rust-files 46) |
| 22 | + (rust-lines 10749) |
19 | 23 | (idris2-files 5) |
20 | 24 | (zig-files 3) |
21 | | - (unit-tests 61) |
| 25 | + (unit-tests 68) |
| 26 | + (benchmarks 7) |
| 27 | + (workflows 21) |
22 | 28 | (clippy-warnings 0) |
| 29 | + (cargo-audit-vulnerabilities 0) |
23 | 30 | (panic-attack-critical 0) |
24 | 31 | (panic-attack-high 4) |
25 | 32 | (panic-attack-medium 5)) |
26 | 33 | (current-position |
27 | | - (phase "Phase 7 — Production Hardening") |
28 | | - (milestone "Core implementation complete, formal verification done, doc storage implemented") |
| 34 | + (phase "Phase 8 — Release and Packaging") |
| 35 | + (milestone "Production hardening complete, benchmarks added, CI/security workflows deployed") |
29 | 36 | (next-actions |
30 | | - ("Test iOS bridge on device/simulator (requires macOS + Xcode)" |
| 37 | + ("Create v0.1.0 release tag and GitHub release" |
| 38 | + "Push to GitLab mirror" |
| 39 | + "Test iOS bridge on device/simulator (requires macOS + Xcode)" |
31 | 40 | "Test Android bridge on device/emulator (requires NDK)" |
32 | | - "Add TLS to IPP server (rustls cert already generated)" |
33 | | - "Add rate limiting to IPP server" |
| 41 | + "Migrate to post-quantum crypto standard (Argon2id, SHAKE3-512, Kyber-1024)" |
34 | 42 | "Apple Developer Team ID for iOS signing"))) |
35 | 43 | (blockers-and-issues |
36 | 44 | (blocker "iOS bridge never compiled on target — need macOS + Xcode") |
37 | 45 | (blocker "Android bridge never compiled on target — need NDK") |
38 | 46 | (blocker "Dioxus.toml team_id empty — need Apple Developer account") |
39 | 47 | (note "Desktop dev mode works via stub bridge") |
40 | | - (note "All 4 panic-attack High findings are unavoidable FFI unsafe — covered by Bridge.idr proofs"))) |
| 48 | + (note "All 4 panic-attack High findings are unavoidable FFI unsafe — covered by Bridge.idr proofs") |
| 49 | + (note "14 cargo audit warnings are unmaintained GTK3 transitive deps from dioxus-desktop — not actionable") |
| 50 | + (note "Crypto migration: SHA-256 -> SHAKE3-512, Ed25519 -> Ed448+Dilithium5, X25519 -> Kyber-1024"))) |
0 commit comments