Skip to content

docs: add a quality lens, child-user app defaults and a shared Rust client core - #41

Merged
mosobande merged 3 commits into
orifrom
docs/quality-lens-and-client-core
Oct 23, 2026
Merged

mosobande merged 3 commits into
orifrom
docs/quality-lens-and-client-core

Conversation

@mosobande

Copy link
Copy Markdown
Contributor

Adds a required quality lens for structure, defaults for apps with child users, and two Rust entries for a client core shared across platforms.

What changes

  • practices/architecture.md: Quality lens, required. Judge backend structure by AX and DX. Judge frontend structure by AX, DX and UX, and a structural change must not make the UI or UX worse. The definitions link the AI Coding Dictionary's AX and DX entries; human review is part of DX.

  • practices/child-users.md (new), with four entries:

    • a separate child app when the adult app carries adult-only features;
    • no third-party ads, analytics or crash SDKs (rejected);
    • content-free push;
    • birth month and year as the minimum age data.

    Each one quotes the store rule it rests on (Google Play Families policy; Apple App Review 1.3, 4.5.4 and 5.1.4; Chrome's userVisibleOnly requirement) and says where our default is stricter than the store. Age thresholds stay per-jurisdiction configuration with their sources.

  • stacks/rust.md, two entries:

    • a sans-I/O client core for clients that share protocol and state rules across platforms;
    • UniFFI's own Swift and Kotlin generators over a Kotlin Multiplatform bridge, with an explicit cancel call because UniFFI does not cancel async calls itself.
  • SKILL.md: a routing row for apps with child users.

  • A minor changeset.

Why

These came out of an architecture review of a family messaging app with separate adult and child experiences. It has a Rust messaging core used from the web through WASM, with native apps planned. The child-app and push rules hold for any app with child users. The client-core entries hold for any product that shares protocol rules across web, iOS and Android.

Proof

  • python3 scripts/lint.py: 0 errors. The 5 pending entries it reports are outside this change.

  • Every source link was opened on 2026-10-23.

  • Independent review by a different model family, over two rounds. Round 1 blocked on six points, all accepted:

    • a wrong reason against the Kotlin Multiplatform bridge (its generators are past 1.0);
    • store rules stated more broadly than the stores state them;
    • a diff rule that contradicted contracts.md;
    • age-threshold guidance that could promote a child early;
    • storage mechanisms promoted into a general default;
    • entries outside the standard shape.

    Round 2 approved once the quality lens became a standard entry, which the last commit does.

Olúwaṣèyí Ṣóbandé added 3 commits October 23, 2026 13:48
…nt core

Backends serve AX and DX; frontends also serve UX without making UI or
UX worse. Apps with child users get their own app, no third-party SDKs,
content-free push and age stored as birth month and year. Rust gains a
sans-I/O client core entry and UniFFI over a Kotlin Multiplatform bridge.
Move child-user defaults into their own reference as standard entries, separate store rules from our stricter choices, scope the sans-I/O core to clients that share protocol rules, and correct the reason for preferring UniFFI's own generators.
@mosobande mosobande added the documentation Improvements or additions to documentation label Oct 23, 2026
@mosobande
mosobande merged commit f5757a8 into ori Oct 23, 2026
4 of 5 checks passed
@mosobande
mosobande deleted the docs/quality-lens-and-client-core branch October 23, 2026 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant