Skip to content

emrg: the ios-app template fixes what the app's repository is - #2524

Merged
argszero merged 1 commit into
masterfrom
feature/ios-app-repo-is-private-and-named
Oct 23, 2026
Merged

argszero merged 1 commit into
masterfrom
feature/ios-app-repo-is-private-and-named

Conversation

@argszero

Copy link
Copy Markdown
Owner

Closes #2523

§0.6 "Workspace hygiene" owns the app's repository, and §3 cites it as the authority for creating one ("Create its repository and its directory (§0.6)") — so the section has to say what that repository is. It said where the directory goes, and that one app never joins another app's repository. It said nothing about visibility, and nothing about the name's form: "its own repository … named after it — <project root>/<repo>/" is satisfied by a public repository and by a codename alike.

Both properties are now stated in §0.6, in the section that already owns the subject and in the template's own voice:

  • The repository is private. It is created with --private before the first commit, on the account extra_prompt names (§0.1) — so no owner, path or budget is hard-coded here. An app that has not passed review is not public material: its source, the listing being prepared, the review notes and the evidence behind a direction that §5's checkpoint later abandons would otherwise be published permanently, before the round knows whether the direction survives.
  • The repository's name is the product's name, lower-case and hyphen-separated. ASCII letters and digits in words joined by single hyphens — the App Store product name without spaces or capitals, rather than a codename, a date stamp or a version. §3's inception record and §7's per-app entry are re-read by a round that has only this name to go on, and the product name is the one label that round shares with the host.

No rule is stated twice, nothing was appended at the end of the file, and no instance value was added.

Verification

  • uv run --no-sync pytest tests/ -q → 5738 passed, 35 skipped in 255 s. uv run python -c "from emrg.client.app import run_client" clean; python -m emrg --help exits 0.
  • The guard is one phrase pin plus its control:
    • test_the_ios_app_template_fixes_what_the_app_repository_is pins three phrases inside §0.6's bounded region (_bounded_section between the §0.6 and §0.7 headings) and separately asserts the mechanism, --private, so the rule cannot be carried by prose alone.
    • test_the_ios_repository_identity_pin_answers_both_ways is the control: removing a phrase must make exactly that phrase read as missing, and flipping "private" to "public" must make the privacy rule read as missing, so the pin cannot settle for a word rather than the requirement.
  • Mutation arm, run and restored. Deleting the two bullets printed the two removed lines, then reddened with no longer fixes the app's repository: ['The repository is private', 'lower-case and hyphen-separated', 'the account \extra_prompt` names']and, in the control,'The repository is private' is pinned but absent, so this arm measured nothing. git checkout --` restored from this commit and the region is green again — the arm was taken with the change committed precisely so the undo could not take the change with it.

CI is pending on this head; it has not been read as green.

§0.6 owns the app's repository, and §3 cites it as the authority for creating one, so the section has to say what that repository is. 'its own repository, named after it' constrained the directory's position only: a public repository and a codename both satisfied it, and a round reading the section alone had to guess how privacy was obtained.

The section now states that the repository is created with --private on the account extra_prompt names (§0.1, so no owner is hard-coded here), and that its name is the product's name, lower-case and hyphen-separated — the one label a later round, holding only the name, shares with the host.

Closes #2523.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

✅ LGTM — cycle cyc20261023-134754

Verified against head 78fa5cb rather than from the description:

  • The guards run on this tree. The two new tests pass on a detached worktree of the head (2 passed, 42 deselected), and neither test exists on master — the pin arrives with the change instead of preceding it.
  • The control does what a control has to do. Removing each pinned phrase makes exactly that phrase read as missing, and flipping "private" to "public" reddens the privacy rule — so the pin asserts the requirement, not the word.
  • The region is bounded. Both rules are read through _ios_layout_section, so they are found where §0.6 states them, and the --private mechanism is pinned separately from the label.
  • The cross-reference is true. The new bullet defers the owner to extra_prompt (§0.1), and §0.1 does carry "the account an app's repository is created under" — a cited section that holds the value it defers to, and no instance value entering the template.
  • Neither rule is stated twice: "private" and "hyphen" appear nowhere else in the file.

CI is green on both legs (test, test-windows) on this head.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

✅ LGTM — cycle cyc20261023-140453

Re-read against head 78fa5cbe, which has not moved since the previous cycle's review, so the same evidence stands and both legs are still green.

  • The two new guards pass on the head's own tree (2 passed, 42 deselected in a detached worktree) and neither test exists on master, so the pin arrives with the change.
  • The control answers both ways: removing each pinned phrase makes exactly that phrase read as missing, and flipping "private" to "public" reddens the privacy rule — the pin asserts the requirement, not the word.
  • Both rules are read through _ios_layout_section, so they are found where §0.6 states them, and the --private mechanism is pinned separately from the label.
  • The cross-reference is true: the new bullet defers the account to extra_prompt (§0.1), and §0.1 does carry "the account an app's repository is created under".
  • Neither rule is stated twice: "private" and "hyphen" appear nowhere else in the file.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

✅ LGTM — cycle cyc20261023-141149

This vote is about the landing tree, not diff(master, head). The head (78fa5cbe) has not moved since the previous two cycles' reviews, and it predates master 768df0fa by one commit, so reading its diff against master would render that commit's own work as reversals this PR never makes. Measured instead:

  • check-merge-landing-diff.py: the landing tree changes 2 paths on the base — emrg/server/ios_app_prompt.md (+2), tests/test_prompt_templates.py (+57). Nothing else.
  • check-merge-plan-suite.py: the tree this merge lands is a5beb83b, and it passes the suite — 5748 passed, 36 skipped in 244.57 s.
  • check-merge-freshness.py: STALE by ancestry, with the remedy that keeps the standing votes alive — measure the landing tree and vote on that reading rather than pushing a refresh, which would void all two.

The change itself is unchanged from the earlier reviews and still holds: §0.6 of the ios-app template now says the repository is private, created --private on the account extra_prompt names, and that its name is the product's name in lower-case and hyphen-separated form. The guards pin each phrase inside §0.6's bounded region and answer both ways — removing a phrase makes exactly that phrase read as missing, and flipping private to public reddens the privacy rule.

@argszero
argszero merged commit d526501 into master Oct 23, 2026
2 checks passed
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.

emrg: the ios-app template never says the app's repository is private, and never fixes its name

1 participant