Skip to content

Integrace: a personal Environment works in the account's default Composio organization - #661

Merged
immakermatty merged 3 commits into
mainfrom
agent/DEV-6626-composio-personal-org
Oct 26, 2026
Merged

immakermatty merged 3 commits into
mainfrom
agent/DEV-6626-composio-personal-org

Conversation

@immakermatty

@immakermatty immakermatty commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Status: ready for review. The CLI build this needs is released: @composio/cli@0.4.3-lazurio.3 from Lazurio/composio#4 (merged 2026-10-26 on Matěj's go, Pablo approved), and this PR pins it.

Why

On 2026-10-26 Matěj found that his personal Environment showed the Composio apps of a work organization where his personal ones belong.

  • Cause. Composio's browser sign-in lands in the organization that is open in Composio's web dashboard. That is often an Organization's one, because people create those there (F42, addendum (2) of 2026-10-13, point 5). The Launchpad then left a personal Environment's organization to the person, because the CLI did not say which organization is the account's default (point 7).
  • What the decisions say. Root decision 0162 (its addendum of 2026-10-13, point 2) says the personal Environment uses the account's default organization. Point 7 already named the missing step: "Once the CLI prints when an organization was created, the oldest one can be chosen by the rule."

What changes

  • The rule default. A Machine binding whose owner is a person (the personal Environment) gets this rule. The account's default organization is its oldest:
    • Composio's list marks none as the default and lists the newest first.
    • defaultComposioOrganization takes the oldest by created_at.
    • parseComposioOrganizations now keeps createdAt when it is a valid date.
  • Brought current the same way as an Organization's organization. The Integrace reading, the sign-in dialog (/api/tools/composio/organizations) and every link and removal (inOwnOrganization) make the default organization current where another one is, journaled as before.
    • The dialog no longer offers a choice there, since the next reading would undo it.
    • The reading reports it as {name, state, default: true}.
    • The page, Začínáme and lazurio integrations list show its name exactly as Composio does, never in an Organization's CamelCase form.
  • Nothing is guessed. The default organization is not picked in these cases, and the person's choice stands as today:
  • Docs. F42 gets an addendum of 2026-10-26, and points 1 and 7 of addendum (2) are marked. docs/integrations.md is updated. The preview's fake Composio dates its organizations, with example_user_workspace as the oldest.

What does not change

  • An Organization's Environment and a Team Environment still use the organization with the Organization's name.
  • A computer: the person still chooses.
  • No generated Folder text changes.

The pin: 0.4.3-lazurio.3

  • composioBuild names the new build:
    • version and tag;
    • the installer at the release's own commit 5bcde7de8dc78681e8d44262fcf134afab19e091, whose install.sh is byte for byte that of 0.4.3-lazurio.2;
    • the four archives' SHA-256, as the release's checksums.txt lists them and the downloaded archives hash (read 2026-10-26).
  • The catalog's target state now names four changes. Tests that pin the build follow, as do docs/integrations.md, environment-tools.md, launchpad-development.md and F42 point 5.
  • People update the CLI themselves, as with every pin. An Environment that still has 0.4.3-lazurio.2 keeps the person's choice until they update Composio in Settings → Tools, which says it is not the build Lazurio uses. Older builds print no dates, so the rule falls back to the person's choice, exactly as on main.
  • The release itself. Its own installation check passed on Linux and macOS. Its macOS arm64 binary, run in an isolated home with a copy of one real account's sign-in, printed created_at for every organization and gave the default one as the oldest. The isolated home was deleted afterwards.

Verified

  • Tests.
    • bun test on the six affected files: 160 pass. The related 44 files after the pin bump: 646 pass.
    • The organization tests now include the default verdict (oldest, tie, undated, empty, full page) and the rule.
    • On a personal Environment: the dialog and the reading make the default organization current after a sign-in that landed elsewhere; an organization switched behind the reading is switched back; a link goes to the default organization; a default that cannot be made current refuses links and is named as Composio names it; an undated CLI leaves the choice to the person.
    • Also covered: date parsing (tests/tools-login.test.ts) and Začínáme's Composio step (tests/first-run.test.ts).
    • bun run check:static passes.
  • Browser (headless Chrome against scripts/preview-launchpad.ts, Czech).
    • Personal preview: Composio was signed in to another organization. The dialog's reading switched to example_user_workspace, and Settings → Tools shows "Připojeno jako op@example.com (example_user_workspace)".
    • With "Používají agenti" switched on, Apps → Integrace read it as current. "Aplikace v Composiu" and each app's link lead to …/example_user_workspace/…, with no organization notice and no page errors.
    • Work preview: unchanged, made current in ExampleCompany by the Organization's name.
  • Real account. A read-only GET /api/v3.1/org/list on one real account (2026-10-26) confirmed that the API lists the newest first and that the default organization, made at sign-up, is the oldest.

Rollout

After merge: the next Platform release, then Ring 0 (LazurioExampleOrganization) and personal Environments through the pipeline.

Work context

  • Agent / thread: Claude Code session 4d869c83-e1c1-41e8-949e-06f1b9dee608 in Matěj's T3 Code thread "ONBOARDING FLOW".
  • Machine: matejsuchanek.local.
  • Worktree: HumanAndMachine-ai_GEN3/.worktrees/productionspace/LazurioPlatform/DEV-6626-composio-personal-org, branch agent/DEV-6626-composio-personal-org.
  • Mission Control: DEV-6626 (HumanAndMachine-ai/mission-control-data:v3, data/mission-control/plans/2026/09/DEV-6626-composio-app-connections.yaml).

🤖 Generated with Claude Code

Note

Use account's default Composio organization for personal Environments

  • A personal (non-organization) machine now resolves a new default organization rule: the oldest Composio organization by created_at, used only when the list is complete and has one uniquely oldest valid date; otherwise the current organization stays in force.
  • Convergence switches to the default organization when needed; if the default cannot be made current, the Composio reading is closed and integration linking is blocked. The CLI parser now reads and validates created_at on orgs list output (login.ts).
  • UI and text surfaces show the default organization's provided name, and a current default renders as connected with no selectable choices.
  • Also bumps the pinned Lazurio CLI build from 0.4.3-lazurio.2 to 0.4.3-lazurio.3 with new installer commit and archive hashes (composio-build.ts); all tests and docs updated to match.
  • Risk: organization-owned, team, and computer Environments keep their existing rule paths in composioOrganizationRule, but any consumer of ComposioOrganizationRule must handle the new default variant; the pinned build bump changes install/update expectations for every test asserting the old version.

Macroscope summarized dd418d1.

immakermatty and others added 3 commits October 26, 2026 15:18
…osio organization

On a personal Environment the Integrace showed the apps of a work Composio
organization: Composio's browser sign-in lands in the organization open in
Composio's dashboard, often an Organization's one since the person creates
those there, and the Launchpad left a personal Environment's organization to
the person because the CLI did not say which one is the default (F42,
addendum (2) of 2026-10-13, point 7). Root decision 0162 says the personal
Environment uses the account's default organization.

A Machine binding whose owner is a person now has the rule `default`: the
account's default organization is its oldest (Composio marks none and lists
the newest first), told by the `created_at` that Lazurio's build of the CLI
prints in `orgs list` from 0.4.3-lazurio.3 on. The Integrace reading, the
sign-in dialog and every link and removal make it current where another
one is, as an Organization's Environment does with the one of its name; the
dialog offers no choice there, and the page and agents name it as Composio
does. Without a date for each organization, or between two equally old,
nothing is guessed and the person's choice stands as before. A computer and
Organization and Team Environments are unchanged.

F42 addendum of 2026-10-26; docs/integrations.md; the preview's fake
Composio dates its organizations. Tests: 160 in the six affected files and
653 in the related 45 pass; check:static passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…list

`composio orgs list` prints one page of Composio's list, at most 50
organizations, the newest first, and the CLI does not page further. A full
page may leave out the oldest organizations, the account's default among
them, so the rule would take an Organization's one for the default. A list
of 50 now tells no default and the person's choice stands, as without
dates (Pablo's review of Lazurio/composio#4, a non-blocking note).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tes the organizations)

The personal Environment's default Composio organization is the account's
oldest, which only the `created_at` of `orgs list` tells. Lazurio's build
prints it from 0.4.3-lazurio.3 (Lazurio/composio#4, released 2026-10-26 on
Matěj's go), so the pin moves there: the version and tag, the installer at
the release's own commit 5bcde7de (its install.sh byte for byte the one of
0.4.3-lazurio.2) and the four archives' SHA-256 as the release's
checksums.txt lists them and the downloaded archives hash.

The catalog's target state names four changes; tests that pin the build,
docs/integrations.md, environment-tools.md, launchpad-development.md and the
F42 addendum of 2026-10-26 (point 5) follow. An Environment with
0.4.3-lazurio.2 keeps the person's choice until Composio is updated in
Settings → Tools, which says it is not the build Lazurio uses.

Tests: 646 in the related 44 files pass; check:static passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@immakermatty
immakermatty marked this pull request as ready for review October 26, 2026 15:45

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed exact head dd418d1 for DEV-6626. The personal default-organization convergence, undated/tied/full-page fallbacks, dialog/read/link behavior, and unchanged named Organization path are consistent with the decision. Local focused suite: 147 passed across six files; check:static passed. Release tag and four archive digests match the pin, installer blob matches the prior version; PR CI passed. No blocking findings. Review only; merge remains with Matěj.

@immakermatty
immakermatty merged commit bbad4ad into main Oct 26, 2026
7 checks passed
@immakermatty
immakermatty deleted the agent/DEV-6626-composio-personal-org branch October 26, 2026 16:01
@immakermatty

Copy link
Copy Markdown
Contributor Author

Published as squash commit bbad4ad on the approved head dd418d1; the squash commit's tree is identical to that head. Afterwards the task worktree and the branch agent/DEV-6626-composio-personal-org were removed, both locally and on GitHub. Nothing from this work remains outside main.

Next step: the fix reaches Environments with the next Platform release. An Environment still on an older Composio build installs 0.4.3-lazurio.3 when the person clicks Update on Composio in Settings → Tools.

immakermatty added a commit that referenced this pull request Oct 27, 2026
…nal v0.1.13 (DEV-6656, DEV-6671) (#668)

The canary of v0.1.13-rc.1 ran 8 h 2 min 4 s directly observed (2026-10-26T13:53:42Z to 21:55:46Z) on all 5 Environments of the pilot Organization and one personal VM. Every Machine ended healthy on the candidate with NRestarts 0, the journals show only the deliberate G.3 restarts, and no Recovery issue names the candidate.

G.3 covered:
- Folder refreshes and deliberate Launchpad restarts;
- module starts, including the planning app through start_script;
- the one lazurio update through Nová karta;
- #652's prompt refresh on the personal VM (on update and on a one-byte layer change, reverted);
- the Buddy acceptance.

main moved past the candidate (#661 and later merges), so the final v0.1.13 is tagged on release/v0.1.13: this merge plus one commit that restores the candidate's tree outside qualification/ and docs/evidence/.

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.

2 participants