aboutsummaryrefslogtreecommitdiff
path: root/adr
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-06-22 12:12:27 +0300
committerValentin Popov <valentin@popov.link>2026-06-22 12:13:32 +0300
commitd0bdbaa1ed76dfbf3211bb43eee48c49cc4fd448 (patch)
treea0bd35c3940be62a5b5de1acc2366af377ffd181 /adr
parent7416fdc7e9a48837fff5056e6dc8d0774e90964b (diff)
downloadfparkan-d0bdbaa1ed76dfbf3211bb43eee48c49cc4fd448.tar.xz
fparkan-d0bdbaa1ed76dfbf3211bb43eee48c49cc4fd448.zip
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.
Diffstat (limited to 'adr')
-rw-r--r--adr/ADR-0001-modular-monolith.md5
-rw-r--r--adr/ADR-0002-behavior-not-abi.md5
-rw-r--r--adr/ADR-0003-raw-and-interpreted-data.md5
-rw-r--r--adr/ADR-0004-synthetic-and-licensed-tests.md5
-rw-r--r--adr/ADR-0005-deterministic-reference-runtime.md5
-rw-r--r--adr/ADR-0006-error-policy.md5
-rw-r--r--adr/ADR-0007-safe-sdl-opengl.md5
7 files changed, 35 insertions, 0 deletions
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.