From d0bdbaa1ed76dfbf3211bb43eee48c49cc4fd448 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 22 Jun 2026 13:12:27 +0400 Subject: feat: implement FParkan architecture foundation Add the modular fparkan workspace, domain crates, adapters, apps, xtask policy/CI, acceptance evidence, and licensed corpus gates for the macOS-focused roadmap foundation. --- adr/ADR-0001-modular-monolith.md | 5 +++++ adr/ADR-0002-behavior-not-abi.md | 5 +++++ adr/ADR-0003-raw-and-interpreted-data.md | 5 +++++ adr/ADR-0004-synthetic-and-licensed-tests.md | 5 +++++ adr/ADR-0005-deterministic-reference-runtime.md | 5 +++++ adr/ADR-0006-error-policy.md | 5 +++++ adr/ADR-0007-safe-sdl-opengl.md | 5 +++++ 7 files changed, 35 insertions(+) create mode 100644 adr/ADR-0001-modular-monolith.md create mode 100644 adr/ADR-0002-behavior-not-abi.md create mode 100644 adr/ADR-0003-raw-and-interpreted-data.md create mode 100644 adr/ADR-0004-synthetic-and-licensed-tests.md create mode 100644 adr/ADR-0005-deterministic-reference-runtime.md create mode 100644 adr/ADR-0006-error-policy.md create mode 100644 adr/ADR-0007-safe-sdl-opengl.md (limited to 'adr') diff --git a/adr/ADR-0001-modular-monolith.md b/adr/ADR-0001-modular-monolith.md new file mode 100644 index 0000000..82c36b9 --- /dev/null +++ b/adr/ADR-0001-modular-monolith.md @@ -0,0 +1,5 @@ +# ADR-0001: Modular Monolith + +Status: accepted + +FParkan is implemented as one Cargo workspace with local crates grouped by domain. Binaries and adapters compose domain crates; domain crates do not import platform, windowing, OpenGL, GUI, or application packages. diff --git a/adr/ADR-0002-behavior-not-abi.md b/adr/ADR-0002-behavior-not-abi.md new file mode 100644 index 0000000..aea3c7e --- /dev/null +++ b/adr/ADR-0002-behavior-not-abi.md @@ -0,0 +1,5 @@ +# ADR-0002: Behavior Compatibility, Not ABI Compatibility + +Status: accepted + +The project targets clean-room behavior compatibility for formats, resource lookup, loading order, deterministic runtime behavior, and presentation command semantics. It does not reproduce original DLL boundaries, exports, calling conventions, object layouts, RVAs, or native singleton access patterns. diff --git a/adr/ADR-0003-raw-and-interpreted-data.md b/adr/ADR-0003-raw-and-interpreted-data.md new file mode 100644 index 0000000..5938b83 --- /dev/null +++ b/adr/ADR-0003-raw-and-interpreted-data.md @@ -0,0 +1,5 @@ +# ADR-0003: Raw And Interpreted Data + +Status: accepted + +Legacy data models keep raw bytes distinct from validated structure and interpreted domain views. Writers preserve raw data unless an explicit editing profile requests canonical rebuilding. diff --git a/adr/ADR-0004-synthetic-and-licensed-tests.md b/adr/ADR-0004-synthetic-and-licensed-tests.md new file mode 100644 index 0000000..0084ac4 --- /dev/null +++ b/adr/ADR-0004-synthetic-and-licensed-tests.md @@ -0,0 +1,5 @@ +# ADR-0004: Synthetic And Licensed Tests + +Status: accepted + +Synthetic tests run everywhere and contain no proprietary data. Licensed corpus tests require an explicit local manifest and fail when requested without configuration. Reports contain metrics and fingerprints, not payload dumps or absolute game roots. diff --git a/adr/ADR-0005-deterministic-reference-runtime.md b/adr/ADR-0005-deterministic-reference-runtime.md new file mode 100644 index 0000000..5e89d30 --- /dev/null +++ b/adr/ADR-0005-deterministic-reference-runtime.md @@ -0,0 +1,5 @@ +# ADR-0005: Deterministic Reference Runtime + +Status: accepted + +Stages 0-5 use a single-threaded deterministic reference profile. Stable ordering, explicit ticks, named random streams, and canonical captures are part of the contract. Wall-clock time, pointer addresses, hash iteration order, and GPU handles are not semantic inputs. diff --git a/adr/ADR-0006-error-policy.md b/adr/ADR-0006-error-policy.md new file mode 100644 index 0000000..1080497 --- /dev/null +++ b/adr/ADR-0006-error-policy.md @@ -0,0 +1,5 @@ +# ADR-0006: Error Policy + +Status: accepted + +Missing required resources, malformed bytes, unsupported documented branches, capability mismatches, and budget failures are structured errors. Runtime code must not silently skip mandatory objects or convert corrupted data into empty success values. diff --git a/adr/ADR-0007-safe-sdl-opengl.md b/adr/ADR-0007-safe-sdl-opengl.md new file mode 100644 index 0000000..f82c424 --- /dev/null +++ b/adr/ADR-0007-safe-sdl-opengl.md @@ -0,0 +1,5 @@ +# ADR-0007: Safe SDL/OpenGL Boundary + +Status: provisional + +Workspace-owned code forbids `unsafe`. SDL/OpenGL adapters must use maintained external crates behind a safe project API. The current repository still contains legacy demo code scheduled for replacement; new adapter crates are placeholders until a fully audited safe facade is selected and proven on all target profiles. -- cgit v1.2.3