docs: document platform mixin category folder layout

Update PLATFORM_MIXINS and doc drift smoke for mixins/ paths under
pearcord-platform.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-03 17:42:27 -04:00
co-authored by Cursor
parent 4531a57a73
commit 3d2158d6be
2 changed files with 10 additions and 3 deletions
+4 -3
View File
@@ -1,6 +1,6 @@
# Platform mixin architecture (Phase 756+)
`PearcordPlatform` in `modules/pearcord-platform` is composed from **prototype mixins** instead of a single monolithic class. Phase 756 reduced the core class to ~900 lines; domain logic lives in `platform-*-mixin.js` modules assigned via manifest.
`PearcordPlatform` in `modules/pearcord-platform` is composed from **prototype mixins** instead of a single monolithic class. Phase 756 reduced the core class to ~900 lines; mixin sources live under [`mixins/`](../../modules/pearcord-platform/mixins/README.md) by category (`domain/`, `json-export/`, `runtime/<area>/`).
**App release:** v0.8.746 · **Roadmap detail:** [PLATFORM_ROADMAP.md](./PLATFORM_ROADMAP.md) Phases 725756 · **Module changelog:** `modules/pearcord-platform/README.md`
@@ -9,7 +9,8 @@
| Artifact | Role |
|----------|------|
| `platform-mixin-assign-manifest.js` | **136** assignment rows — maps mixin module + export name onto `PearcordPlatform.prototype` |
| `platform-runtime-mixin-registry.js` | **76** runtime `platform-*` mixins loaded in order (Phases 738756) |
| `platform-runtime-mixin-registry.js` | **76** runtime `platform-*` mixins under `mixins/runtime/**` (Phases 738756) |
| `mixins/mixin-paths.json` | Basename → folder map for tooling and smokes |
| `platform-class-imports.js` | Class shell, constructor, wiring |
| `platform-index-export-manifest.js` | Public re-exports for tests and tooling |
@@ -38,7 +39,7 @@ Deep links (`navigateDeepLink`, `channelPermFocusRoleId`, `effectivePermFocusRol
| Data model, gossip RPC, JsonStore | Orchestrating modules + `view()` + IPC handlers |
| Reusable outside Pearcord | Needs `this.guild`, `this.db`, mesh lifecycle |
New mixins: add `platform-foo-mixin.js`, register in `platform-runtime-mixin-registry.js` (if runtime), add row to `platform-mixin-assign-manifest.js`, document phase in platform README + roadmap.
New mixins: add `mixins/runtime/<category>/platform-foo-mixin.js`, append a row to `platform-mixin-assign-manifest.js` (preserve order), run `npm run regenerate:platform-mixins`, update `mixins/mixin-paths.json` via `python3 apps/pearcord/scripts/generate-mixin-paths-json.py`.
## Tests
+6
View File
@@ -70,6 +70,12 @@ function main () {
assertIncludes(path.join(DOCS, 'IPC.md'), 'settings-open', 'IPC settings catalog')
assertIncludes(path.join(DOCS, 'IPC.md'), 'role-editor-open', 'IPC role editor catalog')
assertIncludes(path.join(DOCS, 'PLATFORM_MIXINS.md'), 'platform-runtime-mixin-registry', 'PLATFORM_MIXINS registry')
const mixinsReadme = path.join(ROOT, 'modules', 'pearcord-platform', 'mixins', 'README.md')
assertIncludes(mixinsReadme, 'runtime/', 'platform mixins README')
const registry = read(path.join(ROOT, 'modules', 'pearcord-platform', 'platform-runtime-mixin-registry.js'))
if (!registry.includes("'./mixins/")) {
throw new Error('platform-runtime-mixin-registry must use ./mixins/ paths')
}
console.log(`DOC_VERSION_ALIGNMENT_OK v${ver}`)
}