Skip to content

V1.0.0 beta.4 - #439

Merged
leogdion merged 9 commits into
mainfrom
v1.0.0-beta.4
Aug 29, 2026
Merged

V1.0.0 beta.4#439
leogdion merged 9 commits into
mainfrom
v1.0.0-beta.4

Conversation

@leogdion

Copy link
Copy Markdown
Member

No description provided.

@coderabbitai

coderabbitaiBot commented Aug 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 446 files, which is 346 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4a042cff-333f-40b5-8dd3-a9b205358f4a

📥 Commits

Reviewing files that changed from the base of the PR and between 16b0d83 and c5a4cd0.

⛔ Files ignored due to path filters (3)
  • Examples/BushelCloud/Package.resolved is excluded by !**/Package.resolved
  • Examples/CelestraCloud/Package.resolved is excluded by !**/Package.resolved
  • Scripts/OpenAPITools/Package.resolved is excluded by !**/Package.resolved
📒 Files selected for processing (446)
  • .codefactor.yml
  • .github/workflows/MistDemo-Integration.yml
  • .github/workflows/MistDemo.yml
  • .github/workflows/MistKit.yml
  • .github/workflows/check-unsafe-flags.yml
  • .github/workflows/claude-code-review.yml
  • .github/workflows/codeql.yml
  • .github/workflows/examples.yml
  • .github/workflows/swift-source-compat.yml
  • .gitignore
  • .swiftlint.yml
  • CLAUDE.md
  • Examples/BushelCloud/.claude/s2s-auth-details.md
  • Examples/BushelCloud/.devcontainer/devcontainer.json
  • Examples/BushelCloud/.devcontainer/swift-6.2-nightly/devcontainer.json
  • Examples/BushelCloud/.devcontainer/swift-6.2/devcontainer.json
  • Examples/BushelCloud/.devcontainer/swift-6.3-nightly/devcontainer.json
  • Examples/BushelCloud/.github/actions/cloudkit-sync/action.yml
  • Examples/BushelCloud/.github/workflows/BushelCloud.yml
  • Examples/BushelCloud/.github/workflows/bushel-cloud-build.yml
  • Examples/BushelCloud/.github/workflows/codeql.yml
  • Examples/BushelCloud/.gitrepo
  • Examples/BushelCloud/CLAUDE.md
  • Examples/BushelCloud/Makefile
  • Examples/BushelCloud/Package.swift
  • Examples/BushelCloud/README.md
  • Examples/BushelCloud/Scripts/bootstrap.sh
  • Examples/BushelCloud/Scripts/lint.sh
  • Examples/BushelCloud/Sources/BushelCloudCLI/Commands/StatusCommand.swift
  • Examples/BushelCloud/Sources/BushelCloudKit/CloudKit/BushelCloudKitService.swift
  • Examples/BushelCloud/Sources/BushelCloudKit/CloudKit/OperationClassification.swift
  • Examples/BushelCloud/Sources/BushelCloudKit/CloudKit/SyncEngine+Export.swift
  • Examples/BushelCloud/Sources/BushelCloudKit/CloudKit/SyncEngine.swift
  • Examples/BushelCloud/Sources/BushelCloudKit/Configuration/ConfigurationLoader.swift
  • Examples/BushelCloud/Tests/BushelCloudKitTests/CloudKit/MockCloudKitServiceTests.swift
  • Examples/BushelCloud/Tests/BushelCloudKitTests/ErrorHandling/AuthenticationErrorHandlingTests.swift
  • Examples/BushelCloud/Tests/BushelCloudKitTests/ErrorHandling/CloudKitErrorHandlingTests.swift
  • Examples/BushelCloud/Tests/BushelCloudKitTests/Extensions/FieldValueURLTests.swift
  • Examples/BushelCloud/Tests/BushelCloudKitTests/Mocks/MockCloudKitService.swift
  • Examples/CelestraCloud/.devcontainer/devcontainer.json
  • Examples/CelestraCloud/.devcontainer/swift-6.2-nightly/devcontainer.json
  • Examples/CelestraCloud/.devcontainer/swift-6.2/devcontainer.json
  • Examples/CelestraCloud/.devcontainer/swift-6.3-nightly/devcontainer.json
  • Examples/CelestraCloud/.github/workflows/CelestraCloud.yml
  • Examples/CelestraCloud/.github/workflows/codeql.yml
  • Examples/CelestraCloud/.github/workflows/update-feeds.yml
  • Examples/CelestraCloud/.gitrepo
  • Examples/CelestraCloud/CHANGELOG.md
  • Examples/CelestraCloud/CLAUDE.md
  • Examples/CelestraCloud/Package.swift
  • Examples/CelestraCloud/README.md
  • Examples/CelestraCloud/Scripts/setup-cloudkit-schema.sh
  • Examples/CelestraCloud/Sources/CelestraCloud/Documentation.docc/Documentation.md
  • Examples/CelestraCloud/Sources/CelestraCloud/Services/FeedUpdateProcessor+Fetch.swift
  • Examples/CelestraCloud/Sources/CelestraCloud/Services/FeedUpdateResult.swift
  • Examples/CelestraCloud/Sources/CelestraCloudKit/Protocols/CloudKitRecordOperating.swift
  • Examples/CelestraCloud/Sources/CelestraCloudKit/Services/CelestraError.swift
  • Examples/CelestraCloud/Sources/CelestraCloudKit/Services/CloudKitService+Celestra.swift
  • Examples/MistDemo/README.md
  • Examples/MistDemo/Scripts/lint.sh
  • Examples/MistDemo/Sources/MistDemo/MistDemo.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/AuthTokenCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/CreateZoneCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/DeleteCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/DemoErrorsRunner+Output.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/DemoInFilterCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/LookupZonesCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/ModifyZonesCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/QueryCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/ResolveCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/TestPrivateCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/TestPublicCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/UpdateCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/WebCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/AuthTokenConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/MistDemoConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/QueryConfig+Parsing.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/QueryConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/ResolveConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/TestPrivateConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/TestPublicConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Constants/MistDemoConstants.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/IntegrationTestError.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/IntegrationTestRunner.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/PhaseContext.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/PhaseState.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/PhasedIntegrationTest.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/FetchAllZoneChangesPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/FetchZoneChangesPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/ListZonesPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/LookupRecordsPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/LookupZonePhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/ModifyZonesPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/QueryRecordsPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/QueryRequestOptionsPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/ResolveRecordsPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Tests/PrivateDatabaseTest.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Tests/PublicDatabaseTest.swift
  • Examples/MistDemo/Sources/MistDemoKit/MistDemoRunner.swift
  • Examples/MistDemo/Sources/MistDemoKit/Resources/index.html
  • Examples/MistDemo/Sources/MistDemoKit/Resources/js/auth.js
  • Examples/MistDemo/Sources/MistDemoKit/Resources/js/users.js
  • Examples/MistDemo/Sources/MistDemoKit/Resources/js/zones.js
  • Examples/MistDemo/Sources/MistDemoKit/Server/CloudKitService+WebBackend+Reads.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/CloudKitService+WebBackend+Users.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/CloudKitService+WebBackend.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebBackend.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebRequests+Users.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebRequests+Zones.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebRequests.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebResponse.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebServer+CRUD.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebServer+Pending.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebServer+Users.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebServer+Zones.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebServer.swift
  • Examples/MistDemo/Sources/MistDemoKit/Utilities/AsyncHelpers.swift
  • Examples/MistDemo/Sources/MistDemoKit/Utilities/PendingStub.swift
  • Examples/MistDemo/Tests/MistDemoTests/Commands/CommandIntegration/CommandIntegrationTests+AuthTokenCommandIntegration.swift
  • Examples/MistDemo/Tests/MistDemoTests/Commands/CommandIntegration/CommandIntegrationTests+RealWorldUsageSimulation.swift
  • Examples/MistDemo/Tests/MistDemoTests/Commands/DeleteCommandMapConflictTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Commands/QueryCommand/QueryCommandTests+ZoneConfiguration.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/AuthTokenConfigTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/QueryConfig/QueryConfigTests+BasicInitialization.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/TestPrivateConfigTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/MockBackend+Calls.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/MockBackend+RecordOperations.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/MockBackend+UserOperations.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/MockBackend.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/WebServerTests+Users.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/WebServerTests+ZoneReads.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/WebServerTests.swift
  • Package.swift
  • README.md
  • ReleaseNotes.md
  • Scripts/generate-openapi.sh
  • Scripts/lint.sh
  • Sources/MistKit/Authentication/HTTPField.Name+CloudKit.swift
  • Sources/MistKit/CloudKitService/CloudKitError+ErrorDescription.swift
  • Sources/MistKit/CloudKitService/CloudKitError+OpenAPI.swift
  • Sources/MistKit/CloudKitService/CloudKitError.swift
  • Sources/MistKit/CloudKitService/CloudKitResponseProcessor+Changes.swift
  • Sources/MistKit/CloudKitService/CloudKitService+BatchChunking.swift
  • Sources/MistKit/CloudKitService/CloudKitService+Classification.swift
  • Sources/MistKit/CloudKitService/CloudKitService+FetchAllZoneChanges.swift
  • Sources/MistKit/CloudKitService/CloudKitService+ModifyZones.swift
  • Sources/MistKit/CloudKitService/CloudKitService+Operations+Deprecated.swift
  • Sources/MistKit/CloudKitService/CloudKitService+Operations.swift
  • Sources/MistKit/CloudKitService/CloudKitService+QueryPagination.swift
  • Sources/MistKit/CloudKitService/CloudKitService+RecordManaging.swift
  • Sources/MistKit/CloudKitService/CloudKitService+UserOperations.swift
  • Sources/MistKit/CloudKitService/CloudKitService+ZoneOperations.swift
  • Sources/MistKit/CloudKitService/CloudKitService.swift
  • Sources/MistKit/Documentation.docc/AbstractionLayerArchitecture.md
  • Sources/MistKit/Documentation.docc/CloudKitLimitsAndPerformance.md
  • Sources/MistKit/Documentation.docc/ConfiguringMistKit.md
  • Sources/MistKit/Documentation.docc/GeneratedCodeAnalysis.md
  • Sources/MistKit/Documentation.docc/HandlingErrors.md
  • Sources/MistKit/Documentation.docc/WorkingWithRecords.md
  • Sources/MistKit/Models/AssetUploading/URLRequest+AssetUpload.swift
  • Sources/MistKit/Models/CloudKitServerErrorCode.swift
  • Sources/MistKit/Models/ConversionError.swift
  • Sources/MistKit/Models/Environment.swift
  • Sources/MistKit/Models/FieldValues/FieldValue+Components+Scalar.swift
  • Sources/MistKit/Models/FieldValues/FieldValue+Components.swift
  • Sources/MistKit/Models/OperationFailure.swift
  • Sources/MistKit/Models/Queries/FilterBuilder/FilterBuilder.swift
  • Sources/MistKit/Models/Queries/Query.swift
  • Sources/MistKit/Models/RecordOperation.swift
  • Sources/MistKit/Models/Users/UserIdentity.swift
  • Sources/MistKit/Models/Users/UserIdentityLookupInfo.swift
  • Sources/MistKit/Models/Zones/ZoneChangesResult.swift
  • Sources/MistKit/Models/Zones/ZoneID.swift
  • Sources/MistKit/Models/Zones/ZoneInfo.swift
  • Sources/MistKit/OpenAPI/Components/Components.Schemas.FieldValueRequest.swift
  • Sources/MistKit/OpenAPI/Components/Components.Schemas.RecordOperation.swift
  • Sources/MistKit/OpenAPI/OperationInputPath.swift
  • Sources/MistKit/RecordManagement/RecordManaging.swift
  • Sources/MistKitOpenAPI/Client.swift
  • Sources/MistKitOpenAPI/Types.swift
  • Tests/MistKitTests/CloudKitService/CloudKitErrorTests.swift
  • Tests/MistKitTests/CloudKitService/CreateZone/CloudKitServiceTests.CreateZone+ErrorHandling.swift
  • Tests/MistKitTests/CloudKitService/FetchZoneChanges/CloudKitServiceTests.FetchZoneChanges+Helpers.swift
  • Tests/MistKitTests/CloudKitService/ModifyZones/CloudKitServiceTests.ModifyZones+Helpers.swift
  • Tests/MistKitTests/CloudKitService/ModifyZones/CloudKitServiceTests.ModifyZones+SuccessCases.swift
  • Tests/MistKitTests/CloudKitService/Query/CloudKitServiceTests.Query+EdgeCases.swift
  • Tests/MistKitTests/CloudKitService/Query/CloudKitServiceTests.Query+ExistingRecordNames.swift
  • Tests/MistKitTests/CloudKitService/QueryPagination/CloudKitServiceTests.QueryPagination+SuccessCases.swift
  • Tests/MistKitTests/CloudKitService/Tokens/CloudKitServiceTests.Tokens+FailureCases.swift
  • Tests/MistKitTests/CloudKitService/Upload/CloudKitServiceTests.Upload+ErrorHandling.swift
  • Tests/MistKitTests/Models/BatchSyncResultTests.swift
  • Tests/MistKitTests/Models/ServerErrorCodeTests.swift
  • Tests/MistKitTests/RecordManagement/MockRecordManagingService.swift
  • docs/internals/error-code-parsing.md
  • docs/internals/field-type-polymorphism.md
  • docs/talk-feedback.md
  • openapi.yaml
  • .agents/skills/claude-handoff/SKILL.md
  • .agents/skills/claude-handoff/agents/openai.yaml
  • .agents/skills/code-review/SKILL.md
  • .agents/skills/code-review/agents/openai.yaml
  • .agents/skills/codebase-design/DEEPENING.md
  • .agents/skills/codebase-design/DESIGN-IT-TWICE.md
  • .agents/skills/codebase-design/SKILL.md
  • .agents/skills/codebase-design/agents/openai.yaml
  • .agents/skills/grill-me/SKILL.md
  • .agents/skills/grill-me/agents/openai.yaml
  • .agents/skills/grill-with-docs/SKILL.md
  • .agents/skills/grill-with-docs/agents/openai.yaml
  • .agents/skills/grilling/SKILL.md
  • .agents/skills/grilling/agents/openai.yaml
  • .agents/skills/handoff/SKILL.md
  • .agents/skills/handoff/agents/openai.yaml
  • .agents/skills/implement/SKILL.md
  • .agents/skills/implement/agents/openai.yaml
  • .agents/skills/loop-me/SKILL.md
  • .agents/skills/loop-me/agents/openai.yaml
  • .agents/skills/research/SKILL.md
  • .agents/skills/research/agents/openai.yaml
  • .agents/skills/tdd/SKILL.md
  • .agents/skills/tdd/agents/openai.yaml
  • .agents/skills/tdd/mocking.md
  • .agents/skills/tdd/tests.md
  • .claude/agent-notes.md
  • .claude/hooks/session-start.sh
  • .claude/memory/MEMORY.md
  • .claude/memory/feedback_action_pinning.md
  • .claude/memory/feedback_available_semantics.md
  • .claude/memory/feedback_check_merge_strategy_before_release_deletions.md
  • .claude/memory/feedback_ci_only_flake_gate.md
  • .claude/memory/feedback_ci_swift_matrix.md
  • .claude/memory/feedback_conditional_known_issue_overload.md
  • .claude/memory/feedback_examples_workflow_tracks_tools_version.md
  • .claude/memory/feedback_explicit_import_access.md
  • .claude/memory/feedback_feature_pr_merge_squash_or_rebase.md
  • .claude/memory/feedback_findings_to_issues_not_code.md
  • .claude/memory/feedback_never_git_stash_multiworktree.md
  • .claude/memory/feedback_no_silent_policy_defaults.md
  • .claude/memory/feedback_openapi_extension_filenames.md
  • .claude/memory/feedback_record_result_pattern_throughout.md
  • .claude/memory/feedback_sendable_api_fallback.md
  • .claude/memory/feedback_setup_action_lives_in_owned_repo.md
  • .claude/memory/feedback_skip_history_on_repo_extraction.md
  • .claude/memory/feedback_subrepo_fixes_belong_in_subrepo.md
  • .claude/memory/feedback_swift_testing_availability.md
  • .claude/memory/feedback_test_lint_before_commit.md
  • .claude/memory/feedback_test_parent_enum_vs_struct.md
  • .claude/memory/project_419_fixed_in_beta3.md
  • .claude/memory/project_beta4_worktree_layout.md
  • .claude/memory/project_cloudkit_share_record_type_casing.md
  • .claude/memory/project_examples_dir_is_for_mistkit_dev.md
  • .claude/memory/project_macos_aps_entitlement_key.md
  • .claude/memory/project_mistkit_branch_pin_resolves_tags.md
  • .claude/memory/reference_cloudkit_archived_endpoints.md
  • .claude/memory/reference_cloudkit_zone_dictionary.md
  • .claude/memory/reference_wasm_ci_signatures.md
  • .claude/settings.json
  • .claude/skills/claude-handoff
  • .claude/skills/code-review
  • .claude/skills/codebase-design
  • .claude/skills/grill-me
  • .claude/skills/grill-with-docs
  • .claude/skills/grilling
  • .claude/skills/handoff
  • .claude/skills/implement
  • .claude/skills/loop-me
  • .claude/skills/research
  • .claude/skills/tdd
  • .cursor/rules/in-repo-memory.mdc
  • .github/workflows/check-generated-openapi.yml
  • .swift-version
  • AGENTS.md
  • Examples/BushelCloud/.github/workflows/dependency-policy.yml
  • Examples/BushelCloud/Tests/BushelCloudKitTests/CloudKit/KeyIDValidatorTests.swift
  • Examples/CelestraCloud/.agents/skills/claude-handoff/SKILL.md
  • Examples/CelestraCloud/.agents/skills/claude-handoff/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/code-review/SKILL.md
  • Examples/CelestraCloud/.agents/skills/code-review/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/codebase-design/DEEPENING.md
  • Examples/CelestraCloud/.agents/skills/codebase-design/DESIGN-IT-TWICE.md
  • Examples/CelestraCloud/.agents/skills/codebase-design/SKILL.md
  • Examples/CelestraCloud/.agents/skills/codebase-design/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/domain-modeling/ADR-FORMAT.md
  • Examples/CelestraCloud/.agents/skills/domain-modeling/CONTEXT-FORMAT.md
  • Examples/CelestraCloud/.agents/skills/domain-modeling/SKILL.md
  • Examples/CelestraCloud/.agents/skills/domain-modeling/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/grill-me/SKILL.md
  • Examples/CelestraCloud/.agents/skills/grill-me/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/grill-with-docs/SKILL.md
  • Examples/CelestraCloud/.agents/skills/grill-with-docs/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/grilling/SKILL.md
  • Examples/CelestraCloud/.agents/skills/grilling/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/handoff/SKILL.md
  • Examples/CelestraCloud/.agents/skills/handoff/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/implement/SKILL.md
  • Examples/CelestraCloud/.agents/skills/implement/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/improve-codebase-architecture/HTML-REPORT.md
  • Examples/CelestraCloud/.agents/skills/improve-codebase-architecture/SKILL.md
  • Examples/CelestraCloud/.agents/skills/improve-codebase-architecture/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/loop-me/SKILL.md
  • Examples/CelestraCloud/.agents/skills/loop-me/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/prototype/LOGIC.md
  • Examples/CelestraCloud/.agents/skills/prototype/SKILL.md
  • Examples/CelestraCloud/.agents/skills/prototype/UI.md
  • Examples/CelestraCloud/.agents/skills/prototype/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/research/SKILL.md
  • Examples/CelestraCloud/.agents/skills/research/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/tdd/SKILL.md
  • Examples/CelestraCloud/.agents/skills/tdd/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/tdd/mocking.md
  • Examples/CelestraCloud/.agents/skills/tdd/tests.md
  • Examples/CelestraCloud/.agents/skills/to-spec/SKILL.md
  • Examples/CelestraCloud/.agents/skills/to-spec/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/to-tickets/SKILL.md
  • Examples/CelestraCloud/.agents/skills/to-tickets/agents/openai.yaml
  • Examples/CelestraCloud/.agents/skills/triage/AGENT-BRIEF.md
  • Examples/CelestraCloud/.agents/skills/triage/OUT-OF-SCOPE.md
  • Examples/CelestraCloud/.agents/skills/triage/SKILL.md
  • Examples/CelestraCloud/.agents/skills/triage/agents/openai.yaml
  • Examples/CelestraCloud/.claude/agent-notes.md
  • Examples/CelestraCloud/.claude/memory/MEMORY.md
  • Examples/CelestraCloud/.claude/skills/claude-handoff
  • Examples/CelestraCloud/.claude/skills/code-review
  • Examples/CelestraCloud/.claude/skills/codebase-design
  • Examples/CelestraCloud/.claude/skills/domain-modeling
  • Examples/CelestraCloud/.claude/skills/grill-me
  • Examples/CelestraCloud/.claude/skills/grill-with-docs
  • Examples/CelestraCloud/.claude/skills/grilling
  • Examples/CelestraCloud/.claude/skills/handoff
  • Examples/CelestraCloud/.claude/skills/implement
  • Examples/CelestraCloud/.claude/skills/improve-codebase-architecture
  • Examples/CelestraCloud/.claude/skills/loop-me
  • Examples/CelestraCloud/.claude/skills/prototype
  • Examples/CelestraCloud/.claude/skills/research
  • Examples/CelestraCloud/.claude/skills/tdd
  • Examples/CelestraCloud/.claude/skills/to-spec
  • Examples/CelestraCloud/.claude/skills/to-tickets
  • Examples/CelestraCloud/.claude/skills/triage
  • Examples/CelestraCloud/.devcontainer/swift-6.3/devcontainer.json
  • Examples/CelestraCloud/.devcontainer/swift-6.4-nightly/devcontainer.json
  • Examples/CelestraCloud/.github/workflows/dependency-policy.yml
  • Examples/CelestraCloud/AGENTS.md
  • Examples/CelestraCloud/Tests/CelestraCloudTests/Services/ArticleSyncService.swift
  • Examples/CelestraCloud/Tests/CelestraCloudTests/Services/FeedUpdateResultTests.swift
  • Examples/CelestraCloud/skills-lock.json
  • Examples/MistDemo/Sources/MistDemoKit/Commands/AcceptCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/AuthTokensCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/FetchDatabaseChangesCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/FetchZoneRecordChangesCommand.swift
  • Examples/MistDemo/Sources/MistDemoKit/Commands/WebAuthTokenCapture.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/AcceptConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/AuthTokensConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/FetchDatabaseChangesConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Configuration/FetchZoneRecordChangesConfig.swift
  • Examples/MistDemo/Sources/MistDemoKit/Errors/AcceptError.swift
  • Examples/MistDemo/Sources/MistDemoKit/Errors/ResolveError.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/ChangeTrackingVerification.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/ChangeTrackingZoneSlot.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/AcceptSharesPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/CustomZoneQueryPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/FetchAllRecordZoneChangesPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/FetchRecordZoneChangesPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Integration/Phases/ShareCreateAndAcceptPhase.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/CloudKitService+WebBackend+Shares.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebRequests+Shares.swift
  • Examples/MistDemo/Sources/MistDemoKit/Server/WebServer+Shares.swift
  • Examples/MistDemo/Tests/MistDemoTests/Commands/FetchDatabaseChangesCommandTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Commands/FetchZoneRecordChangesCommandTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/AcceptConfigTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/AuthTokensConfigTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/FetchDatabaseChangesConfigTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/FetchZoneRecordChangesConfigTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Configuration/ResolveConfigTests.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/MockBackend+ShareOperations.swift
  • Examples/MistDemo/Tests/MistDemoTests/Server/WebServerTests+QueryZone.swift
  • Scripts/OpenAPITools/Package.swift
  • Scripts/cloud-setup.sh
  • Sources/MistKit/CloudKitService/CloudKitError+NetworkErrorDescription.swift
  • Sources/MistKit/CloudKitService/CloudKitError+ServerErrorCode.swift
  • Sources/MistKit/CloudKitService/CloudKitError+ZoneErrorDescription.swift
  • Sources/MistKit/CloudKitService/CloudKitResponseProcessor+Sharing.swift
  • Sources/MistKit/CloudKitService/CloudKitService+CreateShare+ModifyRecords.swift
  • Sources/MistKit/CloudKitService/CloudKitService+CreateShare.swift
  • Sources/MistKit/CloudKitService/CloudKitService+DatabaseChanges.swift
  • Sources/MistKit/CloudKitService/CloudKitService+RecordZoneChanges.swift
  • Sources/MistKit/CloudKitService/CloudKitService+RecordZoneChangesPagination.swift
  • Sources/MistKit/CloudKitService/CloudKitService+ShareOperations.swift
  • Sources/MistKit/CloudKitService/ServerErrorCodeDetail.swift
  • Sources/MistKit/Models/Array+RecordResult.swift
  • Sources/MistKit/Models/ContactInformation.swift
  • Sources/MistKit/Models/FieldValues/FieldValue+ResponseTypeTag.swift
  • Sources/MistKit/Models/Sharing/CreatedShare.swift
  • Sources/MistKit/Models/Sharing/ShareAcceptanceStatus.swift
  • Sources/MistKit/Models/Sharing/ShareDatabaseScope.swift
  • Sources/MistKit/Models/Sharing/ShareInfo.swift
  • Sources/MistKit/Models/Sharing/ShareParticipant.swift
  • Sources/MistKit/Models/Sharing/ShareParticipantType.swift
  • Sources/MistKit/Models/Sharing/SharePermission.swift
  • Sources/MistKit/Models/Sharing/SharePotentialMatch.swift
  • Sources/MistKit/Models/Sharing/ShareRecordInfo.swift
  • Sources/MistKit/Models/Sharing/ShareRecordPair.swift
  • Sources/MistKit/Models/Sharing/ShareTargetReference.swift
  • Sources/MistKit/Models/Sharing/ShortGUIDDictionary.swift
  • Sources/MistKit/Models/ZoneOperationFailure.swift
  • Sources/MistKit/Models/ZoneTarget.swift
  • Sources/MistKit/Models/Zones/Array+ZoneChangeResult.swift
  • Sources/MistKit/Models/Zones/DatabaseChangesResult.swift
  • Sources/MistKit/Models/Zones/RecordZoneChangesResult.swift
  • Sources/MistKit/Models/Zones/ZoneChangeResult.swift
  • Sources/MistKit/Models/Zones/ZoneChangesAccumulator.swift
  • Sources/MistKit/Models/Zones/ZoneChangesRequest.swift
  • Sources/MistKit/Models/Zones/ZoneRecordChanges.swift
  • Sources/MistKit/Models/Zones/ZoneRecordChangesResult.swift
  • Sources/MistKit/OpenAPI/Operations/Operations.acceptShares.Output.swift
  • Sources/MistKit/OpenAPI/Operations/Operations.fetchDatabaseChanges.Output.swift
  • Sources/MistKit/OpenAPI/Operations/Operations.fetchRecordZoneChanges.Output.swift
  • Sources/MistKit/OpenAPI/Operations/Operations.resolveShortGUIDs.Output.swift
  • Tests/MistKitTests/CloudKitService/DeleteZone/CloudKitServiceTests.DeleteZone+ErrorHandling.swift
  • Tests/MistKitTests/CloudKitService/FetchDatabaseChanges/CloudKitServiceTests.FetchDatabaseChanges+ErrorHandling.swift
  • Tests/MistKitTests/CloudKitService/FetchDatabaseChanges/CloudKitServiceTests.FetchDatabaseChanges+Helpers.swift
  • Tests/MistKitTests/CloudKitService/FetchDatabaseChanges/CloudKitServiceTests.FetchDatabaseChanges+Pagination.swift
  • Tests/MistKitTests/CloudKitService/FetchDatabaseChanges/CloudKitServiceTests.FetchDatabaseChanges+SuccessCases.swift
  • Tests/MistKitTests/CloudKitService/FetchDatabaseChanges/CloudKitServiceTests.FetchDatabaseChanges.swift
  • Tests/MistKitTests/CloudKitService/FetchRecordZoneChanges/CloudKitServiceTests.FetchRecordZoneChanges+ErrorHandling.swift
  • Tests/MistKitTests/CloudKitService/FetchRecordZoneChanges/CloudKitServiceTests.FetchRecordZoneChanges+Helpers.swift
  • Tests/MistKitTests/CloudKitService/FetchRecordZoneChanges/CloudKitServiceTests.FetchRecordZoneChanges+Pagination.swift
  • Tests/MistKitTests/CloudKitService/FetchRecordZoneChanges/CloudKitServiceTests.FetchRecordZoneChanges+PaginationLimits.swift
  • Tests/MistKitTests/CloudKitService/FetchRecordZoneChanges/CloudKitServiceTests.FetchRecordZoneChanges+SuccessCases.swift
  • Tests/MistKitTests/CloudKitService/FetchRecordZoneChanges/CloudKitServiceTests.FetchRecordZoneChanges.swift
  • Tests/MistKitTests/CloudKitService/FetchZoneChanges/CloudKitServiceTests.FetchZoneChanges+WireFormat.swift
  • Tests/MistKitTests/CloudKitService/ModifyZones/CloudKitServiceTests.ModifyZones+ErrorHandling.swift
  • Tests/MistKitTests/CloudKitService/Query/CloudKitServiceTests.Query+ZoneID.swift
  • Tests/MistKitTests/CloudKitService/ServerErrorCodes/CloudKitServiceTests.ServerErrorCodes+ForwardCompatibility.swift
  • Tests/MistKitTests/CloudKitService/ServerErrorCodes/CloudKitServiceTests.ServerErrorCodes+Helpers.swift
  • Tests/MistKitTests/CloudKitService/ServerErrorCodes/CloudKitServiceTests.ServerErrorCodes+Roundtrip.swift
  • Tests/MistKitTests/CloudKitService/ServerErrorCodes/CloudKitServiceTests.ServerErrorCodes.swift
  • Tests/MistKitTests/CloudKitService/Sharing/CloudKitServiceTests.Sharing+Accept.swift
  • Tests/MistKitTests/CloudKitService/Sharing/CloudKitServiceTests.Sharing+Create.swift
  • Tests/MistKitTests/CloudKitService/Sharing/CloudKitServiceTests.Sharing+Helpers.swift
  • Tests/MistKitTests/CloudKitService/Sharing/CloudKitServiceTests.Sharing+Resolve.swift
  • Tests/MistKitTests/CloudKitService/Sharing/CloudKitServiceTests.Sharing+ShareInfo.swift
  • Tests/MistKitTests/Models/Sharing/ShareModelTests.swift
  • Tests/MistKitTests/Models/Zones/ZoneMetadataTests+Responses.swift
  • Tests/MistKitTests/Models/Zones/ZoneMetadataTests+ZoneInfoConversion.swift
  • Tests/MistKitTests/Models/Zones/ZoneMetadataTests.swift
  • skills-lock.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecovBot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.85%. Comparing base (16b0d83) to head (c5a4cd0).

Additional details and impacted files
@@ Coverage Diff @@## main #439 +/- ##
==========================================
+ Coverage 74.52% 81.85% +7.32% 
==========================================
Files 158 196 +38 Lines 3761 4755 +994 ==========================================
+ Hits 2803 3892 +1089 + Misses 958 863 -95 
FlagCoverage Δ
mistdemo-spm-macos11.23% <ø> (?)
mistdemo-swift-6.2-jammy11.23% <ø> (?)
mistdemo-swift-6.2-noble11.23% <ø> (?)
mistdemo-swift-6.3-jammy11.23% <ø> (?)
mistdemo-swift-6.3-noble11.23% <ø> (?)
mistdemo-swift-6.4-jammy11.23% <ø> (?)
mistdemo-swift-6.4-noble11.23% <ø> (?)
spm80.52% <ø> (+6.34%)⬆️
swift-6.1-jammy80.45% <ø> (+6.30%)⬆️
swift-6.1-noble80.41% <ø> (+6.21%)⬆️
swift-6.2-jammy80.50% <ø> (+6.43%)⬆️
swift-6.2-noble80.33% <ø> (+6.21%)⬆️
swift-6.3-jammy80.29% <ø> (+6.16%)⬆️
swift-6.3-noble80.33% <ø> (+6.21%)⬆️
swift-6.4-jammy80.43% <ø> (?)
swift-6.4-noble80.29% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@leogdion
leogdion marked this pull request as ready for review August 29, 2026 01:16
leogdionand others added 9 commits August 29, 2026 17:30
Extends the MistDemo web demo's Discover panel to look up user
identities by phone number, alongside the existing email and user
record name lookups. `UserIdentityLookupInfo(phoneNumber:)` already
existed in MistKit, so no library change was needed.
- `WebRequests.DiscoverUsers` gains `phoneNumbers: [String]`, decoded
with `decodeIfPresent(...) ?? []` mirroring the other two lists.
- `WebBackend.webDiscoverUsers` and the `CloudKitService` conformance
accept `phoneNumbers` and append
`phoneNumbers.map { UserIdentityLookupInfo(phoneNumber: $0) }` to the
combined lookup-info array.
- Frontend adds a phone-numbers textarea, sends `phoneNumbers` in the
POST body, and loops `discoverUserIdentityWithPhoneNumber` in the
CloudKit JS parity path.
- `DiscoverUsersCall` and `usersDiscoverForwards` cover phone numbers.
Closes#398
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ges (#401, #47, #46)
* WIP: recovered change-tracking work (pre-verification checkpoint)
* Clean up lint violations in change-tracking implementation
Resolves the 14 SwiftLint violations outstanding when the implementing
agent stalled, plus two periphery findings introduced by the file splits:
- Expand `guard ... else { return nil }` one-liners
(conditional_returns_on_newline) in DatabaseChangesResult,
RecordZoneChangesResult, ZoneChangesAccumulator and
CloudKitService+DatabaseChanges.
- Put each argument on its own line in the paginator's
accumulator.merge(...) call (multiline_arguments{,_brackets}).
- Wrap the unbreakable DocC symbol link in ZoneChangesRequest with a
scoped line_length disable/enable pair, keeping the doc comment
contiguous so it stays attached to the declaration.
- Split CloudKitError+ZoneErrorDescription.swift out of
CloudKitError+ErrorDescription.swift, and
...FetchRecordZoneChanges+PaginationLimits.swift out of
...+Pagination.swift, to bring both files under the length limit.
- Drop the import and test helper the splits left unused.
swift test: 573 tests / 182 suites passing. Scripts/lint.sh: 0
violations in 416 files, no unused code. generate-openapi.sh reproduces
the committed Sources/MistKitOpenAPI output.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Add MistDemo coverage for database and zone change tracking
Introduce fetch-database-changes and fetch-zone-record-changes CLI,
migrate phases/web off deprecated fetchZoneChanges, and keep
fetch-changes on records/changes.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Classify zoneOperationFailed in serverErrorDetail switch after rebase.
ci skip
Co-authored-by: Cursor <cursoragent@cursor.com>
* Harden MistDemo change-tracking integration tests and skip periphery in lint.
Exercise database/zone change APIs against a provisioned custom zone with fatal assertions and incremental sync-token checks, and opt periphery out of lint until the index-store path mismatch is resolved.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Expose change-tracking in MistDemo web UI and skip new suites on wasm.
Add changes/database and changes/zone panels with a two-step prefill flow, and disable the FetchDatabaseChanges/FetchRecordZoneChanges test suites on wasm to avoid CI OOM.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Fixes the two warnings surfaced by the Swift 6.4 Linux lane:
1. `URLRequest+AssetUpload.swift` declared `public import
FoundationNetworking` but its only declaration is an `internal init`.
Downgraded to `internal import` per the package's import convention.
2. `CloudKitError.networkErrorDescription` read the deprecated
`URLError.failureURLString`. Replaced with `failingURL?.absoluteString`
plus a fallback that reads the distinct legacy userInfo key directly,
so errors carrying only the string key still report their failed URL.
The network-error description moves to a new
`CloudKitError+NetworkErrorDescription.swift`, mirroring the existing
`CloudKitError+ZoneErrorDescription.swift` split, to stay under the
225-line file-length limit.
Adds four tests covering both userInfo keys, their precedence, and
neither being present.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xs1c8vvxjCxqZiStcmuPS2
) (#443)
* Model per-zone failures on zones/modify; clarify zones/changes syncToken
`ZonesModifyResponse.zones` items become `oneOf: [ZoneFetchFailure, Zone]`,
matching `changes/database` and `changes/zone`. `zones/modify` is a batch
endpoint whose realistic failure mode is partial, and Apple routes all four
zone endpoints' failures through the same Zone Fetch Error Dictionary, so the
error variant already exists — it just was not wired to this response.
The failure variant is listed first, matching every other `oneOf` in the spec.
`ZoneFetchFailure` requires `serverErrorCode`, so a success payload fails that
branch and falls through to `Zone`.
Also rewords the `zones/changes` request `syncToken` description (#433 part 3):
it was described as "Meta-sync token", a name the spec does not use for the
key. The key stays `syncToken` (#430); only the prose is corrected.
Regenerating also repairs Sources/MistKitOpenAPI reproducibility: CodeFactor's
bot alphabetized the Foundation imports in Client.swift/Types.swift in 61235b5,
so `./Scripts/generate-openapi.sh` no longer reproduced the committed output.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xs1c8vvxjCxqZiStcmuPS2
* modifyZones returns [ZoneChangeResult] and surfaces per-zone failures
`modifyZones` mapped every entry straight through as a success, so a batch
where some zones failed was reported as a partial success naming no zone and
discarding CloudKit's `serverErrorCode`/`reason`.
It now returns a bare `[ZoneChangeResult]` — one entry per zone the server
returned — mirroring how `modifyRecords` returns a bare `[RecordResult]`.
`zones/modify` carries no batch-level metadata, so there is deliberately no
`DatabaseChangesResult`-style wrapper struct. `ZoneChangeResult` /
`ZoneOperationFailure` from #429 are reused rather than duplicated; the only
new code is a second `init(from:)` overload keyed off the generated
`ZonesModifyResponse.zonesPayloadPayload`.
Two convenience-wrapper bugs fall out of this:
- `createZone` threw a bare `.invalidResponse` with no code, reason or zone
name when CloudKit rejected the create. It now calls `.get()`, throwing
`.zoneOperationFailed` with the full failure.
- `deleteZone` discarded the result entirely, so a `ZONE_NOT_FOUND` delete was
reported to the caller as success. It now checks every entry.
`.zones` / `.failures` accessors are added as concrete `Array` extensions
(`[ZoneChangeResult]`, plus `.records`/`.failures` on `[RecordResult]`) rather
than one generic extension over `OperationResult<Success, Target>`: Swift
cannot bind free generic parameters in an extension's `where` clause.
BREAKING: `modifyZones` returns `[ZoneChangeResult]`, not `[ZoneInfo]`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xs1c8vvxjCxqZiStcmuPS2
* Test per-zone modifyZones failures and the create/delete wrappers
Adds a raw-dictionary `ResponseConfig.modifyZonesResponse(zones:)` builder — so
a single response can mix success entries and zone error entries — mirroring
`databaseChangesResponse(zones:syncToken:moreComing:)`, and a
`makeService(zones:)` harness over it.
New tests: a mixed batch keeps the successes and reports the failure with its
zone name/code/reason; `.get()` on a failed entry throws `.zoneOperationFailed`;
zone metadata survives the new success variant; `createZone` surfaces the
`ZoneOperationFailure` instead of `.invalidResponse`; and `deleteZone` throws on
`ZONE_NOT_FOUND` rather than reporting success.
Verified the failure tests fail when the service is reverted to dropping error
entries. `ZoneMetadataTests` now matches on the `oneOf` success variant.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xs1c8vvxjCxqZiStcmuPS2
* MistDemo: adopt the [ZoneChangeResult] return from modifyZones
- `modify-zones` announces per-zone rejections on stderr (matching how `modify`
reports per-record failures) and keeps stdout to the zones that were actually
modified, so the JSON/CSV/table output stays machine-parseable.
`outputResults` requires `Encodable` and `OperationResult` is `Sendable`-only,
so the results cannot be rendered directly.
- `webModifyZones` collapses the results all-or-nothing via `.get()`, matching
the documented decision in `webLookupRecords`, so the web panel shows a
rejection instead of silently returning fewer zones than were asked for. Its
`[ZoneInfo]` signature is unchanged, so `WebBackend`, the routes and the mock
backend need no changes.
- `ModifyZonesPhase` asserted nothing about the results; it now fails the
integration run when a create or the cleanup delete is rejected. Split into
`createAndVerify` to stay under the cyclomatic-complexity limit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xs1c8vvxjCxqZiStcmuPS2
* Add CI guard for generated OpenAPI output; document modifyZones results
CodeFactor's bot committed to `Sources/MistKitOpenAPI/` in 61235b5, reordering
imports in generated files, which broke `./Scripts/generate-openapi.sh`
reproducibility until this branch regenerated them. Nothing checked that.
`check-generated-openapi.yml` now regenerates and runs
`git diff --exit-code Sources/MistKitOpenAPI/` on every PR. It builds the
generator from `Scripts/OpenAPITools`, whose version is pinned in sync with
mise.toml, so the check is self-contained.
That fallback build leaves SwiftPM checkouts in `Scripts/OpenAPITools/.build`,
which SwiftLint then walked (the bare `.build` exclude only matches the repo
root one) — added as an explicit exclude.
Docs: AGENTS.md's per-zone-failures paragraph now covers `zones/modify` and
records the oneOf ordering rationale, the operations table names the new return
type, and README points at `modifyZones` alongside `createZone`/`deleteZone`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xs1c8vvxjCxqZiStcmuPS2
* Rename the zones/changes wire token to metaSyncToken (#430)
A live container run (iCloud.com.brightdigit.MistDemo / development / private,
web-auth) proved `zones/changes` neither returns nor honors `syncToken`:
- The response's top-level keys are exactly `[moreComing, metaSyncToken,
zones]` — no `syncToken` at all.
- Round-tripping the same baseline token: sending `{"syncToken": …}` (what
MistKit sent) returned all 40 zones again — the key is silently ignored and
page one replays. Sending `{"metaSyncToken": …}` returned 0 zones — honored
and correctly advanced.
So `fetchZoneChanges` / `fetchAllZoneChanges` pagination has never worked. This
supersedes the description-only wording fix in the previous commit, which
assumed the mismatch was documentation rather than behavior.
Renames the wire key for `zones/changes` **only** — the request body property
and `ZoneChangesResponse` — and regenerates. `changes/database`, `changes/zone`
and `records/changes` legitimately use `syncToken` and are untouched.
Every Swift-facing name is deliberately unchanged: `ZoneChangesResult.syncToken`
and its `init(syncToken:)` label, and the `fetchZoneChanges(syncToken:)` /
`fetchAllZoneChanges(syncToken:)` argument labels. `MistKitOpenAPI` is an
`internal import`, so a wire-key rename is not source-breaking for consumers;
only the mapping in `ZoneChangesResult.init(from:)` and the request
construction in `CloudKitService+ZoneOperations.swift` change.
Adds `CloudKitServiceTests.FetchZoneChanges+WireFormat.swift`, which pins that
MistKit sends `metaSyncToken` and never `syncToken`, reads `metaSyncToken` in
preference to a decoy `syncToken`, and feeds the previous page's token back
under the honored key. Existing `zones/changes` fixtures were emitting the
wrong key and are updated.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xs1c8vvxjCxqZiStcmuPS2
* Add tests for [RecordResult].records and .failures accessors
Covers the retro-fit Array+RecordResult helpers so codecov patch
coverage meets the project threshold on #443.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Collapse CI-only PRs, CodeFactor churn, subrepo push/pull bookmarks,
agent-memory notes, and other non-issue work into one commit so the
branch log is issue-linked PRs plus this residual.
Co-authored-by: Cursor <cursoragent@cursor.com>
@leogdion
leogdion merged commit 0375d09 into mainAug 29, 2026
91 of 93 checks passed
leogdion added a commit that referenced this pull request Aug 29, 2026
Add the beta.4 section that should have landed with #439, including
issue-linked PRs and the c5a4cd0 housekeeping commit (CI pins,
CodeFactor removal, example subrepo updates, sharee auth-tokens,
custom-zone query hardening).
Co-authored-by: Cursor <cursoragent@cursor.com>
@leogdion
leogdion deleted the v1.0.0-beta.4 branch August 30, 2026 00:16
Sign up for freeto 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.

1 participant

@leogdion