Skip to content

docs(tooling): align docs with repository simplification#477

Merged
tataihono merged 36 commits intomainfrom
chore/476-repo-docs-simplification
Mar 16, 2026
Merged

docs(tooling): align docs with repository simplification#477
tataihono merged 36 commits intomainfrom
chore/476-repo-docs-simplification

Conversation

@tataihono
Copy link
Copy Markdown
Contributor

@tataihono tataihono commented Mar 15, 2026

Summary

Align repository documentation with the current simplification work by removing references to deleted contexts (apps/ai-orchestrator, packages/ai-config, packages/content-models) and updating mobile docs to the new apps/mobile location.

Resolves #476

Contracts Changed

  • yes
  • no

Regeneration Required

  • yes
  • no

Validation

  • Contracts validated
  • Generated code verified (no manual edits)
  • Tests and build passed

Made with Cursor

Summary by CodeRabbit

  • New Features
    • Added a new mobile app project with setup scripts and example environment template.
  • Documentation
    • Updated workspace docs, READMEs, and contribution guidance to reflect re-scoped project structure and streamlined lint/dev commands.
    • Added detailed mobile setup and run instructions.
  • Chores
    • Updated CI/workflow behavior and consolidated ownership mappings to align with the new scoped structure.

Sync docs with current repo structure and moved mobile app path.

Made-with: Cursor
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 15, 2026

Important

Review skipped

Too many files!

This PR contains 173 files, which is 23 over the limit of 150.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e9499681-d7f0-4f59-bafa-e60b67f82e21

📥 Commits

Reviewing files that changed from the base of the PR and between 74960be and 6e82cb4.

⛔ Files ignored due to path filters (59)
  • apps/mobile/assets/adaptive-icon.png is excluded by !**/*.png
  • apps/mobile/assets/favicon.png is excluded by !**/*.png
  • apps/mobile/assets/icon.png is excluded by !**/*.png
  • apps/mobile/assets/splash-icon.png is excluded by !**/*.png
  • mobile/android/gradle/wrapper/gradle-wrapper.jar is excluded by !**/*.jar
  • mobile/ios/Sources/ForgeMobile/Generated/ForgeSchema.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/BibleQuotesCarouselFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/CardFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/CtaFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/EasterDatesFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/MediaCollectionFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/RelatedQuestionsFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/TextFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/VideoHeroFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Fragments/VideoSectionFields.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Operations/Queries/GetWatchExperienceQuery.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/CustomScalars/DateTime.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/CustomScalars/I18NLocaleCode.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/CustomScalars/ID.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/CustomScalars/JSON.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Enums/ENUM_COMPONENTSECTIONSCARD_VARIANT.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Enums/ENUM_COMPONENTSECTIONSCTA_VARIANT.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Enums/ENUM_COMPONENTSECTIONSMEDIACOLLECTION_VARIANT.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Enums/ENUM_COMPONENTSECTIONSSECTION_BACKGROUNDCOLOR.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Enums/ENUM_COMPONENTSECTIONSTEXT_HEADINGLEVEL.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Enums/ENUM_COMPONENTSECTIONSTEXT_VARIANT.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/InputObjects/BooleanFilterInput.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/InputObjects/DateTimeFilterInput.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/InputObjects/ExperienceFiltersInput.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/InputObjects/IDFilterInput.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/InputObjects/StringFilterInput.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsBibleQuoteItem.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsBibleQuotesCarousel.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsCard.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsContainer.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsContainerSlot.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsCta.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsEasterDates.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsInfoBlocks.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsMediaCollection.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsMediaCollectionItem.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsPromoBanner.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsRelatedQuestionItem.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsRelatedQuestions.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsSection.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsText.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsVideo.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/ComponentSectionsVideoHero.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/Error.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/Experience.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/Query.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/UploadFile.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Objects/Video.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/SchemaConfiguration.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/SchemaMetadata.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Unions/ContainerSlotContentDynamicZone.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Unions/ExperienceBlocksDynamicZone.graphql.swift is excluded by !**/generated/**
  • mobile/ios/Sources/ForgeMobile/Generated/Schema/Unions/SectionContentDynamicZone.graphql.swift is excluded by !**/generated/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (173)
  • .claude/commands/work-issue.md
  • .cursor/rules/bounded-context-folder-guard.mdc
  • .cursor/rules/cross-platform-demo.mdc
  • .cursor/rules/gh-workflow.mdc
  • .cursor/skills/forge-workflow/SKILL.md
  • .github/workflows/ci.yml
  • .github/workflows/issue-labels.yml
  • .gitignore
  • .terraform-version
  • AGENTS.md
  • CLAUDE.md
  • apps/ai-orchestrator/AGENTS.md
  • apps/ai-orchestrator/README.md
  • apps/ai-orchestrator/package.json
  • apps/ai-orchestrator/src/policy/guardrails.mjs
  • apps/ai-orchestrator/src/prompts/registry.mjs
  • apps/ai-orchestrator/src/provenance/store.mjs
  • apps/ai-orchestrator/src/providers/anthropic.mjs
  • apps/ai-orchestrator/src/providers/base.mjs
  • apps/ai-orchestrator/src/providers/openai.mjs
  • apps/ai-orchestrator/src/rag/vector-store.mjs
  • apps/ai-orchestrator/src/server.mjs
  • apps/ai-orchestrator/src/strapi/gateway.mjs
  • apps/cms/eslint.config.mjs
  • apps/cms/package.json
  • apps/mobile/.gitignore
  • apps/mobile/App.tsx
  • apps/mobile/README.md
  • apps/mobile/app.json
  • apps/mobile/eslint.config.mjs
  • apps/mobile/index.ts
  • apps/mobile/jest.setup.js
  • apps/mobile/metro.config.js
  • apps/mobile/package.json
  • apps/mobile/src/components/.gitkeep
  • apps/mobile/src/components/sections/BibleQuotesCarouselRenderer.test.tsx
  • apps/mobile/src/components/sections/BibleQuotesCarouselRenderer.tsx
  • apps/mobile/src/components/sections/CTARenderer.test.tsx
  • apps/mobile/src/components/sections/CTARenderer.tsx
  • apps/mobile/src/components/sections/CardRenderer.test.tsx
  • apps/mobile/src/components/sections/CardRenderer.tsx
  • apps/mobile/src/components/sections/ContainerRenderer.test.tsx
  • apps/mobile/src/components/sections/ContainerRenderer.tsx
  • apps/mobile/src/components/sections/EasterDatesRenderer.test.tsx
  • apps/mobile/src/components/sections/EasterDatesRenderer.tsx
  • apps/mobile/src/components/sections/MediaCollectionRenderer.test.tsx
  • apps/mobile/src/components/sections/MediaCollectionRenderer.tsx
  • apps/mobile/src/components/sections/RelatedQuestionsRenderer.test.tsx
  • apps/mobile/src/components/sections/RelatedQuestionsRenderer.tsx
  • apps/mobile/src/components/sections/SectionColorSchemeContext.test.ts
  • apps/mobile/src/components/sections/SectionColorSchemeContext.ts
  • apps/mobile/src/components/sections/SectionDispatcher.test.tsx
  • apps/mobile/src/components/sections/SectionDispatcher.tsx
  • apps/mobile/src/components/sections/SectionNavContext.test.ts
  • apps/mobile/src/components/sections/SectionNavContext.ts
  • apps/mobile/src/components/sections/SectionWrapperRenderer.test.tsx
  • apps/mobile/src/components/sections/SectionWrapperRenderer.tsx
  • apps/mobile/src/components/sections/TextRenderer.test.tsx
  • apps/mobile/src/components/sections/TextRenderer.tsx
  • apps/mobile/src/components/sections/VideoHeroRenderer.test.tsx
  • apps/mobile/src/components/sections/VideoHeroRenderer.tsx
  • apps/mobile/src/components/sections/VideoRenderer.test.tsx
  • apps/mobile/src/components/sections/VideoRenderer.tsx
  • apps/mobile/src/components/sections/index.ts
  • apps/mobile/src/contexts/ScrollOffsetContext.ts
  • apps/mobile/src/features/.gitkeep
  • apps/mobile/src/hooks/useExperience.test.ts
  • apps/mobile/src/hooks/useExperience.ts
  • apps/mobile/src/lib/.gitkeep
  • apps/mobile/src/lib/apolloClient.ts
  • apps/mobile/src/lib/config.ts
  • apps/mobile/src/lib/experienceService.test.ts
  • apps/mobile/src/lib/experienceService.ts
  • apps/mobile/src/lib/graphql/queries.ts
  • apps/mobile/src/lib/navigateLink.test.ts
  • apps/mobile/src/lib/navigateLink.ts
  • apps/mobile/src/lib/sectionMapper.test.ts
  • apps/mobile/src/lib/sectionMapper.ts
  • apps/mobile/src/lib/sectionModels.ts
  • apps/mobile/src/lib/useNavigateLink.ts
  • apps/mobile/src/navigation/RootNavigator.tsx
  • apps/mobile/src/screens/.gitkeep
  • apps/mobile/src/screens/ExperienceScreen.tsx
  • apps/mobile/src/screens/WatchHomeScreen.tsx
  • apps/mobile/tsconfig.json
  • apps/web/eslint.config.mjs
  • apps/web/package.json
  • eslint.config.mjs
  • mobile/AGENTS.md
  • mobile/README.md
  • mobile/android/.editorconfig
  • mobile/android/.gitignore
  • mobile/android/AGENTS.md
  • mobile/android/README.md
  • mobile/android/app/build.gradle.kts
  • mobile/android/app/src/main/AndroidManifest.xml
  • mobile/android/app/src/main/graphql/ExperienceBySlug.graphql
  • mobile/android/app/src/main/graphql/Experiences.graphql
  • mobile/android/app/src/main/kotlin/com/forge/mobile/ContentRepository.kt
  • mobile/android/app/src/main/kotlin/com/forge/mobile/GraphQLContentClient.kt
  • mobile/android/app/src/main/kotlin/com/forge/mobile/MainActivity.kt
  • mobile/android/app/src/main/kotlin/com/forge/mobile/ui/theme/Theme.kt
  • mobile/android/app/src/main/res/values/strings.xml
  • mobile/android/app/src/main/res/values/themes.xml
  • mobile/android/build.gradle.kts
  • mobile/android/gradle.properties
  • mobile/android/gradle/wrapper/gradle-wrapper.properties
  • mobile/android/gradlew
  • mobile/android/local.properties.example
  • mobile/android/package.json
  • mobile/android/settings.gradle.kts
  • mobile/expo/eslint.config.js
  • mobile/expo/tsconfig.json
  • mobile/ios/.gitignore
  • mobile/ios/.swiftlint.yml
  • mobile/ios/AGENTS.md
  • mobile/ios/App/ForgeApp.xcodeproj/project.pbxproj
  • mobile/ios/App/ForgeApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  • mobile/ios/App/ForgeApp/AppContentRepositoryFactory.swift
  • mobile/ios/App/ForgeApp/ForgeApp.swift
  • mobile/ios/App/ForgeApp/Info-Debug.plist
  • mobile/ios/App/ForgeApp/Info-Release.plist
  • mobile/ios/GraphQL/Fragments/SectionFragments.graphql
  • mobile/ios/GraphQL/Operations/GetWatchExperience.graphql
  • mobile/ios/Package.resolved
  • mobile/ios/Package.swift
  • mobile/ios/README.md
  • mobile/ios/Sources/ForgeMobile/Data/ContentRepository.swift
  • mobile/ios/Sources/ForgeMobile/Data/GraphQLContentClient.swift
  • mobile/ios/Sources/ForgeMobile/Data/SectionLeafModels.swift
  • mobile/ios/Sources/ForgeMobile/Data/SectionMappers.swift
  • mobile/ios/Sources/ForgeMobile/Data/SectionModels.swift
  • mobile/ios/Sources/ForgeMobile/Data/SectionStructuralModels.swift
  • mobile/ios/Sources/ForgeMobile/Utilities/EasterDateCalculator.swift
  • mobile/ios/Sources/ForgeMobile/ViewModels/WatchHomeViewModel.swift
  • mobile/ios/Sources/ForgeMobile/Views/BlurHashDecoder.swift
  • mobile/ios/Sources/ForgeMobile/Views/Components/LoopingVideoPlayer.swift
  • mobile/ios/Sources/ForgeMobile/Views/Components/MuteToggleButton.swift
  • mobile/ios/Sources/ForgeMobile/Views/Components/ScrollOffsetObserver.swift
  • mobile/ios/Sources/ForgeMobile/Views/ForgeRootView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/BibleQuotesCarouselView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/CTAView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/CardView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/ContainerView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/EasterDatesView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/ExperienceSectionListView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/ExperienceSectionView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/MediaCollectionItemView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/MediaCollectionView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/RelatedQuestionsView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/SectionContentView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/SectionWrapperView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/TextSectionView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/VideoHeroView.swift
  • mobile/ios/Sources/ForgeMobile/Views/Sections/VideoSectionView.swift
  • mobile/ios/apollo-codegen-configuration.json
  • mobile/ios/package.json
  • package.json
  • packages/ai-config/AGENTS.md
  • packages/ai-config/README.md
  • packages/ai-config/evals/content-quality.v1.json
  • packages/ai-config/package.json
  • packages/ai-config/policies/publish-guard.v1.json
  • packages/ai-config/prompts/content-draft.v1.md
  • packages/content-models/AGENTS.md
  • packages/content-models/README.md
  • packages/content-models/package.json
  • packages/content-models/src/index.ts
  • packages/graphql/AGENTS.md
  • packages/graphql/eslint.config.mjs
  • packages/graphql/package.json
  • pnpm-workspace.yaml
  • turbo.json

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

Repository documentation, CI, ownership, and workspace metadata were updated to remove deprecated contexts (e.g., apps/ai-orchestrator, packages/ai-config, packages/content-models), introduce and document apps/mobile, consolidate mobile-related CI/lint logic, and update CODEOWNERS and top-level package scripts accordingly.

Changes

Cohort / File(s) Summary
Top-level docs & scope
AGENTS.md, CLAUDE.md, README.md, CONTRIBUTING.md, SECURITY.md
Removed references to deprecated contexts, replaced ai-orchestrator with apps/mobile, simplified lint docs and scope descriptions.
Apps documentation
apps/AGENTS.md, apps/README.md, apps/web/AGENTS.md, apps/web/README.md, apps/mobile/README.md, apps/mobile/.env.example, apps/mobile/package.json
Added full apps/mobile project files (README, env example, package.json); updated apps/ README/AGENTS to remove ai-orchestrator and narrow allowed imports.
Packages documentation
packages/AGENTS.md, packages/README.md
Removed several guidance bullets and references to removed packages (content-models, ai-config); updated package descriptions.
Repo tooling & rules
.cursor/rules/bounded-context-folder-guard.mdc, .cursor/rules/cross-platform-demo.mdc
Adjusted bounded-context mappings to point to apps/mobile and removed mappings for ai-orchestrator/ai-config/content-models; updated demo/cross-platform examples to use apps/mobile.
CI & workflows
.github/workflows/ci.yml, .github/workflows/issue-labels.yml
Consolidated mobile detection flags and lint jobs into a single mobile flag/job; updated affected-package logic and removed ai-orchestrator from label scopes.
Ownership & manifests
CODEOWNERS, package.json
Updated CODEOWNERS to consolidate owners under @JesusFilm/engineering/forge and add /apps/mobile/; added and reworked top-level npm scripts to include mobile-specific dev, lint, test, and build scripts.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes significant functional changes beyond documentation alignment, including package.json script additions/removals, CI workflow restructuring, and executable configuration updates unrelated to documentation remediation. Separate functional changes (package.json scripts, CI workflows, .env.example, mobile package.json) into a distinct PR focused on tooling implementation.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'docs(tooling): align docs with repository simplification' accurately describes the primary change—updating documentation to reflect repository structural changes after removing obsolete contexts.
Linked Issues check ✅ Passed The PR addresses all acceptance criteria from #476: removes references to ai-orchestrator, ai-config, and content-models across documentation; updates CODEOWNERS mappings to reflect current ownership; and maintains workflow guidance accuracy.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/476-repo-docs-simplification
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@railway-app railway-app Bot temporarily deployed to forge / forge-pr-477 March 15, 2026 23:55 Destroyed
@railway-app
Copy link
Copy Markdown

railway-app Bot commented Mar 15, 2026

🚅 Deployed to the forge-pr-477 environment in forge

Service Status Web Updated (UTC)
@forge/web ✅ Success (View Logs) Web Mar 15, 2026 at 11:58 pm
@forge/cms ✅ Success (View Logs) Web Mar 15, 2026 at 11:57 pm

Update docs and ownership paths to match moving Expo from mobile/expo to apps/mobile.

Made-with: Cursor
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
apps/mobile/README.md (1)

85-85: Fix awkward phrasing about generated files.

The phrase "generated files under packages/graphql/src/graphql-env.d.ts" is misleading since graphql-env.d.ts is a file, not a directory.

📝 Suggested rewording
-- **Codegen:** Types and operations come from the shared package `@forge/graphql` (schema: `apps/cms/schema.graphql`). When the Strapi schema changes, run from the **repo root**: `pnpm run codegen`. That regenerates `packages/graphql`; do not hand-edit generated files under `packages/graphql/src/graphql-env.d.ts`.
+- **Codegen:** Types and operations come from the shared package `@forge/graphql` (schema: `apps/cms/schema.graphql`). When the Strapi schema changes, run from the **repo root**: `pnpm run codegen`. That regenerates `packages/graphql`; do not hand-edit the generated file `packages/graphql/src/graphql-env.d.ts`.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/mobile/README.md` at line 85, The README line misleadingly refers to
"generated files under `packages/graphql/src/graphql-env.d.ts`" even though
`graphql-env.d.ts` is a single file; update the sentence to clearly state that
`pnpm run codegen` regenerates the shared package `packages/graphql` and that
the generated file `packages/graphql/src/graphql-env.d.ts` (not a directory)
must not be hand-edited—keep the instruction tied to the command `pnpm run
codegen` and the package `@forge/graphql`/schema path so maintainers know what
to regenerate and which specific generated file to avoid editing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/AGENTS.md`:
- Line 16: The removal of the `apps/ai-orchestrator` entry from the
apps/AGENTS.md doc left ownership out of sync with the repo workspaces; restore
a clear, doc-safe ownership entry for `apps/ai-orchestrator` (either re-add the
original bullet or replace it with a short deprecation note like
"apps/ai-orchestrator: deprecated — see current owner or migration plan") so the
document accurately reflects that the workspace still exists and who owns it;
update the single line referencing `apps/ai-orchestrator` to include owner/team
and a brief status to avoid misrouting issues while the orchestrator is being
removed or migrated.

In `@CLAUDE.md`:
- Around line 65-70: The CLAUDE.md scope-to-folder table is incorrect for the
mobile scopes; update the table rows so `mobile-expo` maps to `mobile/expo/` and
add/restore the mobile platform rows `mobile-ios` -> `mobile/ios/` and
`mobile-android` -> `mobile/android/`, while keeping `web` -> `apps/web/`, `cms`
-> `apps/cms/`, and `graphql` -> `packages/graphql/`; edit the table in
CLAUDE.md (the block that currently lists `Scope | Allowed folders`) to replace
the `mobile-expo` entry and add the two mobile entries exactly as described so
the documented mappings match the actual codebase layout.

---

Nitpick comments:
In `@apps/mobile/README.md`:
- Line 85: The README line misleadingly refers to "generated files under
`packages/graphql/src/graphql-env.d.ts`" even though `graphql-env.d.ts` is a
single file; update the sentence to clearly state that `pnpm run codegen`
regenerates the shared package `packages/graphql` and that the generated file
`packages/graphql/src/graphql-env.d.ts` (not a directory) must not be
hand-edited—keep the instruction tied to the command `pnpm run codegen` and the
package `@forge/graphql`/schema path so maintainers know what to regenerate and
which specific generated file to avoid editing.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: dfc4118a-9d97-4533-b732-65bf6558fe33

📥 Commits

Reviewing files that changed from the base of the PR and between 83649c7 and cf496b0.

📒 Files selected for processing (12)
  • AGENTS.md
  • CLAUDE.md
  • CONTRIBUTING.md
  • README.md
  • SECURITY.md
  • apps/AGENTS.md
  • apps/README.md
  • apps/mobile/README.md
  • apps/web/AGENTS.md
  • apps/web/README.md
  • packages/AGENTS.md
  • packages/README.md
💤 Files with no reviewable changes (1)
  • packages/AGENTS.md

Comment thread apps/AGENTS.md
Comment thread CLAUDE.md Outdated
Collapse mobile linting to one Expo job and remove legacy iOS/Android lint paths.

Made-with: Cursor
Drop remaining ai-orchestrator references from scripts, label scopes, and lockfile.

Made-with: Cursor
Standardize script names and add root shortcuts for mobile lint/test/typecheck/build.

Made-with: Cursor
Rename mobile package id and update scripts, CI filters, docs, and lockfile references.

Made-with: Cursor
Detect mobile/web/cms/graphql in affected and gate generated-code checks to cms/graphql changes.

Made-with: Cursor
Apply cms/graphql affected condition on generated-code job instead of step-level gating.

Made-with: Cursor
Use affected matrix jobs so lint/test/build run per project in parallel.

Made-with: Cursor
Run affected lint/test/build directly from affected outputs without waiting on generated-code.

Made-with: Cursor
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
package.json (1)

1-42: ⚠️ Potential issue | 🟠 Major

Lockfile drift is currently blocking CI.

pnpm install --frozen-lockfile fails because pnpm-lock.yaml is out of sync with manifests (express: ^5.2.1). Please regenerate and commit the lockfile state for this branch before merge.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@package.json` around lines 1 - 42, The lockfile drift means pnpm-lock.yaml is
out of date with the manifests; using the packageManager entry ("pnpm@9.12.3")
run a fresh installation to regenerate the lockfile (e.g., pnpm install using
the same pnpm version), verify the manifest dependency mismatch (express ^5.2.1)
is resolved, commit the updated pnpm-lock.yaml, and re-run pnpm install
--frozen-lockfile to confirm CI will pass.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.cursor/rules/bounded-context-folder-guard.mdc:
- Around line 24-25: Clarify precedence between Rule 2 and Rule 3 by updating
the policy text so that Rule 3 (shared packages) is explicitly allowed to
override Rule 2 for the packages/graphql/ path: state that Rule 2 forbids
cross-context changes by default but Rule 3 permits changes to packages/graphql/
when the change is an explicit contract/schema modification (or regenerated
code), and add a short sentence that Rule 3 takes precedence for
packages/graphql/ to make enforcement deterministic.

In @.cursor/rules/cross-platform-demo.mdc:
- Line 32: Replace the placeholder JAVA_HOME="..." in the runnable command so it
doesn't override a valid environment variable: either remove the inline
JAVA_HOME assignment so the command uses the existing JAVA_HOME set earlier
(i.e., keep "cd apps/mobile && npx expo run:android"), or replace "..." with a
clear instruction to set JAVA_HOME to a real JDK path before running the
command; update the line containing the command string `cd apps/mobile &&
JAVA_HOME="..." npx expo run:android` accordingly.

In @.github/workflows/ci.yml:
- Around line 59-67: The CI step currently masks failures by appending "|| true"
and "|| echo """, causing TURBO_OUT/AFFECTED to silently default and skip
downstream jobs; update the Detect affected packages step to fail fast by
removing the "|| true" after the pnpm turbo run and removing the fallback "||
echo """, enable strict shell behavior (e.g., set -o pipefail -e) so any failure
in computing TURBO_OUT or parsing with jq surfaces, and add explicit error
handling/logging that prints TURBO_OUT and jq errors before exiting non-zero;
refer to the variables/commands TURBO_OUT, AFFECTED, the pnpm turbo run
invocation, and the jq parsing pipeline when making these changes.

In @.github/workflows/issue-labels.yml:
- Line 27: Update the validScopes array to match the current scope taxonomy: in
every place where the constant validScopes is defined (the arrays that currently
include 'contracts', 'mobile-ios', 'mobile-android'), replace those entries with
the new scopes 'graphql' and 'mobile-expo' so titles using the current scopes
are recognized; ensure both occurrences of the validScopes definition are
changed to the same updated list.

In `@CODEOWNERS`:
- Around line 5-8: Add explicit CODEOWNERS entries for the native mobile
subtrees so reviews for platform-specific changes route to the mobile team;
update the file to add lines for /apps/mobile/ios/ and /apps/mobile/android/
(same owner as /apps/mobile/ — `@JesusFilm/engineering/forge`) so those
directories don't fall back to the global owner and get proper context-specific
review routing.

---

Outside diff comments:
In `@package.json`:
- Around line 1-42: The lockfile drift means pnpm-lock.yaml is out of date with
the manifests; using the packageManager entry ("pnpm@9.12.3") run a fresh
installation to regenerate the lockfile (e.g., pnpm install using the same pnpm
version), verify the manifest dependency mismatch (express ^5.2.1) is resolved,
commit the updated pnpm-lock.yaml, and re-run pnpm install --frozen-lockfile to
confirm CI will pass.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e082d188-abca-4394-90d3-4c4fc25158b9

📥 Commits

Reviewing files that changed from the base of the PR and between cf496b0 and 74960be.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (9)
  • .cursor/rules/bounded-context-folder-guard.mdc
  • .cursor/rules/cross-platform-demo.mdc
  • .github/workflows/ci.yml
  • .github/workflows/issue-labels.yml
  • CODEOWNERS
  • apps/mobile/.env.example
  • apps/mobile/README.md
  • apps/mobile/package.json
  • package.json
✅ Files skipped from review due to trivial changes (1)
  • apps/mobile/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/mobile/README.md

Comment thread .cursor/rules/bounded-context-folder-guard.mdc Outdated
Comment thread .cursor/rules/cross-platform-demo.mdc Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/issue-labels.yml Outdated
Comment thread CODEOWNERS
Switch affected output to JSON services array and drive matrix jobs from fromJson().

Made-with: Cursor
Use turbo ls JSON output with full @forge/* services so new services work without CI edits.

Made-with: Cursor
Print resolved affected services JSON in the affected job for easier CI debugging.

Made-with: Cursor
Commit remaining repo simplification moves and deletions across apps, mobile, and packages.

Made-with: Cursor
Commit post-hook workflow formatting changes.

Made-with: Cursor
State Rule 3 precedence for packages/graphql to keep enforcement deterministic.

Made-with: Cursor
Use existing JAVA_HOME setup and remove placeholder override from demo command.

Made-with: Cursor
Update issue and PR label scope allowlist to current contexts.

Made-with: Cursor
Update issue and PR label valid scopes to use mobile instead of mobile-expo.

Made-with: Cursor
Align remaining scope references in Claude and Cursor guidance to mobile.

Made-with: Cursor
Make graphql depend on cms via workspace protocol and ensure mobile/web both depend on graphql.

Made-with: Cursor
Run generated-code job only when @forge/graphql is in affected services.

Made-with: Cursor
Update CI and docs to use explicit turbo commands instead of removed root scripts.

Made-with: Cursor
Commit pending CI and root script updates.

Made-with: Cursor
Handle turbo ls JSON packages.items shape so affected services are detected reliably.

Made-with: Cursor
Pass max-warnings directly to pnpm run to avoid eslint interpreting it as a file pattern.

Made-with: Cursor
Exclude apps/cms/.strapi and apps/cms/types/generated from ESLint checks.

Made-with: Cursor
Split lint config by project and inherit from top-level shared base.

Made-with: Cursor
@railway-app railway-app Bot temporarily deployed to forge / forge-pr-477 March 16, 2026 01:40 Destroyed
Drop no-error-on-unmatched-pattern from cms lint script.

Made-with: Cursor
@railway-app railway-app Bot temporarily deployed to forge / forge-pr-477 March 16, 2026 01:41 Destroyed
Add typecheck scripts for web, cms, and graphql plus root/turbo support.

Made-with: Cursor
@railway-app railway-app Bot temporarily deployed to forge / forge-pr-477 March 16, 2026 01:47 Destroyed
Move graphql->cms link to devDependencies and ignore tsconfig.tsbuildinfo artifacts.

Made-with: Cursor
Remove irrelevant TS suppression comments.
Fix remaining type errors in tests, section mapping, and link navigation.

Made-with: Cursor
Limit mobile type discovery to its local @types packages.
Avoid workspace-level React type collisions in CI typecheck.

Made-with: Cursor
Map react type resolution to mobile-local @types/react files.
Prevents pnpm virtual-store fallback to React 18 types in forced CI checks.

Made-with: Cursor
Remove unnecessary mobile tsconfig typeRoots override.
Retain only React path mappings needed for stable CI type resolution.

Made-with: Cursor
Map react runtime modules in Jest so mobile can use the same tsconfig
for both runtime tests and TypeScript typecheck.

Made-with: Cursor
@tataihono tataihono merged commit 6966b43 into main Mar 16, 2026
22 checks passed
@tataihono tataihono deleted the chore/476-repo-docs-simplification branch March 16, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs(tooling): align docs with repository simplification

1 participant