Skip to content

chore: make journeys the qa contract for prs - #743

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

chore: make journeys the qa contract for prs#743
ovitrif wants to merge 5 commits into
masterfrom
chore/742-journeys-qa-contract

Conversation

@ovitrif

@ovitrif ovitrif commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Closes #742

Description

This PR:

  1. Adds scripts/journeys_index.py and the generated journeys/index.json, which lists per journey the identifiers its actions name, the source files that declare them, and the screens its actions name.
  2. Adds a Journeys workflow that runs the script with --check and fails on a stale index or on an identifier that no source file declares.
  3. Adds ### QA Notes opening with #### Journeys to the PR template, and has the /pr command list the journeys a branch adds or updates and limit #### Manual Tests to what a journey cannot express.
  4. Replaces "journeys are not a QA gate" in AGENTS.md and journeys/README.md with the rule: a PR that changes user-visible behaviour adds or updates the journeys that prove it, and updates any journey whose route it changes.

The /pr command now regenerates the index, lists the journeys the branch adds or updates, and stops when a user-visible change has no journey or when a journey whose sources the branch changes no longer matches the diff.

A source file declares an identifier when it contains it as a string literal, or as a string template whose text before the first interpolation begins the identifier while the rest has no capital letters ("Tab-\(…)" declares Tab-general but not Tab-General). The script uses only the Python standard library and runs on Python 3.9 and later.

Open PRs that add or change journeys regenerate the index after this merges. On their current heads, #721 and #727 resolve every identifier; #722 and #724 fail only on PaymentRequestPay-<payment-request-id>, which master declares since #719.

Linked Issues/Tasks

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

  • 1. Branch that edits a journey → /pr --dry: the saved description lists that journey under #### Journeys — agent tooling, not an app flow.

Automated Checks

  • python3 scripts/journeys_index.py --check passes on Python 3.9 and 3.12: 31 journeys, 126 identifiers, all declared.
  • The check fails with its message when a journey names an unknown identifier, including a capitalized typo such as Tab-General.
  • actionlint passes on journeys.yml.
  • Check journeys index passed on this PR's head.
  • Check journeys index on master pushes (after merge).

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: journeys as the qa contract for prs

1 participant