116 KiB
Agent skill sharing implementation checklist
Status: implementation and validation in progress.
Last updated: 2026-08-12.
Implementation baselines captured by this checklist update:
- Orca implementation:
skills-sharethrough607e31dd04; no PR. - Orca Cloud: bundle smoke PR
#329merged aseddb144afe; generation-aware recovery PR#330merged as8045c85dad; encrypted physical-host credential PR#336merged as8fce3298ef; kill-switch discovery PR#342merged asc2bef2ff20fb. Windows device-name validation PR#343merged asdbb14a658cbc; explicit disabled production bootstrap PR#352merged as2a23f6ace5; publisher-identity omission PR#355merged asb3213bd34d1b224d8a3b11527eceaac883965400; production enablement PR#357, bounded OIDC smoke PR#358, monitor IAM PR#359, and monitor release-ownership PRs#360/#361are merged throughd8605edde72229c5d00d22c8bd6853a13c1a4aaa.
Validated so far:
- Current release hardening cancels bundle extraction after partial bytes exist and removes the extraction directory, durable journal, and managed-install state. Four repeated focused runs and the real SIGKILL recovery test passed. Signed GCS uploads use the earlier of signed-policy expiry and a 15-minute cap, including their archive read stream, so slow valid uploads can finish while stalled uploads remain bounded.
- Local and headless managed-skill operations now wait for the one startup transaction-recovery
promise before reading or changing install state. Codex uses its documented global
~/.agents/skillsroot, and provider removal derives allowed roots from the registry so aliases remain removable after an agent is no longer detected. The combined focused suite passed 74 tests across 12 files, including fake-timer slow-upload and controlled-recovery regressions. - The reported desktop install failure was a strict main-process IPC schema rejecting the
renderer's additive
providersselection before bundle verification. All four install schemas now accept the bounded field, and focused schema/provider tests pass. The original production link resolves as a valid one-skill bundle and returns a fresh same-version local download grant; the signed URL and private metadata were not logged or printed during verification. - The final reliability hardening at
607e31dd04adds a 60-second Cloud request deadline; cancellable, journaled bundle extraction; bounded package creation, verification, and preview fanout; atomic share-preparation admission and abandoned-archive cleanup; process-owned download staging; SSH startup recovery; and additive paired-client cancellation-result negotiation. The focused suite passed 78 ordinary tests plus a real process-death recovery test. Full Node, CLI, and web typechecks, repository lint and reliability gates, changed-file formatting, and diff checks passed. Mobile-facing wire changes remain additive, and no mobile app surface changed. - A final performance and React lifecycle review found one stale-response race in managed-install inventory: a slower previous machine could overwrite the newly selected machine's list. The generation fence and regression test now preserve destination ownership; bundle busy state also reaches the parent close guard in the initiating event instead of a mirror effect. The complete renderer skill/settings slice passed 122 tests across 18 files, all Node/CLI/web typechecks, focused Oxlint, changed-code quality, max-lines, diff, and localization gates.
- The final local readiness pass at
9fcd72e327passed 489 skill-domain tests across 73 files with 11 intentional platform skips, all Node/CLI/web typechecks, localization catalog, extraction and coverage, max-lines, changed-code quality, React Doctor, formatting, and diff checks. No new P0, P1, or P2 finding was proven by the crash/retry, security, performance, functional, mobile-backcompat, or Windows/Linux review. - Multi-select sharing now preserves hidden selections, reconciles changed discovery scans, visibly explains ineligible skills, and blocks duplicate names before review. Exact complete managed bundles publish a new immutable version to their existing package; ambiguous or partial selections safely create a new package. Managed bundles with an active link can reopen the destination-aware installer for another machine; the final renderer slice passed 114 tests.
- The mobile/backcompat review found no persisted mobile keys, routes, deep links, or required legacy fields changed. Skill RPC methods and capabilities are additive and capability-gated; the cross-platform review found production paths use host path APIs and platform checks, with POSIX-only literals confined to tests or WSL guest execution.
- Final bearer-link changes pass 143 Orca Cloud API tests with one opt-in skip; 58 focused Orca tests; four mixed-version wire tests; desktop/node/web typecheck; localization catalog, extraction, and coverage; changed-code quality; max-lines; and diff checks.
- The final Cloud change passed PR run
31564069382and merged-mainrun31564235724, including the full monorepo build, lint, typecheck, tests, Terraform format, and Terraform validation. - The opt-in desktop staging harness now publishes a bearer share without retired audience fields; Node typecheck and Playwright test discovery pass without starting Orca or a browser login flow.
- Local Node and web typechecks, changed-code quality gates, 94 skill-domain files with 770 tests passed and 3 skipped, 134 Orca Cloud API tests with one opt-in integration skip, the full Cloud monorepo test/typecheck/lint/build gates, and isolated Terraform formatting and validation.
- Final Orca validation passed repository-wide lint, all Node/CLI/web typechecks, the production desktop/native build, the Node 18 Relay bundle contract, 78 focused skill files with 557 tests passed and 10 platform skips, and the mixed-version wire suite. The full repository run passed 49,977 tests with 112 skips; its three environment/timeout failures passed as a 124-test rerun after removing Orca-injected Git config variables and rerunning the slow macOS PTY case.
- Skill sharing and installation renderer copy now passes the localization catalog, extraction, and coverage gates without a max-lines exception.
- Remote upload sessions actively expire abandoned bytes after their bounded idle lifetime, and begin/chunk/commit retries resume from the host-acknowledged offset under one stable transfer ID.
- Paired skill install and upload cancellation now reaches queued calls, capability probes, one-shot sockets, cached request sockets, and shared-control requests instead of waiting for the five-minute transfer timeout. Focused coverage proves queued work never starts, pending request admission is released, late responses are ignored, one-shot sockets close, and unrelated cached or shared-control requests survive; 84 transport/service tests and Node typecheck passed.
- Standalone and bundled package names reject Windows reserved device names in both Orca and Cloud, preventing a package published on macOS/Linux from failing only when installed on Windows.
- Identical archives are deduplicated only within an owner tenant. PostgreSQL object identity and tenant-hashed GCS keys prevent cross-tenant existence or finalization-timing disclosure.
- Native Windows package/install/recovery/copy-fallback tests and Node typecheck on
windows 2; the current slice passed 284 tests with 21 intentional platform skips across 43 files. - The final combined physical
windows 2run at44d1266641enabled native-Windows, real-process, and Ubuntu 24.04 WSL coverage together: 67 files passed, 449 tests passed, and 17 intentional platform skips remained. Commit97b831dd17made Windows recovery assertions path-semantic and time-deterministic. Commit44d1266641fixed WSL alias reconciliation after proving native UNClstatcan miss an existing distro symlink; WSL now inspects the alias in-distro and creates new aliases withln -sT. The checkout remained clean and noorca-skill-*directory remained in WSL/tmp. - Native Windows transaction validation passed all 21 cases at
6d3ce582aa, including a real canonical install beyondMAX_PATHwhile the host'sLongPathsEnabledpolicy remained disabled. - Real Ubuntu 24.04 WSL global, guest-workspace, and
/mnt/cworkspace transactions, including alias placement, interrupted update recovery, conflict preservation, update, and removal. - Real Ubuntu 24.04 WSL provider detection and POSIX semantics, including case-sensitive names,
0600regular files, and0700executable files. - Exact portable package digest and archive SHA-256 goldens passed on macOS and native Windows
despite different bundled zlib versions (
1.2.12and1.3.1). - The focused deterministic package suite passed 26/26 tests in Debian Bullseye/glibc 2.31 on
native Linux ARM64 and emulated Linux x64, plus the real Ubuntu 24.04 WSL distro on
windows 2; every host produced the same package digest and archive SHA-256 golden. - The same 26/26 portable package suite passed at
109272dab1on a disposable native x86_64 Ubuntu 22.04 GCE host using Linux 6.8 and Node 24.18. The VM had no service account or scopes; its boot disk, uploaded Git bundle, and temporary project SSH metadata were removed afterward. - The exact x64 Electron directory package at
f1dccb4f42passed its after-pack ABI scan for all 18 bundled native binaries, then loaded packagednode-ptyand spawned/bin/shinside an Ubuntu 20.04/glibc 2.31 container. The physical run corrected the gate to use Linux's actualorca-ideexecutable andresources/node_moduleslayout. A native ARM64 package built from exact commitabe92d565bon an isolatedaarch64GCE host then passed the same 18-binary Ubuntu 20.04/glibc 2.31 ABI gate and packagednode-ptyload/spawn smoke. The ARM64 VM had no service account or scopes; its auto-delete boot disk was verified absent, and its local Git bundle was moved to Trash after the clean-checkout proof. - Real native Windows global, linked Git-worktree, and plain folder installs with spaces and non-ASCII paths, plus privacy-safe install diagnostics and owner-private staging tests.
- Docker-backed SSH relay installation from the real Electron client passed global, remote Git worktree, and remote plain-folder scopes, including client-mediated upload, unchanged preview, managed-install listing, safe removal, and remote-target Cloud authorization.
- Real paired-runtime installation passed from an isolated Electron client to both a headed
desktop host and headless
orca servehost. The host owned global and Git-worktree installs; the headed host also owned a plain-folder install. The client's home remained untouched. - A fresh post-resilience E2E run passed all three headed paired-runtime, headless
orca serve, and Docker SSH journeys. Focused failure injection also proves invalid gzip classification, old-version preservation afterEACCESandENOSPC, bounded recovery from a lost final install response, and validated structured SSH failure data without arbitrary error-data disclosure. - Isolated staging bucket, IAM,
orca_skillsdatabase and principal, enabled secret version, 11 log metrics, four alerts, and one dashboard inonorca-cloud-staging. The complete targeted skill-infrastructure plan is zero-diff at Cloud41ef335. - PostgreSQL migration startup is serialized by a transaction-scoped advisory lock. Transactional DDL rollback and eight concurrent startup callers passed against ephemeral PostgreSQL 16 and 17, with exactly one recorded schema version.
- Cloud PR
#349merged as6a812c5e11after proving an older API migration runner preserves a newer additive column/table and continues using its existing SQL. Build, lint, typecheck, tests, Terraform initialization, and validation passed; no service or infrastructure was deployed. - Cloud PR
#350merged asc22007384aand added a required disposable PostgreSQL 16/17 drill. Real old and future-additive Node processes coexist and write against one database, the database is dumped and restored, and both processes write again after restoration. PR run31624484826and merged-main run31624717796passed every code, Terraform, and database job; no staging or production resource was accessed or deployed. - The immutable API deploy path stamps every artifact and skill literal variable plus exactly one
approved skill-database secret, and rejects secret, Cloud SQL, service-account, scaling, CPU,
memory, volume, mount, probe, or unexpected-environment drift before traffic promotion.
Staging intentionally carries all four skill controls as
true; production remainsfalse. - The route-disabled baseline, API revision
orca-cloud-api-staging-00039-rek, first proved the database-ready startup and anonymous401/404boundaries with zero revision errors. - Cloud PR
#313passed run31533988351, merged asd0bf926, and passedmainrun31534229437. Guarded wake run31534564230restored exactly the two configured Relay cells. - Auth deploy run
31535179937promoted revisionorca-cloud-auth-staging-00017-dugat 100% traffic. Health, JWKS, exact GitHub OIDC claim constraints, and zero deployment-window errors passed. - The historical ACL-era API deploy run
31535438327promoted revisionorca-cloud-api-staging-00042-hefat 100% traffic withauthenticatedSmoke: trueandskillSmoke: true. The smoke covered artifact lifecycle; skill upload/finalize/download; two immutable versions; recipient and outsider authorization; local and remote grants; rollback selection; expiry; revocation; package deletion; and signed-object cleanup. - Cloud PR
#317passed both required checks and merged asbe00db10. Its historical ACL-era deploy run31546194596promoted revisionorca-cloud-api-staging-00048-xomat 100% traffic withauthenticatedSmoke: trueandskillSmoke: true; canonical health and the immutable image digest independently matched after promotion. - The signed-in macOS desktop staging journey reached upload, finalize, durable share creation, and global install after replacing an invalid colon in the audience-derived idempotency key. The retry test now requires a stable path-safe key, and the live test records the package ID before publication so a failed share can still clean up its finalized package. Its update phase uncovered same-name discovery ambiguity; the harness now selects the exact workspace source directory instead of the first same-named global skill. A final full live rerun remains open.
- The serving API has all four controls
true, zero revision errors, and privacy-safe structured request logs. The log field inventory contains no principals, credentials, signed URLs, object paths, or private contents; a sensitive-value scan returned zero matches. - Cloud PR
#314removed deploy-owned Auth release metadata from Terraform ownership, passed run31536141357, merged as4e91cf9, and passedmainrun31536329459. The targeted Auth/API plan then reported zero intended changes. Known SQL and artifact-bucket drift was excluded and never applied. - Cloud PR
#320passed both required checks and merged as0579cc1a71. Targeted Terraform added onlygoogle_logging_project_exclusion.skill_share_bearer_request_urlsin staging: one addition, zero changes, and zero deletions. This prevents per-link Cloud Run request URLs from entering log storage while retaining route-template application telemetry. - Guarded wake run
31564370807prepared the reviewed staging topology. Deploy run31564803943promotedorca-cloud-api-staging-00051-yoqat 100% traffic with immutable image digestsha256:511c0196511d2079bd9138092ad3cf065304b46a089b02d8df9318e0ae2e656aand reportedauthenticatedSmoke: trueandskillSmoke: true. - Candidate and canonical smoke produced 60 privacy-safe route-template events covering owner
upload/finalize/share creation/inventory/revocation and anonymous pinned/latest preview,
local/remote download grants, version selection, expiry, uniform unavailable responses,
package deletion, and object cleanup. Anonymous requests with no Authorization header and an
invalid header both returned the same
404 skill_share_not_foundresponse withno-store. The serving revision had zero error logs and Cloud Logging retained zero per-link platform request logs. - Guarded sleep run
31546908228stopped all three Relay cells after the physical staging work. Independent GCP reads verified Cloud SQL policyNEVER, every MIG target at zero, and both managed Cloud Run minimums at zero. - Final guarded sleep run
31565009141restored the same low-cost state after the bearer rollout; independent reads found Cloud SQLNEVER/STOPPEDand C1, C2, and C3 at target size zero. - Cloud PR
#329passed required checks, merged aseddb144afe, and passed merged-main run31569732482. Browser-free desktop run31569902499then passed bundle publish v1, install, local modification preservation, v2 update, rollback, revoke, installed-copy preservation, local removal, and Cloud package deletion without opening a login page. - Cloud PR
#330passed required run31578720429, merged as8045c85dad, and passed merged-main run31578942857. Guarded wake31579195133brought SQL and all three Terraform-owned cells up; deploy31579844413promotedorca-cloud-api-staging-00057-katat 100% traffic with immutable digestsha256:f61745b21d00b111087620ab1108c9a96e9863ec9e902a424aaad01e9e945605. - Recovery smoke
31580071168published an isolated bundle, soft-deleted the exact published GCS generation, restored it withifGenerationMatch=0, verified immutable metadata, transactionally repointed every matching database reference, verified the unlisted bearer download, and deleted the probe. No ephemeral recovery job or live probe object remained. - Guarded sleep
31580339694returned staging to low cost. Independent reads verified Cloud SQLNEVER/STOPPED, C1/C2/C3 target size zero and stable, and API/Auth min scale zero. Production was not touched. - Cloud PRs
#332through#335added the staging-only 12-by-30 finalization load gate, narrowly authorized its OIDC identity, fixed deterministic fixture ordering, and made retry settlement cleanup-safe. Their merge commits wereac85d0690e,53559bd644,7e1d50a84b, andbb8bf8b9ac; merged-main verification passed through run31586525326. - Auth deploy
31584318896promotedorca-cloud-auth-staging-00021-tuqwith digestsha256:e17075d69dca36df427f02fa515481f359c8f67397c5ab16de9759f7f949c6be; candidate and canonical smoke passed with one 100%-traffic revision and no remaining candidate tag. - Load run
31585710645exercised 12 concurrent bundles with 30 skills and 3,949,317 extracted bytes each. Two finalized immediately and ten returned explicit saturation; client p95 was 1,514 ms. Aggregate utilization stayed bounded: request p95 1,401.06 ms, API CPU 8.95%, API memory 26.95%, one API instance, database CPU 10.89%, database memory 25.59%, and seven connections. A saved, exact one-add Terraform plan restored the declaredroles/monitoring.viewerbinding for the staging deploy identity before those aggregate metrics were read; it changed no service, traffic, SQL, storage, Relay, or production resource. - Cleanup run
31586684354removed the exact failed-wave package set through normal package DELETE routes. The two remaining quarantine archives were manifest-proven as 30-skill fixtures for suffix013756ec4740and deleted with exact GCS generation preconditions; no live object from that run window remained. GCS soft delete keeps the operation recoverable. - Guarded sleep
31587083752returned staging to low cost. Independent reads verified Cloud SQLNEVER/STOPPED, C1/C2/C3 target size zero and stable with no current actions, and API, Auth, and Relay active-revision minimums at zero. Production was not touched. - Cloud PR
#336added a browser-free physical-host credential handoff restricted to the exactmain-branch staging workflow identity. It encrypts only the ten-minute owner token to a one-time RSA-3072 key, grants no GCP permissions, retains ciphertext for at most one day, and passed PR run31588982191plus merged-main run31589194501as merge8fce3298ef. - Guarded wake
31589384191restored SQL and the two configured Relay cells without waking C3. Auth deploy31589963244promotedorca-cloud-auth-staging-00025-zuzat 100% traffic with immutable digestsha256:2b5cb04060a871f372298786dbed681054a076f5cf75966ea5e2130403db7254. - The physical
windows 2staging journey passed in 27.6 seconds using credential run31591275227. It installed v1 into the Windows-owned global path with the published digest and no macOS fallback, updated only that host to v2, preserved independent local version selection, rolled Windows back to v1, proved revocation left its installed copy intact, removed both host and local installs, and deleted the Cloud package. The encrypted artifact and local one-time key material were deleted immediately after use. - The staging skill bucket independently reports the exact age-one-day Delete lifecycle restricted
to
uploads/, seven-day soft deletion, uniform bucket access, and public-access prevention. Its oldest live quarantine object was created at2026-08-11T22:49:34Z, so lifecycle execution—not configuration—is still time-gated. - Guarded sleep
31592709817completed at Cloud8fce3298ef. Independent reads verified SQLNEVER/STOPPED, all three Relay MIGs stable at target zero with no active actions, and API, Auth, and Relay active-service minimums at zero. - Real process-death recovery now kills the transaction process after partial extraction and immediately before and after every durable install/removal journal transition. All 17 macOS cases passed, including extraction cleanup, dead-lock reclamation, receipt/filesystem agreement, and absence of transaction debris; the release workflow requires the same suite on macOS, native Windows, and Ubuntu 20.04/glibc 2.31.
- Guarded wake
31603249983restored only the two configured staging cells. A disposable no-service-account Ubuntu 20.04/glibc 2.31 VM then passed the browser-free SSH staging lifecycle in 31.3 seconds: publish v1, host-owned install with exact digest, v2 update, managed-install verification, rollback, revocation with installed-copy preservation, local removal, and Cloud package deletion. The remote install, Orca SSH target, encrypted credential artifact, one-time keys, and VM were removed. Guarded sleep31604391897passed; independent reads verified SQLNEVER/STOPPEDand C1/C2/C3 target zero, stable, and reached. Production was untouched. - Guarded wake
31634214856restored the two configured cells at Clouddfb8359ff5. An isolated nativeDarwin arm64OpenSSH target with a separate temporary home then passed the full staging lifecycle in 20.1 seconds: publish v1, SSH-owned install, v2 update, managed-version checks, rollback, revocation with installed-copy preservation, removal, and Cloud package deletion. This corrected the staging oracle to accept absolute POSIX homes outside/home. The GitHub ciphertext artifact was deleted immediately; the SSH service, relay, install, temporary home, and one-time keys were removed. Guarded sleep31635145830passed; independent reads verified SQLNEVER/STOPPED, all three MIGs stable and reached at zero with no active actions, and API/Auth/Relay minimum scale zero. Production was untouched. - Guarded wake
31605729090restored the same configured topology. An isolated headless Orca host with a separate home/profile then passed the full paired-runtime staging lifecycle in 12.5 seconds, proving host-owned install, update, managed-install state, rollback, revocation preservation, removal, and Cloud deletion without local fallback. The paired environment, install, package, encrypted credential artifact, and one-time keys were removed. Guarded sleep31606600532passed; independent reads again verified SQLNEVER/STOPPEDand all MIGs at stable, reached target zero. - Guarded wake retry
31630802215succeeded at Clouddfb8359ff5; the additional physical WSL Cloud journey was then waived as duplicate release evidence. The first guarded sleep attempt31631288043failed closed during Terraform provider initialization on a transient upstream503, before the mutation step. Retry31631379891succeeded. Independent reads verified SQLNEVER/STOPPED, all three MIGs stable and reached at target zero with no active actions, and the API, Auth, and Relay active-revision minimums at zero. Production was untouched. - Cloud PR
#355removed internal publisher and organization identifiers from anonymous skill responses, passed every code, Terraform, and PostgreSQL 16/17 check, and merged asb3213bd34d1b224d8a3b11527eceaac883965400. Guarded wake31639920301prepared staging. Deploy31640677572promotedorca-cloud-api-staging-00060-qayat 100% traffic with immutable digestsha256:31cb0a91a7abf1f82e4de08bd31e98fbd71519adc731a005fc95f60480658f73; authenticated and skill candidate/canonical smoke passed. The unrelated post-promotion storage-monitor image update lackediam.serviceAccounts.actAs; the unchanged prior monitor image remains serving, and the API promotion and verification completed successfully. Guarded sleep31640935616passed in 8m51s. Independent reads verified SQLNEVER/STOPPED, C1/C2/C3 stable and reached at target zero, and the API at minimum scale zero with revision00060-qayretaining 100% traffic. Production was untouched.
Rollout gate: staging infrastructure, OIDC owner identity exchange, anonymous bearer lifecycle, owner management, browser-free desktop bundle lifecycle, privacy-safe logging, published-object recovery, bounded finalization load, and guarded rollback-capable deployment passed. Production infrastructure and the unlisted-link API are live with all four controls enabled after successful authenticated candidate and canonical lifecycle smoke. Native Windows, real Ubuntu 24.04 WSL filesystems, physical Ubuntu 20.04 and macOS ARM64 SSH, and paired non-Windows staging passed. On 2026-08-12, the owner accepted the remaining live WSL-to-staging journey as duplicate evidence after the combined 449-test physical Windows/WSL run and native-Windows staging lifecycle; this does not treat WSL semantics as identical to macOS. The user-driven signed-in desktop and real-host production journey, supported Windows SSH, and the quarantine lifecycle deletion remain. The shared staging data plane is asleep.
This checklist turns the architecture plan into ordered implementation and release work. A checked item means evidence exists in code, tests, reviewed infrastructure, or release documentation; it does not mean the surrounding phase is complete.
Definition of done
- A user can select one or many private local skills, publish one immutable Skill Bundle, and receive one durable Orca share URL.
- Anyone with an active unlisted link can inspect a bundle without signing in, choose all or a subset of its skills, and install them globally or into a Git worktree or plain folder workspace.
- Installation works on local macOS, Linux, native Windows, WSL, paired Orca runtimes, and supported SSH targets.
- The portable archive root conforms to Agent Plugins 1.0.0 for skills-only packages and keeps
Orca integrity metadata in
dev.orca.skill-sharing/manifest.json. - One canonical
.agents/skills/<skill-name>copy is installed for each selected skill; provider-specific placements are reconciled for explicitly selected agents, defaulting to detected agents when no selection is supplied. - Install, update, rollback, and removal preserve modified or unowned local content unless the user explicitly approves replacement.
- Package ingestion rejects unsafe archives before any destination mutation.
- Interrupted operations recover to a complete previous or requested version.
- Private package bytes remain access-controlled, published versions persist until deletion, and incomplete uploads expire automatically.
- Mixed-version clients and remote hosts fail safely through capability negotiation.
- Cloud resources are Terraform-owned, monitored, recoverable, and protected by independent
upload, download, and remote-install kill switches. Targeted Terraform is zero-diff; staged
generation recovery passed; dashboards, alerts, and runbooks cover the data plane; and Cloud
PR
#342proves all three mutation controls can be disabled independently while unlisted preview remains available. - The existing Skills page supports multi-select sharing, selective installation, per-skill conflicts/results, and installed-bundle management; Settings → Share Skills provides the authenticated owner inventory for copying and revoking active links.
0. Confirm scope and ownership
Product and legal decisions
- Record
vercel-labs/skillsas a behavioral reference only. - Record upstream baseline commit
c6f69c631292444cc541ac6d91e2226b0ff247da. - Decide not to copy upstream source, tests, fixtures, registry data, or path tables.
- Decide Orca will not depend on the upstream CLI or an unsupported programmatic API.
- Decide V1 accepts Orca package sources only; Git, npm, and community registries remain with existing tools.
- Decide every Skill Bundle share is unlisted and reachable only through its durable link; do not add search, browsing, organization-library, marketplace, or contained-skill indexes.
- Record Agent Plugins 1.0.0 commit
bd383552095128f6effe895b9257cfd580a6d179as the portable-format reference. - Decide to implement from the specification without copying its CC BY prose or vendoring its Apache-licensed schemas.
- Treat the archive as a Skill Bundle, not an Orca plugin product or executable plugin runtime.
- Limit V1 bundles to skills; exclude MCP servers, hooks, processes, connectors, and permissions.
- Review the architecture decision record covering the reference-only boundary with engineering and legal owners.
- Add a review check that flags any proposed copied or mechanically translated upstream material so attribution and licensing can be reconsidered before merge.
- Assign desktop, runtime, Cloud API, Terraform, security, design, and release owners.
- Confirm the first release ends after WSL and SSH support; keep team reconciliation as a later product milestone.
Product semantics
- Confirm private means unlisted and protected by an unpredictable revocable bearer link, not end-to-end encryption from Orca Cloud operators.
- Confirm a published immutable version persists until package or version deletion; it has no age-based object expiry.
- Confirm an unfinished upload grant expires after 15 minutes and its quarantine object is deleted after one day.
- Confirm a durable share URL contains a bearer credential for a revocable authorization record, not a GCS object or permanent blob grant.
- Confirm a signed download grant lasts five minutes and is the maximum share-revocation lag.
- Confirm updates create immutable versions and never mutate existing package objects.
- Confirm rollback installs a selected prior immutable version.
- Confirm revoking or deleting a Cloud share does not silently remove existing local installs.
- Confirm sharing and updating use an artifact-like flow—preview, upload, unlisted durable link, update, revoke/delete—while retaining skill-specific version, trust, and install semantics.
- Confirm recipients do not sign in; publishing and managing owned links still require sign-in.
- Confirm revocation blocks future resolution/download grants but does not remove installed copies.
- Add a Settings section named Share Skills, parallel to Artifacts, without adding any index or discoverability surface.
- Treat the authenticated owner-only active-link inventory as management, not recipient discoverability; never expose it anonymously or through browse/search APIs.
- Confirm V1 has no checked-in workspace desired-state lockfile and no automatic fleet-wide installation.
- Confirm one skill is a one-item bundle and a bundle may contain large selections such as 30 skills behind one durable link.
- Keep bundle identity, access, versions, transport, update/rollback, revocation, and deletion at bundle scope.
- Keep installation selection, conflicts, provenance, modification protection, and outcomes at skill scope.
- Keep loose-skill installation as the universal/default path and treat provider-native plugin adapters as optional compatibility outputs.
Existing-code and provider research
- Inventory current skill discovery,
observeSkillPackage, package identity, topology, and freshness code; record reusable contracts and missing behavior. - Inventory plugin staging, provenance, lock serialization, and Windows rename retry designs; extract only primitives that both domains can name and test accurately.
- Inventory current desktop IPC and remote skill RPC registration.
- Inventory existing SSH execution and file-transfer providers and identify the host-side installer entry point.
- Research official documentation for every initially supported agent's global and project skill directories.
- Verify each provider path with a real installation on every supported platform.
- Record whether each provider reads
.agents/skillsdirectly, how it is detected, and which alias mechanisms it supports. - Add a normal reviewed maintenance process for provider registry changes; do not create an upstream synchronization job.
1. Define package and install contracts
Bundle contract replacement
- Replace the unpublished single-skill envelope with root
plugin.json,skills/<name>/, anddev.orca.skill-sharing/manifest.json; do not add an outerbundle/directory. - Define
SkillBundleManifestV1with stable package/version identity, bundle metadata, ordered skill entries, per-skill identity and file lists, globally unique archive paths, and a bundle digest. - Validate Agent Plugins 1.0.0
plugin.jsonfields from independently authored local rules; never fetch a schema during loading. - Create fresh staging roots and reject unknown, malformed, or conflicting imported
dev.orca.skill-sharingnamespaces without overwriting them. The extractor now exclusively creates its staging root, preserves a pre-existing namespace on conflict, rejects unknown top-level extension entries, and removes only staging it created. - Keep the detailed manifest inside the archive for export, remote/SSH transport, and offline validation; keep GCS metadata compact and PostgreSQL limited to exact link/ownership lookup.
- Add selected skill IDs and per-skill conflict choices to preview/install requests.
- Return aggregate status plus ordered installed, unchanged, kept-local, and failed per-skill outcomes; support retrying failed items only.
- Add
skills.install.bundle.v1and additive bundle RPC methods so mixed-version peers fail before transfer. - Decide to dispose of the unpublished staging-only single-skill records before changing the Cloud schema; there is no production compatibility commitment to the unpublished single-skill format.
Shared package manifest
- Add
src/shared/skill-package-manifest.ts. - Define the original single-skill
SkillPackageManifestV1prototype with schema version, stable package ID, immutable version ID, name, description, creation time, file identities, and package digest. - Normalize manifest paths to
/while keeping filesystem conversion host-owned. - Define the canonical digest algorithm over normalized paths, file identity, executable state, and classification.
- Require
skill/SKILL.md, valid frontmatter, and agreement between skill and package names. - Specify deterministic serialization so identical inputs produce identical identities across macOS, Linux, Windows, and WSL.
- Version the schema and require additive changes or a new schema version.
- Reject unknown schema versions with a stable error category.
Package limits and file policy
- Enforce maximum path depth 16.
- Enforce maximum 2,048 archive entries.
- Enforce maximum 512 regular files.
- Enforce maximum 4 MiB per file.
- Enforce maximum 32 MiB total extracted bytes.
- Enforce maximum 40 MiB compressed bytes.
- Reject absolute, parent-traversal, NUL-containing, and Windows drive-prefixed paths.
- Reject duplicate normalized paths and Unicode or case-fold collisions.
- Reject symlinks, hardlinks, devices, FIFOs, sockets, encrypted entries, and other special files in V1.
- Preserve executable modes represented by the package manifest.
- Document that install never executes package scripts.
Install request, preview, and result
- Add
src/shared/skill-install-contract.ts. - Define requests with operation ID, immutable package identity, ingress kind, destination, and optional conflict resolution.
- Support download-grant, staged-upload, and trusted in-process local-file ingress.
- Ensure arbitrary remote RPC callers cannot supply a local filesystem path.
- Model global, Git worktree, and folder-workspace destinations without assuming Git exists.
- Define preview output for destination, current state, provider coverage, conflicts, and trust metadata.
- Define structured installed, updated, unchanged, conflict, partial, and failed results.
- Define stable error categories for admission, transport, archive, filesystem, conflict, recovery, provider placement, and compatibility failures.
- Ensure responses never include grants, credentials, ACL membership, or private package contents.
Capability and wire compatibility
- Add
src/shared/skill-install-capability.tswithskills.install.v1and an update-required compatibility message. - Read and apply
docs/reference/remote-wire-compatibility.mdbefore changing RPC contracts. - Add new methods without changing existing discovery behavior.
- Keep new request and response fields optional until all supported peers understand them.
- Do not add a terminal stream opcode for skill installation.
- Define behavior for new client/old host, old client/new host, and capability loss during an operation.
Phase 1 contract gate
- Review package, ingress, conflict, result, and capability contracts. Shared schema, runtime method, Relay handler, ingress, planner, and stable-failure suites now form the release-gated contract evidence; no existing discovery method or stream opcode changed.
- Freeze stable V1 error categories used by desktop, runtime, SSH, and Cloud tests.
2. Build and validate packages
Package creation
- Add
src/main/skills/skill-package-creation.ts. - Accept a specific skill directory rather than an arbitrary parent tree.
- Observe and validate the source before staging.
- Copy the source into an owner-private staging directory.
- Observe the staged copy again and fail if its identity differs from the source snapshot.
- Generate a deterministic tar archive with
manifest.jsonand askill/envelope. - Include only
skill/contents in the eventual installed directory. - Bind the user-visible share preview to the final staged digest.
- Clean staging files on success, cancellation, source drift, and error.
- Accept a non-empty ordered selection of skill directories and support at least 30 within the
global entry/file/byte limits. Focused local creation/extraction now covers one 30-skill
archive; staging load run
31585710645finalized the same maximum selection through Cloud. - Reject duplicate normalized skill names and preserve selection across search/filter changes in the caller. The picker keeps hidden selections, unions explicit filtered selection, and disables a second same-name source before review.
- Generate deterministic
plugin.json,skills/, and Orca extension metadata. - Bind the share review to every staged skill digest and the final bundle digest.
Bounded extraction
- Add
src/main/skills/skill-package-extraction.ts. - Stream archive inspection and extraction without buffering the entire package.
- Validate
manifest.jsonbefore trusting archive file metadata. - Enforce compressed, extracted, entry, file, depth, and per-file limits during extraction, not only after it.
- Create extraction staging on the same filesystem as the canonical destination.
- Convert manifest paths with the destination runtime's path APIs.
- Re-observe extracted
skill/and compare every file identity and package digest. - Delete partial extraction bytes on cancellation or failure.
- Validate the portable root, Orca extension namespace, bundle manifest, and every selected
skills/<name>subtree before destination mutation. - Extract selected skill subtrees without requiring installation of unselected skills.
Package tests
- Test deterministic manifests, archives, and digests on macOS and native Windows. The exact
golden passed on both hosts at
8be7275d0dafter replacing zlib-dependent streaming output with bounded deterministic stored DEFLATE blocks. - Repeat the portable package golden on native Linux and inside WSL.
The focused golden passed in Debian Bullseye/glibc 2.31 containers on native ARM64 and
emulated x64, and inside the real Ubuntu 24.04 WSL distro, at
92c8c6a4c6. The same 26/26 suite passed at109272dab1on a disposable native x86_64 Ubuntu 22.04 GCE host; the VM, boot disk, uploaded bundle, and temporary SSH metadata were removed after validation. - Test source changes during packaging.
- Test CRLF/LF behavior explicitly and document whether byte identity changes.
- Test executable-mode preservation and Windows's mode limitations.
- Test missing, malformed, and identity-mismatched
SKILL.mdfiles. - Test every size, count, and depth boundary at limit, one below, and one above.
- Test traversal, absolute paths, drive paths, Unicode/case collisions, duplicate paths, all rejected link and special-file types, and encrypted entries.
- Test truncated archives and invalid tar and content checksums.
- Test invalid gzip bytes and map zlib-specific errors to the stable non-retryable archive category.
- Fuzz archive path normalization and envelope parsing with bounded resources.
Phase 2 package gate
- Prove invalid archive classes fail before destination mutation.
- Prove the same source bytes produce the same digest on macOS, Linux, native Windows, and WSL.
- Prove package creation and extraction require no
npx, external Node installation, or upstream CLI runtime.
3. Implement the local installer transaction
Destination resolution
- Add
src/main/skills/skill-install-destinations.ts. - Resolve global canonical roots as
<host-home>/.agents/skills/<skill-name>on the executing host. - Resolve workspace canonical roots from runtime-owned worktree or folder-workspace identity.
- Reject client-supplied remote paths that do not resolve to the selected workspace identity.
- Resolve WSL home, paths, and target distro inside the selected distro.
- Keep all path joins platform-native and reject destination escapes after realpath-aware containment checks.
- Support long Windows paths and case-insensitive destination collision checks.
Admission, locking, and ingress
- Add
src/main/skills/skill-package-download.ts. - Add
src/main/skills/skill-install-service.ts. - Validate request shape, schema, capability, package identity, scope, destination, and policy before download or mutation.
- Recover prior journals for the same destination before planning a new operation.
- Acquire a filesystem-backed cross-process lock keyed by canonical destination.
- Bound lock wait time and return a retryable busy result.
- Stream ingress to an owner-private bounded temporary file and hash it while downloading.
- Require HTTPS whenever the configured Cloud endpoint uses HTTPS.
- Allow only configured Orca skill-bucket origins and reject credential-bearing cross-host redirects.
- Check expected compressed bytes, archive SHA-256, package digest, cancellation, grant expiry, and disconnects.
- Delete partial ingress bytes on every incomplete path.
Planning and conflict handling
- Add
src/main/skills/skill-install-planner.ts. - Classify missing canonical destinations as installable.
- Classify an identical requested digest as unchanged and continue placement repair.
- Permit clean updates only when installed bytes still match Orca provenance.
- Return a modified conflict when installed bytes drift from their receipt.
- Return an unowned conflict when a destination exists without Orca provenance.
- Return topology conflicts for files, external links, broken links, and name collisions.
- Classify every requested provider placement independently.
- Repeat current-state inspection immediately before commit and invalidate stale previews.
- Require explicit confirmation before discarding local modifications or unowned content.
Durable commit and recovery
- Add
src/main/skills/skill-install-transaction.ts. - Copy extracted bytes into a hidden sibling staging directory and verify the digest again.
- Preserve executable modes where the host supports them.
- Keep staging, replacement, and backup on the destination filesystem.
- Write and durably flush a versioned transaction journal before moving the current destination.
- Move an approved existing destination to a journal-owned backup.
- Rename verified staging into the canonical path.
- Add bounded retries for Windows
EPERM,EACCES, andEBUSYrename races caused by antivirus or indexing. - Observe the committed destination and require the requested digest.
- Restore the backup after failed commit and retain sufficient journal state after a crash.
- Never remove a path based only on a filename pattern; require journal ownership, containment, and expected identities.
- Run bounded recovery at startup and before later operations for the destination. Startup scans at most 64 install and 64 removal journals, bounds each read to 4 MiB, validates the journal filename against the canonical-path state key, and recovers removal before install under the destination lock. Dead-PID locks are reclaimed immediately after a killed runtime; malformed locks retain the bounded stale-age safeguard. Corrupt or conflicting journals are preserved and reported by path-free failure code for manual recovery.
Provenance
- Add
src/main/skills/skill-install-provenance.ts. - Store versioned receipts outside installed skill directories.
- Record package/version IDs, digest, scope, destination identity, canonical identity, placements, previous version, timestamp, and runtime identity.
- Exclude credentials, grants, share values, manifests, and package contents.
- Serialize receipt updates across processes.
- Write receipt updates through durable temporary-file replacement.
- Support aggregate-index reconstruction from bounded per-install receipts.
- Mark the journal complete only after receipt publication, then remove transaction backups and staging.
Verification and discovery
- Re-run skill discovery on the destination after commit.
- Verify the canonical skill and successful provider placements are observable.
- Determine success from installed bytes and discovery, not process exit alone.
- Invalidate renderer skill caches and refresh the Skills page.
- Return canonical success with
partialwhen an optional provider placement fails.
4. Implement provider placements
Provider registry
- Add
src/main/skills/skill-provider-destinations.ts. - Add data-only records for Orca agent ID, canonical-root support, global/project resolvers, detection evidence, and platform alias support.
- Populate only provider paths independently verified from official documentation and real installations.
- Detect an agent before creating its provider-specific configuration root.
- Avoid modifying roots for agents that consume
.agents/skillsdirectly. - Keep loose-skill placement as the universal/default installation path.
- Do not add Cursor-specific placement in V1; keep the Agent Plugins-compatible root as the portable archive shape while installing contained skills through canonical loose-skill paths.
- Do not generate
.claude-plugin/plugin.jsonor.codex-plugin/plugin.jsonadapters in V1; native plugin installation remains a separately reviewed follow-up if it becomes useful. - Use loose skills for plugin clients, including the current Codex IDE extension, and retain bundle/version provenance for every installed skill.
Placement reconciliation
- Add
src/main/skills/skill-placement-reconciliation.ts. - Create relative directory aliases from real parent directories on POSIX.
- Create directory junctions with absolute canonical targets on Windows.
- Detect provider parents already linked to canonical storage.
- Fall back to an independently copied and verified directory when aliases are unavailable or denied and policy allows it.
- Record each canonical copy, provider alias, junction, or independent-copy topology.
- Reconcile placements idempotently after install and update.
- Repair broken Orca-owned aliases.
- Leave unowned or modified provider placements untouched unless explicitly replaced.
- Preserve canonical success when a provider placement fails and make coverage retryable.
Provider validation
- Confirm every initial provider discovers a global canonical or reconciled install.
- Confirm every initial provider discovers a workspace install only in that workspace.
- Test symlink, junction, and copy fallback behavior after provider and canonical parent paths are moved or linked.
- Test provider release upgrades against the registry through the normal review process.
5. Implement update, rollback, and removal
Update and rollback
- Resolve the latest accessible immutable Cloud version without mutating local state.
- Compare the requested digest with provenance and observe current bytes before offering an update.
- Route clean updates through the same install transaction.
- Offer keep-local, authorized publish-as-new-version, and explicit discard-and-replace choices for modified installs.
- Reconcile recorded aliases, junctions, and independent copies during updates.
- Implement rollback as installation of a selected retained immutable version.
- Never invoke
npx skills updateor write ownership metadata for the community CLI.
Local removal
- Observe the canonical destination and every receipt-owned placement before mutation.
- Remove only aliases or junctions that still target the recorded canonical path.
- Remove independent copies only when they match their receipt unless discard is explicit.
- Remove the canonical copy only when Orca owns it, it is unmodified, and no retained receipt depends on it.
- Publish provenance changes durably before completing removal.
- Leave changed or unowned paths intact and report exactly what remains.
Recovery failure injection
- Inject failure before and after every journal transition.
- Verify partial downloads and extraction staging are deleted.
- Verify a moved destination is restored from backup.
- Verify a placed destination without a receipt is completed or restored according to journal state.
- Verify a published receipt with an incomplete journal is finalized safely.
- Verify a restarted process discovers orphaned install and removal journals without a later user operation. Deterministic startup tests prove a committed update publishes provenance and cleans its dead lock, while an interrupted removal restores both bytes and receipt.
- Verify interrupted placement reconciliation preserves the canonical install and retries.
- Test cancellation during download, extraction, staging copy, commit, provenance, and placement reconciliation.
6. Provision GCP infrastructure
Environment and Terraform prerequisites
- Inspect the active
onorca-cloudproject read-only and record the existing Cloud Run, GCS, Cloud SQL, IAM, and enabled-service baseline. - Locate the authoritative Orca Cloud Terraform worktree, state, modules, and deployment pipeline.
- Confirm or create a separate staging GCP project before exercising new lifecycle and IAM behavior.
- Confirm production names and quotas, including availability of
onorca-cloud-skill-packages. A read-only 2026-08-12 check returned404for the global bucket name, found no productionorca_skillsdatabase or skill-database secret collision, and confirmed the intended existing API service and runtime identity. Cloud Run exposes a 1,000-job regional quota and 180 job runs per minute, while V1 reuses the existing API at a 20-instance ceiling and existing Cloud SQL instance; no quota increase is required. - Confirm
USstorage satisfies initial residency requirements. - Confirm Cloud SQL connection and PostgreSQL user provisioning conventions.
- Keep Firestore, Cloud Tasks, and new Pub/Sub dependencies out of V1.
- Declare every durable resource and IAM binding in Terraform; do not provision them manually
with
gcloud.
Dedicated GCS bucket
- Declare private bucket
onorca-cloud-skill-packages, subject to Terraform validation. - Set location to
USfor parity with current artifact storage. - Enforce uniform bucket-level access and public-access prevention.
- Configure seven-day soft delete.
- Keep object versioning disabled and record object generations in PostgreSQL.
- Add a one-day deletion lifecycle for
uploads/quarantine objects only. - Add exact approved production and development Orca origins to CORS; never use
*. - Allow only required signed POST upload and GET/HEAD download behavior and response headers.
- Keep the bucket off public custom domains.
- Define immutable final keys as
packages/v1/tenants/<tenant-hash>/sha256/<prefix>/<archive-sha256>/package.tar.gz, with the logical package digest verified in object metadata and PostgreSQL. - Define tenant-bound random quarantine keys as
uploads/<upload-id>/package.tar.gz.
Database and secret
- Declare database
orca_skillson existing regional PostgreSQL 17 instanceorca-cloud-auth-db. - Declare dedicated principal
orca_skills_appwith access only toorca_skills. - Store its connection URL in Secret Manager as
orca-cloud-skills-database-url. - Attach the existing Cloud SQL instance to
orca-cloud-apiwithout replacing the service. - Inject only the skill database secret into the API service.
- Verify backups and point-in-time recovery cover the new database.
orca_skillsshares the Terraform-managed Cloud SQL instance whose live staging and production settings both have backups, replication-log archiving, seven retained backups, and seven-day PITR enabled.
IAM
- Grant
orca-cloud-api@onorca-cloud.iam.gserviceaccount.combucket-scopedroles/storage.objectUser. - Grant the API service account
roles/cloudsql.clientfor the existing instance. - Grant service-account-scoped IAM Credentials
signBlobfor self-signing V4 policies and URLs. - Grant Secret Manager accessor only for skill-specific secrets.
- Verify bucket IAM contains neither
allUsersnorallAuthenticatedUsers. - Do not grant desktop, remote runtime, or end-user identities direct bucket IAM.
- Do not create or distribute long-lived GCP service-account keys.
- Keep deployment-account permissions unchanged except for reviewed Terraform management
requirements. Skill sharing adds no deployment-account IAM binding: immutable API and
monitor-image updates use its existing
roles/run.developer, while storage inventory and scheduling use separate least-privilege service accounts.
Cloud Run configuration
- Extend
orca-cloud-apiinus-central1; do not create a separate V1 worker service. - Configure bucket, 40 MiB compressed limit, 15-minute upload TTL, five-minute download TTL, fixed finalize concurrency, and skill database URL.
- Reuse existing auth base URL and application CORS configuration.
- Stream validation with fixed buffers under the existing 512 MiB memory limit.
- Add a small per-instance finalization semaphore and retryable
429or503withRetry-Afterwhen saturated. - Preserve current service scaling initially and tune only from measured CPU, latency, database, and error data.
- Define criteria for splitting finalization into a worker service if it harms existing API traffic.
- Make immutable API candidates atomically replace the complete Terraform-owned literal
environment and the exact
ORCA_SKILLS_DATABASE_URLSecret Manager reference. - Reject serving or candidate drift in the runtime service account, Cloud SQL attachment, scaling, CPU, memory, volumes, mounts, ports, and probes before moving traffic.
- Keep all four skill controls explicit in both deploy workflows. Staging changed to
trueonly with the authenticated OIDC smoke gate; production remainsfalse.
Terraform review and apply
- Format and validate Terraform.
- Produce and review a staging plan.
- Verify the plan does not replace the existing artifact bucket, Cloud SQL instance, Cloud Run services, or unrelated IAM.
- Apply to staging and capture resource and IAM verification evidence.
- Produce and review the production plan after staging gates pass.
- Apply the approved production plan only during the rollout phase.
- Verify production with read-only bucket, Cloud Run, database, IAM, lifecycle, and CORS commands without printing secret payloads or signed values.
7. Implement Cloud metadata and APIs
PostgreSQL migrations
- Serialize concurrent Cloud Run startup migrations with a transaction-scoped PostgreSQL advisory lock before migration-table inspection.
- Prove failed DDL records no schema version and eight concurrent callers converge on one version against real PostgreSQL 16 and 17.
- Add
skill_packageswith owner organization, slug/name, creator, timestamps, and deletion state. - Add immutable
skill_package_versionswith package and archive identities, GCS key and generation, sizes, manifest, release notes, creator, and publication state. - Add tenant/user-bound
skill_package_uploadswith quarantine identity, expiry, finalization state, and failure category. - Add
skill_package_aclfor organization and user principals and permissions. - Add unpredictable, revocable, optionally version-pinned
skill_share_records. - Add bounded
skill_package_audit_eventswithout contents, filenames, or signed values. - Add unique package slug per organization, immutable version and digest constraints, and tenant-scoped archive and final GCS key/generation constraints.
- Add active-share, ACL-principal, and pending-upload expiration indexes. The ACL index remains legacy storage and is not used for bearer resolution.
- Add foreign keys preventing blob-reference deletion while a published version uses it.
- Accept and stream-validate both the pre-release single-skill envelope and the new Agent Plugins skills-only bundle envelope during the desktop migration.
- Store the detailed bundle manifest in the existing immutable version record; expose it only after exact-link bearer authorization or to owners.
- Keep contained skills out of separate database rows and search indexes. Selective inspection reads the validated manifest attached to the exact immutable version.
- Keep detailed file identity in the in-archive manifest rather than duplicating it into GCS custom metadata. Published-object metadata contains only aggregate archive/package digests and immutable generation identity; per-file paths, sizes, modes, and hashes remain inside the authorized archive manifest and immutable PostgreSQL version record.
- Test forward migration, rollback strategy, backup restoration, and migration compatibility
during mixed API versions. Unit coverage proves atomic forward/idempotent migration, ignores
an additive schema version written by a newer API, and leaves no recorded or partial schema
after failure. PostgreSQL 16/17 integration coverage proves transactional DDL rollback and
eight concurrent startup callers converge on one version. Cloud PR
#349additionally proves the older runner and its existing SQL preserve and operate beside a simulated newer additive column/table. Cloud PR#350requires real old/new Node-process coexistence, writes before and after apg_dump/pg_restore, and full cleanup on disposable PostgreSQL 16 and 17; both PR and merged-main runs passed.
Authorization and lifecycle model
- Allow share resolution and share-scoped download grants without an authenticated principal.
- Treat an unpredictable active, unexpired share ID as the bearer authorization; do not apply legacy package ACLs to recipients.
- Return the same non-disclosing
404for missing, expired, revoked, or deleted shares. - Keep authenticated owner checks on upload, finalize, package/version management, share creation, revocation, and deletion.
- Apply distributed per-IP abuse limits to anonymous resolution and grant requests without persisting raw requester addresses.
- Apply organization retention and legal deletion rules over product rollback retention.
- Make package deletion revoke shares before dereferencing immutable objects.
- Delete an object only after a transaction proves no retained version references it.
- Design metadata/object reconciliation for partial publication and deletion failures.
Upload and finalization APIs
- Implement
POST /v1/skill-packages/uploadswith existing authentication, organization membership, quota, rate, and concurrency checks. - Insert a single-use pending upload before issuing a grant.
- Create a 15-minute V4 signed POST policy bound to exact key, content type, upload ID, expected archive SHA-256 metadata, and 40 MiB length range.
- Upload directly from the client to GCS without routing package bytes through Cloud Run.
- Implement idempotent finalize by upload ID and manifest identity.
- Validate GCS key, size, type, metadata, tenant, generation, and expiry before streaming.
- Stream once to calculate archive SHA-256 and validate envelope, manifest, paths, limits, and package digest.
- Promote with an if-absent generation precondition to the tenant-scoped, content-addressed final key.
- If the tenant's final key exists, verify recorded identity without exposing cross-tenant package existence.
- Publish the version and complete the upload in a PostgreSQL transaction.
- Delete quarantine bytes after success and rely on lifecycle cleanup for abandonment.
- Make all mutating endpoints accept idempotency keys.
Package, version, and share APIs
- Implement package creation and version publication under a stable package identity.
- Implement package details and paginated version history.
- Stop accepting organization/selected-user audience fields for new bearer shares; retain legacy ACL storage only as migration-compatible data.
- Implement durable share creation with optional pinned version and expiry.
- Implement anonymous bearer-link metadata preview.
- Implement immediate share revocation for new grant requests.
- Implement Cloud package/version deletion with retention and reference checks.
- Implement version update lookup and rollback selection.
Download grants
- Implement anonymous
POST /v1/skill-shares/<share-id>/download-grantsafter fresh active-link evaluation. - Generate a five-minute V4 signed GET URL for the exact immutable key and stored generation.
- Set only response content type and safe attachment filename overrides.
- Grant no list or write capability.
- Return expected archive identity and byte count beside the grant for runtime verification.
- Test revocation immediately blocks new grants while already issued URLs expire within five minutes.
Cloud tests
- Test anonymous latest/pinned preview and download grants without an Authorization header.
- Test missing, expired, revoked, and deleted shares all fail without disclosure.
- Test authenticated owner management remains protected.
- Test anonymous per-IP rate limiting without recording raw IP addresses.
- Test the authenticated owner-only active-link inventory and ensure responses are not cached.
- Test expired, reused, wrong-tenant, wrong-key, wrong-size, and wrong-hash uploads.
- Test malformed, oversized, and resource-exhausting archives during finalization.
- Test finalization semaphore saturation and retry behavior.
- Test concurrent idempotent mutations and partial database/GCS failures.
- Test tenant-scoped deduplication without cross-tenant timing or response disclosure. Orca
Cloud
ddbd4e2proves identical archives use distinct tenant-hashed GCS keys and independent PostgreSQL object identities. - Test quota and rate limits.
- Test durable shares resolving intended latest and pinned immutable versions.
- Test update, rollback, revocation, deletion, soft-delete recovery, and orphan reconciliation.
8. Implement desktop Cloud client and UX
Cloud client
- Make share resolution and share-scoped download-grant calls anonymous while keeping upload, package/version management, share creation, revocation, and deletion authenticated.
- Keep desktop contracts storage-provider-neutral.
- Implement bounded progress, cancellation, retry, and idempotency behavior.
- Redact signed policies, URLs, credentials, private paths, and package contents at creation.
Share experience
- Read and apply
docs/STYLEGUIDE.md; use canonical CSS tokens and shadcn primitives. - Add Share skill to eligible installed and workspace skills.
- Show name, description, author, file count, total size, scripts, executable files, and the unlisted-link warning before upload.
- Remove organization and selected-person audience controls from bearer-link publishing.
- Accept optional release label and notes.
- Package the exact previewed bytes and invalidate preview after source drift.
- Show bounded upload and finalization progress with cancellation.
- Return a copyable durable Orca URL after publication.
- Remove access editing from the bearer-share workflow; keep version publishing, revoke, and package deletion actions.
- Make clear that unsharing blocks future installs but does not remove installed copies.
- Add Share skills, Install from link, and installed-package Manage to the existing Skills page header; expose active link copy/revocation in Settings → Share Skills so links remain manageable even when the source was never a managed install.
- Add selection mode whose selection survives search/filter changes and an explicit Select all results action; never select all implicitly.
- Keep the per-card share action as a one-skill bundle shortcut.
- Disable ineligible skills with visible, screen-reader-linked reasons and block duplicate skill names before review.
- Review bundle name, skill/file/byte counts, script/executable warnings, expandable per-skill details, unlisted-link behavior, and release notes.
- Add Settings → Share Skills with artifact-like explanation and a route to the Skills page.
- Show named preparation, upload, verification, and link-publication progress and return one durable link for the bundle. Preparation uses Preparing preview…; publication advances through Uploading…, Verifying package…, and Publishing link… before rendering the single durable share URL. Cancellation reaches both upload and link publication.
Install experience
- Show description, version, digest, file summary, scripts, and executable files without exposing internal publisher or organization identifiers.
- Treat the package as code from its author and require an explicit install action.
- Show current-machine global installation as the default.
- Allow selection of connected machine, Git worktree, or plain folder workspace.
- Show detected-agent coverage and canonical/provider topology before commit.
- Show installed-state conflicts and explicit resolution choices.
- Show phase progress without exposing grants or local private paths.
- Render installed, unchanged, updated, partial, conflict, unsupported, cancelled, and failed results with actionable recovery.
- Add incomplete-coverage retry.
- Open deep links in inspection mode without starting installation.
- Show immutable version, skill count, scripts/executables, and release notes before selection; V1 omits publisher identity from the public response and recipient UI.
- Let the recipient select all or a subset, then choose local, paired runtime, WSL, or SSH and global or workspace scope.
- Preview new, unchanged, update, and conflict counts and resolve all per-skill conflicts in one surface with Keep local as the default.
- Label the primary action Install N skills and show aggregate progress plus current skill. The destination-owned installer emits the current name and one-based bundle position. Local installs forward it directly; paired and SSH hosts expose a capability-gated read-only progress method, with phase-only fallback for mixed-version older hosts.
- Group results into installed, unchanged, kept local, and failed; retry failed items only.
Skills page lifecycle
- Show installed package/version identity and update availability.
- Offer clean update, modified-copy choices, prior-version rollback, and safe local removal.
- Show whether a package came from Orca Cloud and its accessible version history.
- Refresh discovery and installation state after local or remote actions.
- Keep Cloud deletion, share revocation, and local removal clearly separate.
- Add installed-bundle update, rollback, install-on-another-machine, inspect, and remove actions. An active unlisted link opens the existing destination-aware installer for another machine.
- Add shared-bundle copy-link, access, revoke, publish-version, and Cloud-delete actions. Exact full-bundle version publishing reuses its package; ambiguous or partial managed-bundle selections create a new package rather than mutating the wrong history.
- Protect locally modified skills during bundle update and removal, including when only part of a bundle remains managed. Keep-local is the default and destructive replacement is explicit.
UX validation
- Test keyboard shortcuts and labels with platform-aware macOS versus Windows/Linux behavior. Skill sharing adds no modifier shortcut or shortcut label. Renderer coverage proves its platform-neutral Escape navigation closes the page, leaves editable controls alone, and remains owned by open dialogs; the compatibility scan found no hardcoded Meta-only binding, macOS glyph, or platform-specific accelerator in the feature.
- Test loading, error, cancellation, partial, conflict, and stale-preview states. Renderer coverage includes scan loading, unavailable links, upload/install cancellation, partial provider results, keep-local conflicts, capability loss after preview, and selection reconciliation after a changed discovery scan; package tests cover source drift.
- Test screen-reader names, focus order, progress announcements, and destructive confirmations. The link field receives initial focus, Tab reaches the enabled primary action, Escape closes the dialog, and machine, destination, WSL, and workspace selectors have programmatic names. Upload progress exposes its phase and numeric value from 0 through publication; dialog-level install tests announce authorization, installation, and current-skill position. Link revoke, Cloud deletion, and local removal retain focus while switching to exact confirmation names.
- Test long names, release notes, paths, organization names, and localized copy. Renderer coverage exercises the 64-character bundle/skill-name boundary, a 10,000-character multiline release note, long Unicode descriptions and organization IDs, long Windows-style skill paths, and long workspace labels. Review copy wraps without losing full values, selectors constrain labels to dialog width, and localization catalog, extraction, and coverage gates pass.
- Review trust and privacy wording with security and design.
9. Implement paired runtime installation
Runtime and IPC surface
- Register preview, install, update, and remove through runtime RPC and desktop IPC.
- Add bounded
beginUpload,uploadChunk,commitUpload, andcancelUploadmethods. - Route every request to the runtime that owns the selected host and workspace.
- Keep transfer separate from installation so grants, relayed chunks, and local files converge at the validated ingress boundary.
- Make upload sessions bounded by count, total bytes, idle lifetime, and chunk size.
- Require monotonic offsets and idempotent acknowledged-chunk retry or full restart. A stable transfer ID and host-acknowledged offset resume a lost begin response or interrupted upload.
- Release staging bytes after cancellation, disconnect, timeout, and runtime restart. Active idle timers remove abandoned archives even when no later upload arrives.
Direct and client-mediated transfer
- Prefer destination-runtime direct download when it can reach approved Orca Cloud storage.
- Verify origin, redirects, generation, byte count, archive hash, and package digest on the destination runtime.
- Fall back to authenticated client-mediated chunk transfer when the host cannot reach GCS.
- Never pass the desktop's local path as a remote package source.
- Preserve the same inspection, transaction, provenance, and result behavior for both transports.
- Retry an idempotent install after a recoverable lost final response; rebuild a staged transfer before retrying so a consumed upload is never reused.
- Run the real Electron client against a paired desktop host for global, Git-worktree, and plain-folder install, unchanged preview, inventory, and removal.
- Run the same contract against a paired headless
orca servehost for global and Git-worktree install, unchanged preview, inventory, and removal. - Verify paired installation creates files only in host-owned roots and never falls back to the client's isolated home.
- Test connection loss and resumption or restart behavior at every transfer boundary. Lost final install-response convergence is covered for direct and staged paired-runtime paths; deterministic cancellation now settles in-flight and queued paired calls across every transport without leaking request admission or disrupting peers. Client-mediated transfer also cancels and cleans a fully uploaded session when cancellation interrupts the commit RPC. Restart and the remaining physical disconnect boundaries are still open.
Mixed versions
- Advertise additive bundle installation separately on paired and SSH hosts; never send the
bundle method to an older peer that lacks
skills.install.bundle.v1. - Hide or disable remote install when
skills.install.v1is absent. - Show a specific host-update-required message instead of attempting the RPC.
- Test new client/old server and old client/new server.
- Test optional-field omission in both directions.
- Test a capability changing after preview but before execution.
- Confirm older servers retain skill discovery and ignore no unknown stream opcode because none is introduced.
10. Validate native Windows and WSL on windows 2
The connected Orca environment windows 2 was reachable on 2026-08-11 and ran Orca 1.4.180 with
runtime ID 68b5e70d-baaf-40a5-b384-be09cc088880. Validation used the isolated checkout
C:\Users\neil\orca\skills-share-validation and WSL distro Ubuntu-24.04; no production skill
directory was used for destructive failure injection.
The final combined run used workspace skills-share-staging-validation at
C:\Users\neil\orca\workspaces\orca\skills-share-staging-validation on branch
OrcaWin/skills-share-staging-validation. At 44d1266641, native-Windows, real-process, and real
WSL coverage ran together: 67 files passed, 449 tests passed, and 17 intentional platform skips
remained. The Windows checkout was clean afterward, and WSL /tmp contained no remaining
orca-skill-* directory.
The 2026-08-11 host inventory recorded Windows 11 Pro 10.0.26200 build 26200, x64, healthy
NTFS, Windows Defender, LongPathsEnabled=0, no Developer Mode registry grant, and an expected
UnauthorizedAccessException for an unprivileged directory-symlink probe. The current user home
is C:\Users\neil and the temp root is under that profile. WSL 2.7.11.0 uses kernel
6.18.33.2-microsoft-standard-WSL2; its only installed distro is the running default
Ubuntu-24.04 WSL2 instance, with default user neil, home /home/neil, x86_64, and an ext-family
distro filesystem. No standalone Orca CLI is installed inside that distro; WSL skill operations
are owned by the connected Windows Orca runtime. A reproducible second-distro setup is
wsl --install -d Debian --no-launch, followed by first launch and an isolated Orca test user/home
record before the multi-distro gate.
At commit 1e2d2e806f, the opt-in real-Windows workspace harness created an actual Git linked
worktree and a plain non-Git folder under owner-controlled temporary roots containing spaces and
non-ASCII characters. It installed globally and into both workspace kinds through host-owned IDs,
then removed the complete fixture tree. The full native src/main/skills slice passed 284 tests
with 21 intentional platform skips across 43 files, and the Node typecheck passed. Two discovery
fixtures uncovered by that run now use Windows junctions instead of privileged directory symlinks,
matching Orca's supported Windows placement topology.
At commit cdafe43542, the opt-in WSL semantics harness used real provider detection and installed
through the selected distro after converting UNC verification paths to distro-native paths. The
run passed both cases: Linux case sensitivity was preserved, regular files were 0600, executable
files were 0700, and the packaged script executed successfully. Existing real transaction
coverage also verified POSIX provider alias creation inside the distro.
At commit 92c8c6a4c6, the exact portable package golden passed 26/26 focused tests from a native
WSL filesystem using an isolated user-owned Node 24 toolchain. The package digest and archive
SHA-256 matched macOS, native Windows, and Linux container results; the temporary WSL toolchain,
source snapshot, dependencies, and package-manager store were removed after the run.
Commit 97b831dd17 stabilized the physical Windows recovery harness by asserting parsed JSON paths
instead of shell-escaped text and by using a fake clock for upload ownership expiry. The combined
run then exposed a real WSL placement bug: native UNC lstat could miss an existing distro symlink,
so GNU ln -s followed it and created a self-link inside the canonical skill. Commit 44d1266641
now asks the WSL filesystem whether the alias already targets the canonical path before native
existence checks and uses ln -sT for safe creation.
Only Ubuntu-24.04 is installed on this host. A second-distro permutation is a post-launch
resilience follow-up, not a first-release gate. On 2026-08-12, the owner accepted the additional
live WSL-to-staging journey as duplicate evidence after the physical Windows/WSL matrix and native
Windows Cloud lifecycle passed; the remaining disconnect/cancellation boundaries stay recorded as
residual follow-up work.
Host preparation
- Confirm
windows 2is saved and reachable throughorca environment listandorca status --environment "windows 2" --json. - Confirm the host provides both a native Git checkout and a native plain folder workspace.
- Record Windows edition/build, architecture, filesystem type, long-path policy, current user home, temp root, antivirus status, and developer-mode/symlink policy without collecting secrets.
- Discover installed WSL version and distros, each distro's running state, default user, home, filesystem, and Orca host support.
- Ensure at least two WSL distros are available or record a reproducible second-distro setup for the multi-distro test.
- Create isolated test skills and destination roots under explicit test workspaces; never use production user skill directories for destructive failure injection.
- Record exact Orca client/server versions and capabilities with each test run.
Native Windows package and destination tests
- Package on macOS and install on native Windows; compare manifest and digest. The physical staging journey installed the macOS-published archive with the exact published digest, and the portable golden independently matched manifest, package digest, and archive SHA-256.
- Package on native Windows and install on macOS/Linux; compare identity and executable-mode policy.
- Test global home resolution without constructing the path on the macOS client.
- Test a host-owned real Git worktree and plain folder workspace independently.
- Test path joining, drive prefixes, UNC rejection/handling policy, reserved names, trailing dots/spaces, long paths, Unicode normalization, and case collisions.
- Test source and destination paths containing spaces and non-ASCII characters.
- Test junction creation succeeds for a detected provider.
- Force junction denial and verify an independently copied, digest-verified fallback.
- Test an unowned junction, external link, broken junction, and provider parent that is already
linked. All four real NTFS junction cases passed on
windows 2atc7c8a2e32d; Orca repairs only its receipt-owned broken junction and preserves unowned links. - Test copy-fallback drift during update and removal. Real Windows coverage at
b4f5b6c119proves a locally modified independent copy is skipped during reconciliation and refused during removal without changing its bytes. - Hold destination files open to simulate antivirus/indexer contention and verify bounded
EPERM,EACCES, andEBUSYrename retries. A realFileShare.Nonelock onwindows 2proved transient recovery and bounded exhaustion at18fe31f107. - Verify retry exhaustion restores the old version and yields an actionable result. The
transaction preserves the old bytes and returns retryable
skill-install-filesystem-failed; the real Windows source remains intact for retry. - Terminate the runtime before and after each journal boundary and verify startup recovery. The combined physical Windows run passed the real-process extraction, install, removal, and upload restart suites, including begun, partial, fully uploaded, and committed upload states.
- Test permission-denied, read-only, disk-full, cancellation, runtime disconnect, and partial
provider-coverage paths. Deterministic
EACCESandENOSPCtransaction injection now proves the prior installed version remains intact; physical read-only/disk-full and disconnect journeys remain open.
WSL tests
- Execute package ingress, extraction, home resolution, installation, provenance, and discovery inside the selected distro.
- Prove the Windows client never constructs a Linux home or mutates the distro through a translated Windows path.
- Post-launch: test global installs for a second distro with a different default user/home.
- Test Linux case sensitivity and executable modes inside the installed distro. Real
Ubuntu-24.04coverage passed atcdafe43542with0600regular files and0700executable files. - Install a multi-skill bundle selectively into a distro-owned home and prove unselected skills
are absent. The first
windows 2run found missing filesystem preparation; the fix at70b847c38epassed all 3 realUbuntu-24.04tests and the temporary worktree was removed. - Post-launch: repeat Linux case-sensitivity and executable-mode coverage in a second distro.
- Test a distro-owned Git worktree and plain folder workspace.
- Test a workspace on the distro filesystem and document behavior for
/mnt/cseparately. - Test provider detection and POSIX alias creation inside the distro. Real
Ubuntu-24.04provider detection passed atcdafe43542; the transaction harness also verified the Claude placement as a distro-owned POSIX symlink. - Test concurrent native Windows and WSL installs of the same package without provenance or lock collision across host identities.
- Test distro stopped, distro removed, default user changed, home moved, and runtime restarted between preview and install.
- Block outbound GCS access inside WSL and verify client-mediated chunk transfer.
- Disconnect the macOS client during transfer and commit; verify bounded cleanup and recovery.
Windows/WSL mixed-version tests
- Use
windows 2as old host with a newer client and verify capability-gated UI. - Upgrade
windows 2only through the normal supported update path, then test an older client against the newer host. - Verify folder-workspace IDs, runtime-owned paths, and results survive client/host version skew.
- Capture structured test evidence without signed URLs, tokens, skill contents, or private absolute paths beyond approved test fixtures.
Windows/WSL release gate
- Real native Windows passes junction success, junction denial, verified copy fallback,
antivirus contention, long paths, crash recovery, Git worktree, and folder-workspace tests.
The final combined run passed 449 tests across 67 files at
44d1266641. - Real WSL passes distro-owned paths, Linux semantics, provider placement, cancellation, and crash recovery tests. Distro-owned paths, semantics, provider placement, and interrupted update recovery passed in the combined physical matrix. The owner accepted the additional live WSL-to-staging journey as duplicate release evidence on 2026-08-12; physical disconnect/cancellation injection remains open, and a second distro is post-launch.
- Temporary local test installations, workspaces, and packages are removed through verified,
recoverable cleanup. The final checkout was clean and WSL
/tmphad noorca-skill-*debris.
11. Implement and validate SSH targets
The 2026-08-11 live Orca inventory contained only the connected windows 2 environment and no
non-local worktree or repository. Later staging journeys registered disposable Ubuntu 20.04 and
native macOS ARM64 hosts directly through Orca's SSH provider and removed them afterward. A
supported Windows SSH target remains required for its platform-specific gate.
The Docker-backed Linux SSH harness exercises the production Electron → SSH provider → relay → remote installer path. Its loopback package origin is unreachable from the container, forcing client-mediated chunk upload. The test independently verifies Cloud request receipts and remote files for global, Git-worktree, and plain-folder installs, unchanged preview, listing, and removal. Physical staging journeys additionally passed the supported Ubuntu 20.04/glibc 2.31 floor and native macOS ARM64; supported Windows remains open.
- Define a host-side installer command that invokes the same installer core and structured result contract.
- Transfer immutable packages through the existing SSH/SFTP provider into bounded private staging.
- Invoke installation on the SSH host so it owns home, path, provider, and filesystem resolution.
- Add capability/version detection for the required host component.
- If unsupported, offer a package download or explicit command; never install into the desktop's home as fallback.
- Propagate cancellation and clean partial SSH transfers and staging.
- Route selective bundle installs through an additive SSH method with direct download, client-mediated fallback, per-skill results, and old-host capability fencing.
- Test SSH-only macOS, Linux at the supported floor, and Windows where the existing provider supports it. Ubuntu 20.04/glibc 2.31 and native macOS ARM64 passed the full live staging lifecycle; supported Windows remains open.
- Test Git worktree and folder-workspace scope over SSH through the disposable Docker Linux target and verify the host-owned paths independently.
- Test connection loss during upload, extraction, commit, provenance, and result return. Lost result-return recovery is covered for direct and staged SSH installs; the other physical boundaries remain open.
- Prove SSH and paired runtimes return the same result and error-category contracts. The full nine-category matrix now passes through both transports with exact code and retryability preservation. This exposed and fixed SSH's numeric JSON-RPC code taking precedence over its validated structured skill failure; arbitrary error data remains rejected by the strict schema.
12. Add observability, operations, and security controls
Metrics and dashboards
- Record bounded package byte/file counts and package, upload, finalization, download, transfer, install, placement, and recovery durations.
- Record outcomes by error category, OS, destination kind, transport, conflict type, and placement topology.
- Record junction, alias, copy-fallback, rollback, recovery, capability-absence, and orphan reconciliation counts.
- Add dashboards for grant/finalize/share rates, authorization and rate limits, finalization saturation, archive rejection, and digest mismatch.
- Add Cloud Run 5xx, CPU, memory, instance, and skill-route latency panels and alerts.
- Add GCS quarantine/published bytes, object count, and lifecycle failure panels and alerts.
- Add PostgreSQL connection, storage, query latency, migration, and transaction panels and alerts.
- Add signed-policy/URL generation and IAM Credentials failure alerts. Grant-signing failures
are mapped to a stable application category so the alert does not depend on project-wide
Data Access audit logging; evidence is in Orca Cloud
69b388e. - Add budget alerts for GCS storage/egress, Cloud Run growth, and Cloud SQL storage.
Dashboard evidence in Orca Cloud 41ef335 and f67ee2c: upload-grant, finalize, share, and
download-grant success; bounded security failures; Cloud Run CPU, memory, instances, and latency;
GCS bytes and object count; and Cloud SQL connections, disk use, p99 skill-principal query latency,
and skill-database transaction rate. Cloud PR #344 passed both required checks and merged as
fcf8655a; it adds privacy-bounded migration-ready/failure metrics, a migration lifecycle panel,
and a zero-tolerance migration-failure alert. Its targeted staging plan creates the two metrics and
alert, updates only the dashboard, reruns descriptor propagation, and destroys no infrastructure.
Cloud PR #345 passed both required checks and merged as 06a5c729; it normalizes malformed
compression failures to the bounded skill_package_archive_invalid category, adds explicit
finalization-saturation and archive-rejection metrics, and displays successful and failed API
operations as rates. The broader unchecked items still require the listed split metrics, lifecycle
visibility, budget coverage, and reviewed alert thresholds. Cloud PR #346 passed both required
checks and merged as 8199c048; it adds privacy-bounded per-route latency distributions, sustained
80% CPU/memory and near-instance-ceiling alerts, separate five-second interactive and 30-second
finalization p99 latency alerts, and a route-template p99 dashboard without bearer identifiers.
Cloud PR #347 passed both required checks and merged as 65320475; it adds a six-hour
aggregate-only storage inventory job, fixed quarantine/published bytes and object-count metrics,
an overdue-quarantine metric, two storage panels, and an overdue-or-job-failure alert. The monitor
identity has only storage.objects.list, while the scheduler can invoke only that job. The reviewed
targeted staging apply added 18 observability resources, updated the existing dashboard, and
replaced only the inert descriptor-propagation timer. A manual run emitted only aggregate fixed-
namespace measurements with zero overdue objects; the post-apply targeted plan is zero-diff, SQL
remained NEVER/STOPPED, all Relay MIG targets remained zero, and production remained disabled.
Desktop operations now emit local diagnostic spans for package creation, direct upload, finalization, grant download, client-mediated runtime/SSH transfer, single and bundle install, provider placement, transaction rollback settlement, and startup recovery. Package bytes/files, OS, destination kind, transport, conflicts, placement topology/mechanism, copy fallback, capability absence, recovered transactions, stale extraction/lock cleanup, and failure categories use fixed or bounded values; bundle error-category cardinality is capped at 32. The implementation adds no product telemetry event, RPC field, persisted schema, or remote opcode. The skill-sharing release suite passes 427 tests with 29 expected platform skips, the focused affected matrix passes 102 tests with one expected skip, typecheck and the full lint pipeline pass, and the real-process macOS recovery matrix passes all 17 crash boundaries. The final combined physical Windows/WSL run passes 449 tests across 67 files with 17 intentional platform skips; live WSL staging and physical disconnect boundaries remain separate gates below.
Logging and privacy
- Log package/version IDs, phases, destination labels, placement outcomes, and bounded error categories only.
- Exclude package contents, filenames, manifests, raw local paths, ACL membership, durable share URLs, upload policies, download grants, and credentials.
- Redact sensitive network values before logger invocation, not after ingestion.
- Audit authorization and lifecycle events without instruction or script contents.
- Verify diagnostics and support bundles preserve the same exclusions. Desktop install spans map requests and results to bounded labels before the tracer boundary; regression coverage proves raw paths, filenames, manifests, ACL values, durable share URLs, upload policies, download grants, credentials, and raw error text never enter the collected bundle.
Security review
- Threat-model package creation, archive ingestion, manifest trust, path containment, local
conflicts, grants, redirects/SSRF, authorization, tenant isolation, and instruction/script
trust in
docs/reference/agent-skill-sharing-threat-model.md; keep approval and residual-risk acceptance as separate human gates. - Verify owner-private staging permissions on supported hosts. POSIX download, package,
extraction, upload-session, provenance, and lock tests require
0700directories and0600files; real WSL verifies owner-private executable modes; and the native-Windows privacy suite verifies staging remains under the owning profile without broad ACL disclosure. - Rate-limit uploads, finalization, downloads, share resolution, and remote transfer sessions.
- Test malicious redirects, DNS/host confusion, expired grants, mismatched generations, and
oversized streaming bodies. Exact HTTPS origins, manual same-origin redirects, URL
credentials, suffix/port confusion, streamed byte bounds, expiry-before-fetch, and immutable
GCS generation pinning are covered in Orca
534abb8908and Orca Cloud81a581d. - Test archive and filesystem race conditions, including source drift and destination changes after preview. Package creation re-observes staged bytes, and install commit re-observes the locked canonical destination before its first destructive rename.
- Review organization departure, deletion, retention, soft-delete, and operator recovery.
- Complete privacy and security sign-off before external rollout.
Runbooks and kill switches
- Add independent server-side flags for upload grants, download grants, and remote installation.
- Verify disabling Cloud grants does not break skill discovery or already installed skills.
- Document finalization saturation, GCS/IAM signing failure, database outage, corrupt package, orphan reconciliation, and rollback response.
- Document coordinated PostgreSQL point-in-time and GCS generation/soft-delete restoration.
- Document package/share deletion, organization departure, legal retention, and audit handling.
- Document how and when to split finalization into its own service.
13. Complete automated and end-to-end validation
Transaction matrix
- Test fresh install, identical reinstall, clean update, rollback, explicit replacement, and safe removal.
- Test modified and unowned canonical and provider conflicts.
- Test canonical/provider paths as regular files, directories, aliases, junctions, external links, and broken links. Deterministic native coverage now preserves canonical regular-file name collisions, unowned provider files/directories, external and broken unowned links, Orca-owned broken-link repair, aliases, and verified copy fallback. Physical Windows junction coverage remains open.
- Test concurrent desktop, headless runtime, CLI, SSH, and recovery attempts. The shared transaction core now serializes two simultaneous installs into one installed and one unchanged result, one receipt, and no staging residue. The host request service also serializes simultaneous download-grant and trusted-local ingress requests with the same guarantees. A real multi-process harness proves an on-disk destination lock returns a retryable busy result without residue, then converges to unchanged after the owning process commits and releases; the release gate runs it on macOS, native Windows, and Ubuntu 20.04. Named desktop/headless/CLI/SSH/recovery process combinations remain open.
- Test permission and read-only failures, disk exhaustion, cancellation, process termination,
and host disconnect. Simulated
EACCESandENOSPCpreservation plus lost-response retry are covered; physical failure and termination journeys remain open. - Test independent-copy drift and incomplete provider coverage. Deterministic transaction coverage preserves modified independent copies, retains canonical success when an unowned, failed, or cancelled provider placement cannot be reconciled, reports the exact partial placement outcome, and repairs interrupted coverage on retry.
Platform and target matrix
- Run macOS ARM64 and x64 behavior where supported.
- Run Linux against Ubuntu 20.04/glibc 2.31 and verify bundled native binaries respect the
floor. The exact x64 directory package passed its 18-binary ABI scan and packaged
node-ptyload/spawn smoke inside Ubuntu 20.04 atf1dccb4f42. The exact ARM64 directory package atabe92d565bpassed the same 18-binary floor scan and emittedorca-node-pty-floor-okfrom an ARM64 Ubuntu 20.04 container on nativeaarch64hardware. - Run native Windows and WSL scenarios on
windows 2. - Run local and remote Git worktrees and plain folder workspaces. Native Windows covered a linked worktree and folder; paired desktop and Docker SSH covered host-owned worktrees and folders; physical Ubuntu SSH covered the global lifecycle.
- Run same-build paired desktop and headless runtimes through client-mediated transfer; headed coverage includes global, Git-worktree, and plain-folder scopes, while headless coverage includes global and Git-worktree scopes.
- Run paired runtimes with both client-newer and server-newer combinations.
- Run supported SSH-only macOS, Linux, and Windows targets. Native macOS ARM64 and Ubuntu 20.04/glibc 2.31 passed full staging lifecycles; supported Windows remains open.
- Run a remote target without outbound Cloud connectivity through chunk transfer. The Docker SSH target could not reach the loopback package origin and completed global, worktree, and folder installation through client-mediated upload.
Required journeys
- Share on machine A, install globally on machine B, launch a detected agent, and discover the skill.
- Share on machine A, install into a folder workspace on a connected runtime, and discover it only in that workspace.
- Modify installed bytes, publish an update, and prove Orca refuses silent replacement. The browser-free macOS staging lifecycle preserved the modified v1 copy before applying v2 only after the explicit test decision.
- Disconnect during commit, reconnect, recover, and prove either the old or new version is complete.
- Revoke a share, prove a new install fails, and prove the existing local install remains. Bearer-route tests and staging smoke reject revoked resolution/grants; macOS, native Windows, paired, and SSH lifecycles independently preserve already installed bytes.
- Publish a new immutable version, update one machine, leave another pinned, then rollback the updated machine. The physical Windows staging journey updated only the remote host to v2, retained the local machine's independent version, and rolled Windows back to v1.
- Remove local installation without deleting its Cloud package, then delete/revoke Cloud access without mutating another local installation. Staging lifecycles separate host/local removal from package deletion, and revocation never mutates either installed copy.
CI and test evidence
- Add deterministic fixtures authored for Orca without copying upstream fixtures.
- Add failure-injection hooks available only to tests/development harnesses.
- Add a CLI-only developer harness for local and remote integration tests.
- Keep CI commands compatible with macOS, Linux, Windows PowerShell/cmd, and WSL.
- Archive bounded test results and security evidence without secrets or private contents. The required release jobs archive bounded machine-readable results; privacy-safe Cloud field inventories, load aggregates, and recovery evidence contain no grants or package contents.
- Make package safety, transaction recovery, platform, and mixed-version suites required release checks. Release publication now depends on focused macOS, real native-Windows, and Ubuntu 20.04/glibc 2.31 jobs that archive bounded machine-readable results.
14. Stage and release
Staging
- Apply reviewed Terraform and migrations to staging.
- Deploy
orca-cloud-apiskill routes disabled by server-side flags. - Enable all four staging controls and pass the GitHub OIDC owner plus anonymous bearer-link lifecycle smoke, including owner management, immutable versions, local/remote grants, rollback selection, expiry, revocation, deletion, and object cleanup.
- Run staging upload/finalize/download smoke for anonymous denial, oversize, corruption, expiry, revocation, deletion, and cleanup; retain tenant-deduplication coverage in the API integration suite.
- Run desktop-to-local, paired-runtime,
windows 2, WSL-equivalent host ingress, and SSH journeys in staging. Browser-free macOS run31569902499passed publish, install, conflict preservation, update, rollback, revocation, installed-copy preservation, removal, and Cloud deletion. Physical native Windows passed the same lifecycle through run31591275227, including remote-owned path and digest verification with no macOS fallback. A disposable Ubuntu 20.04/glibc 2.31 host passed the same SSH lifecycle after guarded wake31603249983; guarded sleep31604391897restored the low-cost state. An isolated headless host passed the paired non-Windows lifecycle after guarded wake31605729090; guarded sleep31606600532restored the low-cost state. The physical Windows/WSL matrix separately passed 449 tests on real NTFS and Ubuntu 24.04 filesystems. On 2026-08-12, the owner accepted another WSL Cloud lifecycle as duplicate evidence rather than a launch gate. - Give the live staging E2E an owner-private persisted test profile or a short-lived non-interactive test credential so reruns do not open PKCE login tabs or copy a user's primary Orca session.
- Verify staging application logs contain only route templates, method, status, duration, and standard process metadata, with zero credential or private-content matches. Exclude per-link Cloud Run platform request logs through Terraform and verify zero are retained.
- Verify logs, metrics, traces, diagnostics, and support bundles contain no grants or private package data. The physical SSH window emitted 27 structured route-template events whose complete application field inventory was only duration, event, hostname, level, method, process ID, route template, status, and time; it emitted zero API error logs. Install traces retain only bounded IDs, counts, labels, and enums. The support-bundle suite injects private paths, filenames, contents, share URLs, signed grants, policies, ACLs, and credentials and proves none survive collection. No skill-sharing product telemetry event is registered.
- Load-test finalization and choose the fixed semaphore from observed memory, CPU, request
latency, and database usage. Run
31585710645kept the existing semaphore: its 12 concurrent 30-skill bundles produced two immediate successes and ten explicit saturation responses, 1,514 ms client p95, 8.95% API CPU, 26.95% API memory, one API instance, 10.89% database CPU, 25.59% database memory, and seven database connections. - Exercise at least one quarantine lifecycle deletion and published-object soft-delete
recovery. Published-object recovery passed run
31580071168; the one-day quarantine lifecycle deletion remains time-gated.
Production infrastructure and launch
- Apply the approved production Terraform plan and verify no unrelated replacement. The saved skill-only plan added 40 resources with zero updates, replacements, or deletions; the storage-monitor follow-up added one narrow IAM binding with zero changes or deletions. The final hardening used two reviewed targeted phases: 13 additions plus one WIF update, followed by exactly five broad-IAM deletions. A separate targeted apply made nine in-place observability updates. No full plan or unrelated Relay drift was applied.
- Run production database migrations before routing skill traffic. Disabled-route bootstrap
run
31648015091completed the skill schema migration before any skill route was enabled. - Deploy the API with all skill flags disabled. Bootstrap revision
orca-cloud-api-00016-yemreceived 100% traffic and returned404for the disabled skill route while Artifact and Auth health remained green. - After every first-release gate passes, enable the feature for all accounts in one launch.
Production run
31650178315initially enabled upload, download, remote install, and sharing together. Hardening run31661421728then passed candidate and canonical authenticated artifact plus skill smoke and promotedorca-cloud-api-00025-qupat 100% traffic with digestsha256:e4f044105ff2345574bdceb36eec1629761428cc2edf9d743939390b857d61e0. - Verify one complete share, local install, remote install, update, rollback, revoke, local removal, Cloud deletion, upload expiry, and soft-delete recovery journey. Production CI has verified the server-side share/version/grant/revoke/delete lifecycle; the signed-in desktop and real-host production journey remains manual.
- Verify upload, download, and remote-install kill switches independently.
- Review error budgets, cost, authorization denials, saturation, orphan counts, and support
signals. The hardened production revision has zero post-deploy error logs. All eight skill
alerts route to the enabled dedicated
Orca skill sharing alertschannel, and aggregate monitor executionorca-cloud-skill-storage-monitor-lfd26passed on the serving API digest with zero overdue objects. Sustained-usage review remains post-launch.
Launch operations
- Keep upload grants, download grants, and remote installation independently controllable. Separate Terraform-owned Cloud Run variables gate upload/finalize/share publication, download grants, and remote-target grants. Route tests prove each narrow control while local grants remain available when only remote installation is disabled; staging advertises all three explicit controls.
- Disable the affected operation on unexplained digest mismatch, archive containment failure, data leak, unrecoverable local mutation, or cross-tenant authorization defect.
- Publish user documentation for sharing, access, install destinations, updates, rollback,
removal, retention, and trust in
docs/reference/sharing-agent-skills.md. - Publish admin documentation for organization access, user departure, deletion, and retention
in
docs/reference/admin-agent-skill-sharing.md. - Remove rollout flags only after sustained healthy usage and a reviewed decision.
First-release gate
- Threat model and privacy review are approved.
- Cross-platform package and transaction suites are required and green. Release publication requires focused macOS, native-Windows, and Ubuntu 20.04/glibc 2.31 jobs with bounded archived results; the latest recorded release and platform passes are green.
windows 2native Windows and WSL release gates pass on real filesystems. The combined run passed 449 tests across 67 files, and the owner accepted the additional live WSL Cloud journey as duplicate evidence on 2026-08-12. Physical WSL disconnect/cancellation injection remains open.- Real SSH paths and host-owned resolution pass. Native macOS ARM64 and Ubuntu 20.04/glibc 2.31 independently passed SSH-owned global install, update, rollback, managed inventory, revocation preservation, removal, and Cloud cleanup without local fallback.
- Mixed-version tests pass in both directions. Bundle/install capabilities are additive, the cross-version wire suite passes client-newer and host-newer, and capability-loss tests prove execution is blocked after a stale preview.
- Cancellation and crash recovery pass during transfer and every commit boundary.
- Durable-share authorization, revocation lag, retention, deletion, and recovery are documented and tested. The user/admin guides document the lifecycle; Cloud route, integration, restore, and cleanup suites cover the implemented contract. Automatic one-day quarantine deletion remains a separate time-gated infrastructure observation.
- The UI identifies scripts and executable content before install without exposing internal publisher or organization identifiers. Renderer coverage asserts script and executable summaries, digest, release notes, and long-content behavior before the primary install action.
- Telemetry, logs, and diagnostic bundles contain no credentials or private contents. Cloud field-inventory and sensitive-value scans, bounded install-span attributes, and adversarial support-bundle collection tests cover the complete first-release data path.
- Kill switches are tested without affecting discovery or existing installations. Cloud PR
#342proves unlisted-link preview remains available with upload, download, and remote installation controls disabled; existing route coverage proves remote-off retains local grants. Existing installations and local discovery use only host-owned files and receipts.
15. Post-release multi-machine management and reconciliation
- Measure sharing, installation, update, conflict, fallback, failure, and multi-machine demand without collecting private contents.
- Add Install on another machine and bounded multi-machine progress.
- Add optional desired-version policy for selected personal or organization machines.
- Add opt-in drift and missing-install reconciliation that never overwrites modifications.
- Evaluate an explicit, reviewable project desired-state manifest.
- Evaluate direct machine-to-machine transfer if Cloud persistence is not appropriate.
- Define offline convergence without durable shared credentials.
- Document organization removal, user departure, package retention, and reconciliation semantics before enabling policy-driven installs. The admin guide explicitly leaves legal retention and ownership-transfer approval as human release gates.
16. Agent and Orca CLI publishing
- Add a separate
agentSkillSharingEnabledcapability that defaults off and accepts only an exact persistedtruevalue. Manual desktop publishing remains independent. - Let only the local desktop Settings → Share Skills switch grant the capability. Runtime
settings.getexposes a fail-closed read-only projection;settings.update, paired web, mobile, agents, and the CLI cannot enable it. - Add
orca skills installed --jsonwith discovery IDs and names but no local filesystem paths. - Add
orca skills sharewith repeated explicit--skillselectors, a required bundle name, one unlisted link for multi-skill bundles, and no--allor arbitrary-path input. - Resolve exact discovery IDs before unambiguous names; fail missing, ambiguous, and duplicate bundle-folder names with actionable errors.
- Enforce the capability in the executing runtime before discovery, before package reads, and again before publishing. CLI preflight is an optimization, not the authority.
- Reject forwarded WSL, SSH, and paired-runtime CLI contexts before discovery so native file APIs cannot read a path belonging to another machine. Native runtimes remain supported on macOS, Linux, and Windows.
- Reuse the reviewed bundle preparation and Cloud publisher, propagate RPC cancellation into upload, and remove per-operation preparation files after success, denial, cancellation, authentication failure, or Cloud failure.
- Admit one agent bundle preparation/publish at a time per host so concurrent agents cannot multiply the bounded per-bundle disk and CPU budget.
- Keep CLI JSON limited to the unlisted URL, public share/package/version IDs, bundle name, and selected skill summaries; never return auth tokens or source paths.
- Add gate, persistence, RPC grant-denial, selector, archive-content, cancellation, cleanup, web mirror, Windows-path contract, CLI parser/help, and Settings UI tests.
- Complete a live signed-in production publish through the dev CLI, resolve the returned link, revoke it, and confirm a later resolution fails while the local source skills remain intact.
- Complete independent OpenCode and release-readiness review, full repository validation, PR CI, and an ad hoc build from the final commit.