Skip to content

Commit 86aed07

Browse files
authored
Merge PR_26177_OWNER_009-project-instructions-workflow-testable-tests-alignment
PR_26177_OWNER_009-project-instructions-workflow-testable-tests-alignment
2 parents d4de164 + 7f36b7d commit 86aed07

20 files changed

Lines changed: 372 additions & 34 deletions

docs_build/dev/ProjectInstructions/PROJECT_INSTRUCTIONS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ OWNER override wording:
9393
`OWNER override approved: <reason>`
9494

9595
OWNER follows the same safety rules:
96-
- One active OWNER branch at a time.
96+
- One active Team OWNER branch at a time.
9797
- One active OWNER assignment at a time.
9898
- OWNER may override team locks, but may not silently delete, rewrite, or remove protected instructions.
9999
- OWNER override must be explicitly documented.

docs_build/dev/ProjectInstructions/addendums/branch_lock_governance.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ Keep active work attached to the correct assigned team, branch, and OWNER decisi
99

1010
## Active Work Lock
1111

12-
- Work must occur on the assigned team or OWNER branch.
12+
- Work must occur on the active team branch.
13+
- This rule applies to all teams: OWNER, Team Alfa, Team Bravo, Team Charlie, Team Delta, and any future team.
1314
- An assigned work item keeps its owner of record until complete or OWNER reassignment.
1415
- Work must not move to another team, branch, or PR without OWNER approval.
1516
- A team with no active assignment, active branch, or active PR is inactive.
16-
- A team with a previous PR that is not Closed must not begin another PR unless OWNER documented an explicit stacked PR chain.
17+
- A team with a previous PR that is not Closed must not begin another unrelated PR unless OWNER documented an explicit stacked/sequential workstream.
1718
- PR Open begins only after the branch and PR identity are named.
1819
- Plan, Build, validation, reports, ZIP packaging, and closeout stay tied to the same PR identity and source branch.
1920
- Closed ends only after the final main-return, clean-worktree, local/origin `0/0`, no-untracked-files, required-report, required-ZIP, backlog, applicable tool-state, and branch-disposition gates pass.
@@ -25,7 +26,8 @@ Keep active work attached to the correct assigned team, branch, and OWNER decisi
2526
- Pull latest `origin/main` before creating a work branch.
2627
- Do not create a PR branch unless current branch is `main`, worktree is clean, `main...origin/main` is `0 0`, and `HEAD` SHA matches the published EOD SHA.
2728
- Follow the canonical START / WORK / END lifecycle in `docs_build/dev/ProjectInstructions/addendums/project_instructions_single_source_eod_lock.md`.
28-
- Keep work on the active branch until the PR is merged, the branch is retired, or OWNER says to return to `main`.
29+
- Keep work on the active branch until the PR is merged, the branch is retired, EOD closeout begins, or OWNER says to return to `main`.
30+
- For OWNER-approved stacked/sequential workstreams, PR branches/commits stay on the active team branch/workstream during the day and do not return to `main` between PRs.
2931
- Do not commit directly to `main`.
3032
- HARD STOP before committing if current branch is `main`.
3133
- HARD STOP if the branch changes unexpectedly during implementation.
@@ -51,7 +53,7 @@ Branch lock governance enforces:
5153
- START on synchronized `main`.
5254
- WORK only on the PR branch.
5355
- END by merging, returning to synchronized `main`, publishing branch, HEAD SHA, and date/time, then stopping all work.
54-
- Mandatory hard stops before commits on `main`, dirty branch creation, non-`0 0` main sync, baseline SHA mismatch, unvalidated merge, or new PR work before synchronized main return.
56+
- Mandatory hard stops before commits on `main`, dirty branch creation, non-`0 0` main sync, baseline SHA mismatch, unvalidated merge, or new unrelated workstream before synchronized main return.
5557

5658
## OWNER Override
5759

docs_build/dev/ProjectInstructions/addendums/codex_artifact_and_reporting_standard.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Codex responses must include:
3737
## Tool MVP PR Report Requirements
3838

3939
Every tool MVP PR report must include:
40-
- Creator-testable outcome
40+
- Product Owner testable outcome
4141
- What Playwright tests
4242
- What Mr. Q should manually test
4343
- Whether the PR is part of a stacked MVP sequence
@@ -50,7 +50,7 @@ The report must answer:
5050
What can Mr. Q test after applying this ZIP?
5151
```
5252

53-
If a tool MVP PR has no Playwright lane, the report must state why and list the manual Creator validation instead.
53+
If a tool MVP PR has no Playwright lane, the report must state why and list the manual Product Owner validation instead.
5454

5555
## Code Change Reporting
5656

docs_build/dev/ProjectInstructions/addendums/environment_configuration_standards.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ One shared API/service contract is required across Local (VS Code), DEV, IST, UA
9292

9393
Rules:
9494

95+
- Browser/UI/runtime code must follow `Browser -> API -> Database` for authoritative product data.
96+
- `Local API` means the same shared API/service contract running locally, not a separate local-only API implementation.
9597
- API URLs may differ by `.env` only.
9698
- Do not split Local API and Public API contracts.
9799
- Do not create environment-specific API/service contracts.

docs_build/dev/ProjectInstructions/addendums/environment_governance_model.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ One shared API/service contract is required across all environments.
4848

4949
Rules:
5050

51+
- Browser/UI/runtime product data must flow through `Browser -> API -> Database`.
5152
- Browser/UI/runtime code must consume the same API/service contract in Local (VS Code), DEV, IST, UAT, and PROD.
53+
- `Local API` means the shared API/service contract running locally, not a separate API implementation.
5254
- Environment-specific endpoints, keys, buckets, credentials, and prefixes are configuration values only.
5355
- Do not create environment-specific API/service contracts.
5456
- Do not branch API/service behavior by environment name.

docs_build/dev/ProjectInstructions/addendums/no_mock_repository_runtime_source.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,16 @@ Browser → API → Database
1111

1212
Runtime product data must flow through the API/service contract backed by the database.
1313

14+
Canonical ASCII wording for this required flow is:
15+
16+
```text
17+
Browser -> API -> Database
18+
```
19+
1420
## Rules
1521

1622
- Mock repositories are 100% technical debt.
17-
- "Mock repository ready" is not a valid Creator-testable completion state.
23+
- "Mock repository ready" is not a valid Product Owner testable completion state.
1824
- Page arrays are not product-data sources of truth.
1925
- JSON source files are not product-data sources of truth.
2026
- `/tmp` files are not product-data sources of truth.
@@ -32,7 +38,7 @@ If a temporary mock repository exists for transition, it must be documented as t
3238
- affected files
3339
- removal PR
3440
- replacement API/DB path
35-
- Creator-testable limitation
41+
- Product Owner testable limitation
3642

3743
Temporary mock repositories do not make a feature complete. They may only document a transition state.
3844

@@ -46,4 +52,4 @@ Completion requires Game Configuration data to load through:
4652
Browser → API → Database
4753
```
4854

49-
The Creator-testable completion state must prove that browser-visible Game Configuration data was read back through the API/service contract backed by the database.
55+
The Product Owner testable completion state must prove that browser-visible Game Configuration data was read back through the API/service contract backed by the database.

docs_build/dev/ProjectInstructions/addendums/pr_workflow.md

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,27 @@ Define the standard pull request workflow for Game Foundry Studio.
2323
12. Review the PR.
2424
13. OWNER approves merge.
2525
14. Merge to main.
26-
15. Pull latest main before starting the next PR.
26+
15. Pull latest main before starting the next unrelated workstream, or before a new PR when the work is not an OWNER-approved stacked/sequential workstream.
2727
16. Verify Main Verified and Closed gates.
2828

29+
## Daily Branch Workflow
30+
31+
Team-neutral daily workflow:
32+
33+
- SOD starts from the latest synchronized `main`.
34+
- SOD creates or updates one active team branch/workstream.
35+
- Work must be committed only to the active team branch.
36+
- PR branches/commits stay on the active team branch/workstream during the day when OWNER assigned a stacked or sequential workstream.
37+
- Do not return to `main` between stacked/sequential PRs in the same active workstream.
38+
- `main` is only the SOD baseline and the EOD return target, unless OWNER explicitly approves an intermediate merge checkpoint.
39+
- EOD merges or closes OWNER-approved work, pushes, returns to `main`, and verifies:
40+
- current branch is `main`
41+
- worktree clean
42+
- local/origin sync is `0 0`
43+
- This rule applies to all teams: OWNER, Team Alfa, Team Bravo, Team Charlie, Team Delta, and any future team.
44+
45+
This section supersedes older active wording that implies returning to `main` between every PR inside an OWNER-approved stacked/sequential workstream.
46+
2947
## Branch Lifecycle (Canonical)
3048

3149
Every PR follows exactly three phases:
@@ -101,7 +119,8 @@ Closed gates:
101119
- Source branches are retained by default after merge and closeout.
102120
- Do not mix unrelated scopes.
103121
- Do not start dependent PRs until the required base PR is merged.
104-
- Always return to main before starting the next PR.
122+
- Return to `main` before starting an unrelated PR or new workstream.
123+
- Do not return to `main` between PRs in the same OWNER-approved stacked/sequential workstream unless OWNER approves an EOD or intermediate merge checkpoint.
105124
- A team must not begin another PR if its previous PR is not Closed.
106125
- Exception is allowed only for explicitly documented stacked PR chains.
107126
- If validation fails, stop and report.
@@ -124,14 +143,14 @@ Tool MVP work must follow:
124143

125144
`docs_build/dev/ProjectInstructions/addendums/tool_mvp_stacked_pr_standard.md`
126145

127-
For tool MVPs, use one large Codex command, multiple focused stacked PRs, and one testable Creator outcome per PR.
146+
For tool MVPs, use one large Codex command, multiple focused stacked PRs, and one Product Owner testable outcome per PR.
128147

129148
Do not create one giant PR.
130149

131150
Do not stop after every small PR unless blocked by branch state, failed validation, missing source files, Project Instructions conflict, or an unresolved dependency from a prior PR.
132151

133152
Each tool MVP PR plan or template must include:
134-
- Creator-testable outcome
153+
- Product Owner testable outcome
135154
- What Playwright tests
136155
- What Mr. Q should manually test
137156
- Whether the PR is part of a stacked MVP sequence
@@ -140,6 +159,47 @@ Each tool MVP PR plan or template must include:
140159

141160
Visible acceptance must be Creator-facing first. Architecture can be handled under the covers, but the PR purpose must be user-testable.
142161

162+
## Product Owner Testable Definition
163+
164+
A request to complete a page, tool, MVP, or testable experience means Product Owner testable by default. Codex must deliver a working Product Owner testable feature, not a shell or foundation page, unless the Product Owner explicitly requests a shell/foundation PR.
165+
166+
A Product Owner testable outcome means the Product Owner can:
167+
168+
- open the page/tool
169+
- perform the primary workflow
170+
- save/load data where applicable
171+
- observe expected results
172+
- validate success and failure states
173+
- follow manual validation steps from the PR report
174+
175+
Not acceptable as a completed/testable page or tool:
176+
177+
- shell-only page
178+
- route-only page
179+
- navigation-only PR
180+
- template-only page
181+
- placeholder controls
182+
- static table with no workflow
183+
- `Not implemented yet`
184+
- `coming soon`
185+
- placeholder-only workspace, inspector, or output sections
186+
- planned-only tile
187+
- route that loads but cannot be used
188+
189+
Required for Product Owner testable completion:
190+
191+
- visible working controls
192+
- API-backed data where required
193+
- validation and error states
194+
- empty states
195+
- save/load behavior where applicable
196+
- manual validation steps for Product Owner
197+
- targeted Playwright coverage where impacted.
198+
199+
## No-Shell Completion Rule
200+
201+
A PR requested to complete a page, tool, MVP, or testable experience must not stop after route creation, shell creation, placeholder UI, static mock layout, or navigation activation unless the Product Owner explicitly requested a shell/foundation PR.
202+
143203
## OWNER Shortcut: PRs
144204

145205
Keyword:

docs_build/dev/ProjectInstructions/addendums/project_instructions_single_source_eod_lock.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ END
6868

6969
## START
7070

71-
Every team begins on `main`.
71+
Every team begins SOD from `main`.
7272

7373
Required:
7474

@@ -91,7 +91,7 @@ main...origin/main
9191
HEAD equals published EOD SHA
9292
```
9393

94-
Only after ALL four pass may a branch be created.
94+
Only after ALL four pass may a branch be created or the active team branch/workstream be updated.
9595

9696
Create the PR branch:
9797

@@ -112,9 +112,13 @@ From branch creation until merge:
112112
- Remain on the PR branch.
113113
- Never checkout `main`.
114114
- Commit only on the PR branch.
115+
- Work must be committed only to the active team branch.
115116
- Push only the PR branch.
116117
- Execute validation from the PR branch.
117118
- Open/update the PR from the PR branch.
119+
- For OWNER-approved stacked/sequential workstreams, PR branches/commits stay on the active team branch/workstream between sequential PRs during the day.
120+
- Do not return to `main` between sequential PRs in the same active workstream unless OWNER explicitly approves an EOD or intermediate merge checkpoint.
121+
- This rule applies to all teams: OWNER, Team Alfa, Team Bravo, Team Charlie, Team Delta, and any future team.
118122

119123
Hard Stops:
120124

@@ -192,7 +196,8 @@ STOP if:
192196
- `main...origin/main` is not `0 0` before creating PR branch
193197
- `HEAD` SHA differs from published baseline
194198
- merge attempted without successful validation
195-
- new PR started before returning to synchronized `main`
199+
- new unrelated PR or workstream started before returning to synchronized `main`
200+
- sequential work continues without an OWNER-approved stacked/sequential workstream model
196201

197202
## Start Of Day Boundary
198203

docs_build/dev/ProjectInstructions/addendums/test_structure_standardization.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ Standardize testing locations and ensure independent tool validation.
66

77
## Canonical Test Structure
88

9+
Page-level Playwright tests:
10+
- tests/playwright/{runtime-page-path}/index.spec.mjs
11+
912
Tool tests:
1013
- tests/toolbox/{tool-name}/
1114

@@ -31,3 +34,38 @@ Regression tests:
3134
- Tool tests validate tool functionality.
3235
- Regression tests validate platform behavior.
3336
- New tests follow the canonical structure.
37+
- Every user-accessible page must have at least one matching page-level Playwright test before it can be considered complete.
38+
- Runtime page path determines the page-level Playwright test path.
39+
- Primary page-level Playwright test file should be `index.spec.mjs`.
40+
- Do not organize new page-level Playwright tests only by feature nickname or technology bucket when a page path exists.
41+
- Legacy broad tests may remain while migration is planned; document migration/deprecation instead of moving broad legacy tests unless the PR scope requires it.
42+
43+
## Page-Level Playwright Examples
44+
45+
- `/admin/index.html` -> `tests/playwright/admin/index/index.spec.mjs`
46+
- `/toolbox/sprites/index.html` -> `tests/playwright/toolbox/sprites/index.spec.mjs`
47+
- `/toolbox/game-hub/index.html` -> `tests/playwright/toolbox/game-hub/index.spec.mjs`
48+
- `/toolbox/messages/index.html` -> `tests/playwright/toolbox/messages/index.spec.mjs`
49+
- `/toolbox/game-configuration/index.html` -> `tests/playwright/toolbox/game-configuration/index.spec.mjs`
50+
51+
## Minimum Page-Level Playwright Coverage
52+
53+
Minimum page-level test:
54+
55+
- route loads
56+
- page renders
57+
- navigation works
58+
- no visible placeholder-only state for completed/testable pages
59+
- primary workflow is covered where the PR claims Product Owner testable completion
60+
- save/load and validation are covered where applicable
61+
- no runtime console errors when feasible
62+
63+
Additional scenario files may use:
64+
65+
- `create.spec.mjs`
66+
- `edit.spec.mjs`
67+
- `delete.spec.mjs`
68+
- `archive.spec.mjs`
69+
- `navigation.spec.mjs`
70+
- `permissions.spec.mjs`
71+
- `validation.spec.mjs`

docs_build/dev/ProjectInstructions/addendums/tool_mvp_stacked_pr_standard.md

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ Define how Codex plans and executes Creator-facing tool MVP work without creatin
1212
For tool MVPs, use:
1313

1414
```text
15-
One large Codex command -> multiple focused stacked PRs -> each PR has a testable Creator outcome.
15+
One large Codex command -> multiple focused stacked PRs -> each PR has a Product Owner testable outcome.
1616
```
1717

1818
## Rules
1919

2020
- Do not create one giant PR.
2121
- Do not stop after every small PR unless blocked.
2222
- Each PR must be independently scoped.
23-
- Each PR must produce a Creator-testable outcome.
23+
- Each PR must produce a Product Owner testable outcome.
2424
- Each PR must answer:
2525

2626
```text
@@ -40,8 +40,43 @@ For tool MVP PR planning, visible acceptance must be Creator-facing first.
4040

4141
Architecture can be handled under the covers, but PR purpose must be user-testable.
4242

43+
A request to complete a page, tool, MVP, or testable experience means Product Owner testable by default. Codex must deliver a working Product Owner testable feature, not a shell or foundation page, unless the Product Owner explicitly requests a shell/foundation PR.
44+
45+
A Product Owner testable outcome means the Product Owner can:
46+
47+
- open the page/tool
48+
- perform the primary workflow
49+
- save/load data where applicable
50+
- observe expected results
51+
- validate success and failure states
52+
- follow manual validation steps from the PR report
53+
54+
Not acceptable as complete/testable:
55+
56+
- shell-only page
57+
- route-only page
58+
- navigation-only PR
59+
- template-only page
60+
- placeholder controls
61+
- static table with no workflow
62+
- `Not implemented yet`
63+
- `coming soon`
64+
- placeholder-only workspace, inspector, or output sections
65+
- planned-only tile
66+
- route that loads but cannot be used
67+
68+
Required for Product Owner testable completion:
69+
70+
- visible working controls
71+
- API-backed data where required
72+
- validation and error states
73+
- empty states
74+
- save/load behavior where applicable
75+
- manual validation steps for Product Owner
76+
- targeted Playwright coverage where impacted.
77+
4378
Each tool MVP PR must state:
44-
- Creator-testable outcome
79+
- Product Owner testable outcome
4580
- What Playwright tests
4681
- What Mr. Q should manually test
4782
- Whether the PR is part of a stacked MVP sequence
@@ -50,6 +85,8 @@ Each tool MVP PR must state:
5085

5186
## Runtime Data Completion Boundary
5287

88+
A PR requested to complete a page, tool, MVP, or testable experience must not stop after route creation, shell creation, placeholder UI, static mock layout, or navigation activation unless the Product Owner explicitly requested a shell/foundation PR.
89+
5390
A PR outcome must not be described as complete if the visible data is coming from:
5491

5592
- mock repositories
@@ -81,4 +118,8 @@ Each PR in the stack still follows the canonical START / WORK / END lifecycle an
81118

82119
When OWNER gives one large Codex command for a tool MVP stack, Codex may continue from one completed PR to the next without stopping for a conversational checkpoint, unless a blocker listed in this standard occurs.
83120

84-
The final PR in the stack must perform normal closeout and stop all work after returning to synchronized main.
121+
During an OWNER-approved day workstream, PR branches/commits stay on the active team branch/workstream and do not return to `main` between PRs.
122+
123+
This rule applies to all teams: OWNER, Team Alfa, Team Bravo, Team Charlie, Team Delta, and any future team.
124+
125+
The final PR in the stack must perform normal EOD closeout or OWNER-approved merge-checkpoint closeout and stop all work after returning to synchronized main.

0 commit comments

Comments
 (0)