Skip to content
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
88 changes: 44 additions & 44 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
# GitHub applies the LAST matching pattern, so this file runs from broad to
# narrow: fallback, module map, subsystem routes, then governance paths.
# @loopx-agent shares every route; narrower rules must retain that owner.
# @loopx-agent and @songoow share every route; narrower rules retain both.
# When a line lists several owners, approval from any one of them satisfies
# code-owner review.
#
Expand All @@ -12,74 +12,74 @@
# contributors are routed through GOVERNANCE.md, not through this file.

# Fallback for paths no module line claims, such as a new top-level directory.
* @huangruiteng @loopx-agent
* @huangruiteng @songoow @loopx-agent

# --- Module map --------------------------------------------------------------
# Every top-level module has an explicit line so ownership is visible per
# module. A subsystem appointment narrows a path in the next section.

# Control-plane kernel: authority, state, quota, todos, leases, TS transactions.
/loopx/control_plane/ @huangruiteng @loopx-agent
/loopx/semantics/ @huangruiteng @loopx-agent
/loopx/*.py @huangruiteng @loopx-agent
/loopx/control_plane/ @huangruiteng @songoow @loopx-agent
/loopx/semantics/ @huangruiteng @songoow @loopx-agent
/loopx/*.py @huangruiteng @songoow @loopx-agent

# CLI surface.
/loopx/cli_commands/ @huangruiteng @loopx-agent
/loopx/cli_commands/ @huangruiteng @songoow @loopx-agent

# Capabilities, extensions, domain packs and experiments.
/loopx/capabilities/ @huangruiteng @loopx-agent
/loopx/extensions/ @huangruiteng @loopx-agent
/loopx/domain_packs/ @huangruiteng @loopx-agent
/loopx/experiments/ @huangruiteng @loopx-agent
/loopx/capabilities/ @huangruiteng @songoow @loopx-agent
/loopx/extensions/ @huangruiteng @songoow @loopx-agent
/loopx/domain_packs/ @huangruiteng @songoow @loopx-agent
/loopx/experiments/ @huangruiteng @songoow @loopx-agent

# Host goal-mode adapters (Claude, DSH, OpenCode, Pi, ...).
/loopx/*_goal_mode/ @huangruiteng @loopx-agent
/loopx/*_goal_mode/ @huangruiteng @songoow @loopx-agent

# Presentation: Python projections, dashboard, site and desktop shell.
/loopx/presentation/ @huangruiteng @loopx-agent
/apps/presentation/ @huangruiteng @loopx-agent
/apps/desktop/ @huangruiteng @loopx-agent
/loopx/presentation/ @huangruiteng @songoow @loopx-agent
/apps/presentation/ @huangruiteng @songoow @loopx-agent
/apps/desktop/ @huangruiteng @songoow @loopx-agent

# Canary metrics, benchmarks and regression corpora.
/loopx/canary/ @huangruiteng @loopx-agent
/benchmark/ @huangruiteng @loopx-agent
/regression/ @huangruiteng @loopx-agent
/loopx/canary/ @huangruiteng @songoow @loopx-agent
/benchmark/ @huangruiteng @songoow @loopx-agent
/regression/ @huangruiteng @songoow @loopx-agent

# Optional provider packages.
/packages/ @huangruiteng @loopx-agent
/packages/ @huangruiteng @songoow @loopx-agent

# Agent skills, man pages, docs, examples, tests, scripts and demos.
/skills/ @huangruiteng @loopx-agent
/man/ @huangruiteng @loopx-agent
/docs/ @huangruiteng @loopx-agent
/examples/ @huangruiteng @loopx-agent
/tests/ @huangruiteng @loopx-agent
/scripts/ @huangruiteng @loopx-agent
/demo/ @huangruiteng @loopx-agent
/deprecate/ @huangruiteng @loopx-agent
/skills/ @huangruiteng @songoow @loopx-agent
/man/ @huangruiteng @songoow @loopx-agent
/docs/ @huangruiteng @songoow @loopx-agent
/examples/ @huangruiteng @songoow @loopx-agent
/tests/ @huangruiteng @songoow @loopx-agent
/scripts/ @huangruiteng @songoow @loopx-agent
/demo/ @huangruiteng @songoow @loopx-agent
/deprecate/ @huangruiteng @songoow @loopx-agent

# --- Subsystem routes --------------------------------------------------------

# Frontend source and chat bundle delivery (built assets are not tracked).
/apps/presentation/dashboard/ @huangruiteng @maxliux5 @loopx-agent
/loopx/presentation/chat_bundle.py @huangruiteng @maxliux5 @loopx-agent
/scripts/chat_bundle* @huangruiteng @maxliux5 @loopx-agent
/apps/presentation/dashboard/ @huangruiteng @maxliux5 @songoow @loopx-agent
/loopx/presentation/chat_bundle.py @huangruiteng @maxliux5 @songoow @loopx-agent
/scripts/chat_bundle* @huangruiteng @maxliux5 @songoow @loopx-agent

# Lark integration (subsystem maintainer: @steven-kid).
/loopx/extensions/lark/ @huangruiteng @steven-kid @loopx-agent
/loopx/cli_commands/lark_*.py @huangruiteng @steven-kid @loopx-agent
/docs/integrations/lark-*.md @huangruiteng @steven-kid @loopx-agent
/docs/reference/protocols/lark-*.md @huangruiteng @steven-kid @loopx-agent
/examples/lark-* @huangruiteng @steven-kid @loopx-agent
/examples/lark_extension_test_support.py @huangruiteng @steven-kid @loopx-agent
/examples/control_plane/lark-* @huangruiteng @steven-kid @loopx-agent
/tests/extensions/test_lark_*.py @huangruiteng @steven-kid @loopx-agent
/loopx/extensions/lark/ @huangruiteng @steven-kid @songoow @loopx-agent
/loopx/cli_commands/lark_*.py @huangruiteng @steven-kid @songoow @loopx-agent
/docs/integrations/lark-*.md @huangruiteng @steven-kid @songoow @loopx-agent
/docs/reference/protocols/lark-*.md @huangruiteng @steven-kid @songoow @loopx-agent
/examples/lark-* @huangruiteng @steven-kid @songoow @loopx-agent
/examples/lark_extension_test_support.py @huangruiteng @steven-kid @songoow @loopx-agent
/examples/control_plane/lark-* @huangruiteng @steven-kid @songoow @loopx-agent
/tests/extensions/test_lark_*.py @huangruiteng @steven-kid @songoow @loopx-agent

# --- Governance, CI and release policy (must stay last) ---------------------
/.github/ @huangruiteng @loopx-agent
/scripts/ci/ @huangruiteng @loopx-agent
/AGENTS.md @huangruiteng @loopx-agent
/CONTRIBUTING.md @huangruiteng @loopx-agent
/docs/product/release-*.md @huangruiteng @loopx-agent
/docs/development/contributor-tasks.md @huangruiteng @loopx-agent
/docs/project/technical-directions*.md @huangruiteng @loopx-agent
/.github/ @huangruiteng @songoow @loopx-agent
/scripts/ci/ @huangruiteng @songoow @loopx-agent
/AGENTS.md @huangruiteng @songoow @loopx-agent
/CONTRIBUTING.md @huangruiteng @songoow @loopx-agent
/docs/product/release-*.md @huangruiteng @songoow @loopx-agent
/docs/development/contributor-tasks.md @huangruiteng @songoow @loopx-agent
/docs/project/technical-directions*.md @huangruiteng @songoow @loopx-agent
37 changes: 28 additions & 9 deletions .github/GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ repository-wide maintainer authority.
## Maintainer And Review Roster

This is the public list of everyone who can satisfy a review requirement on
`main`, and the paths they answer for. It is a snapshot audited on
**2026-10-04**; the matching routes live in [`CODEOWNERS`](CODEOWNERS) and a
`main`, and the paths they answer for. It records appointments through
**2026-10-19**; the matching routes live in [`CODEOWNERS`](CODEOWNERS) and a
change to either file changes both in one pull request.

| Account | Role | Scope | `CODEOWNERS` route | Since |
Expand All @@ -32,10 +32,12 @@ change to either file changes both in one pull request.
| [`@steven-kid`](https://github.com/steven-kid) | Subsystem maintainer | [Lark integration](#lark-integration) | Lark extension, its CLI delegates, Lark docs and focused tests | 2026-08-16 ([#3236](https://github.com/loopx-project/loopx/pull/3236)) |
| [`@maxliux5`](https://github.com/maxliux5) | Code owner | Frontend source under `apps/presentation/dashboard/` and chat bundle delivery | Dashboard source, `loopx/presentation/chat_bundle.py`, `scripts/chat_bundle*` | 2026-09-08 ([#4071](https://github.com/loopx-project/loopx/pull/4071)) |
| [`@loopx-agent`](https://github.com/loopx-agent) | Automated technical code owner | Whole repository; evidence-backed technical review, including governance, CI and release changes | Every route, including the `*` fallback and later subsystem overrides | 2026-10-04 |
| [`@songoow`](https://github.com/songoow) | Technical code owner | Whole repository; technical review across subsystems, including governance, CI and release-policy changes | Every route, including the `*` fallback and later subsystem overrides | 2026-10-19 |

`@loopx-agent` shares code ownership on every path with the existing owners.
This includes paths introduced later through the `*` fallback; every narrower
route retains the account so GitHub's last-match rule cannot erase it.
`@loopx-agent` and `@songoow` share code ownership on every path with the
existing owners. This includes paths introduced later through the `*` fallback;
every narrower route retains both accounts so GitHub's last-match rule cannot
erase either one.
Subsystem maintainers and the lead maintainer retain their responsibilities.
Code ownership qualifies a technical approval for the protected-branch review
requirement; it does not grant release, appointment, security-handling or
Expand All @@ -54,6 +56,21 @@ They count as one account's reviews; multiple agent sessions do not create
independent GitHub reviewers. Author-owned pull requests still need another
eligible reviewer because GitHub does not accept self-approval.

The lead maintainer explicitly expands `@songoow`'s existing reliability
review responsibility to repository-wide technical code ownership. The
[earlier accepted diagnostics scope](https://github.com/loopx-project/loopx/issues/4069#issuecomment-5595593586)
is historical evidence of that responsibility, not acceptance of a broader
availability commitment. Current repository access is Maintain (including
Write). Recent substantive cross-author reviews include complete-snapshot
transport in [#6828](https://github.com/loopx-project/loopx/pull/6828#pullrequestreview-5564036586),
workspace navigation in [#6834](https://github.com/loopx-project/loopx/pull/6834#pullrequestreview-5564314366),
and desktop update lifecycle in [#6835](https://github.com/loopx-project/loopx/pull/6835#pullrequestreview-5564422318).
Each names its reviewed head, invariants and independently performed validation;
the two change requests also preserve concrete unresolved findings. These
records support broader technical routing without treating review volume or
approval as proof of maintainer authority. Best-effort availability and all
separate release, appointment, security-handling and bypass boundaries remain.

An `APPROVED` review and GitHub's aggregate review decision are separate facts.
Required code-owner approval uses `CODEOWNERS` on the pull request's base
branch. An account's repository admin permission alone does not satisfy that
Expand All @@ -64,6 +81,9 @@ do not report it as approved solely from the submitted review. See

### Code Owner Eligibility

The `@songoow` scope expansion above is an explicit lead-maintainer appointment;
the general eligibility process below otherwise remains unchanged.

GitHub only honours code owners with repository write access, and a code-owner
approval satisfies the code-owner review requirement on its paths. A route is
therefore added only when all of the following hold, and the pull request adding it links the evidence:
Expand Down Expand Up @@ -285,7 +305,6 @@ says what still separates each contact from a `CODEOWNERS` route under the
| TypeScript transaction migration | [`@hhyykk`](https://github.com/hhyykk) | Proposed paired review of complete transaction cutovers and Python/TypeScript parity; scope confirmation and organization + Write invitation acceptance pending. | Needs scope and access acceptance, and three qualifying in-scope reviews. |
| Task leases and scheduler boundaries | [`@yuefengw`](https://github.com/yuefengw) | Proposed paired review of lease lifecycle and boundary regressions; scope confirmation pending. | Needs scope acceptance, write access and in-scope reviews. |
| DSH integration | [`@wujc12`](https://github.com/wujc12) | Designated by the lead maintainer 2026-09-07 as first-review contact for the DSH plugin, installation and host-integration regressions; no acceptance recorded. Shared replan and lifecycle contracts stay separately reviewed. | Has write access; needs scope acceptance and in-scope reviews. |
| Reliability diagnostics | [`@songoow`](https://github.com/songoow) | Accepted 2026-09-09: observer-envelope and ledger integrity, receipt/projection consistency, readback and time-evaluation correctness. Privacy and first-write data boundaries stay separately reviewed. | Has write access and an accepted scope; needs three qualifying in-scope cross-author reviews. |

Start by linking a real cross-author PR, not by creating a quota of new
implementation work. A review should state the exact head, the governing
Expand Down Expand Up @@ -338,9 +357,9 @@ policy and has no required reviewers. No publication workflow or trusted
publisher identity is changed by this access rollout.

CODEOWNERS routes review, not directory-level write permissions. Unassigned
paths fall back to the lead maintainer; workflow, governance and release-policy
changes remain lead-maintainer-owned. Do not share owner credentials with
contributors or give automated reviewers broader credentials than necessary.
paths fall back to the repository-wide technical owners; workflow, governance
and release-policy paths retain the lead maintainer alongside those owners.
Do not share owner credentials with contributors or give automated reviewers broader credentials than necessary.

## Project Roles

Expand Down
Loading