-
Notifications
You must be signed in to change notification settings - Fork 1
P6 Task 10b: Rebase to clean-pr and Push to Upstream #127
Description
Task
Create a safety tag on clean-pr, cherry-pick the two implementation commits (14 + 15) from phase-6 to clean-pr, push to the upstream fork via --force-with-lease, and update PR #136's description. This is the final delivery step — it makes the Phase 6 work visible to the upstream reviewer (jahow).
ROADMAP Reference: Phase 6, Task 10b — Rebase to clean-pr and Push to Upstream (~0.5 hours, Low complexity)
Implementation Branch: phase-6 → clean-pr
Files to Create or Modify
| File | Action | Purpose |
|---|---|---|
| (none) | N/A | This task creates no new files and modifies no source code — it performs git operations and updates PR metadata |
This is a git operations + PR update task, not a code authoring task.
Blueprint Reference
- P6 Implementation Guide §11 — Branching strategy and rebase path
- P6 ROADMAP Task 10b — Task definition, deliverables, dependencies
- P6 Contribution Goal — Acceptance Criteria — 12 criteria (A1–A4, C1–C5, B1–B3)
Scope — What to Implement
Point-of-No-Return Checklist (PRE-FLIGHT)
Before ANY git operations on clean-pr, confirm every item:
- All V1–V4 boundary verification gates passed (Task 10a)
- All C1–C5 CI gates passed (Task 10a)
- Litmus test passed — core compiles without CSAPI (Task 10a)
- B1–B3 behavioral tests passed (Task 10a)
-
phase-6branch pushed to origin (Task 10a)
If any item above is unchecked, STOP — return to Task 10a.
Step 1: Create Safety Tag
git checkout clean-pr
git tag pre-refactor-backup HEADThis preserves the current clean-pr HEAD (3061c68, 13 commits above upstream/main) so it can be restored if the cherry-pick causes problems.
Rollback command: git push clean-fork pre-refactor-backup:clean-pr --force-with-lease
Step 2: Cherry-Pick Implementation Commits
# Cherry-pick ONLY the two implementation commits (NOT research docs)
git cherry-pick <commit-14-hash> <commit-15-hash>- Commit 14: Formatting + ESLint fixes (Phase A —
style(csapi): apply Prettier and fix ESLint...) - Commit 15: Architecture refactoring (Phase B —
refactor(csapi): decouple from endpoint...)
Important: Do NOT cherry-pick research/planning commits — only code-change commits move to clean-pr.
Step 3: Verify Commit Count
git log --oneline upstream/main..clean-prExpected: Exactly 15 commits (13 existing + 2 new).
If the count is wrong:
- Too few → cherry-pick missed a commit
- Too many → extra commits picked up; reset and retry
Step 4: Quick Re-Verification on clean-pr
# Verify the cherry-picked code still passes on clean-pr
npm run typecheck
npm run test:browser
npm run test:nodeAll must exit 0. This confirms the cherry-pick applied cleanly.
Step 5: Push to Upstream Fork
git push --force-with-lease clean-fork clean-pr--force-with-leaseprevents overwriting unexpected remote changesclean-forkis the remote pointing to the upstream fork- This updates PR D-1: Resolve
SystemTypeUrisname collision between model.ts and constants.ts #136 with the new commits
Step 6: Update PR #136 Description
Update the PR description to document:
- The new
"./csapi"sub-path consumer API - The 2-commit structure (formatting + architecture)
- The 12-gate verification summary
- Respond to jahow's review thread confirming the requirements are met
Failure Protocol
| Scenario | Action |
|---|---|
| Cherry-pick conflict | Abort cherry-pick, investigate on phase-6, fix, re-attempt |
Tests fail on clean-pr |
Reset clean-pr to pre-refactor-backup, fix on phase-6, re-attempt |
| Wrong commit count | Reset clean-pr to pre-refactor-backup, verify commit hashes, re-attempt |
| Force-push rejected | Check if the remote changed unexpectedly; use --force-with-lease (not --force) |
In all failure cases: The pre-refactor-backup tag provides a safe rollback point.
Testing Requirements
- Re-run
typecheck,test:browser,test:nodeonclean-prafter cherry-pick (Step 4) - No new tests — this task moves existing verified commits to a new branch
Scope — What NOT to Touch
- ❌ Do NOT modify any source files — if cherry-pick fails, investigate and fix on
phase-6 - ❌ Do NOT use
git push --force— always use--force-with-lease - ❌ Do NOT cherry-pick research/planning commits — only Commits 14 and 15
- ❌ Do NOT delete the
pre-refactor-backuptag — it is the rollback safety net - ❌ Do NOT modify the
phase-6branch — all changes happen onclean-pr - ❌ Do NOT change any CSAPI business logic
- ❌ Do NOT run verification gates from scratch — Task 10a already confirmed them; Step 4 is a quick re-check only
Acceptance Criteria
-
pre-refactor-backuptag created on oldclean-prHEAD (3061c68) - Commits 14 + 15 cherry-picked to
clean-prcleanly (no conflicts) -
git log --oneline upstream/main..clean-prshows exactly 15 commits -
npm run typecheckpasses onclean-pr -
npm run test:browserpasses onclean-pr -
npm run test:nodepasses onclean-pr -
git push --force-with-lease clean-fork clean-prsucceeds - PR D-1: Resolve
SystemTypeUrisname collision between model.ts and constants.ts #136 description updated to document new consumer API and 2-commit structure - jahow's review thread responded to (if applicable)
Dependencies
Blocked by: Task 10a — Boundary Verification and Litmus Test (all 12 gates must pass)
Blocks: Nothing — this is the final delivery task in Phase 6
Operational Constraints
⚠️ MANDATORY: Before starting work on this issue, reviewdocs/governance/AI_OPERATIONAL_CONSTRAINTS.md.For Phase 6 issues: Review the P6 Implementation Guide §11 for the branching strategy and rebase path.
Key constraints for this task:
- Precedence: OGC specifications → AI Collaboration Agreement → This issue description → Existing code → Conversational context
- No code fixes on clean-pr: If cherry-pick fails or tests fail, return to
phase-6to fix, then re-attempt - Safety first: Always create
pre-refactor-backuptag BEFORE any cherry-pick or force-push - Force-with-lease only: Never use
--forcewithout--with-lease
Phase 6 Task-Specific Scope Boundaries
- Task 10a must pass ALL 12 verification gates before Task 10b begins
- Task 10b (this task) must NOT modify source code — git operations and PR metadata only
- Split rationale: Task 10a is fully local and reversible; Task 10b modifies remote state visible to the upstream reviewer. See Task Granularity Review.
References
Primary References (must read)
| # | Document | What It Provides |
|---|---|---|
| 1 | P6 Implementation Guide §11 | Branching strategy, rebase path diagram, point-of-no-return checklist |
| 2 | P6 ROADMAP Task 10b | Task definition, git commands, deliverables |
| 3 | P6 Contribution Goal | Acceptance criteria and success condition |
| 4 | Risk Register #4 | Force-push risk mitigation: pre-refactor-backup + --force-with-lease |
| 5 | Task Granularity Review | 10a/10b split rationale at verify/deliver boundary |
Repository Map
| Repository | Branch | Role |
|---|---|---|
ogc-client-CSAPI_2 |
main |
Archive — untouched. Preserves complete Phase 1–5 state. |
ogc-client-CSAPI_2 |
phase-6 |
Implementation workspace. Research docs + implementation commits. |
clean-pr repo |
clean-pr branch |
Contribution-ready fork. 13 commits above upstream/main, HEAD at 3061c68. After this task: 15 commits. |
Rebase Flow
phase-6 branch (ogc-client-CSAPI_2)
├── Research/planning commits (stay here — NOT rebased)
└── Commits 14 + 15 (code changes only)
↓ cherry-pick
clean-pr branch: 15 commits (13 existing + 2 new)
↓ push --force-with-lease
clean-fork remote → PR #136 updated
↓
Draft PR ready for jahow's review