# ConnectOnion 1.9.0 (stable)

## Install

```bash
python -m pip install --upgrade 'connectonion==1.9.0'
co rem init
```

`co rem init` maps the last 90 days by default, then attempts every eligible
mapped Person, Project, Organisation and installed Skill. It does not stop at a
REM page count or weekly allowance percentage. The CLI shows source totals,
an estimate before model work, and a running total for the page queue and each
category. Explicit `--first-*` options still cap a deliberate test run. Model
provider limits and account access still apply.

The selected model gets a source-free access check before page dispatch. A
refusal is recorded, the map and saved mail remain available, and init exits
without installing nightly upkeep. An access denial during the queue stops new
jobs while pages already in flight finish. Ordinary individual page failures
remain visible and can be retried.

On macOS, `co rem start` installs a root-specific launchd tick. Status, doctor
and the local reader now surface a loaded-job failure or a scheduled warning.
If a coding-session transcript rewrites an already consumed prefix, that file
keeps its checkpoint and is skipped while unaffected sessions continue. A
reviewed reindex path for the skipped file remains [1.9.1 work](https://github.com/openonion/connectonion/issues/2301).

The reader makes phone People facts readable, names source actions explicitly,
and puts the complete finding expansion near the lead. A mapped Skill no
longer claims that a source mention proves its version or outcome. The
[role-based founder/UI review](../design-evidence/rem-stable-founder-review-2026-10-07.md)
records the inspected pages, changes, remaining issues and recheck criteria.
The visual evidence uses invented contacts: [Today desktop](assets/v1.9.0/after-home-desktop.webp),
[Person phone, before](assets/v1.9.0/before-person-phone.webp) and
[after](assets/v1.9.0/after-person-phone.webp),
[Project desktop](assets/v1.9.0/after-project-desktop.webp),
[Skill phone](assets/v1.9.0/after-skill-phone.webp), and
[first-run CLI progress](assets/v1.9.0/init-progress.webp).
The [screenshot manifest](assets/v1.9.0/manifest.yml) records their origins.

## Real trial and verification

The public 1.9.0a43 wheel was exercised on a private 90-day owner notebook with
Gmail, Outlook and coding-session sources. It mapped 3,362 mail messages (1,298
Gmail, 2,064 Outlook), 70 People entries (including the owner and two held for
identity review), 18 Projects, 18 Organisations and 154 installed Skills. The
first-run queue selected 67 eligible People, 17 Projects, 18 Organisations and
154 Skills, plus the owner page. The 258 page runs (including the owner's quick
and full passes) all completed with zero failed, refused or skipped pages in
**52m 57s** wall time. Ten workers were active through the long Skill tail;
no provider throttling or concurrency failure appeared. A sample of four
written pages in each category resolved **161 of 161** numbered source IDs to
retained local excerpts. That checks source availability, not every claim's
meaning. Counts are aggregate; private names and source text are not published.

An installed 1.9.0 candidate wheel was then run against the existing default
90-day notebook. It re-listed the 3,362 mail messages, reused 3,278 saved
bodies, and showed category progress for 17 pending pages with ten workers.
Seven People, six Skills and three Projects were accepted. The fourth Project
was refused by its cited-claim audit because two citations were missing; an
explicit `--retry-refused` attempt also failed its audit, so the prior page
was kept. Init exited nonzero and left nightly upkeep off. The CLI now points
to that exact retry command; the bounded automatic-retry improvement is
tracked in [#2310](https://github.com/openonion/connectonion/issues/2310).
The owner explicitly enabled upkeep with `co rem start --yes` after seeing the
partial result. Its first sync completed a 40-item batch and launchd loaded
the root-specific job. A controlled scheduled pass processed another 40 items,
then the same Project's cited-claim audit refused its daily investigation.
The command exited nonzero. This exposed a status bug: the worker had saved
the successful source-sync result instead of the failed end-to-end result.
The 1.9.0 fix records the entire scheduled pass and marks background upkeep as
needing attention. The page refusal and bounded retry remain [#2310](https://github.com/openonion/connectonion/issues/2310)
for 1.9.1; the prior Project page remains intact.

The REM unit suite passed 1,563 tests including the scheduled-status and retry-next
regressions. The local Chrome reader
suite passed 14 scenarios. A clean Python 3.13 full repository run passed
14,610 tests with 101 skips; 13 installed-wheel tests passed. The docs site
built and its blog checks passed. Package artifact and publication checks
remain release gates.

## Limits and 1.9.1

The 90-day default covers eligible mapped people, not every historical contact.
People held for identity review require owner confirmation. Historical scan
checkpoint recovery is tracked in [#2298](https://github.com/openonion/connectonion/issues/2298)
and broader historical People coverage in [#2176](https://github.com/openonion/connectonion/issues/2176).
Mobile reading-space and partial Project-state refinements are in
[#2309](https://github.com/openonion/connectonion/issues/2309). A cited-claim
audit may still refuse an individual page; its retry is explicit and the saved
page remains intact. These limits are visible; the release does not claim
all-history or all-page quality acceptance.
