Skip to content

chore: use journeys as prs qa contract - #743

Open
ovitrif wants to merge 7 commits into
masterfrom
chore/742-journeys-qa-contract
Open

ovitrif wants to merge 7 commits into
masterfrom
chore/742-journeys-qa-contract

Conversation

@ovitrif

@ovitrif ovitrif commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Closes #742

Counterpart: synonymdev/bitkit-android#1250

Description

  • Makes #### Journeys the first QA Notes section so that a PR with a user-visible change lists the journeys that prove it, by bare file name with new or updated, and reviewers drive them on a device instead of reading prose.
  • Limits #### Manual Tests to steps that need a capability the journey environment lacks, and adds a ## Capabilities table to journeys/README.md as the authority for what it provides, so a step is manual by evidence, not by category.
  • Shapes #### Automated Checks as a flat list with added, updated, removed, and ran keywords so the same prefix is never repeated.
  • Applies the rules in /pr and states them in AGENTS.md, and lists the xcodebuildmcp CLI under Prerequisites because it is how an agent drives the simulator through journeys.

Out of Scope

  • journeys/: drift tooling, an identifier index, or a CI check; a journey that fails at review is the drift signal.
  • A shared journeys skill giving iOS and Android one driving procedure; each platform names its own driver.
  • Past manual tests from merged PRs: kept as a backlog in chore: keep past manual tests as a journeys backlog #763.

Design

N/A — no UI changes.

Preview

N/A — no user-visible changes.

QA Notes

Journeys

N/A — no user-visible behaviour change.

Manual Tests

N/A

Automated Checks

  • ran a per-file diff of the added lines against the counterpart PR: only platform names, test-file types, the driver, and Capabilities rows differ
  • ran a diff of the ### QA Notes template section against the counterpart: identical apart from the example test-file name
  • ran the review skill's parser tests against the new #### Journeys and #### Automated Checks formats: bare names resolve on the PR head, legacy full paths still parse
  • ran every Capabilities row back to the suite README or preconditions section it cites

@ovitrif ovitrif changed the title chore: make journeys the qa contract for prs chore: use journeys as prs qa contract Sep 11, 2026
@ovitrif
ovitrif marked this pull request as ready for review September 16, 2026 19:21
@greptile-apps

greptile-apps Bot commented Sep 16, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

The PR appears safe to merge, with a non-blocking issue in /pr journey discovery that can generate misleading QA entries.

Findings

  1. P2 Non-journey files get listed

Summary

This PR makes journeys the primary QA contract for user-visible changes and standardizes how PR authors describe journey coverage, exceptional manual testing, and automated checks.

  • Adds the Journeys section and structured QA guidance to the PR template and /pr command.
  • Documents xcodebuildmcp as required tooling for driving journeys.
  • Defines the capabilities available to journey authors and reviewers.
  • One command currently includes non-XML support files in the journey list.

Reviews (2) · Last reviewed commit: "docs: list journey capabilities in readm..."

@ovitrif
ovitrif marked this pull request as draft September 17, 2026 12:33
@ovitrif
ovitrif force-pushed the chore/742-journeys-qa-contract branch from ba2fd76 to 0ab1164 Compare September 17, 2026 14:06
@ovitrif
ovitrif marked this pull request as ready for review September 17, 2026 14:07
Comment thread .agents/commands/pr.md Outdated
@ovitrif ovitrif self-assigned this Sep 17, 2026
@ovitrif ovitrif added this to the 2.6.0 milestone Sep 17, 2026

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

One MEDIUM and one LOW (inline). Both are docs-only, so they don't block. The MEDIUM is shared with the Android twin, synonymdev/bitkit-android#1250.

Checked and clean:

  • The added pr.md and template lines match Android apart from test-file naming and the View/Screen suffix.
  • The AGENTS.md QA-contract bullet matches Android.
  • The "not a QA gate" wording and the #suites anchor are removed with no dangling references.
  • Capability link targets exist.
  • The to.bitkit bundle id in the simctl uninstall row matches pbxproj.
  • The missing UTXO and deep-link-router rows are platform-forced.
  • \.xml$ discovery filter present.

Comment thread .agents/commands/pr.md
- A PR with a user-visible change adds or updates the journey that proves it, and any journey whose route the diff changes; list them all. Reviewers drive the listed journeys on a device.
- `N/A — no user-visible behaviour change.` is the only empty value for `#### Journeys`.
- Leave every checkbox under `#### Journeys` and `#### Manual Tests` unchecked; the reviewer ticks a line after driving it on the PR head.
- When the diff changes user-visible behaviour and no journey covers it, stop and report the flows that need a journey.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A user-visible change that no journey can drive has no valid #### Journeys value.

Line 147 tells /pr to stop when a user-visible change has no covering journey. The line above it makes N/A — no user-visible behaviour change. the only empty value. Line 188's style target lists a BLE pairing step under Manual Tests, and journeys/README.md says BLE/USB are not simulated. So a PR whose only user-visible change is in BLE pairing or the USB permission flow either halts here or gets the false N/A — no user-visible behaviour change. next to a manual test. The template's #### Journeys comment at .github/pull_request_template.md:25 has the same gap.

Fix: allow an explicit value for this case, e.g. N/A — not drivable; see Manual Tests., in both pr.md and the template. Mirror it on the Android twin.

Comment thread journeys/README.md
| Push notifications to a backgrounded or killed app | a real APNs round trip on an attached physical device, never the simulator, read back from Notification Center — [cjit-notifications](cjit-notifications/README.md) |
| The OS notification-permission dialog | the one-shot `UNUserNotificationCenter` alert, reset with `xcrun simctl uninstall <device> to.bitkit` and a rebuild — [notification-permission](notification-permission/README.md) |
| An incoming Payment Request from a linked issuer | the fixture issuer, saved as a contact and linked on receiver path `bitkit/server` — [payment-requests](payment-requests/README.md) |
| A Pubky identity and a two-wallet marketplace purchase | a Bitkit-generated Pubky profile, plus the integration fixture runtime: Pubky testnet, Paykit Server, regtest bitcoind and Fulcrum — [pubky-auth](pubky-auth/README.md), [pubky-marketplace](pubky-marketplace/README.md) |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LOW: the Capabilities table has no row for two linked Bitkit wallets, though journeys/subscriptions/*.xml ships on iOS.

Android has the row ("Two linked Bitkit wallets for a subscription lifecycle"). Here the requirement only appears in prose under Not ported (:160-162). pr.md:148 sends any step needing a capability not in this table to Manual Tests. An iOS subscription PR that follows it literally files the two-wallet steps as manual instead of updating review-and-subscribe.xml, and its QA section diverges from the Android twin's.

Fix: port the Android row, linking subscriptions/ or #not-ported.

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.

chore: use journeys as prs qa contract

2 participants