Skip to content

v1.0.0 beta.5 - #459

Draft
leogdion wants to merge 14 commits into
mainfrom
v1.0.0-beta.5
Draft

v1.0.0 beta.5#459
leogdion wants to merge 14 commits into
mainfrom
v1.0.0-beta.5

Conversation

@leogdion

@leogdion leogdion commented Sep 1, 2026

Copy link
Copy Markdown
Member

No description provided.

leogdion and others added 10 commits August 31, 2026 09:37
Decode ownerRecordName, zoneType, and deleted on zone responses so change feeds surface tombstones and shared-zone owners round-trip correctly.

Co-authored-by: Cursor <cursoragent@cursor.com>
Exercise ownerRecordName, zoneType, and deleted tombstones live via listZones, lookupZones, and fetchDatabaseChanges on the private database pipeline.

Co-authored-by: Cursor <cursoragent@cursor.com>
After re-syncing from upstream mistkit branches, reapply the monorepo
overlay so Examples/* build against the parent MistKit checkout.

Co-authored-by: Cursor <cursoragent@cursor.com>
subrepo:
  subdir:   "Examples/BushelCloud"
  merged:   "cf22ab7"
upstream:
  origin:   "git@github.com:brightdigit/BushelCloud.git"
  branch:   "mistkit"
  commit:   "cf22ab7"
git-subrepo:
  version:  "0.4.9"
  origin:   "https://github.com/Homebrew/brew"
  commit:   "4710c526b3"
subrepo:
  subdir:   "Examples/CelestraCloud"
  merged:   "11609b9"
upstream:
  origin:   "git@github.com:brightdigit/CelestraCloud.git"
  branch:   "mistkit"
  commit:   "11609b9"
git-subrepo:
  version:  "0.4.9"
  origin:   "https://github.com/Homebrew/brew"
  commit:   "4710c526b3"
Replace String? with DEFAULT_ZONE/REGULAR_CUSTOM_ZONE cases so unrecognized wire values surface as ConversionError during zone lifting.

Co-authored-by: Cursor <cursoragent@cursor.com>
Model zone payload fields: ownerRecordName, zoneType, deleted (#444)
…nfig keys (#455)

Extracts the CloudKit credential configuration glue shared by MistKit's server-side applications into its own package, and converges BushelCloud, CelestraCloud and MistDemo on typed configuration keys.

## MistKitConfiguration

Lives at `Packages/MistKitConfiguration` as a subrepo of brightdigit/MistKitConfiguration, published as `1.0.0-beta.1`. Three layers, separated so that *reading* configuration cannot fail: raw `CloudKitConfiguration` → `validated()` → `ValidatedCloudKitConfiguration`, whose throwing initializer runs the key-ID and PEM validators. There is no way to hold the validated type with credentials that skipped format validation, which is what lets the examples delete their hand-rolled checks.

## Examples

All three rewired onto the package; local validators, `ConfigValueReading` and duplicated CloudKit config types removed (~180 lines that were character-for-character identical between BushelCloud and CelestraCloud). App-specific error mapping stays with each app, since each already owns its own wording and key names.

## Dependencies

ConfigKeyKit is pinned to `1.0.0-beta.3`, which carries ConfigKeyKit#8 (boolean resolution via a bool primitive) — the fix the branch pin was tracking.

## Note

`Packages/MistKitConfiguration` is scaffolding for the beta.5 line. It must be removed in the `v1.0.0-beta.5` → `main` release PR: shipping it would be circular, since its `.gitrepo` tracks a branch pinning that same unreleased release. Downstream consumers use the published tag instead.

codecov/patch and codecov/project fail as expected — this PR deletes validator suites whose tests moved to the MistKitConfiguration repo.
Thread zone selection through web CRUD/assets, library uploadAssets, and a live sharee round-trip phase so shared-database writes carry ownerRecordName correctly.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 95.83333% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.40%. Comparing base (0375d09) to head (6a86bf1).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...hentication/AdaptiveTokenManager+Transitions.swift 80.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #459      +/-   ##
==========================================
+ Coverage   81.74%   86.40%   +4.65%     
==========================================
  Files         196      198       +2     
  Lines        4755     4810      +55     
==========================================
+ Hits         3887     4156     +269     
+ Misses        868      654     -214     
Flag Coverage Δ
mistdemo-spm-macos 11.16% <5.55%> (-0.07%) ⬇️
mistdemo-swift-6.2-jammy ?
mistdemo-swift-6.2-noble ?
mistdemo-swift-6.3-jammy ?
mistdemo-swift-6.3-noble ?
mistdemo-swift-6.4-jammy 11.16% <5.55%> (-0.07%) ⬇️
mistdemo-swift-6.4-noble 11.29% <5.55%> (+0.05%) ⬆️
spm 85.09% <95.83%> (+4.73%) ⬆️
swift-6.1-jammy 85.15% <95.83%> (+4.84%) ⬆️
swift-6.1-noble 84.96% <95.83%> (+4.44%) ⬆️
swift-6.2-jammy 85.11% <95.83%> (+4.48%) ⬆️
swift-6.2-noble 84.98% <95.83%> (+4.54%) ⬆️
swift-6.3-jammy 84.96% <95.83%> (+4.42%) ⬆️
swift-6.3-noble 84.86% <95.83%> (+4.46%) ⬆️
swift-6.4-jammy 85.15% <95.83%> (+4.71%) ⬆️
swift-6.4-noble 85.06% <95.83%> (+4.52%) ⬆️

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.

@claude

claude Bot commented Sep 2, 2026

Copy link
Copy Markdown

Review: v1.0.0 beta.5 release PR

This is a large aggregate PR (236 files, +8691/-2546), but the actual Sources/MistKit/Sources/MistKitOpenAPI surface touched is small (zone wire-key rename, new ZoneType, a deleted tombstone flag, and zoneID: threading into asset/write ops). The bulk of the diff is a new shared Packages/MistKitConfiguration subrepo consolidating config/validation code out of the three Examples, plus docs/CI/tooling. Reviewed with three focused passes (core library, Examples+CI, new config package). Summary below, most important first.

🔴 Release-process: ReleaseNotes.md has no ## 1.0.0-beta.5 section

ReleaseNotes.md at the tip of this branch still tops out at ## 1.0.0-beta.4 — this PR adds no beta.5 entry. Per this repo's own CLAUDE.md/AGENTS.md Release Process guardrail #1: "Never tag without notes... Both 1.0.0-beta.3 and 1.0.0-beta.4 were tagged with no ReleaseNotes.md section of their own." Shipping a third release without notes repeats the exact mistake that guardrail was written to prevent. Worth running ./Scripts/release.sh verify-tag <tag> --at HEAD before tagging.

🔴 Regression: CelestraCloud.yml MISTKIT_BRANCH pin flipped to tag form pre-merge

Examples/CelestraCloud/.github/workflows/CelestraCloud.yml:24 changes:

-  MISTKIT_BRANCH: v1.0.0-beta.4
+  MISTKIT_BRANCH: 1.0.0-beta.4

This is backwards per this PR's own new documentation (AGENTS.md's Release Process section, mirroring CLAUDE.md): "before the merge the pin must be the branch, after publishing it must be the tag." setup-mistkit resolves MISTKIT_BRANCH via git ls-remote, which matches tags too — since 1.0.0-beta.4 is already a published tag, CelestraCloud's CI will now silently build against the old, already-released beta.4 code instead of testing this release branch at all. This is the precise failure mode the doc warns about. Recommend reverting to v1.0.0-beta.4 (or bumping to v1.0.0-beta.5) — BushelCloud's equivalent pins (bushel-cloud-build.yml, cloudkit-sync/action.yml) correctly kept the v-prefixed branch form, so CelestraCloud.yml is now the outlier, not the other way around.

🟡 CI failure: "Build static mistdemo"

Root cause: this PR adds .package(path: "../../Packages/MistKitConfiguration") to Examples/MistDemo/Package.swift, and MistKitConfiguration declares swift-tools-version: 6.4. MistDemo.yml/examples.yml were correctly bumped to a 6.4 nightly toolchain, but .github/workflows/MistDemo-Integration.yml (container swift:6.3.2-noble, line ~51/64) was missed — Swift 6.3.2 can't parse a 6.4 manifest, so the static-Linux build job fails immediately. Needs the same toolchain bump as the other two workflows.

🟢 Core library changes — no blocking issues

  • ZoneID gains zoneType: ZoneType? in a synthesized Equatable/Hashable struct — a response-decoded ZoneID will no longer == a hand-constructed one for the same zone. Internal code doesn't rely on ZoneID equality (keys off zoneName strings), but any external consumer diffing ZoneID values across request/response boundaries would be affected. Might be worth a release-notes callout.
  • ZoneInfo.deleted defaults absent→false, which is a different absent-vs-explicit-false philosophy than the neighboring atomic: Bool? (deliberately left un-defaulted per CLAUDE.md). Probably fine (Apple likely never sends deleted: false), but undocumented as a deliberate choice the way atomic is.
  • Minor test gap: the new request-side zoneType serialization has no wire-format pin test (response-side decode is tested), unlike the thorough dedicated tests for the ownerNameownerRecordName rename.
  • Sources/MistKitOpenAPI/Types.swift changes match openapi.yaml 1:1 with no evidence of manual hand-editing. Import ACLs and Sendable compliance look correct throughout.

🟢 New Packages/MistKitConfiguration — solid consolidation

  • No raw secret material ever appears in an error type (PEMValidationFailure/KeyIDValidationFailure are structural enums, no string payloads).
  • secretCommandLineFlags is now derived from each key's isSecret flag rather than a hand-maintained list — closes a real prior redaction-drift risk.
  • Duplicate PEMValidator/KeyIDValidator/CloudKitConfigurationError code fully removed from Examples/** (verified no leftovers); old per-example tests replaced by a single shared suite (603 lines across 7 files) — good coverage for a new package.
  • Wiring is clean: each example depends via .package(path: "../../Packages/MistKitConfiguration") with the documented never-merged-overlay discipline already used for the MistKit line; root Package.swift correctly has no reference (Examples-only tooling).
  • Pre-existing, not-introduced-by-this-PR weakness worth a follow-up issue: PEMValidator matches -----BEGIN... and ...PRIVATE KEY----- as two independent substring checks, so a block like BEGIN CERTIFICATE ... END PRIVATE KEY would incorrectly validate.

Nits

  • New .github/workflows/release.yml has no explicit permissions: block (defaults to repo setting) — cheap least-privilege win since it only needs to read the tag.

Nothing here looks blocking on the library-correctness side, but the ReleaseNotes.md gap and the CelestraCloud.yml pin regression should be fixed before merge/tag — the latter means CelestraCloud's CI currently isn't validating this release at all.

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