oc4 — ideas
Источник:
dev/fera-research/docs/oc4/STATUS.md(read-only; сгенерировано scripts/sync-docs.mjs)
oc4 — ideas
Section titled “oc4 — ideas”Zone: NEW ideas across the Fera ecosystem (features, optimizations, architectural moves, tooling). Orientations: offline-first UX, perf (OPTIM-IDEAS), plugins/wasm, calls, sync.
Method
Section titled “Method”Full inventory of the existing proposal space first — ADRs 001–031, OQ-001…027, OPTIM-IDEAS 1–5, PREDICT, RESEARCH-OQ-003, FUTURE-CHECKS, chroix-project specs — so new ideas do not repeat existing ones. Key finding that enabled the work: OPTIM-IDEAS 1–5 carry no IDs and no per-idea status (they are inboxes, not a decision register), so there is no “already rejected” list to respect and the idea space is genuinely open.
Two ideas were killed by this check before being written: a power-budget
governor (already fully formulated as OQ-024) and a media-dedup-by-CID idea
(covered by ImageRef’s content hash in CHROIX-DISPLAY-LIST §7).
Delivered
Section titled “Delivered”| # | File | One line | Area |
|---|---|---|---|
| 01 | idea-01-fork-sync-xtask.md |
Automated upstream-drift detection for the 5 long-lived forks + the rustc pin. ADR-012/026 accept the burden in prose only; no tooling exists. Turns OQ-024(d)’s rustc pin from an unenforced assumption into a CI gate. (Prerequisite: oc5’s unpinned-git-deps finding.) | tooling |
| 02 | idea-02-determinism-seam-trace-replay.md |
No Clock abstraction anywhere in docs or code (outbox.rs:129,154,180). Blocks end-to-end testing, the jitter test, the benchmark pass, Argon2 cost measurement, and PREDICT:220’s replay harness. Inject clock+entropy now (lint-enforced); whole-app trace replay follows free. |
arch/testing |
| 03 | idea-03-plugin-ui-display-list.md |
“mutate UI” is a named capability (ADR-002:55) that is never specified, while ADR-022 freezes capability IDs at v1. Make it a bounded subset of the chroix display list — sandboxing becomes a parsing problem, not a policy problem. | plugins/ui |
| 04 | idea-04-internal-vs-interop-doctrine.md |
Promote the one-off sentence in RESEARCH-OQ-003 §2.2 into a named rule + 5-question test. Retro-resolves the apparent ADR-020 vs OQ-024(d) contradiction; decides trace container format before anyone builds one by accident. | arch/storage |
| 05 | idea-05-sync-ledger-typestate.md |
Offline-first answers “can I read what I have”, not “what is my relationship to the server”. Corpus has zero sync-state vocabulary while the architecture manufactures ≥6 divergence conditions and NAMING-UX §3 promises an honest indicator. ADR-015 discipline applied where it hasn’t reached. | offline-first |
| 06 | idea-06-workspace-consumer-gate.md |
6 of 6 real crates have zero consumers; ~27% of real code is unreachable and green. The gate is right-shaped per-item, blind to per-crate system quality. Plus two cheap fixes: ungate the storage contract suite, adopt chroix’s existing trybuild for the protocol typestate’s commented-out proof. |
tooling/testing |
| 07 | idea-07-op-queue-effects-vs-intent.md |
The outbox is typed to one operation (Vec<Message>). Split pending effects (replay each) from pending intent (coalesce to latest, reconcile on apply) with per-kind merge policy. Gives ADR-025’s unsettled secret-chat question a home as a policy value. |
storage/offline |
| 08 | idea-08-static-module-loader.md |
One ModuleLoader, two impls. Static mode is the dev build and the hermetic production build (zero dlopen, no code-loading surface) — the “risky” config pays the maintenance cost of the common one. |
modules/tooling |
| 09 | idea-09-per-tier-module-abi.md |
Builds on oc5’s panic-containment finding by answering its closing question: the module ABI is per-tier, not global. Shrinks the UB class and the process-isolation cost to the one optional tier that deserves them. | modules/trust |
Collaboration (built on other agents, per mandate)
Section titled “Collaboration (built on other agents, per mandate)”- oc5 — three HIGH findings absorbed:
unpinned-git-depsis a prerequisite for idea-01;no-panic-containment’s closing question is answered by idea-09 (per-tier split: first-party → Rust ABI already decided by OQ-024(d) or better static; third-party plugins → WASM so no native ABI; third-party native → the only tier needing theextern "C"contract);local-id-reuse-ack-misdeliveryis now idea-07’s primary motivating defect, reframed as positional vs stable identity rather than a counter bug. - oc2 — idea-03 depends on chroix’s display list; oc2’s
no-display-list-producer+ G1 (side-table offsets hardcoded0) are recorded as prerequisites, not surprises. - oc1 — flagged two findings for them: (a) PREDICT.md:233-234 puts the
behaviour log in the strong tier and says the classification “is OQ-005”,
while ADR-031 (which resolved OQ-005) puts the predictor event log in the
metadata tier; (b) PREDICT.md:92/237 still says
data/predictor/where OQ-009 resolved todata/accounts/<id>/predictor/+cache/predictor/.
Not written (deliberately, or out of time)
Section titled “Not written (deliberately, or out of time)”- One “Insights” surface covering predictor + telemetry + module inventory — blocked on resolving the PREDICT/ADR-031 tier conflict first; would be premature to design the UX around an unresolved classification.
- A proposal for OQ-022’s fuel-declaration surface (WIT type vs manifest field) — OQ-022’s own design pass is the right owner; my idea-03 only touches the one capability that is frozen and unspecified.
- Calls-area ideas:
rstgcallsis pre-code with no numbers anywhere in the corpus, so any perf idea there would be speculation. Deferred until Phase 0 produces measurements.