Skip to content

fix(accounts): retire dynamic memory on removal - #455

Open
veryCrunchy wants to merge 219 commits into
fix/durable-upload-scheduling-recovery-stackfrom
fix/dynamic-memory-account-retirement
Open

fix(accounts): retire dynamic memory on removal#455
veryCrunchy wants to merge 219 commits into
fix/durable-upload-scheduling-recovery-stackfrom
fix/dynamic-memory-account-retirement

Conversation

@veryCrunchy

@veryCrunchy veryCrunchy commented Sep 6, 2026

Copy link
Copy Markdown
Member

Removing an account fences its dynamic app reads and clears current and legacy discovery metadata before the same identity can be activated again. Android reopens reads before publishing new memory producers. Desktop credential-journal completion stays recoverable at every persisted clearing boundary.

Pending or unrecognized cleanup now has a separate recovery screen that preserves the saved sign-in and local files. It explains how to reopen the app for another cleanup attempt and contact support if cleanup remains blocked. Unreadable legacy Deck drafts remain preserved and keep cleanup pending until they can be safely attributed and removed.

Validation:

  • Focused Windows-hosted local tests passed: 61 desktop credential/session-cleanup tests and 22 Android cleanup/activation tests, with no failures or skips.
  • The final upload-parent integration passed focused Android credential-schema, startup, account-resolution and activation tests.
  • Architecture, changelog-fragment and staged-diff checks passed. The full local repository script stopped at the Windows file-symlink permission fixture; hosted Linux repository validation remains required.
  • Subsequent recovery guidance changes are copy-only. Fresh hosted CI, generated marketing captures and Codex review remain merge gates.

Stacked on #439. This changes Android and desktop account lifecycle/recovery behavior; server data and protocol contracts are unchanged. These are source and deterministic-test results, not a claim of released or live-device validation.

@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 6, 2026 04:48 Destroyed
@obiente-cloud

obiente-cloud Bot commented Sep 6, 2026

Copy link
Copy Markdown

Obiente preview

NC Native · c7930d0a593c · Ready

Open preview

View in Obiente

Obiente updates this comment as the preview changes.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-14T04:06:15.201013Z c7930d0 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@veryCrunchy veryCrunchy changed the title fix/dynamic memory account retirement fix(accounts): retire dynamic memory on removal Sep 6, 2026
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 6, 2026 04:55 Destroyed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 39af1ccc0e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@veryCrunchy
veryCrunchy force-pushed the fix/dynamic-memory-account-retirement branch from bd62702 to 83f3347 Compare September 6, 2026 06:38
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 6, 2026 06:38 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 6, 2026 06:45 Destroyed
@veryCrunchy
veryCrunchy force-pushed the fix/dynamic-memory-account-retirement branch from df787cc to e946520 Compare September 6, 2026 12:45
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 6, 2026 12:45 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 6, 2026 12:52 Destroyed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e946520e23

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 01:19 Destroyed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 02dc564d7b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 01:26 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 01:31 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 01:39 Destroyed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d6b0995a14

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 01:47 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 01:51 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 03:37 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #455 / NC Native September 14, 2026 03:43 Destroyed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 605b07b6ae

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

} }
files.filter { cacheAccountId == null || it.name.startsWith("$cacheAccountId-") }
files.filter {
cacheAccountId == null || it.name.startsWith("$cacheAccountId-") ||

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep legacy recovery from clearing every account cache

When retryWithoutCredentials() handles a legacy removal journal whose previewCacheIdentity is null, it passes null here, making this predicate select every discovery file under the shared root. Removing one unavailable account therefore deletes persisted contracts for all other accounts, forcing unrelated accounts to rediscover them and potentially breaking their dynamic views while offline. Derive the removed account's current and legacy prefixes from the known account record instead of treating a missing prefix as a wildcard.

AGENTS.md reference: AGENTS.md:L410-L411

Useful? React with 👍 / 👎.

@veryCrunchy veryCrunchy added area:dynamic-apps Adaptive contracts, semantic UI, and app integrations in-progress Implementation is currently active platform:android Android-specific implementation or validation platform:desktop Desktop-specific implementation or validation priority:P0 Required for a trustworthy mobile replacement or prevents data loss type:security Authentication, privacy, secrets, or data protection labels Sep 14, 2026
@veryCrunchy veryCrunchy added this to the 0.2 Safe sync and media milestone Sep 14, 2026
@veryCrunchy veryCrunchy moved this to In Progress in nati.ve Roadmap Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:dynamic-apps Adaptive contracts, semantic UI, and app integrations in-progress Implementation is currently active platform:android Android-specific implementation or validation platform:desktop Desktop-specific implementation or validation priority:P0 Required for a trustworthy mobile replacement or prevents data loss type:security Authentication, privacy, secrets, or data protection

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant