Skip to content

docs(docs): bootstrap iOS SDK guides through the docs pipeline#380

Merged
Tim Beyer (TimBeyer) merged 5 commits into
mainfrom
docs/bootstrap-ios-sdk-guides
Jul 20, 2026
Merged

docs(docs): bootstrap iOS SDK guides through the docs pipeline#380
Tim Beyer (TimBeyer) merged 5 commits into
mainfrom
docs/bootstrap-ios-sdk-guides

Conversation

@TimBeyer

Copy link
Copy Markdown
Collaborator

Rebuilds the iOS SwiftUI and UIKit integration guides through the current docs pipeline. They previously predated it — full guides with no knowledge base and no blueprints. This runs the bootstrap path end to end: comprehend source into the KB, author the editorial blueprints, reconcile the guide prose, then the three-role review with fixes funnelled back.

What's here (commit by commit)

  1. feat(docs): bootstrap iOS SDK knowledge base — new native/ios.md, the verified fact base for the beta ContentfulOptimization Swift Package, feeding both guides.
  2. feat(docs): add iOS SwiftUI and UIKit guide blueprints — one per-UI blueprint each (the two guides are two UI-layer integrations of the one SDK).
  3. fix(docs): record iOS preview-panel no-client degraded mode — a fact added from a review escalation so both guides' preview-panel claims are grounded in source.
  4. feat(docs): reconcile iOS SwiftUI and UIKit guides to the pipeline — both guides rewritten to the current archetype + review fixes.
  5. docs(docs): register iOS blueprints and funnel back review rules — authoring index + checklist updates.

Key decisions (native SDK, different ecosystem)

  • Swift pointer grammar. knowledge:check discovers SDK keys from packages/**/package.json + a sibling src/ and resolves #symbol via the TypeScript compiler. The iOS package is a Swift Package (no package.json/src), so there is no ios key and Swift symbols can't be machine-resolved. Swift-only facts use extern: pointers naming the exact file+symbol; behavior that actually runs in the shared JavaScriptCore bridge anchors to the resolvable optimization-js-bridge/core-sdk/api-schemas keys. This is the consciously-accepted native deferral.
  • One SDK → two guides → two blueprints, kept in lockstep by guides:check.
  • Quick-start proof = "init + one accepted screen event", not an entry render: iOS has no managed fetch-by-ID, so an entry-render proof would force app-specific Swift CDA fetch code into the quick start. Entry rendering moves to Core (Milestone 1's second half). This also fixed the old SwiftUI guide's unperformable verify.
  • Replaced the old ## Required setup inventory tables with prose ## Before you start; added the personalization explainer (managed-fetch clause omitted) and two-milestone framing; UIKit's four-feature mega-section split into distinct sections; the SceneDelegate runtime root is now shown as a diff.

Review outcome (three roles, per guide)

  • Source verification: all load-bearing interface/behavior claims CONFIRMED against the Swift types and KB. Fixes applied: OptimizedEntry.onTap receives the baseline entry (not the resolved variant) — corrected the example; one behavioral gap escalated → KB fact added (commit 3).
  • Newcomer review: no surviving blockers. Fixed an untaught page in pre-consent blocked lists, a changes/@Published attribution error, and made verify steps name a searchable log signature and a failure-branch diagnostic.
  • Funnelled back into the authoring checklist: native runtime roots shown as diffs, result-wrapper types glossed with ownership, published-vs-snapshot state attribution, no multi-####-feature mega-section, and verify-step rules (searchable log token, failure diagnostic, honestly-scoped proof adjective).

Validation

  • pnpm knowledge:check ✓ — 881 source pointers across 9 fact files, no ESCALATE markers.
  • pnpm guides:check ✓ — 8 blueprints, 114 planned sections, links and section/category structure valid.
  • Prettier clean on all touched files.

Not done: Swift snippets are verified against the types and the reference implementation for shape, but not compiled/run through Xcode/XCUITest.

🤖 Generated with Claude Code

Tim Beyer (TimBeyer) and others added 5 commits July 20, 2026 13:21
Add native/ios.md, the verified fact base for the beta ContentfulOptimization
Swift Package, feeding both iOS guides. The iOS SDK runs the shared CoreStateful
runtime through a JavaScriptCore bridge, so behavioral facts anchor to the
resolvable optimization-js-bridge/core-sdk/api-schemas keys and concept docs;
Swift-only surface uses extern: pointers naming the exact Swift file+symbol,
since knowledge:check cannot resolve Swift #symbol pointers (no package.json/src).

Passes pnpm knowledge:check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two per-UI blueprints for the one iOS SDK. Both omit the personalization
explainer's managed-fetch clause (iOS has no fetch-by-ID path) and prove
"init + one accepted screen event" rather than an entry render, since an
entry-render proof would force an app-specific Swift CDA fetch into the quick
start. The UIKit blueprint splits the old four-feature tracking section into
distinct sections and shows the SceneDelegate runtime root as a diff.

Passes pnpm guides:check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Review escalation: both iOS guides describe the preview panel's behavior when
mounted without a PreviewContentfulClient, but the KB had no backing fact. Add
the traced behavior (panel opens degraded: empty audience section, no
set-override controls, override summaries fall back to raw ids), grounded in
PreviewPanelContent.swift and the shared computePreviewModel bridge helper.

Passes pnpm knowledge:check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite both iOS integration guides to the current archetype from their new
blueprints and the iOS knowledge base. Both gain the personalization explainer
(managed-fetch clause omitted), two-milestone framing, and a prose "Before you
start" replacing the old setup-inventory table. Quick starts now prove
"init + one accepted screen event" (no app-specific fetch forced inline), with
performable verification. UIKit additionally splits the old four-feature
tracking section into distinct sections and shows the SceneDelegate root as a diff.

Applies the three-role review: fixes the OptimizedEntry onTap baseline-vs-resolved
mislabel, drops the untaught `page` from pre-consent blocked lists, corrects the
`changes`/@published attribution, and makes the verify steps name a searchable
log signature and a failure-branch diagnostic.

Passes pnpm guides:check and knowledge:check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add the two iOS blueprints to the authoring index and note that the native iOS
family is now covered (with the Swift extern:-pointer exception). Fold the
durable rules the iOS review surfaced into the authoring checklist: native
runtime roots (SceneDelegate/AppDelegate) shown as diffs, result-wrapper types
glossed with ownership, published-vs-snapshot state attribution, no
multi-####-feature mega-section, and verify steps that name a searchable log
signature, wire a failure-branch diagnostic, and define the proof's load-bearing
state word without implying server receipt.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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.

Looks like a good direction here 😄

@TimBeyer Tim Beyer (TimBeyer) changed the title docs: bootstrap iOS SDK guides through the docs pipeline docs(docs): bootstrap iOS SDK guides through the docs pipeline Jul 20, 2026
@TimBeyer
Tim Beyer (TimBeyer) merged commit 58d025b into main Jul 20, 2026
37 of 39 checks passed
@TimBeyer
Tim Beyer (TimBeyer) deleted the docs/bootstrap-ios-sdk-guides branch July 20, 2026 14:04
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