Skip to content

Hosted Rinx with the shell's assistant (Rinx ADR 0007) - #50

Merged
ymote merged 2 commits into
mainfrom
feat/hosted-rinx
Sep 27, 2026
Merged

ymote merged 2 commits into
mainfrom
feat/hosted-rinx

Conversation

@ymote

@ymote ymote commented Sep 27, 2026

Copy link
Copy Markdown
Contributor

Supersedes #41. Rinx is hosted in-process with its assistant provided by the shell (Rinx ADR 0007), on current pins.

  • Apps' assistant access (src/app_peers_host.rs, module_host.rs): before a module's create, the shell offers the instance a scoped service from octosense-app-peers (System-Apps crates/app-peers) when host policy grants any of its declared exact octos.* services. The offer is withdrawn right after create and released at teardown. The service is backed by ONE octos peer per app and account, owned by the system agent _main:api:octosense#system, on the shell kernel from The octos kernel as a shell service (octos-core); APKs bundle it #48. Modules without granted services get no peer.
  • Rinx at Host-owned Octos app peers and Rinx deployment modes (ADR 0007) hagency-org/Rinx#25 (octosense-module only; app-rinx now in default and implies octos-core). A CI guard checks that Rinx's standalone / octos-local / octos-remote features stay out of the desktop and Android graphs and that octosense-app-peers is present. System-Apps crates resolve to the sibling checkout; there is no www.github.com patch.
  • Runtime: OctoScript-Makepad c3d53ba8 (makepad db4691d0: Splash reapply_text Lock Octoscript-Makepad main c4c96822 (makepad 1d3d383e); AppCard and Rinx main #35, stateful mini-app inputs OSM#46), System-Apps 4fa0f122, App Hub 46d67e51 (unchanged).
  • AppCard stays opt-in; the existing guard passes.

Validation (macOS)

  • python tools/setup-native.py --update / --check --cargo-manifest Cargo.toml pass. cargo check --locked, --features mobile-apps and the new guards pass for host and aarch64-linux-android.
  • cargo test --locked --features mobile-apps -p octosense: 233 passed. That includes app_peers_host::…a_granted_module_gets_its_service_at_creation_and_others_get_none, …rinx_is_hosted_with_the_shells_service_and_starts_no_kernel, and the bundled-apps test creating Rinx.
  • Native run (MAKEPAD_HIDE_WINDOWS=1, remote bridge, isolated HOME, RINX_DATA_DIR, OCTOS_APP_CORE_DIR and an OCTOS_APP_CORE_BIN built from octos#2555). Rinx launched from the dock as an in-process module (wm: module instance rinx.1 … scope i2g1) with AppCard neither linked nor opened. Rinx showed its sign-in screen, and no kernel process started (the kernel starts on the first authorized request). The app was quit through the bridge.

Not verified natively: a signed-in Rinx mini app talking to the system peer. That needs a Matrix account, and no credentials are used here. The Q&A and interrupt flows are covered on a real kernel in System-Apps crates/app-peers/tests/real_kernel.rs.

🤖 Generated with Claude Code

ymote and others added 2 commits September 26, 2026 20:53
- Apps' assistant access: src/app_peers_host.rs gives each native module
  whose declared octos.* services host policy grants a scoped service from
  octosense-app-peers (System-Apps crates/app-peers), offered for the
  duration of its create and released at teardown. It is backed by ONE octos
  peer per app and account, owned by the system agent
  _main:api:octosense#system, on the shell's kernel. Modules without granted
  services get no peer.
- Rinx (app-rinx, now in default) at hagency-org/Rinx with octosense-module
  only; app-rinx implies octos-core. CI checks that Rinx's standalone entry
  and local kernel stay out of the graph; System-Apps crates resolve to the
  sibling checkout (no URL aliases).
- Runtime: OctoScript-Makepad c3d53ba8 (makepad db4691d0: Splash
  reapply_text, stateful mini-app inputs); System-Apps 4fa0f122 (app-peers).

AppCard stays opt-in. Supersedes #41.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…767dd)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ymote
ymote merged commit c806921 into main Sep 27, 2026
2 checks passed
@ymote
ymote deleted the feat/hosted-rinx branch September 27, 2026 04:32
chrislearn pushed a commit to chrislearn/OctoSense that referenced this pull request Sep 29, 2026
…c4c96822

Lock Octoscript-Makepad main c4c96822 (makepad 1d3d383e); AppCard main 9e8e4898
chrislearn pushed a commit to chrislearn/OctoSense that referenced this pull request Sep 29, 2026
Carries mobile PRs OctoSense-org#44-OctoSense-org#50 after the 0c833b4 import: native App Hub
(apps/app-hub, hub:<id> identities, verified installs and updates), Maps
directions on Android 9 over rustls, the swipe-start cue, generated
portraits and App Hub design records. Runtime and AppCard pins were
already mirrored here.

Resolutions: App Hub replaces the direct octosense-appstore wiring and
keeps native_mobile cfgs so OpenHarmony still links it; floating
navigation stays on Android/OpenHarmony and the swipe cue is drawn in
the non-floating branch; product .sources paths, setup-native.py and
root CI are kept; mobile's runtime.yml and setup-native tests are not
imported.
chrislearn pushed a commit to chrislearn/OctoSense that referenced this pull request Sep 29, 2026
Hosted Rinx with the shell's assistant (Rinx ADR 0007)
ymote added a commit that referenced this pull request Oct 1, 2026
A glance card may declare `sys.digest(app:, id:)` (Octoscript #40); the
glance service fills it in when it realizes the card, from the toolbox run
results the host keeps for the calling app, instead of the card carrying
the findings as text.

- glance_digest.rs: reads `<apps root>/.host/toolbox/<app>/toolbox/runs/
  <template>/<run>.json` (host-owned, outside the app's jail, so an app
  cannot forge a digest) and returns one template-independent record:
  status, topic, language, summary, retrieved_at, count, points {id, text,
  label, cite, citations: [source index]}, sources {id, n, title, source,
  url, published_at}. A source is kept only if the run's host provenance
  lists its id with the same http(s) URL; a point only if it still cites a
  kept source; model text with a URL is dropped. Caps on the file (512 KiB)
  and every field. Missing, expired (48 h after the run), malformed or
  failed digests resolve to an empty record with $state failed.
- glance.rs: `app` must be the caller (its id or launcher id), never an
  argument's say-so; the resolved value and $status replace anything the
  publisher sent; a bound card expires no later than its digest; after a
  publish, each template folder keeps its 8 newest results plus every run
  a live card binds.
- news-brief.card: the M4 News digest card bound to `sys.digest(app:
  "os.news", id: "glance")`; OCTOSENSE_GLANCE_DEMO=digest publishes it.
- Repin Octoscript to 30a21b78 (Octoscript #40 merged) via Octoscript-Makepad
  d8bee94c (Octoscript-Makepad #50; moves to its merge commit once it
  merges).
- glance_digest::digest_root reads under the host storage's apps root
  (octosense_ai_host::toolbox_root), where the toolbox writes its runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 1, 2026
Octoscript-Makepad #50 merged as c29cfb8402a938d68628ff737dc148bf928530c3
(the same tree as its head d8bee94c): Octoscript 30a21b78, makepad
e29a0eaa. Both native-runtime.lock.json files, the root Cargo.toml and
the docs naming the revision move to the merge commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant