Skip to content

docs: prepare iOS release records and fail-closed candidate checks - #56

Merged
HemSoft merged 5 commits into
mainfrom
docs/issue-47-ios-release-records
Sep 27, 2026
Merged

HemSoft merged 5 commits into
mainfrom
docs/issue-47-ios-release-records

Conversation

@HemSoft

@HemSoft HemSoft commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator

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

  • Keep iOS release records separate from the Windows version.
  • Distinguish Unreleased, proposed copy and future shipped entries. No shipped iOS version or date is invented.
  • Map candidate version/build to source, native config, App Store version, archive hash, test notes, screenshots and future tag.
  • Provide an agent-runnable draft check and fail-closed release consistency check, with tests and Linux/Windows CI coverage.
  • Keep owner legal/commercial approvals, signing validation, device qualification and publication outside the script's authority.

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 reports consistent: false with the actual release blockers.
  • node scripts/ios-release/check.mjs --release: exits 1 for the incomplete proposal, as required.
  • Bun 1.4.2 frozen install and bun run lint: pass.
  • CI runs the tests and draft check on Linux and Windows. No runtime UI changes; screenshots do not apply.

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.

  • Adds a mobile-only changelog, App Store tracker, TestFlight notes, editable en-US listing drafts, and a screenshot manifest naming the open release gates.
  • Marks all copy and release/candidate.json as unapproved drafts; no shipped version, date, or build is claimed.
  • Adds scripts/ios-release/check.mjs with tests: draft mode reports blockers and --release exits 1 on any inconsistency, but never uploads, signs, or approves anything.
  • The check selects the listing by its assigned role rather than filename, requires every listing field including primary category, binds approved-copy receipts to LF-normalized source text, and decodes each screenshot's PNG under bounded allocation before accepting its receipt's dimensions and checksum, without escaping its artifact folder.
  • Upgrades pngjs to 7.0.0 for PNG decoding.
  • Runs the checker and tests on Linux and Windows CI.

Leaves issue #47 open; ios/v1.0.0 mapping 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 in cubic

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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-27T20:06:25.374460Z ffd98b6 Manual request
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread apps/mobile/scripts/release-check.mjs Resolved
Comment thread apps/mobile/scripts/release-check.mjs Resolved
Comment thread apps/mobile/scripts/release-check.mjs Resolved
@HemSoft

HemSoft commented Sep 27, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread scripts/ios-release/evidence.mjs Resolved
Comment thread scripts/ios-release/evidence.mjs Resolved
@HemSoft

HemSoft commented Sep 27, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread scripts/ios-release/check.mjs Resolved
Comment thread scripts/ios-release/evidence.mjs Resolved
@HemSoft

HemSoft commented Sep 27, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread scripts/ios-release/evidence.mjs Resolved
@HemSoft

HemSoft commented Sep 27, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Bravo.

Reviewed commit: ffd98b6482

ℹ️ 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".

@HemSoft
HemSoft merged commit 36d567e into main Sep 27, 2026
6 checks passed
@HemSoft
HemSoft deleted the docs/issue-47-ios-release-records branch September 27, 2026 20:07
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.

1 participant