Repository navigation
docs: prepare iOS release records and fail-closed candidate checks - #56
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4a20db9c7e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 402d977731
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 201edea263
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0f39def7ac
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Prepare the repository-owned release records from #47 without pretending the iOS app is release-ready. Add a mobile-only changelog, an App Store tracker with owners and manual approval points, editable English listing/review/release-note drafts, a screenshot manifest and a 1.0.0/build-1 candidate template.
Acceptance criteria
Definition of done
This is partial preparation for #47. Its dependency #40 and the actual accepted native version/build/source mapping are not complete, so this PR Leaves issue #47 open. The templates deliberately retain null fields and draft warnings. No App Store metadata sync, upload, submission, public website or legal declaration occurs.
Validation
Head
ffd98b648249447275ee96385ff49eee659e6ad9.node --test scripts/ios-release/*.test.mjs: thirteen tests pass.node scripts/ios-release/check.mjs: structural draft check passes and reportsconsistent: falsewith the actual release blockers.node scripts/ios-release/check.mjs --release: exits 1 for the incomplete proposal, as required.bun run lint: pass.Risks and deferred work
The checker validates consistency, not signatures, genuine human approval or actual device behavior. Build-number monotonicity must also be checked against App Store Connect and earlier archives before signing. The final record belongs beside the archive, outside the source commit, to avoid a self-referential commit hash. Dynamic Expo config will require the checker to consume resolved config if introduced. All native release and owner approval gates remain open.
Summary by cubic
Tracks iOS 1.0.0 release preparation as source-controlled records so the repo can capture drafts, evidence, and candidates without pretending the app is release-ready.
release/candidate.jsonas unapproved drafts; no shipped version, date, or build is claimed.scripts/ios-release/check.mjswith tests: draft mode reports blockers and--releaseexits 1 on any inconsistency, but never uploads, signs, or approves anything.pngjsto 7.0.0 for PNG decoding.Leaves issue #47 open;
ios/v1.0.0mapping awaits #40 and an accepted native build, so the final tag and record stay outside the source commit.Written for commit ffd98b6. Summary will update on new commits.
Review fixes: source copy must exist in HEAD and match normalized text; every copy role needs an approved hash; every PNG capture needs a matching source/device/locale/appearance/dimension/hash receipt. The accepted screenshot manifest is an external hash-bound artifact to avoid a self-referential source commit. Missing/draft/stale records fail closed. Release tooling moved to scripts/ios-release alongside repository tooling, rather than being misclassified as untested mobile runtime code. The production-risk gate is unchanged; full local quality qualification passes.
PNG receipts are now decoded with pinned pngjs 7.0.0 and CRC validation, with bounded memory allocation. Matching hashes cannot authorize truncated or corrupt images. Local release-tooling tests and dependency audit pass.