Skip to content
This repository was archived by the owner on Nov 8, 2026. It is now read-only.
Merged
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
34 changes: 34 additions & 0 deletions .github/workflows/frozen-paths.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Frozen paths guard

on:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
paths:
- 'rust/**'
- 'mseries/**'
- '.github/workflows/frozen-paths.yml'

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
guard:
name: Reject edits to frozen app copies
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Guard tests
run: python3 -B -m unittest discover -s mseries/ci -p 'test_check_frozen.py' -v
- name: Check changed paths against mseries/ci/frozen-paths.txt
env:
BASE: ${{ github.event.pull_request.base.sha }}
HEAD: ${{ github.event.pull_request.head.sha }}
ALLOW: ${{ contains(github.event.pull_request.labels.*.name, 'allow-frozen-edit') && '--allow' || '' }}
run: python3 mseries/ci/check_frozen.py $ALLOW "$BASE" "$HEAD"
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
> reload or recovery from a confirmed panel defect, and state when code is installed but not yet loaded. Record the pin,
> what you re-verified and what is still unverified in `mseries/OS9-HANDOFF.md`.

- **One source of truth per app:** SDK crates and apps (`rust/msdk*`, `rust/mseries-*` except the compositor,
`mseries/sdk-*`, `battery`, `phone-setup`, `polybagger-print-manager`, `messages-mcp` and more) are edited in
[techmore/mseries-sdk-apps](https://github.com/techmore/mseries-sdk-apps). The copies here are frozen snapshots
(`FROZEN.md` in each dir); CI rejects PR edits unless labeled `allow-frozen-edit`. Table and full list:
[mseries/REPO-OWNERSHIP.md](mseries/REPO-OWNERSHIP.md).
- Keep `mseries/OS9-HANDOFF.md`, `mseries/ROADMAP.md`, and relevant public
status pages current as work lands. Record concrete changes, commands,
verification results, blockers, and the next task.
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# elementary OS for Apple Silicon (M-series)

> **Source of truth for apps:** the Rust Pantheon SDK and first-party apps are edited in
> [techmore/mseries-sdk-apps](https://github.com/techmore/mseries-sdk-apps); their copies here are frozen
> snapshots guarded by CI. See [mseries/REPO-OWNERSHIP.md](mseries/REPO-OWNERSHIP.md).

elementary OS 9 on an M1/M2-family Mac, alongside macOS: Asahi Alarm as the boot
layer, elementary (Pantheon) as the system you use, installed with one command,
full-disk encryption included. Modelled on [omarchy-mac](https://github.com/omarchy-mac/omarchy-mac),
Expand Down
73 changes: 73 additions & 0 deletions mseries/REPO-OWNERSHIP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Repository ownership (phase 1: one writable source per app)

Status 2026-10-27. Implements the first step of [REPOSITORY-TOPOLOGY.md](REPOSITORY-TOPOLOGY.md):
apps now live in [`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps)
(compared at `origin/main` `40d4445c4414e83da5893500528e088ec599af30`). The OS repo still
holds older duplicate copies. Those are now **frozen migration snapshots**: nothing is
deleted, moved or archived, but PRs that edit them fail the `Frozen paths guard` CI check
(label `allow-frozen-edit` overrides). The guarded list is
[`ci/frozen-paths.txt`](ci/frozen-paths.txt); each frozen directory has a `FROZEN.md`.
Branch rules: [BRANCHING.md](BRANCHING.md).

Method: real trees compared with `diff -rq` between `git archive origin/main` of the SDK repo
and this checkout (`dev` at `7478f2fe`). Phase 2 (kernel split) is owned by another session;
Kernel rows are only tagged.

## Apps already owned by the SDK repo (frozen here)

| Path in OS repo | SDK repo state |
| --- | --- |
| `rust/claude-pantheon-rs` | **Newer** in SDK (plugin registry; 6 files only in SDK, 7 changed) |
| `rust/mseries-messages` | **Newer** in SDK (Signal channel, `signal.rs`; 5 files changed) |
| `rust/mseries-pantheon-kit` | **Newer** in SDK (diff timeline, `timeline.rs`; `lib.rs` changed) |
| `mseries/battery` | One test file differs (`test_battery_enhance.py`); reconcile in SDK |
| `mseries/diskspace-app` | Identical except `test.sh` |
| `mseries/phone-setup` | Identical (SDK tree has a stray `__pycache__`; remove there) |
| `rust/granite-smoke`, `msdk`, `msdk-gtk`, `mseries-ai`, `mseries-apple-dev`, `mseries-broker`, `mseries-diskspace`, `mseries-dock`, `mseries-greeter`, `mseries-power`, `mseries-reply`, `mseries-signal-import`, `mseries-system-monitor`, `mseries-update-core`, `mseries-updates` | Identical |
| `mseries/sdk-tests`, `sdk-bench`, `sdk-status-host`, `messages-mcp`, `polybagger-print-manager`, `updates-app`, `fleet-shepherd` | Identical |
| Docs: `APP-BUILDING-GUIDE.md`, `DOCK-SDK-SPEC.md`, `RUST-PANTHEON-SDK.md`, `RUST-PANTHEON-CLIENTS.md`, `SDK-*.md` (13 files) | Identical (guarded by path; no banner added) |

Caveats: `mseries-update-core` still bundles the OS-owned root helper with the app-facing
contract, and `mseries-power` backs the OS power policy. Both are frozen per the plan; use the
label for helper/policy changes until the contract split in REPOSITORY-TOPOLOGY.md lands.
Also identical but not frozen (decide in later phases): `BATTERY-ETA.md`, `BATTERY-PROFILER.md`,
`MESSAGES-PARITY.md`, `MESSAGING-STATUS.md`, `install-battery*.sh`, `install-phone-setup.sh`,
`install-messaging-bluez.sh`.

## SDK-only (nothing to freeze here)

`rust/mseries-image-studio`, `mseries/image-studio`, `rust/torrential`. In flight: Signal Pantheon as
`mseries/signal-pantheon` (SDK PR #14). SDK `rust/Cargo.toml` lists `mseries-image-studio` and
drops `pantheon-compositor`; the OS workspace keeps the compositor, so the two `Cargo.toml` /
`Cargo.lock` files are intentionally independent and not frozen.

## Exists only in the OS repo: candidates to import (not imported now)

| Path | Note |
| --- | --- |
| `mseries/claude-pantheon-native` | C/Meson client; SDK has the Rust `claude-pantheon-rs` only |
| `mseries/torrential-native`, `mseries/TORRENTIAL-PORT.md` | SDK imported `rust/torrential` with history (#15); confirm what native/port material is still needed |
| `mseries/signal-wingpanel`, `signal-launcher.sh`, `install-signal*.sh`, `SIGNAL-PANTHEON-DESIGN.md` | Signal Pantheon moves with SDK PR #14; deferred per MESSAGING-STATUS.md |
| `mseries/smart-reply`, `SMART-REPLY-DESIGN.md`, `install-smart-reply.sh` | Pairs with `rust/mseries-reply` |
| `mseries/tether`, `TETHER-CONTINUITY.md`, `omdrop*`, `orchard*`, `horizon-rdp`, `opencode-desktop` | Standalone apps; classification needs an owner decision |

## Classification of the rest of `rust/` and `mseries/`

| Class | Paths |
| --- | --- |
| OS (stays) | `rust/pantheon-compositor` (SDK keeps only the vendored protocol XML; its drift check treats this repo as source of truth), `pantheon-rust-compositor`, `gala-*`, `window-*`, `dock-*`, `docked-lid`, `quick-settings`, `panel*`, `wingpanel-tests`, `*-wingpanel` and `install-*wingpanel*` (clockright, codexbar, repobar, share-eyes, t3, troubleshooter), `codexbar*`, `repobar*`, `theme`, `desktop-notifications`, `dark-mode`, `display-*`, `brightness`, `keyboard-backlight`, `audio`, `airplay`, `power`, `touchid-settings`, `icloud-passwords`, `image-actions`, `screenshot-shelf`, `work-mode`, `ui-scale`, `netspeed`, `update`, `releases`, `release`, `debs`, `packages.arm64`, `patches`, `customizations`, `minimal-system`, `enhance*`, `user-enhance.sh`, `post-install.sh`, `validate.sh`, `ci`, remaining `install-*.sh`, `lib-*.sh`, `test-*`, `machine-lab`, `vms`, `muvm-source.sh`, `modrun.py`, `maintenance`, `procedures`, `tools` |
| Kernel (phase 2, other session) | `aurora`, `aurora-sep`, `aurora-touchid*`, `AURORA-SECOND-BOOT.md`, `boot`, `fairydust`, `hardware`, `lid-trace`, `KERNEL-*.md`, `check-kernel-config.py`, `test-kernel-config.py`, `install-initramfs-crossbar.sh`, `install-boot-isolation.sh`, `USB-C-DOCK-DP-ALT-MODE.md`, `FIRMWARE-WIFI.md`, `upstream`, `upstreams`, `upstream-audits`, `UPSTREAM-PINS.md` |
| Hub / docs | All other top-level `*.md` (ROADMAP, OS9-HANDOFF, BRANCHING, REPOSITORY-TOPOLOGY, PORT-MAP, audits, designs, runbooks), `receipts`, `benchmarks`, `local-ai`, `dictation`, `docs/` and the Pages site |

The Kernel and OS lists are grouped by name and judgment, not by exhaustive file audit; items
that fall between classes should be settled in phase 2 or later.

## Where to edit

| You are changing | Edit in |
| --- | --- |
| Anything listed under "already owned by the SDK repo" | `techmore/mseries-sdk-apps` |
| Compositor, panel, installers, packaging, OS services | this repo |
| Kernel/boot | this repo until phase 2 lands |

Cutover revision recorded in every `FROZEN.md`: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30`.
12 changes: 12 additions & 0 deletions mseries/battery/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/battery`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: one test file (test_battery_enhance.py) differs; reconcile in the SDK repo
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
61 changes: 61 additions & 0 deletions mseries/ci/check_frozen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/usr/bin/env python3
"""Fail when a change touches a path whose source of truth moved to mseries-sdk-apps.

Usage: check_frozen.py [--allow] BASE HEAD
Paths come from mseries/ci/frozen-paths.txt. FROZEN.md files are exempt.
--allow (the `allow-frozen-edit` label) reports the hits but exits 0.
"""
from pathlib import Path
import subprocess
import sys

ROOT = Path(__file__).resolve().parents[2]
MANIFEST = ROOT / 'mseries/ci/frozen-paths.txt'


def frozen_paths():
lines = (line.strip() for line in MANIFEST.read_text().splitlines())
return [line.rstrip('/') for line in lines if line and not line.startswith('#')]


def is_frozen(path, frozen):
if path.rsplit('/', 1)[-1] == 'FROZEN.md':
return False
return any(path == f or path.startswith(f + '/') for f in frozen)


def hits(changed, frozen):
return sorted(p for p in changed if is_frozen(p, frozen))


def changed_files(base, head):
# --no-renames lists both sides of a rename, so a move out of a frozen dir is caught.
out = subprocess.run(
['git', 'diff', '--name-only', '--no-renames', f'{base}...{head}'],
cwd=ROOT, check=True, capture_output=True, text=True).stdout
return out.splitlines()


def main(argv):
allow = '--allow' in argv
args = [a for a in argv if a != '--allow']
if len(args) != 2:
print(__doc__, file=sys.stderr)
return 2
found = hits(changed_files(*args), frozen_paths())
if not found:
print('No frozen paths modified.')
return 0
print('Frozen paths modified (source of truth: techmore/mseries-sdk-apps):')
for path in found:
print(f' {path}')
if allow:
print('Label allow-frozen-edit is set; allowing.')
return 0
print('::error::Edit these in techmore/mseries-sdk-apps, or add the '
'`allow-frozen-edit` label to this PR. See mseries/REPO-OWNERSHIP.md.')
return 1


if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
46 changes: 46 additions & 0 deletions mseries/ci/frozen-paths.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Paths whose writable source of truth is techmore/mseries-sdk-apps.
# One repo-relative path per line; a directory covers everything below it.
# See mseries/REPO-OWNERSHIP.md. FROZEN.md files are exempt from the guard.
rust/granite-smoke
rust/claude-pantheon-rs
rust/msdk
rust/msdk-gtk
rust/mseries-ai
rust/mseries-apple-dev
rust/mseries-broker
rust/mseries-diskspace
rust/mseries-dock
rust/mseries-greeter
rust/mseries-messages
rust/mseries-pantheon-kit
rust/mseries-power
rust/mseries-reply
rust/mseries-signal-import
rust/mseries-system-monitor
rust/mseries-update-core
rust/mseries-updates
mseries/sdk-tests
mseries/sdk-bench
mseries/sdk-status-host
mseries/phone-setup
mseries/battery
mseries/polybagger-print-manager
mseries/messages-mcp
mseries/diskspace-app
mseries/updates-app
mseries/fleet-shepherd
mseries/APP-BUILDING-GUIDE.md
mseries/DOCK-SDK-SPEC.md
mseries/RUST-PANTHEON-SDK.md
mseries/RUST-PANTHEON-CLIENTS.md
mseries/SDK-AGENT-SURFACE.md
mseries/SDK-AUDIT-2026-10-23.md
mseries/SDK-COMPATIBILITY.md
mseries/SDK-COMPLETION.md
mseries/SDK-CORNERS.md
mseries/SDK-DESIGN-LANGUAGE.md
mseries/SDK-GOLDEN-PATH.md
mseries/SDK-INTROSPECTION-AND-STREAMING.md
mseries/SDK-PARITY.md
mseries/SDK-RUNTIME-CONTRACT.md
mseries/SDK-USAGE-DATA.md
21 changes: 21 additions & 0 deletions mseries/ci/test_check_frozen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import unittest

import check_frozen as cf

FROZEN = ['rust/msdk', 'mseries/SDK-PARITY.md']


class FrozenTests(unittest.TestCase):
def test_hits_and_exemptions(self):
changed = ['rust/msdk/src/lib.rs', 'rust/msdk-gtk/a.rs', 'rust/msdk/FROZEN.md',
'mseries/SDK-PARITY.md', 'mseries/ROADMAP.md']
self.assertEqual(cf.hits(changed, FROZEN),
['mseries/SDK-PARITY.md', 'rust/msdk/src/lib.rs'])

def test_manifest_paths_exist(self):
for path in cf.frozen_paths():
self.assertTrue((cf.ROOT / path).exists(), path)


if __name__ == '__main__':
unittest.main()
12 changes: 12 additions & 0 deletions mseries/diskspace-app/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/diskspace-app`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical except test.sh
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
12 changes: 12 additions & 0 deletions mseries/fleet-shepherd/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/fleet-shepherd`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical to the SDK copy
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
12 changes: 12 additions & 0 deletions mseries/messages-mcp/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/messages-mcp`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical to the SDK copy
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
12 changes: 12 additions & 0 deletions mseries/phone-setup/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/phone-setup`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical (SDK tree only adds a stray __pycache__)
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
12 changes: 12 additions & 0 deletions mseries/polybagger-print-manager/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/polybagger-print-manager`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical to the SDK copy
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
12 changes: 12 additions & 0 deletions mseries/sdk-bench/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/sdk-bench`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical to the SDK copy
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
12 changes: 12 additions & 0 deletions mseries/sdk-status-host/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/sdk-status-host`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical to the SDK copy
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
12 changes: 12 additions & 0 deletions mseries/sdk-tests/FROZEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# FROZEN: edit in mseries-sdk-apps

The writable source of truth for this directory is
[`techmore/mseries-sdk-apps`](https://github.com/techmore/mseries-sdk-apps) at `mseries/sdk-tests`.
This copy is a frozen migration snapshot kept for rollback and reference
(see [REPOSITORY-TOPOLOGY.md](/mseries/REPOSITORY-TOPOLOGY.md), staged transition step 5).

- Cutover revision: `mseries-sdk-apps@40d4445c4414e83da5893500528e088ec599af30` (origin/main, 2026-10-27)
- State at cutover: identical to the SDK copy
- Make changes in `mseries-sdk-apps`, not here. A PR that edits this directory fails the
`Frozen paths guard` check unless it carries the `allow-frozen-edit` label.
- Nothing here has been deleted or moved. Ownership table: [REPO-OWNERSHIP.md](/mseries/REPO-OWNERSHIP.md).
Loading
Loading