Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
9634763
feat(runtime): Home Agent capsule gets a workspace object and its own…
SashaMIT Sep 3, 2026
2d5ab25
feat(home): the Shelf morphs into the Agent composer and opens the Ag…
SashaMIT Sep 3, 2026
239c6cb
feat(home-agent): the agent harness as its own capsule, on the typed …
SashaMIT Sep 3, 2026
923193b
test(home-agent): capsule gate for the typed contract, the workspace …
SashaMIT Sep 3, 2026
c95cf4c
feat(model): verify local engine and model bootstrap artifacts
andersalm Sep 5, 2026
7c4fc92
feat(model): own bounded local llama lifecycle and recovery
andersalm Sep 5, 2026
fcb8fc5
feat(model): report bounded hosted backend evidence
andersalm Sep 5, 2026
0d76841
feat(model): add Responses with honest hosted cancellation settlement
andersalm Sep 5, 2026
ed275ba
docs: define model delivery and authority-bound closeout gates
andersalm Sep 5, 2026
145fec2
fix(auth): bind registration ceremonies and classify enrollment denial
andersalm Sep 5, 2026
eb25f74
fix(identity): make credential persistence atomic and conflict-safe
andersalm Sep 5, 2026
43b8f83
fix(auth): bind and recover first-owner enrollment
andersalm Sep 6, 2026
9120998
merge: integrate durable owner enrollment with model lifecycle
andersalm Sep 6, 2026
2e692a3
docs: close model and owner enrollment source integration
andersalm Sep 6, 2026
e496fe0
fix(home-agent): preserve Runtime cancellation outcomes
andersalm Sep 6, 2026
9c634e0
docs: reconcile reviewed model integration status
andersalm Sep 6, 2026
3854db3
fix(model): keep unconfirmed local cancellation unknown
andersalm Sep 6, 2026
adb83d6
docs: record isolated Model update provenance
andersalm Sep 6, 2026
9020801
fix(model): classify missing retained run lookups
andersalm Sep 7, 2026
6c6c2fa
fix(home-agent): preserve drafts behind unresolved runs
andersalm Sep 7, 2026
a63b61a
docs: record installed Model recovery artifacts
andersalm Sep 7, 2026
d5406a5
docs: record installed Qwen acceptance evidence
andersalm Sep 7, 2026
8e6d298
fix(home-agent): retain unknown create acceptance
andersalm Sep 7, 2026
ebbfe5e
docs: record isolated model and owner acceptance evidence
andersalm Sep 7, 2026
abefc7a
fix(recovery): include initial Profile in setup kit
andersalm Sep 7, 2026
9b74b77
docs: record partial installed recovery setup proof
andersalm Sep 7, 2026
e221ae5
docs: define owner-controlled storage and replaceable protection
andersalm Sep 7, 2026
5522544
fix(auth): bind account creation and recovery to passkey intent
andersalm Sep 7, 2026
8472355
fix(storage): guard protected app saves against concurrent writes
andersalm Sep 7, 2026
cdb0492
feat(capsules): declare per-app window policy
andersalm Sep 7, 2026
11ab93f
feat(home): apply capsule-owned window and selection policy
andersalm Sep 7, 2026
ec4f986
test(browser): bind hosted fixtures to Runtime lifecycle
andersalm Sep 7, 2026
32c3d8d
docs: record onboarding proof and CID preparation gates
andersalm Sep 7, 2026
013bd48
feat(content): verify signed model catalog metadata
andersalm Sep 7, 2026
006fd1e
feat(content): bound native content reads
andersalm Sep 7, 2026
8f4ccf2
feat(content): verify local package identity and capacity
andersalm Sep 8, 2026
1b0b1b1
feat(model): prepare and admit verified content
andersalm Sep 8, 2026
d1951de
feat(model): bind admitted content at provider startup
andersalm Sep 8, 2026
adb7894
feat(model): activate admitted content in place
andersalm Sep 8, 2026
1bca7ba
fix(model): credit prepared bytes in remaining capacity
andersalm Sep 8, 2026
31426a2
test(model): prove cold loopback preparation and reuse
andersalm Sep 8, 2026
93c2f1a
feat(model): record principal-scoped Keep intent
andersalm Sep 8, 2026
1aa3c7b
feat(model): derive catalog readiness from admitted offers
andersalm Sep 8, 2026
b0c4c2f
feat(model): add Marketplace and System model controls
andersalm Sep 8, 2026
648e86d
fix(model): preserve exact content selection in composers
andersalm Sep 8, 2026
8772f5f
fix(model): confirm engine closure before releasing ownership
andersalm Sep 8, 2026
eb55c71
feat(model): retire admitted offers after confirmed close
andersalm Sep 8, 2026
30bd371
fix(model): retain inventory ownership through activation
andersalm Sep 8, 2026
1e31995
feat(hello): add initial portable Rust capsule example
irzhywau Sep 2, 2026
e3a8c4e
feat(server,capsules): carrier peer seeding, provider hosting, real-f…
irzhywau Sep 7, 2026
5665092
feat(deploy,scripts,ci): custody-host harness, installed e2e proof dr…
irzhywau Sep 7, 2026
617796a
docs(protected-content): record installed e2e proof surface and align…
irzhywau Sep 5, 2026
a91383e
fix(model): bound streaming deltas and confirm engine cleanup
andersalm Sep 8, 2026
92a04ed
feat(model): reconcile preparation capacity and exact retirement
andersalm Sep 8, 2026
f8a74ab
docs(model): record cold proof and installed acceptance boundary
andersalm Sep 8, 2026
94ed0dc
merge: reconcile PR58 setup guard
andersalm Sep 8, 2026
05ee824
fix(model): retain bounded preparation failure diagnostics
andersalm Sep 8, 2026
e9b9baf
docs: reconcile Builder Home and model completion plan
andersalm Sep 9, 2026
6972e16
docs: hand over Home and model diagnostic checkpoint
andersalm Sep 9, 2026
cdcb790
feat(home): add storefront and canonical Home entry
andersalm Sep 10, 2026
c7bc4a8
fix(installer): verify signed bootstrap with stock macOS tools
andersalm Sep 10, 2026
503d270
docs: define release execution and evidence ownership
andersalm Sep 10, 2026
92d1a31
fix(linux): accept an empty principal-root upgrade receipt
andersalm Sep 10, 2026
e347889
fix(installer): use platform data paths and preserve process ownership
andersalm Sep 10, 2026
c97e1c6
feat(site): display dated hosted deployment evidence
andersalm Sep 10, 2026
3e27cac
docs: record reviewed C1 source and scheduled monitor proof
andersalm Sep 10, 2026
a0743a1
fix(update): bind releases to exact signed head bytes
andersalm Sep 10, 2026
52fc231
fix(update): select release artifacts by operating system
andersalm Sep 10, 2026
78e586f
test(auth): prove guarded upgrade refuses object migration
andersalm Sep 10, 2026
6ea0ced
test(home): preserve credentials and follow current sign-in controls
andersalm Sep 10, 2026
5f9b6ab
docs: record seed UI proof and first public delivery boundary
andersalm Sep 10, 2026
cb869f0
test(home): open System through the ElastOS menu
andersalm Sep 10, 2026
cd7376e
refactor(site): focus the storefront on visitors and Home
andersalm Sep 10, 2026
9d9297a
docs(website): restore device installation with accurate platform gui…
andersalm Sep 10, 2026
50e82bc
fix(publisher): keep component manifests distinct by OS and CPU
andersalm Sep 10, 2026
344f388
fix(publisher): separate native and guest build targets
andersalm Sep 10, 2026
572f449
fix(publisher): verify complete staged app artifacts before signing
andersalm Sep 10, 2026
cb36624
fix(publisher): reject unsafe low-level dry-run mode
andersalm Sep 10, 2026
120cf9e
fix(publisher): package app archives with portable deterministic tools
andersalm Sep 10, 2026
4119952
refactor(publisher): separate asset preparation from uploads
andersalm Sep 10, 2026
9c271a6
Simplify installation with automatic Home setup
andersalm Sep 10, 2026
1950e03
Prepare and verify native release platform inputs
andersalm Sep 10, 2026
7905ce1
Lock native Browser helper release dependencies
andersalm Sep 10, 2026
462b29a
Package Home CLI renderer with its native capsule
andersalm Sep 10, 2026
cdb1340
Fix native provider metadata preparation contracts
andersalm Sep 10, 2026
97079b5
Use the native ioctl request type for Home terminal setup
andersalm Sep 10, 2026
7493375
Fix the Browser supervisor ioctl type on musl
andersalm Sep 10, 2026
5094c6c
Align video preparation with Runtime media contracts
andersalm Sep 10, 2026
6d9e76a
Deliver managed media tools through the one-command installer
andersalm Sep 10, 2026
8587dff
Keep custody atomic provisioning compatible with musl
andersalm Sep 10, 2026
95fc24b
Open browser Home after one-command installation
andersalm Sep 10, 2026
b726db9
Import verified native inputs into the release publisher
andersalm Sep 10, 2026
10b0c3e
Refine storefront layout and simplify 0.7.1 installation copy
andersalm Sep 10, 2026
7e4cefb
Explain ElastOS uses, first steps and preview availability
andersalm Sep 10, 2026
3a1c5b0
Use plain personal-computing language in storefront copy
andersalm Sep 10, 2026
8187066
Verify Home entry after desktop setup projection is ready
andersalm Sep 10, 2026
892a144
Harden passkey registration and identity persistence
andersalm Sep 10, 2026
0147f5b
Complete durable account creation and Profile recovery setup
andersalm Sep 10, 2026
d790a48
Align first-use instructions with Profile setup
andersalm Sep 10, 2026
ecf1339
Verify downloaded Profile recovery in installed Home smoke
andersalm Sep 10, 2026
4e62b6d
fix(carrier): close owned endpoints after installer transfers
andersalm Sep 10, 2026
49a62db
test(home): export recovery from the ready foreground window
andersalm Sep 10, 2026
e693881
docs: record installed preview proof and recovery follow-ups
andersalm Sep 10, 2026
f8824ee
fix(setup): reuse verified media tool archives
andersalm Sep 10, 2026
67572db
feat(home): choose recovery kit before passkey setup
andersalm Sep 10, 2026
a8b8f54
fix(gateway): close active connections before shutdown cleanup
andersalm Sep 10, 2026
3f789db
docs: hand over preview work and prioritize AI and Browser
andersalm Sep 10, 2026
bfe40ea
docs: reconcile resume records after safe branch cleanup
andersalm Sep 11, 2026
a45164c
fix(auth): resume completed recovery after a fresh sign-in
andersalm Sep 11, 2026
f21d285
fix(runtime): await gateway-owned managed process groups
andersalm Sep 11, 2026
59047fd
docs: close automated checkpoint and record human passkey gate
andersalm Sep 11, 2026
e31048b
fix(auth): isolate Home session cookies by destination
andersalm Sep 11, 2026
1e32057
fix(system): show recovered Profile name and space recovery controls
andersalm Sep 11, 2026
00003b6
docs: record restored Home user-review repairs and proof
andersalm Sep 11, 2026
0962e7e
feat(model): integrate verified bootstrap into delivery branch
andersalm Sep 11, 2026
b318bfd
merge: preserve model integration and current Home recovery
andersalm Sep 11, 2026
37c82d4
merge: record already-integrated Sash shelf history
andersalm Sep 11, 2026
dd21d8b
Merge protected-content foundation with current model and lifecycle o…
andersalm Sep 11, 2026
2b95b38
Keep model preparation alive during status reads and scope caller rev…
andersalm Sep 11, 2026
ab993a9
Read existing identity without persistence during access checks
andersalm Sep 11, 2026
796fb41
fix(models): observe readiness after content admission
andersalm Sep 11, 2026
f72810f
fix(models): authorize catalog reads for model consumers
andersalm Sep 11, 2026
fbf1a4b
fix(models): prepare local verifier for admitted model startup
andersalm Sep 11, 2026
4e00a30
docs(model): record installed Mac Qwen lifecycle and reuse proof
andersalm Sep 11, 2026
8f28b6e
fix(assistant): keep refreshed model menus truthful and anchored
andersalm Sep 11, 2026
1d12daf
fix(source-home): replace stale capsule archive identity after parity…
andersalm Sep 11, 2026
8aac3f7
docs(integration): recognize existing URUX adaptations and correct ne…
andersalm Sep 11, 2026
fa297cb
Unify Assistant with Sash UI and preserve workspace and run ownership
andersalm Sep 11, 2026
67a2acc
docs: record installed Assistant and Qwen checkpoint proof
andersalm Sep 11, 2026
822c4e3
fix(setup): reject stale archive metadata for source capsules
andersalm Sep 11, 2026
84825f9
docs: record System and Marketplace human launch repair
andersalm Sep 11, 2026
d3d757c
fix(assistant): show distinct activity and reasoning in disclosures
andersalm Sep 11, 2026
3c2f9a8
fix(models): retain pending content and use capsule marketplace prese…
andersalm Sep 11, 2026
06bf4e0
docs: record installed model and Assistant feedback checkpoint
andersalm Sep 11, 2026
1bb081f
docs: publish integration review and retire website checkpoint
andersalm Sep 11, 2026
2596662
fix(build): lock the integrated provider dependency graph
andersalm Sep 11, 2026
093b51c
docs: record September work and accepted public preview
andersalm Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
115 changes: 114 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,16 @@ jobs:
- name: product UI source proofs
run: |
node scripts/home-shell-regression-smoke.mjs
node scripts/home-agent-shell-smoke.mjs
node --test scripts/home-agent-cancellation.test.mjs
node scripts/people-discovery-smoke.mjs
- name: release artifact source proofs
run: |
python3 scripts/components-release-integrity-check.py --self-test
python3 scripts/publish-platform-artifacts-test.py
python3 scripts/release-platform-input-test.py
python3 scripts/prepare-release-platform-test.py
python3 scripts/media-tools-build-test.py
- name: Browser close handshake
run: node --test scripts/browser-window-close-handshake.test.mjs

Expand Down Expand Up @@ -166,6 +175,108 @@ jobs:
(cd "$capsule" && cargo test)
done

# Rehearses the ELACITY-2298 dKMS ceremony (offline custody composition +
# Carrier dial-proof preflight) against a fresh instance of the
# deploy/custody-host 3-node compose harness -- scripts/custody-harness-ci-smoke.sh
# owns all the logic (throwaway client identity, throwaway compose
# project, receipt assertions, full teardown); this job is thin glue over
# it. Gated to workflow_dispatch and PRs that actually touch the harness
# image, the proof driver, or the protected-content/carrier crates it
# exercises -- NOT every push, since the image build + 3-node bring-up
# add real wall time.
custody-harness-smoke:
name: custody-harness-smoke
runs-on: ubuntu-latest
timeout-minutes: 60
needs: source-gate
if: github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request'
# The top-level `permissions: contents: read` above zeroes every other
# scope for every job; dorny/paths-filter resolves a pull_request's
# changed files via the GitHub API (this job's checkout is fetch-depth 1,
# so there's no local base commit to diff against) and needs
# `pull-requests: read` to do that -- without this, the filter step
# (unconditional on pull_request) 403s and fails the job on every PR.
permissions:
contents: read
pull-requests: read
steps:
- uses: actions/checkout@v5
with:
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.ref || github.sha }}
- name: detect custody/carrier-relevant changes
id: filter
if: github.event_name == 'pull_request'
uses: dorny/paths-filter@v3
with:
filters: |
custody:
- 'deploy/custody-host/**'
- 'scripts/protected-content-installed-e2e-proof.sh'
- 'scripts/protected-content-installed-static-audit.py'
- 'scripts/custody-harness-ci-smoke.sh'
- 'capsules/custody-provider/**'
- 'capsules/availability-provider/**'
- 'capsules/ipfs-provider/**'
- 'elastos/crates/elastos-protected-content-*/**'
# Targeted, not the whole elastos-server crate (which would
# fire this 60-minute job on most PRs): exactly the modules
# this smoke actually exercises -- Carrier transport/dial,
# standalone provider hosting, and the custody
# composition/chain-config CLI the ceremony drives.
- 'elastos/crates/elastos-server/src/carrier.rs'
- 'elastos/crates/elastos-server/src/carrier_service.rs'
- 'elastos/crates/elastos-server/src/provider_host.rs'
- 'elastos/crates/elastos-server/src/run_cmd.rs'
- 'elastos/crates/elastos-server/src/server_infra.rs'
- 'elastos/crates/elastos-server/src/node_cmd.rs'
- 'elastos/crates/elastos-server/src/protected_content_config.rs'
- id: should-run
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ] || [ "${{ steps.filter.outputs.custody }}" = "true" ]; then
echo "run=true" >> "$GITHUB_OUTPUT"
else
echo "run=false" >> "$GITHUB_OUTPUT"
echo "no custody/carrier-relevant paths changed on this PR; skipping the smoke run" >> "$GITHUB_STEP_SUMMARY"
fi
- if: steps.should-run.outputs.run == 'true'
uses: dtolnay/rust-toolchain@1.91.0
# Builds the host `elastos` binary the smoke script itself invokes
# (identity show, node peer add, node status) -- same cache shape as
# the test-elastos/lint jobs above.
- if: steps.should-run.outputs.run == 'true'
uses: Swatinem/rust-cache@v2
with:
workspaces: elastos
prefix-key: ${{ runner.os }}-custody-smoke-bd
cache-directories: target-build
- if: steps.should-run.outputs.run == 'true'
uses: docker/setup-buildx-action@v3
# Pre-warms the custody-host image's BuildKit layer cache via the GHA
# cache backend, tagged/loaded exactly as deploy/custody-host/up.sh's
# own `docker compose up -d --build` expects it -- that later build
# then hits this same local layer cache instead of rebuilding cold.
- name: pre-build custody-host image (GHA layer cache)
if: steps.should-run.outputs.run == 'true'
run: |
docker buildx build \
-f deploy/custody-host/Dockerfile \
-t elastos-custody-host:latest \
--cache-from type=gha \
--cache-to type=gha,mode=max \
--load \
.
- name: custody harness smoke
if: steps.should-run.outputs.run == 'true'
run: scripts/custody-harness-ci-smoke.sh
- name: upload evidence receipt on failure
if: failure() && steps.should-run.outputs.run == 'true'
uses: actions/upload-artifact@v5
with:
name: custody-harness-smoke-evidence
path: /tmp/custody-harness-ci-smoke-evidence/
retention-days: 7
if-no-files-found: ignore

# The source-home jobs run only once the test phase is green, in parallel
# across the three architectures. They are the de-facto release builders:
# setup-source-home compiles the runtime, shell, home-cli and every provider
Expand Down Expand Up @@ -203,7 +314,7 @@ jobs:
- name: install host prerequisites
run: |
sudo apt-get update
sudo apt-get install -y coturn e2fsprogs ffmpeg
sudo apt-get install -y coturn e2fsprogs ffmpeg musl-tools nasm pkg-config
- name: source-home into isolated HOME
env:
ELASTOS_COLLABORATION_STARTUP_MODE: isolated
Expand All @@ -218,6 +329,7 @@ jobs:
export HOME="${SOURCE_HOME}"
export XDG_DATA_HOME="${SOURCE_HOME}/.local/share"
export PATH="${CARGO_HOME}/bin:${PATH}"
export SETUP_SOURCE_HOME_MEDIA_TOOLS_DIR="$(dirname "$(command -v ffmpeg)")"
scripts/setup-source-home.sh 2>&1 | tee "${RUNNER_TEMP}/source-home-logs/setup-source-home.log"
ELASTOS_DATA_DIR="${XDG_DATA_HOME}/elastos" \
scripts/installed-provider-verify.sh 2>&1 | tee "${RUNNER_TEMP}/source-home-logs/installed-provider-verify.log"
Expand Down Expand Up @@ -315,6 +427,7 @@ jobs:
export RUSTUP_HOME="${RUSTUP_HOME:-${USER_HOME}/.rustup}"
export HOME="${MAC_TEST_HOME}"
export PATH="${CARGO_HOME}/bin:/opt/homebrew/bin:/opt/homebrew/opt/e2fsprogs/sbin:${PATH}"
export SETUP_SOURCE_HOME_MEDIA_TOOLS_DIR="$(dirname "$(command -v ffmpeg)")"
scripts/setup-source-home.sh 2>&1 | tee "${RUNNER_TEMP}/source-home-logs/setup-source-home.log"
ELASTOS_DATA_DIR="${HOME}/Library/Application Support/elastos" \
scripts/installed-provider-verify.sh 2>&1 | tee "${RUNNER_TEMP}/source-home-logs/installed-provider-verify.log"
Expand Down
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,9 @@ archive/
control_graph/
control_graph_viewer/

# Website deployment artifacts
website/
# Website deployment artifacts; the public site's source is versioned.
website/*
!website/elastos/

# AI models
models/
Expand Down
6 changes: 6 additions & 0 deletions PRINCIPLES.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,12 @@ access policy.
end-to-end cryptography remain above Carrier, and compatibility transports
stay provider-internal

The target [storage and access contract](docs/STORAGE_AND_ACCESS.md) applies
these constraints to encrypted private objects, protected use, explicit export,
revocation, and recovery. Its
[implementation guide](docs/OBJECT_PROTECTION_IMPLEMENTATION.md) keeps storage,
rights evidence, and key mechanisms replaceable behind Runtime authority.

## 16. UI surfaces must not be authority

Opening a page and holding a capability are different things.
Expand Down
46 changes: 38 additions & 8 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@ audited reassignment that verifies the root and its protectors before mutation.
Hosted, loopback, native, and mobile hosts need explicit origin or host-auth
policy; none may gain authority from a trusted header.

Public first-owner enrollment must start from one-use local operator authority
and bind one exact HTTPS origin and RP before the ceremony begins. Adding a
credential to an existing owner requires explicit self-link consent and keeps
the same principal and protected root. Both flows reuse Runtime auth state and
produce typed denial, replay, expiry, concurrency, and audit results.

Principal-root protection should use random per-principal data keys. Protectors
may include a Recovery Kit, client-side WebAuthn PRF wrapping, DID-backed
recovery, and future quantum-resistant envelopes. Runtime stores wrapped
Expand Down Expand Up @@ -133,19 +139,32 @@ in the UI. Recipients verify it before retaining, mounting, or forking it.
The contract and its limits live in
[Content availability](docs/CONTENT_AVAILABILITY.md).

The first package-delivery milestone is a signed, CID-identified Qwen content
capsule used through Runtime-owned preparation. Source has bounded local
admission/offer binding and reply/reuse fixture proof; installed Use and cold
peer delivery remain unaccepted. The intended experience uses Marketplace
discovery/Open into Home Agent, retains the selected local model, and provides
recoverability-aware removal in System. Generic Get is not current shipped
support. The contract lives in
[Content capsule distribution](docs/CONTENT_CAPSULE_DISTRIBUTION.md).
Execution and proof dependencies live in
[Builder-only execution](TASKS.md#builder-only-execution).

### 3. Build Runtime-mediated protected content

The target protected-content design uses the same effect path as ordinary
content:

`viewer -> Runtime -> rights provider -> custody providers -> decrypt provider`
`viewer -> Runtime -> custody nodes (node-local rights) -> decrypt provider`

Runtime will resolve the content object, check availability, verify rights,
request recipient-encrypted custody contributions, create a scoped decrypt or
render session, and record the result. Each dependency will have a typed
contract and fail closed. Viewers will receive scoped output or a scoped
session, not content keys, custody shares, chain RPC, Wallet authority, storage
APIs, provider routes, network locations, or credentials.
Runtime will resolve the content object, check availability, load the exact
Chain policy, and ask each selected custody node to evaluate rights locally
before it returns a recipient-encrypted contribution. Runtime then creates a
scoped decrypt or render session and records the result. Each dependency has a
typed contract. Every invalid or unavailable dependency fails closed. Viewers
will receive scoped output or a scoped session, not content keys, custody shares,
chain RPC, Wallet authority, storage APIs, provider routes, network locations,
or credentials.

The dependency order is contracts and cryptographic review, private provider
protocols, Wallet/Chain authority, durable Runtime coordination, then installed
Expand Down Expand Up @@ -489,7 +508,18 @@ It must not create a separate trust root or expose key material to apps.

AI providers and agents need explicit identity, capabilities, budget policy,
data access, and audit. Hosted credentials stay inside configured providers.
Local and hosted models should expose the same typed Runtime contract.
Local and hosted models use the same typed Runtime contract. Chat Completions
and Responses adapters have fixture coverage; real configured provider
compatibility and installed lifecycle proof remain open.
Installed provider acceptance precedes service publication. Runtime publishes
the operator-selected signed offer and owns principal-scoped grants. The
destination Runtime authorizes each remote request, and Carrier transports only
the route that Runtime selected. Local-engine sharing and hosted-API sharing
have separate acceptance tracks in [Model provider](docs/MODEL_PROVIDER.md).
Carrier ingress bounds and destination-owned remote authority precede peer
acceptance. Hosted-sharing policy and full Jetson target proof remain requested
work with credential, terms, access and hardware prerequisites, even when source
review publication occurs earlier.

Operator tools should derive decisions from source, signed artifacts, and
machine-readable evidence. Durable docs should record contracts and current
Expand Down
Loading
Loading