Refactor: migrate POSIX scaffolding to CBOR and JSONC

This commit is contained in:
MangoPig
2026-07-06 13:06:32 +01:00
parent 2c8338d1cd
commit 58bc285748
14 changed files with 860 additions and 268 deletions
+42 -36
View File
@@ -1,75 +1,81 @@
# POSIX Structure
[Filetree Link](https://tree.nathanfriend.com/?s=(%27optiUs!(%27fancy!Yue~fullPath!fbq~YailingSlash!Yue~rootDot!fbq)~R(%27R%27PJ%20or%20OrganizatiU%20%7Bqrver%7DM*46layout6cNlog7packs7*pack37A2*enYies75W5A_standbUe7WA6HwH30LZ2teamw5teamGL5Z6FwF30LKTC058T5C7XFG5LXKXTXC7XI7I05QG5BN2*8QG5BN6Z04_dN_pJw*pJGlayout2L*KI70%27)~vEiU!%271%27)*%20%200M52_*3-%3Cslug%3E4qttings5**69M*7%2F08VG*V259.jsUA5manifestBQ25*schema25*dCchildrenEersFprojectG305HdepartmentI*YeeJEUbKhome2L*42M%5CnNataQitemRsource!Tacl2UonVfolderW*app37X55YtrZusE_90balqsews0%01wqb_ZYXWVUTRQNMLKJIHGFECBA987654320*)
Note: regenerate the external filetree link if you want the hosted visual tree to reflect the new `.cbor` and `.jsonc` paths.
``` markdown
Personal or Organization (server)/
├── settings.json
├── layout.json
├── settings.cbor
├── catalog/
│ ├── packs/
│ │ └── pack-<slug>/
│ │ ├── manifest.json
│ │ ├── manifest.jsonc
│ │ └── entries/
│ │ └── app-<slug>/
│ │ └── manifest.json
│ │ └── manifest.jsonc
│ └── standalone/
│ └── app-<slug>/
│ └── manifest.json
│ └── manifest.jsonc
├── departments/
│ └── department-<slug>/
│ ├── settings.json
│ ├── users.json
│ ├── settings.cbor
│ ├── users.cbor
│ └── teams/
│ └── team-<slug>/
│ ├── settings.json
│ └── users.json
│ ├── settings.cbor
│ └── users.cbor
├── projects/
│ └── project-<slug>/
│ ├── settings.json
│ ├── home.json
│ ├── acl.json
│ ├── settings.cbor
│ ├── home.cbor
│ ├── acl.cbor
│ ├── children/
│ │ └── folder-<slug>/
│ │ ├── folder.json
│ │ ├── acl.json
│ │ ├── folder.cbor
│ │ ├── acl.cbor
│ │ └── children/
│ │ └── project-<slug>/
│ │ ├── settings.json
│ │ ├── home.json
│ │ ├── acl.json
│ │ ├── settings.cbor
│ │ ├── home.cbor
│ │ ├── acl.cbor
│ │ ├── children/
│ │ └── tree/
│ └── tree/
│ ├── item-<slug>/
│ │ ├── item.json
│ │ ├── item.cbor
│ │ ├── schema.json
│ │ └── data.json
│ │ └── data.cbor
│ └── folder-<slug>/
│ ├── folder.json
│ ├── folder.cbor
│ └── item-<slug>/
│ ├── item.json
│ ├── item.cbor
│ ├── schema.json
│ └── data.json
│ └── data.cbor
└── users/
├── settings.json
├── data.json
├── settings.cbor
├── data.cbor
└── personals/
└── personal-<slug>/
├── layout.json
├── settings.json
├── home.json
├── layout.cbor
├── settings.cbor
├── home.cbor
└── tree/
```
## File Responsibilities
- `settings.json` — Metadata and presentation config for the thing, such as display name, icon, description, and simple settings.
- `layout.json` — Layout configuration for the current server or personal space.
- `home.json` — Home surface configuration, such as widgets, sections, and how they are arranged.
- `folder.json` — Metadata for a folder node in a tree.
- `item.json` — Instance metadata for a created item, including what it is and how it should behave.
- `settings.cbor` — Machine-owned metadata and presentation config for the thing, such as display name, icon, description, and simple settings.
- `layout.cbor` — Machine-owned layout configuration for the current server or personal space.
- `home.cbor` — Machine-owned home surface configuration, such as widgets, sections, and how they are arranged.
- `folder.cbor` — Machine-owned metadata for a folder node in a tree.
- `item.cbor` — Machine-owned instance metadata for a created item, including what it is and how it should behave.
- `schema.json` — The structure expected by that item's data.
- `data.json` — The actual content or state data for that item.
- `manifest.json` — Catalog definition metadata, including versioning, description, and capabilities for reusable apps or entries.
- `users.json` — User membership or assignment data for departments and teams.
- `data.cbor` — The machine-owned content or state data for that item.
- `manifest.jsonc` — Human-facing catalog definition metadata, including versioning, description, capabilities, and comments for reusable apps or entries.
- `users.cbor` — Machine-owned user membership or assignment data for departments and teams.
- `acl.cbor` — Machine-owned access control data for projects and folders.
## Format Rules
- Use `*.jsonc` for catalog manifests that may be authored or reviewed by humans.
- Use `*.cbor` for machine-owned POSIX state and metadata files where parse speed, compactness, and backupability matter more than direct editability.
- Keep `schema.json` as JSON so it remains compatible with JSON Schema tooling and validation flows.