# ConnectOnion 1.9.1 (stable)

## Install

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

## A first run that investigates

1.9.0 wrote every mapped page once. 1.9.1 investigates each one the way a
reporter would and keeps building on what it found.

- **Investigate, then deepen.** The first pass reads the last 180 days of mail,
  sixteen pages at a time. While it runs, a background thread fetches up to two
  years of mail for every person; each person with older material is then
  investigated again on top of the page already written.
- **Rounds instead of a skim.** Evidence too large for one turn is read oldest
  first in rounds, each editing the page and passing its open leads to the next,
  then a final synthesis keeps every thread and searches for missing outcomes.
- **Edit in place.** Every investigation edits the existing page instead of
  rewriting it, so earlier findings survive. A turn with nothing new ends with
  NO CHANGE and skips review.
- **Decisions and principles.** Init ends by drawing decisions and principles
  from the pages it just wrote.
- **Organisations read their website**, and a page cites the PDFs and other
  attachments it relies on.

## Reading a page

- A Person page opens with email, phone, other names, company (with what it
  does) and role, each copyable.
- A cited mail opens as a message: sender, address, time, recipients and CC
  with avatars, then the body.
- A page lists the documents it cites; each opens from the page.
- Generated maps and skill run reports moved from Notes to **Run logs**, so
  Notes is left for the AI's own notes. Existing notebooks are moved on upgrade.

Screenshots use invented contacts: [Run logs](assets/v1.9.1/run-logs-desktop.png),
[Person phone, before](assets/v1.9.1/before-person-phone.png) and
[after](assets/v1.9.1/after-person-phone.png),
[cited mail, before](assets/v1.9.1/before-source-desktop.png) and
[after](assets/v1.9.1/after-source-desktop.png),
[Documents](assets/v1.9.1/after-documents-desktop.png). The
[screenshot manifest](assets/v1.9.1/manifest.yml) records their origins.

## Faster on a large mailbox

- Coding sessions are scanned once per run instead of once per person.
- Mail bodies already kept are read from disk; attachment lookups are cached.
- Gmail and Outlook fetch with their own concurrency, and a provider's
  rate-limit answer is retried with back-off.
- Saving finished work waits up to ten minutes for the notebook lock and a
  token refresh two minutes for the credential file, long enough for sixteen
  workers and a background backfill.

## Real trial

The public 1.9.1rc1 wheel ran a full 180-day first run on the owner's real
Gmail and Outlook (4,523 messages) with Codex and gpt-6-luna:

| | 1.9.0 (90 days) | 1.9.1b5 | 1.9.1rc1 |
|---|---|---|---|
| Whole run | 83 min | 145 min | 133 min |
| API-equivalent cost | US$3.75 | US$11.19 | US$12.54 |
| People deepened with older mail | none | 55 | 57 (1,261 older items) |
| People / projects / organisations / skills written | 68 of 70 / 6 of 17 / 18 / 147 of 148 | 84 / 19 of 20 / 25 of 27 / 146 of 148 | 83 of 84 / 18 of 20 / 26 of 27 / 146 of 148 |
| Investigations that did not land | — | 6 of 336 | 6 of 338 |
| Lock-wait failures | — | 2 | 0 |
| Decisions / principles | none | 5 / 1 | 5 / 0 |

Of rc1's six, five were pages the review refused (unresolved citations or a
missing fact field; the candidate is kept and `co rem investigate <page>
--retry-refused` retries it) and one was a network read timeout. Counts are
aggregate; private names and source text are not published.

## Known limits

- When any page is left unfinished, init's closing summary is prefixed with an
  empty `Error:` line; the `Next:` line names the page to retry.
- A network read timeout outside the provider retry fails that page.
- Daily scheduling still requires macOS.
