beta.3: complete mailbox delivery and compact email administration - #79
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes
Route and recovery contract
/users/{mailbox}/sendMailArchive/revert can select a new global route for new work. Existing held deliveries require an administrator to review the original recipients and confirm a safe rebind. Accepted-recipient and uncertain SMTP outcomes cannot be blindly retried. A ticket/tenant mismatch blocks the old delivery identity.
Validation
tests/ux/mailbox-*-lifecycle.spec.ts). Earlier local focused published runs passed, including replica and outgoing-failure cases.d73ca8chosted validation passed: PR validation, all 15 jobs, including .NET, UX, published mailbox lifecycle, Compose, images, release rehearsal, disclosure and layout; managed PostgreSQL first run passed. The earlier PR test-merge commit isc64dd72364431b0221d109a50e1007f1a4c0a986(parents:46f24febase andd73ca8chead). Evidence: published lifecycle, browser screenshots and report, .NET test results, release rehearsal. GitHub verifies the final head SSH signature.Final peer-review follow-up (#78)
d73ca8cAuthenticated_historical_import_accepts_the_beta2_null_reason_capture_shape_onlyfailed 1/1 with an empty preview when the reviewed endpoint predicate was replayed. The beta.2 producer wrote a null reason.Same_mailbox_incoming_revision_can_be_reviewed_without_recomposing_deliveryfailed 2/2 on SQLite/PostgreSQL because preview refused the unchanged mailbox ID.Previous reviewed validation. Signed head
e9dee058632ebd1a5499861b7c4a1ec751cdb92f(GitHub verified); base46f24fe33e350900e5d3f747669a9c4b87d75257; validated test merge5bbfee11a8b80466c9c33cb02e3bb641dfc77d59with those two parents. Final PR validation passed all 15 jobs and managed PostgreSQL validation passed. The final TRX has 1,401 passed, 0 failed, 6 skipped (.NET artifact). All 8/8 published mailbox lifecycle invocations passed (protocol and worker evidence); browser setup 1/1 and AI Assistant 14/14 passed cleanly; main had 28 first-attempt passes and one flaky eventual pass (browser report and light/dark captures). Image builds, Compose startup/configuration, release rehearsal, archive runtimes, disclosure, layout and secret scanning are included in the green PR run. The previous reviewed rerun remains available.Local diff whitespace, disclosure, layout, Slopwatch and clean committed-source Gitleaks checks passed; the source checkout is clean. A repository-wide
dotnet format whitespace --verify-no-changesstill reports existing formatting violations, including untouched files; the two new C# files pass a scoped format check. The published acceptance uses Release binaries, normal DI and hosted workers with isolated TLS services under the ASP.NET Development environment. It does not establish live Microsoft consent or Internet delivery.0.1.1-beta.3remains the intended release; no merge, deployment, tag, image publication or live mailbox action was performed.F79-4: confirmed route adopts the target source identity
On reviewed head
e9dee058632ebd1a5499861b7c4a1ec751cdb92f, a composed SQLite/PostgreSQL regression failed 2/2: mail queued throughIEmailServiceretained dedicated mailbox D's non-null source key after confirmed rebinding to global mailbox G. The stored ID was G but the key was D. The changed-route operation now fences and re-resolves the authoritative target, validates its ID, incoming/outgoing revisions, readiness and source key, and atomically adopts the target ID, key, revisions and matching Reply-To. The audit records the original and adopted mailbox IDs and source identities without credentials. Ticket, tenant, delivery identity, content, attachments and To/CC/BCC recipients remain bound to the same logical delivery. Confirmation, fence, revision, tenant, accepted-recipient and uncertain-outcome controls remain in place.After the correction, that regression passed 2/2 on SQLite/PostgreSQL. It also exercises a failed G authentication, explicit outgoing repair, and a benign incoming revision followed by confirmed same-mailbox recovery. A separate composed isolated SMTP case passed 1/1, with one accepted submission after route confirmation and repair. The full local Release suite passed 1,403, skipped 6, failed 0; the published outgoing failure and repair lifecycle passed 1/1.
The previous head's browser evidence was 28 first-attempt passes plus one flaky eventual pass, not 29 clean first attempts. Its first-failure capture showed a blank organization query with a stale option open. The test now waits for the initial autocomplete options and verifies the no-results query value before checking the no-results message; successful selection remains asserted. Three fresh isolated, retries-disabled invocations passed on their first attempt. A
--repeat-each=3run against one shared database produced one pass followed by two assignment-conflict failures because the first invocation left an archived tenant assignment; those stateful repeat failures are reported separately and do not establish an application autocomplete defect.Final-head validation. GitHub verifies signed head
21af3b14e64054f7e69f2708ae88f70111933dbd. The tested merge commit is50f48d9bd39a9c47bd70c7372fe33e6c9305dd3f(parents: base46f24fe33e350900e5d3f747669a9c4b87d75257and this head). PR validation passed 15/15 jobs; managed PostgreSQL validation passed. The uploaded TRX has 1,403 Passed, 6 NotExecuted, 0 Failed. All 8/8 published mailbox lifecycle reports record one expected pass and zero flaky, skipped or unexpected cases. The browser reports record setup 1/1, main 29/29, AI Assistant 14/14, all clean first attempts with no retries. Image builds, Compose checks, release rehearsal, archive runtimes, disclosure, layout and secret scanning passed. Local diff whitespace, Slopwatch, disclosure and layout checks passed; scoped whitespace verification passed for the production file. The older touched test files retain existingdotnet format whitespaceviolations outside this focused correction.0.1.1-beta.3is unchanged. No merge, auto-merge, deployment, image publication, release, tag or live mailbox action was performed. Ready for human review.Operations and limits
Administrators upgrading from beta.2 should back up the database and shared Data Protection keys, stop older replicas before migration, configure and test outgoing transport, inspect the initial-import choice, then explicitly start processing. Previously skipped baseline messages can be selected for bounded historical import. Previously failed beta.2 outgoing records are retained; records without trusted sender binding cannot be rebound automatically. See mailbox administration and planned beta.3 notes.
The isolated protocol and Graph SDK fixtures establish application behavior. They do not establish live Microsoft consent, external SMTP delivery, or the cause of any previously reported live message. This PR is ready for human review. No merge, deployment, release, tag, image publication, or live mailbox action was performed.
Fixes #78. Context: #75, #76, #77.