Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions docs/workstation-contract-family.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,49 @@ Specifically:
- `DesktopProfile` describes the desktop posture, not a policy canon.
- `WorkstationProfile` ties these together for a workstation lane while referencing—not redefining—execution/audit semantics elsewhere.

## Mac-on-Linux polish signals

`SociOS-Linux/source-os` has added workstation-v0 Mac-on-Linux polish surfaces. The canonical
contract examples reflect these signals without over-claiming implementation parity.

**Implementation authority** for all polish features below remains in `SociOS-Linux/source-os`.
This repository owns only the typed contract descriptors and examples.

### Currently active signals (reflected in examples)

| Signal | Contract field | Example value |
|--------|---------------|---------------|
| Screenshot helper | `WorkstationProfile.macOnLinuxPolish.screenshotHelperCommand` | `"sourceos-screenshot"` |
| Quick Look / Sushi file preview | `WorkstationProfile.macOnLinuxPolish.quickLookPackages` | `["sushi", "gnome-sushi"]` |
| Mac keyboard remap policy | `WorkstationProfile.macOnLinuxPolish.keymapPolicyRef` | `urn:srcos:keymap-profile:mac-linux-primary` |
| Aggregate polish validation | `WorkstationProfile.validation.polishValidationCommand` | `"sourceos polish validate --json"` |
| Bounded appearance defaults | `DesktopProfile.appearance` | `colorScheme: dark, fontScaling: 1.0` |
| Sidebar bookmarks (Finder-style) | `DesktopProfile.sidebarBookmarks` | Home, Desktop, Documents, Downloads, Code |

### Future / non-goal signals (not yet in examples)

The following signals are tracked as follow-on work and are **not** represented in the current
examples. They should not be claimed as implemented until the corresponding feature lands in
`SociOS-Linux/source-os` and is verified:

- Deep Sushi/QuickLook MIME-type extension registration
- Per-app appearance override surfaces
- Native assistant bridge for Siri/Shortcuts-style flows (see `native_assistant_bridge_profile.apple_app_intents.json`)
- Full macOS parity — this is explicitly a **non-goal**; SourceOS targets polish, not emulation.

## Immediate alignment target

This family is intended to align with the current Linux realization in `SociOS-Linux/source-os`, including:
- workstation-v0 package layering
- GNOME desktop defaults and extension pinset
- SourceOS palette / command-bus posture
- Lampstand-backed local file search
- Mac-on-Linux polish surfaces (screenshot, Quick Look/Sushi, sidebar bookmarks, appearance defaults, keyboard remap)

## Follow-on contract work

1. Add richer search-provider and validation sub-objects once the shell/runtime product repo stabilizes.
2. Add typed references for doctor/fix report families and runtime execution surfaces.
3. Bind these objects into OpenAPI / AsyncAPI surfaces when the first product/runtime consumers are ready.
4. Add negative examples for future/non-goal polish signals once the boundary is further stabilized.

12 changes: 12 additions & 0 deletions examples/desktopprofile.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,17 @@
"compatibilityBackends": ["xremap", "kinto"],
"gestures": "fusuma"
},
"appearance": {
"colorScheme": "dark",
"accentColor": null,
"fontScaling": 1.0
},
"sidebarBookmarks": [
{ "label": "Home", "path": "~/" },
{ "label": "Desktop", "path": "~/Desktop" },
{ "label": "Documents", "path": "~/Documents" },
{ "label": "Downloads", "path": "~/Downloads" },
{ "label": "Code", "path": "~/code" }
],
"launcherProviderRef": "urn:srcos:launcher-provider:sourceos-palette"
}
9 changes: 8 additions & 1 deletion examples/workstationprofile.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@
"validation": {
"doctorCommand": "sourceos doctor --json",
"statusCommand": "sourceos status --json",
"searchCommand": "sourceos search --snippet"
"searchCommand": "sourceos search --snippet",
"polishValidationCommand": "sourceos polish validate --json"
},
"macOnLinuxPolish": {
"status": "active",
"screenshotHelperCommand": "sourceos-screenshot",
"quickLookPackages": ["gnome-sushi"],
"keymapPolicyRef": "urn:srcos:keymap-profile:mac-linux-primary"
}
}
33 changes: 33 additions & 0 deletions schemas/DesktopProfile.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,39 @@
"launcherProviderRef": {
"type": ["string", "null"],
"description": "Optional reference to the primary LauncherProvider."
},
"appearance": {
"type": "object",
"additionalProperties": false,
"description": "Bounded appearance defaults for the desktop environment.",
"properties": {
"colorScheme": {
"type": "string",
"enum": ["light", "dark", "follow-system"],
"description": "Preferred color scheme."
},
"accentColor": {
"type": ["string", "null"],
"description": "Accent color token or hex value."
},
"fontScaling": {
"type": ["number", "null"],
"description": "Font scaling factor (1.0 = default)."
}
}
},
"sidebarBookmarks": {
"type": "array",
"description": "Sidebar (e.g., Files/Nautilus) bookmark entries mirroring Mac Finder sidebar conventions.",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["label", "path"],
"properties": {
"label": { "type": "string", "minLength": 1 },
"path": { "type": "string", "minLength": 1 }
}
}
}
}
}
31 changes: 30 additions & 1 deletion schemas/WorkstationProfile.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,38 @@
"properties": {
"doctorCommand": { "type": ["string", "null"] },
"statusCommand": { "type": ["string", "null"] },
"searchCommand": { "type": ["string", "null"] }
"searchCommand": { "type": ["string", "null"] },
"polishValidationCommand": {
"type": ["string", "null"],
"description": "Aggregate Mac-on-Linux polish validation entrypoint."
}
},
"description": "Operator-facing validation and inspection entrypoints."
},
"macOnLinuxPolish": {
"type": "object",
"additionalProperties": false,
"description": "Mac-on-Linux polish signal set. Implementation authority: SociOS-Linux/source-os. Use 'status: active' for signals that are live in SociOS-Linux/source-os; use 'planned' or 'non-goal' to record intent or explicit exclusions.",
"properties": {
"status": {
"type": "string",
"enum": ["active", "planned", "non-goal"],
"description": "Implementation state of the Mac-on-Linux polish surface for this profile. Use 'active' for features shipped in SociOS-Linux/source-os, 'planned' for accepted follow-on work, and 'non-goal' to explicitly record excluded features."
},
"screenshotHelperCommand": {
"type": ["string", "null"],
"description": "Shell command providing Mac-style screenshot capture (e.g. sourceos-screenshot)."
},
"quickLookPackages": {
"type": "array",
"items": { "type": "string", "minLength": 1 },
"description": "Package names providing Quick Look / Sushi-compatible file preview support."
},
"keymapPolicyRef": {
"type": ["string", "null"],
"description": "URN reference to a KeymapProfile expressing the Mac-keyboard remap policy."
}
}
}
}
}