docs(riir): design inter-module C ABI interfaces and split out oakstorage

- riir.md: split project file read/write into standalone oakstorage
  module (pluggable backend, DB-replaceable); add Mermaid data flow
  diagram of all modules; adjust batch table and milestones
- riir/04-interfaces.md: new provides/consumes contract matrix for
  all modules
- riir/M10-oakstorage.md: new manual with frozen C API (typed opaque
  handles, manual vtable for storage backends, URI addressing)
- riir/01: codify pure-C OO interface rules (typed handles instead of
  void*, init/free pairs, manual vtables, no C++ objects or member
  calls across shared library boundaries); upper layers issue commands
  only, no module-to-module event subscriptions (async task callbacks
  excepted)
- sync 00/02/03 and M2-M9 manuals: remove subscribe APIs, replace
  void* with typed handles, update tests accordingly
This commit is contained in:
2026-08-05 14:48:08 +08:00
parent b55d626c0c
commit 774eda75fe
14 changed files with 563 additions and 97 deletions
+4 -2
View File
@@ -29,8 +29,10 @@
4. **枚举序数一致性**:C 侧 POD/枚举与 C++ 侧枚举的映射(01 §3 表)
每个映射 1 个 TEST(如 `oakundo` 的 movement mode 0-3 ⇄
`Timeline::MovementMode`)。
5. **事件/回调**:每个 `set_*_cb`/subscribe 至少 1 个 TEST:触发后
断言回调被调、payload 正确;反注册后断言不再被调。
5. **回调(仅异步任务)**:模块间 C ABI 无 subscribe 类接口(04 §3);
仅异步命令(任务/渲染 ticket)的进度/完成回调需要测试:触发后
断言回调被调、payload 正确、FINISHED 后自动失效。同步命令的测试
改为"调用后直接读状态断言生效"。
6. **所有权**:borrowed 句柄(文档注释标了 `/* borrowed */` 的)
free 后原对象仍存活,1 个 TEST。