From ae1d83874a943ddb5e05dec654a4e33f1f70ac99 Mon Sep 17 00:00:00 2001 From: Charlie Team <97194984+ToolboxAid@users.noreply.github.com> Date: Fri, 26 Jun 2026 21:06:46 -0400 Subject: [PATCH] Add team backlog SOD EOD governance --- .../PROJECT_INSTRUCTIONS.md | 4 + docs_build/dev/ProjectInstructions/README.txt | 1 + .../TEAM_START_COMMANDS.md | 13 +++ .../addendums/naming_registry.md | 13 +++ .../team_backlog_sod_eod_standard.md | 98 ++++++++++++++++++ .../addendums/team_start_and_release.md | 4 + .../backlog/BACKLOG_MASTER.md | 16 +++ .../team_assignments/team_ownership.md | 11 ++ ...OWNER_010-team-backlog-sod-eod-standard.md | 55 ++++++++++ ...klog-sod-eod-standard_branch-validation.md | 23 ++++ ...od-eod-standard_manual-validation-notes.md | 19 ++++ ...sod-eod-standard_requirements-checklist.md | 29 ++++++ ...acklog-sod-eod-standard_validation-lane.md | 41 ++++++++ .../dev/reports/codex_changed_files.txt | 22 ++-- docs_build/dev/reports/codex_review.diff | Bin 39988 -> 20349 bytes 15 files changed, 340 insertions(+), 9 deletions(-) create mode 100644 docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md create mode 100644 docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard.md create mode 100644 docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_branch-validation.md create mode 100644 docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_manual-validation-notes.md create mode 100644 docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_requirements-checklist.md create mode 100644 docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_validation-lane.md diff --git a/docs_build/dev/ProjectInstructions/PROJECT_INSTRUCTIONS.md b/docs_build/dev/ProjectInstructions/PROJECT_INSTRUCTIONS.md index 55f4a69ec..d6617c986 100644 --- a/docs_build/dev/ProjectInstructions/PROJECT_INSTRUCTIONS.md +++ b/docs_build/dev/ProjectInstructions/PROJECT_INSTRUCTIONS.md @@ -54,6 +54,10 @@ Existing Project Instructions outside `docs_build/dev/ProjectInstructions/` rema - `docs_build/dev/reports/` owns generated reports, audits, and validation artifacts. - root `archive/` owns historical reference material only. +## Team Backlog, SOD, And EOD Governance + +`docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md` defines required Start of Day team briefings, End of Day team summaries, active team backlog fields, completion percentage update points, backlog-driven next PR selection, and official military team-name spelling. + ## Environment Governance `docs_build/dev/ProjectInstructions/addendums/environment_governance_model.md` defines the official environment model, environment invariance rule, shared API/service contract rule, required Supabase/Postgres/R2 services, required R2 prefixes, and SQLite retired status. diff --git a/docs_build/dev/ProjectInstructions/README.txt b/docs_build/dev/ProjectInstructions/README.txt index 3a2830219..1b647c6fd 100644 --- a/docs_build/dev/ProjectInstructions/README.txt +++ b/docs_build/dev/ProjectInstructions/README.txt @@ -47,6 +47,7 @@ READ THIS FIRST Addendum index: - Documentation Ownership: docs_build/dev/ProjectInstructions/addendums/documentation_ownership.md +- Team Backlog, SOD, And EOD Standard: docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md - Single Source and EOD Main Lock: docs_build/dev/ProjectInstructions/addendums/project_instructions_single_source_eod_lock.md - Canonical Repository Structure: docs_build/dev/ProjectInstructions/addendums/canonical_repository_structure.md - Test Structure Standardization: docs_build/dev/ProjectInstructions/addendums/test_structure_standardization.md diff --git a/docs_build/dev/ProjectInstructions/TEAM_START_COMMANDS.md b/docs_build/dev/ProjectInstructions/TEAM_START_COMMANDS.md index 292540043..5fe1c43e4 100644 --- a/docs_build/dev/ProjectInstructions/TEAM_START_COMMANDS.md +++ b/docs_build/dev/ProjectInstructions/TEAM_START_COMMANDS.md @@ -10,6 +10,7 @@ No team creates a PR branch until all checks pass: - `HEAD` SHA matches the published EOD SHA Use `docs_build/dev/ProjectInstructions/` as the only active Project Instructions source. +Read `docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md` before implementation. Branch Lifecycle (Canonical): - Every PR follows exactly three phases: START, WORK, END. @@ -166,4 +167,16 @@ git rev-list --left-right --count main...origin/main git rev-parse HEAD Publish Branch, HEAD SHA, and Date/time. This becomes tomorrow's official baseline. + +Also provide the required EOD team summary: +- Team name +- Date +- PRs completed +- PRs merged +- Validation summary +- Overall completion percentage +- Remaining backlog +- Completion percentage for each remaining backlog item +- Recommended first PRs for the next day +- Repository status ``` diff --git a/docs_build/dev/ProjectInstructions/addendums/naming_registry.md b/docs_build/dev/ProjectInstructions/addendums/naming_registry.md index a269f204a..b08863149 100644 --- a/docs_build/dev/ProjectInstructions/addendums/naming_registry.md +++ b/docs_build/dev/ProjectInstructions/addendums/naming_registry.md @@ -43,7 +43,16 @@ Capture approved Game Foundry Studio names to reduce rename churn. Teams must use NATO phonetic naming. +Official active team codes: + +- OWNER +- ALFA +- BRAVO +- CHARLIE +- DELTA + Examples: +- Team OWNER - Team Alfa - Team Bravo - Team Charlie @@ -51,6 +60,10 @@ Examples: - Team Echo - Team Foxtrot +Rule: +- Use `Alfa` spelling when referring to Team Alfa. +- Do not rewrite historical snapshots, archived references, or non-team phrases such as `Alpha/Beta/User isolation framework` unless OWNER explicitly scopes that work. + ## Rule Do not rename approved terms without OWNER approval. diff --git a/docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md b/docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md new file mode 100644 index 000000000..437c01800 --- /dev/null +++ b/docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md @@ -0,0 +1,98 @@ +# Team Backlog, SOD, And EOD Standard + +Status: Approved +Owner: OWNER + +## Purpose + +Define the required Start of Day briefing, End of Day summary, team backlog ownership, completion percentage tracking, and official military team-name spelling for all active teams. + +This standard is governance/documentation only. It does not change runtime behavior, API implementation, storage implementation, database DDL, or secret values. + +## Official Team Names + +Use military phonetic spelling for active team names: + +- OWNER +- ALFA +- BRAVO +- CHARLIE +- DELTA + +Display labels may use title case: + +- Team OWNER +- Team Alfa +- Team Bravo +- Team Charlie +- Team Delta + +Do not substitute Greek spelling for team names. Use `Alfa` spelling when referring to Team Alfa. + +Historical snapshots, archived references, and non-team phrases such as `Alpha/Beta/User isolation framework` must not be rewritten unless OWNER explicitly scopes that work. + +## Team Backlog Ownership + +Every active team owns an active backlog when it has assigned work. + +Each backlog item must track: + +- name +- description +- current completion percentage +- remaining work +- blocking dependencies + +Completion percentages are updated: + +- at SOD +- after each accepted PR +- at EOD + +The backlog is the authoritative source for determining the next PRs. + +If the backlog and a generated report conflict, the backlog wins unless OWNER explicitly approves a newer governance decision. + +## Start Of Day Team Briefing + +When a team is assigned, ChatGPT/Codex must provide this briefing before implementation begins: + +- team name +- active workstream +- current overall completion percentage +- assigned backlog items +- completion percentage for each backlog item +- remaining work for each backlog item +- recommended execution order +- current active branch +- blocking dependencies, if any + +This briefing is required before implementation begins. + +## End Of Day Team Summary + +At EOD, ChatGPT/Codex must provide: + +- team name +- date +- PRs completed +- PRs merged +- validation summary +- overall completion percentage +- remaining backlog +- completion percentage for each remaining backlog item +- recommended first PRs for the next day +- repository status: + - current branch + - worktree + - local/origin sync + +## Relationship To Existing Workflow + +This standard preserves the existing branch workflow: + +- SOD starts from latest `main`. +- SOD creates or uses the active team branch. +- All commits go to the active team branch, not `main`. +- Sequential PRs stay on the active team branch/workstream during the day. +- EOD merges OWNER-approved work, pushes, returns to `main`, and verifies clean worktree and local/origin sync `0 0`. diff --git a/docs_build/dev/ProjectInstructions/addendums/team_start_and_release.md b/docs_build/dev/ProjectInstructions/addendums/team_start_and_release.md index e2d6b7226..c4a3ffd9d 100644 --- a/docs_build/dev/ProjectInstructions/addendums/team_start_and_release.md +++ b/docs_build/dev/ProjectInstructions/addendums/team_start_and_release.md @@ -23,6 +23,8 @@ Before a team starts, validate: - work remains with the assigned team until complete or OWNER reassignment - the team's previous PR is Closed, unless OWNER documented an explicit stacked PR chain +Before implementation begins, ChatGPT/Codex must provide the SOD briefing defined in `docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md`. + ## Current Four-Team Start Set The current active delivery teams for backlog start commands are: @@ -112,6 +114,8 @@ Closed readiness requires: - backlog updated - tool state updated when applicable +At EOD, ChatGPT/Codex must provide the team summary defined in `docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md`. + ## Gate Behavior Release readiness is a validation gate. diff --git a/docs_build/dev/ProjectInstructions/backlog/BACKLOG_MASTER.md b/docs_build/dev/ProjectInstructions/backlog/BACKLOG_MASTER.md index 10ed1c93e..cc9ddc88c 100644 --- a/docs_build/dev/ProjectInstructions/backlog/BACKLOG_MASTER.md +++ b/docs_build/dev/ProjectInstructions/backlog/BACKLOG_MASTER.md @@ -1,5 +1,21 @@ # BACKLOG_MASTER +## Backlog Item Tracking Standard + +Every active team owns an active backlog when it has assigned work. + +Each backlog item must track: + +- Name +- Description +- Current completion percentage +- Remaining work +- Blocking dependencies + +Completion percentages are updated at SOD, after each accepted PR, and at EOD. + +The backlog is the authoritative source for determining the next PRs. + ## Game Journey MVP ### Idea diff --git a/docs_build/dev/ProjectInstructions/team_assignments/team_ownership.md b/docs_build/dev/ProjectInstructions/team_assignments/team_ownership.md index 4e6548811..30b4f2dfe 100644 --- a/docs_build/dev/ProjectInstructions/team_assignments/team_ownership.md +++ b/docs_build/dev/ProjectInstructions/team_assignments/team_ownership.md @@ -101,7 +101,16 @@ This current rule supersedes any prior permanent discipline ownership assumption Team names must use NATO phonetic naming. +Official active team codes: + +- OWNER +- ALFA +- BRAVO +- CHARLIE +- DELTA + Examples: +- Team OWNER - Team Alfa - Team Bravo - Team Charlie @@ -109,6 +118,8 @@ Examples: - Team Echo - Team Foxtrot +Use `Alfa` spelling when referring to Team Alfa. + ## Assignment Rule Work stays with the assigned team until either: diff --git a/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard.md b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard.md new file mode 100644 index 000000000..952857d11 --- /dev/null +++ b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard.md @@ -0,0 +1,55 @@ +# PR_26177_OWNER_010-team-backlog-sod-eod-standard + +Date: 2026-06-27 +Team: OWNER +Branch: PR_26177_OWNER_010-team-backlog-sod-eod-standard + +## Purpose + +Add active governance for team backlog ownership, Start of Day briefings, End of Day summaries, completion percentage tracking, and official military team-name spelling. + +## Scope + +Documentation and governance only. + +No runtime code, UI code, API code, database code, `start_of_day` files, history snapshots, or unrelated cleanup were changed. + +## Changes + +- Added `team_backlog_sod_eod_standard.md` as an active Project Instructions addendum. +- Added Start of Day team briefing requirements before implementation begins. +- Added End of Day team summary requirements. +- Defined active team backlog ownership fields: + - name + - description + - current completion percentage + - remaining work + - blocking dependencies +- Defined completion percentage update points at SOD, after each accepted PR, and at EOD. +- Confirmed the backlog is authoritative for determining next PRs. +- Added official active team codes: OWNER, ALFA, BRAVO, CHARLIE, and DELTA. +- Confirmed active team-name spelling uses `Alfa`, while historical snapshots and non-team phrases are not rewritten unless OWNER explicitly scopes that work. +- Linked the addendum from active Project Instructions index and team start guidance. + +## Validation + +- PASS: `git diff --cached --check -- . :(exclude)docs_build/dev/reports/codex_review.diff` +- PASS: documentation/governance-only changed-file check. +- PASS: SOD briefing rule exists. +- PASS: EOD summary rule exists. +- PASS: backlog ownership rule exists. +- PASS: active team codes include ALFA. +- PASS: active `Alpha` references are limited to the non-team cancelled `Alpha/Beta/User isolation framework` phrase. +- PASS: no runtime files changed. +- PASS: no UI files changed. +- PASS: no API files changed. +- PASS: no database files changed. +- PASS: no `start_of_day` files changed. + +## Artifact + +- `tmp/PR_26177_OWNER_010-team-backlog-sod-eod-standard_delta.zip` + +## Manual Validation Notes + +Reviewers should confirm active team work now has a required SOD briefing, required EOD summary, explicit backlog ownership fields, completion percentage update cadence, and the official team spelling standard. diff --git a/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_branch-validation.md b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_branch-validation.md new file mode 100644 index 000000000..902ef571d --- /dev/null +++ b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_branch-validation.md @@ -0,0 +1,23 @@ +# PR_26177_OWNER_010 Branch Validation + +Date: 2026-06-27 +Team: OWNER +Branch: PR_26177_OWNER_010-team-backlog-sod-eod-standard + +## Result + +PASS + +## Checks + +- PASS: Work was performed on the active OWNER PR branch, not `main`. +- PASS: Branch is stacked on the active OWNER workstream branch. +- PASS: Changes are limited to active Project Instructions and generated reports. +- PASS: No runtime, UI, API, database, or `start_of_day` files changed. +- PASS: staged whitespace validation passed with generated `codex_review.diff` excluded. +- PASS: Required report files were generated. +- PASS: Repo-structured ZIP artifact path is defined under `tmp/`. + +## Notes + +This PR remains in the OWNER workstream and must not be merged to `main` until EOD closeout or explicit OWNER approval. diff --git a/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_manual-validation-notes.md b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_manual-validation-notes.md new file mode 100644 index 000000000..7acfa05a9 --- /dev/null +++ b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_manual-validation-notes.md @@ -0,0 +1,19 @@ +# PR_26177_OWNER_010 Manual Validation Notes + +Date: 2026-06-27 +Team: OWNER + +## Manual Review + +Review `docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md` and confirm it defines: + +- Start of Day team briefing fields. +- End of Day team summary fields. +- Active team backlog ownership. +- Completion percentage update cadence. +- Official team names: OWNER, ALFA, BRAVO, CHARLIE, DELTA. +- Existing SOD, active team branch, stacked PR, and EOD return-to-main workflow. + +## Expected Reviewer Outcome + +The Product Owner should be able to use the active Project Instructions to start and close a team day with explicit backlog percentages, remaining work, recommended execution order, and repository status. diff --git a/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_requirements-checklist.md b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_requirements-checklist.md new file mode 100644 index 000000000..299da2ffd --- /dev/null +++ b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_requirements-checklist.md @@ -0,0 +1,29 @@ +# PR_26177_OWNER_010 Requirements Checklist + +Date: 2026-06-27 +Team: OWNER + +## Requirement Results + +- PASS: Documentation/governance only. +- PASS: Active Project Instructions reviewed and updated. +- PASS: Active instruction files updated only. +- PASS: Historical snapshots were not rewritten. +- PASS: No runtime changes. +- PASS: Start of Day team briefing rule added. +- PASS: End of Day team summary rule added. +- PASS: Team backlog ownership rule added. +- PASS: Backlog item fields include name, description, current completion percentage, remaining work, and blocking dependencies. +- PASS: Completion percentage update cadence added for SOD, accepted PRs, and EOD. +- PASS: Backlog is documented as authoritative for determining next PRs. +- PASS: Official team names use OWNER, ALFA, BRAVO, CHARLIE, and DELTA. +- PASS: Active team references use `Alfa` spelling. +- PASS: Historical and non-team `Alpha/Beta/User isolation framework` wording was preserved. +- PASS: Required reports were generated. +- PASS: Repo-structured ZIP artifact will be generated under `tmp/`. + +## Restrictions + +- PASS: No commit was made to `main`. +- PASS: No `start_of_day` folders changed. +- PASS: No unrelated cleanup. diff --git a/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_validation-lane.md b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_validation-lane.md new file mode 100644 index 000000000..591dc6d70 --- /dev/null +++ b/docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_validation-lane.md @@ -0,0 +1,41 @@ +# PR_26177_OWNER_010 Validation Lane + +Date: 2026-06-27 +Team: OWNER + +## Commands + +```powershell +git diff --cached --check -- . ":(exclude)docs_build/dev/reports/codex_review.diff" +``` + +Result: PASS + +```powershell +node -e "documentation/governance-only changed-file check" +``` + +Result: PASS + +```powershell +node -e "required SOD/EOD/backlog/team-name governance checks" +``` + +Result: PASS + +## Targeted Results + +- PASS: SOD briefing rule exists. +- PASS: EOD summary rule exists. +- PASS: backlog ownership rule exists. +- PASS: required backlog fields exist. +- PASS: official active team code `ALFA` exists. +- PASS: active `Alpha` references are limited to the non-team cancelled initiative phrase. +- PASS: no runtime files changed. +- PASS: no UI files changed. +- PASS: no API files changed. +- PASS: no database files changed. + +## Playwright + +Not impacted. This PR is documentation/governance only. diff --git a/docs_build/dev/reports/codex_changed_files.txt b/docs_build/dev/reports/codex_changed_files.txt index 98a71e332..e97560092 100644 --- a/docs_build/dev/reports/codex_changed_files.txt +++ b/docs_build/dev/reports/codex_changed_files.txt @@ -1,11 +1,15 @@ -docs_build/dev/ProjectInstructions/addendums/codex_artifact_and_reporting_standard.md -docs_build/dev/ProjectInstructions/addendums/no_mock_repository_runtime_source.md -docs_build/dev/ProjectInstructions/addendums/pr_workflow.md -docs_build/dev/ProjectInstructions/addendums/test_structure_standardization.md -docs_build/dev/ProjectInstructions/addendums/tool_mvp_stacked_pr_standard.md -docs_build/dev/reports/PR_26177_OWNER_009-project-instructions-workflow-testable-tests-alignment.md -docs_build/dev/reports/PR_26177_OWNER_009-project-instructions-workflow-testable-tests-alignment_manual-validation-notes.md -docs_build/dev/reports/PR_26177_OWNER_009-project-instructions-workflow-testable-tests-alignment_requirements-checklist.md -docs_build/dev/reports/PR_26177_OWNER_009-project-instructions-workflow-testable-tests-alignment_validation-lane.md +docs_build/dev/ProjectInstructions/PROJECT_INSTRUCTIONS.md +docs_build/dev/ProjectInstructions/README.txt +docs_build/dev/ProjectInstructions/TEAM_START_COMMANDS.md +docs_build/dev/ProjectInstructions/addendums/naming_registry.md +docs_build/dev/ProjectInstructions/addendums/team_backlog_sod_eod_standard.md +docs_build/dev/ProjectInstructions/addendums/team_start_and_release.md +docs_build/dev/ProjectInstructions/backlog/BACKLOG_MASTER.md +docs_build/dev/ProjectInstructions/team_assignments/team_ownership.md +docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard.md +docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_branch-validation.md +docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_manual-validation-notes.md +docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_requirements-checklist.md +docs_build/dev/reports/PR_26177_OWNER_010-team-backlog-sod-eod-standard_validation-lane.md docs_build/dev/reports/codex_changed_files.txt docs_build/dev/reports/codex_review.diff diff --git a/docs_build/dev/reports/codex_review.diff b/docs_build/dev/reports/codex_review.diff index 246e75adfa83fde73e4ce82f92b9e708e7006f54..4eb5211adae21380b074159c7725e6983da51f6e 100644 GIT binary patch literal 20349 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 YH|^G^Y7c_4^f$jXwf%BpUU*RLU!IphhyVZp literal 39988 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 D0uoR4