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
15 changes: 6 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,12 @@ Organization owners should apply these settings after this branch is merged:

1. Set the organization description to the `organization_description` value in
[`repository-lifecycle.yml`](repository-lifecycle.yml).
2. Apply the `repository_descriptions` values from that file. In particular,
the live `openadapt-desktop` description still advertises the superseded
screen-recording/training-data direction. The live `openadapt-agent`
description was already aligned when this file was reviewed.
3. Replace the currently observed pins (`OpenAdapt`, `openadapt-retrieval`,
`openadapt-evals`, `openadapt-grounding`, `openadapt-capture`, and
`openadapt-privacy`) with the exact `pinned_repositories` list. It keeps the
1.6k+ stars correctly attached to the overall `OpenAdapt` project while
putting the canonical engine and Desktop cockpit beside it.
2. Apply the exact `repository_descriptions` values from that file. They keep
the Desktop, native Capture, and agent-bridge descriptions aligned with the
lifecycle registry.
3. Pin the exact `pinned_repositories` list. It keeps the 1.6k+ stars correctly
attached to the overall `OpenAdapt` project while putting the canonical
engine and Desktop cockpit beside it.
4. The Cloud implementation repository is private and cannot be a public
organization pin. The documentation implementation is Internal and remains
reachable through the public docs link instead of occupying a product pin.
Expand Down
8 changes: 4 additions & 4 deletions REPOSITORY_LIFECYCLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ The machine-readable source is [`repository-lifecycle.yml`](repository-lifecycle
| `openadapt-desktop` | **Beta** | Desktop cockpit for local recording, qualification, execution, evidence review, and governed repair |
| `openadapt-cloud` | **Beta** | Proprietary control plane for managed browser and customer-controlled execution, attended operations, evidence, usage, and billing |
| `openadapt-capture` | **Experimental** | Optional native recorder |
| `openadapt-agent` | **Experimental** | Local MCP and Agent Skills bridge for compiled, governed Flow workflows |
| `openadapt-agent` | **Beta** | Local MCP and Agent Skills bridge for compiled, governed Flow workflows |
| `openadapt-privacy` | **Experimental** | Optional scrubbing component |
| `openadapt-types` | **Experimental** | Interoperability schemas |
| `openadapt-web` | **Internal** | Marketing website implementation |
Expand All @@ -46,7 +46,7 @@ The machine-readable source is [`repository-lifecycle.yml`](repository-lifecycle
| **Internal** | `openadapt-ops`, `openadapt-wright`, `openadapt-herald`, `openadapt-crier`, `openadapt-consilium`, `openadapt-presenter`, `openadapt-bootstrap`, `openadapt-telemetry`, `openadapt-viewer`, `openadapt-blog`, `openadapt-internal`, `openadapt-yc` |
| **Experimental UI/support** | `openadapt-console`, `openadapt-tray` |
| **Labs/forks** | `OmniMCP` (`omnimcp` locally), `SoM`, `PydanticPrompt` |
| **Historical directions** | `OpenAdapter`, `OpenReflector` |
| **Archived historical directions** | `OpenAdapter`, `OpenReflector` |
| **Superseded** | `OpenSanitizer` (successor: `openadapt-privacy`) |

## Retirement Queue
Expand All @@ -56,8 +56,8 @@ The machine-readable source is [`repository-lifecycle.yml`](repository-lifecycle
| `openadapt-gitbook` | **Archived** | Keep an archive notice and route documentation traffic to `docs.openadapt.ai`. |
| `openadapt-new` | **Archived** | Keep read-only historical context and route product traffic to `OpenAdapt` and `openadapt-flow`. |
| `OpenSanitizer` | **Superseded** | Add a successor notice for `openadapt-privacy`, then decide whether to archive. |
| `OpenReflector` | **Historical** | Decide Archive versus Labs before changing organization state. |
| `OpenAdapter` | **Historical** | Decide Archive versus Labs before changing organization state. |
| `OpenReflector` | **Archived** | Retain its read-only history and route product traffic to `OpenAdapt` and `openadapt-flow`. |
| `OpenAdapter` | **Archived** | Retain its read-only history and route product traffic to `OpenAdapt` and `openadapt-flow`. |

Experimental, Research, Labs, and Internal repositories are not deprecated by
default. Moving local checkouts is a separate operational decision that must
Expand Down
2 changes: 1 addition & 1 deletion profile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ before extrapolating either result.
| **Desktop cockpit** | **Beta** | [`openadapt-desktop`](https://github.com/OpenAdaptAI/openadapt-desktop) provides local recording, qualification, execution, evidence review, and governed repair. Native installers are published from its releases page. |
| **Cloud control plane** | **Beta** | [`app.openadapt.ai`](https://app.openadapt.ai/) provides managed browser execution plus workflow, evidence, attended-operation, usage, and billing surfaces for customer-controlled execution. Its implementation repository is private. |
| **Native capture** | **Experimental** | [`openadapt-capture`](https://github.com/OpenAdaptAI/openadapt-capture) is the canonical native screen, input, timing, and window-scoped recording component used by Desktop and Flow. |
| **Agent bridge** | **Experimental** | [`openadapt-agent`](https://github.com/OpenAdaptAI/openadapt-agent) exposes compiled Flow workflows as local MCP tools and Agent Skills without becoming a second runtime. |
| **Agent bridge** | **Beta** | [`openadapt-agent`](https://github.com/OpenAdaptAI/openadapt-agent) exposes compiled Flow workflows as local MCP tools and Agent Skills without becoming a second runtime. |
| **Documentation** | **Beta** | [`docs.openadapt.ai`](https://docs.openadapt.ai) is the canonical journey-led site; [`openadapt-ops`](https://github.com/OpenAdaptAI/openadapt-ops) is its **Internal** publishing source. |
| **Evidence and evaluation** | **Research** | [`openadapt-evals`](https://github.com/OpenAdaptAI/openadapt-evals) contains evaluation infrastructure. Runnable references live in [`openadapt-flow/docs/showcase`](https://github.com/OpenAdaptAI/openadapt-flow/tree/main/docs/showcase), with methods and evidence under [`benchmark`](https://github.com/OpenAdaptAI/openadapt-flow/tree/main/benchmark). |

Expand Down
17 changes: 10 additions & 7 deletions repository-lifecycle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,20 @@ public_metadata:
openadapt-desktop: >-
Beta Desktop cockpit for recording, qualification, local execution,
evidence, and governed repair across OpenAdapt workflows.
openadapt-capture: >-
Native screen, input, timing, and window-scoped recording for OpenAdapt
Desktop and Flow. Experimental component.
openadapt-agent: >-
Experimental local bridge exposing governed OpenAdapt workflows as MCP
tools and Agent Skills; halts remain halts.
Beta local bridge exposing governed OpenAdapt workflows as MCP tools and
Agent Skills; halts remain halts.
lifecycle:
beta:
- OpenAdapt
- openadapt-flow
- openadapt-cloud
- openadapt-desktop
experimental:
- openadapt-agent
experimental:
- openadapt-capture
- openadapt-privacy
- openadapt-types
Expand Down Expand Up @@ -58,12 +61,12 @@ lifecycle:
- OmniMCP
- SoM
- PydanticPrompt
historical:
- OpenReflector
- OpenAdapter
historical: []
superseded:
- OpenSanitizer
deprecated:
deprecated: []
archived:
- openadapt-new
- openadapt-gitbook
- OpenReflector
- OpenAdapter
23 changes: 22 additions & 1 deletion scripts/check_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
"openadapt-evals",
)
LINK_RE = re.compile(r"!?\[[^\]]+\]\(([^\s)]+)(?:\s+[^)]*)?\)")
LIFECYCLE_GROUP_RE = re.compile(r"^ ([a-z_]+):$")
LIFECYCLE_GROUP_RE = re.compile(r"^ ([a-z_]+):(?: \[\])?$")
LIFECYCLE_REPOSITORY_RE = re.compile(r"^ - (\S+)$")
EXPECTED_LIFECYCLE_GROUPS = {
"beta",
Expand All @@ -62,6 +62,15 @@
"deprecated",
"archived",
}
EXPECTED_CRITICAL_LIFECYCLES = {
"OpenAdapt": "beta",
"openadapt-flow": "beta",
"openadapt-desktop": "beta",
"openadapt-agent": "beta",
"openadapt-capture": "experimental",
"OpenAdapter": "archived",
"OpenReflector": "archived",
}
FORBIDDEN_PUBLIC_OPERATIONS_MARKERS = (
"/Users/",
"~/",
Expand Down Expand Up @@ -163,6 +172,18 @@ def main() -> int:
errors.append(
f"repository-lifecycle.yml assigns multiple lifecycles: {duplicates}"
)
actual_lifecycles = {
repository: group
for group, group_repositories in groups.items()
for repository in group_repositories
}
for repository, expected_group in EXPECTED_CRITICAL_LIFECYCLES.items():
if actual_lifecycles.get(repository) != expected_group:
errors.append(
"repository-lifecycle.yml assigns "
f"{repository} to {actual_lifecycles.get(repository)!r}; "
f"expected {expected_group!r}"
)

public_operations_text = lifecycle_text + LIFECYCLE_DOC.read_text(encoding="utf-8")
leaked_markers = sorted(
Expand Down