CR-013: record the veteran's Clipper change request
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
f7cb312ea1
commit
038f09bb50
|
|
@ -1199,3 +1199,8 @@ Implementation decisions not spelled out in `memory-bank/implementation-plan.md`
|
||||||
- **The Lighter-first / Clipper-first balance check waits for the balance script** (plan Step 12.1, not built yet); the amendment is recorded on Step 12.1.
|
- **The Lighter-first / Clipper-first balance check waits for the balance script** (plan Step 12.1, not built yet); the amendment is recorded on Step 12.1.
|
||||||
- **The manual check found a hop needs Long Haul**: every Mars→Ceres leg is over 100M km, so it needs Long Haul 1. A fresh veteran (Heavy Cargo 1, 3 unspent points) qualifies once a point goes into Long Haul. This is existing skill gating, not a range problem, but it makes the Clipper's hop to Ceres a mid-game move.
|
- **The manual check found a hop needs Long Haul**: every Mars→Ceres leg is over 100M km, so it needs Long Haul 1. A fresh veteran (Heavy Cargo 1, 3 unspent points) qualifies once a point goes into Long Haul. This is existing skill gating, not a range problem, but it makes the Clipper's hop to Ceres a mid-game move.
|
||||||
- **Clipper fuel is expensive by design** (600 cr/M km): a ~190M km hop costs about 110,000 credits, in line with a Freighter's long runs. The check topped up credits with the developer tool. Payouts for those legs are tuned elsewhere and were not changed here.
|
- **Clipper fuel is expensive by design** (600 cr/M km): a ~190M km hop costs about 110,000 credits, in line with a Freighter's long runs. The check topped up credits with the developer tool. Payouts for those legs are tuned elsewhere and were not changed here.
|
||||||
|
|
||||||
|
## CR-013 — The Veteran's Clipper (Phase 10M)
|
||||||
|
|
||||||
|
- **Renumbered on arrival:** titled "CR-010 … Phase 10J"; CR-010 to CR-012 and Phases 10J–10L already exist, so it is **CR-013**, done as **Phase 10M** (its 10J.n are 10M.n).
|
||||||
|
- **Decisions:** the CR's 0.5.64 and 0.5.65 are **0.5.82** and **0.5.83**; its amended "0.5.52 Veteran skill" is this plan's **0.5.70**. Its "CR-007" (veteran, steps 10G.n) is **CR-010** (10J.n); its "CR-009" (new ships, 10I.11) is **CR-012** (10L.11).
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
# Change Request CR-013 — The Veteran's Clipper
|
||||||
|
|
||||||
|
> **Numbering note (added when implemented):** this request arrived titled "CR-010 — The Veteran's Clipper" for "Phase 10J", applying to "CR-001 through CR-009". CR-010 to CR-012 and Phases 10J–10L already existed, so it is stored as **CR-013** and done as **Phase 10M**: every "10J.n" below means **10M.n**. Its decisions 0.5.64 and 0.5.65 are recorded as **0.5.82 The veteran's Clipper** and **0.5.83 Deal loan**; its amended "0.5.52 Veteran skill" is this plan's **0.5.70 Veteran pilot**. Its "CR-007" (veteran pilot, steps 10G.n) is this repo's **CR-010** (steps 10J.n); its "CR-009" (new ships and range, step 10I.11) is **CR-012** (step 10L.11). The loan decision "CR-001 0.5.24" is plan §0.5.32.
|
||||||
|
|
||||||
|
**Project:** Deadhead: Space Freight Tycoon
|
||||||
|
**Applies to:** a build with Phases 1–10 and CR-001 through CR-009 complete
|
||||||
|
**Do this:** as **Phase 10J**, after Phase 10I and before Phase 11
|
||||||
|
**Related docs:** `change-request-faster-start.md` (CR-001), `change-request-veteran-pilot.md` (CR-007), `change-request-new-ships-and-range.md` (CR-009), `implementation-plan.md`, `game-design-document.md`, `DECISIONS.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Why
|
||||||
|
|
||||||
|
The player takes over the retiring owner's business, and CR-007 gave them his veteran pilot. Now that the Clipper exists (CR-009), the veteran brings the ship they fly. After the deal, the player has two crewed ships at Earth: the Courier flown by the avatar and the Clipper flown by the veteran.
|
||||||
|
|
||||||
|
This also changes a few things that assumed the player starts with one ship:
|
||||||
|
|
||||||
|
- The veteran's skill becomes **Expensive Cargo 1**. The Clipper's small hold can't carry most Heavy goods, but it suits small, valuable cargo (Medical Supplies, Electronics, Low-G Pharmaceuticals) flown fast.
|
||||||
|
- The Clipper is **part of the loan**: the player is buying the whole business. A free Mars-capable ship would be too big a shortcut.
|
||||||
|
- Two first-session goals and one timing target change, because "buy a second ship" and "fly with the veteran" no longer make sense.
|
||||||
|
- The first real buying decision becomes **Lighter or Freighter**.
|
||||||
|
|
||||||
|
## 2. The deal after this change
|
||||||
|
|
||||||
|
| Item | Before | After |
|
||||||
|
|---|---|---|
|
||||||
|
| Ships | Courier (avatar) | Courier (avatar) **and Clipper (veteran)**, both at Earth |
|
||||||
|
| Veteran | Unassigned at Earth, level 2, Heavy Cargo 1 | **Crewing the Clipper** at Earth, level 2, **Expensive Cargo 1** |
|
||||||
|
| HQ | Earth bay | Earth bay (unchanged) |
|
||||||
|
| Loan | Courier + Earth bay lease | **Courier + Clipper + Earth bay lease** |
|
||||||
|
|
||||||
|
The veteran remains a normal hired pilot in every other respect: profit-share pay (CR-007), duty and rest (CR-004), and assigning or unassigning only at a bay.
|
||||||
|
|
||||||
|
## 3. Rules for this change
|
||||||
|
|
||||||
|
- All rules in `implementation-plan.md` §0.1 apply: steps in order, one commit per step, each step's test must pass, `packages/sim` stays pure, all numbers and names live in `packages/content`.
|
||||||
|
- Resetting the dev and test databases is fine.
|
||||||
|
- Update existing tests whose expectations change. Update `progress.md` after every step.
|
||||||
|
- Stop for the user's review at the end of Phase 10J.
|
||||||
|
|
||||||
|
## 4. Decisions
|
||||||
|
|
||||||
|
Record these in `DECISIONS.md` and `implementation-plan.md` §0.5.
|
||||||
|
|
||||||
|
- **0.5.64 The veteran's Clipper.** Accepting the deal also creates an owned Clipper at Earth with the veteran assigned to it.
|
||||||
|
- **0.5.52 (amended) Veteran skill.** The veteran starts at level 2 with **Expensive Cargo 1** (was Heavy Cargo 1).
|
||||||
|
- **0.5.65 Deal loan.** The deal loan amount is Courier price + Clipper price + Earth bay lease.
|
||||||
|
- **CR-001 goals (amended).** Goal 3 "Buy a second ship" becomes "Buy a ship from the Market". Goal 4 "Fly a contract with [veteran]" (CR-007) becomes "Complete a Priority contract".
|
||||||
|
- **CR-001 timing targets (amended).** "Buy a second ship: 30–45 minutes" (CR-007) becomes "Buy a ship from the Market: 45–75 minutes". "First discovery: under 90 minutes" stays. Add: the loan is paid off within roughly the first two sessions of play (target: under 4 hours of active play).
|
||||||
|
|
||||||
|
## 5. Steps — Phase 10J
|
||||||
|
|
||||||
|
### Step 10J.1 — Content: veteran skill and loan
|
||||||
|
- Change the veteran's starting skill to Expensive Cargo 1.
|
||||||
|
- Set the deal loan amount to Courier + Clipper + Earth bay lease (computed from content prices, not hard-coded).
|
||||||
|
- **Test:** The veteran's starting skill allocation is Expensive Cargo 1 and still fits a level-2 pilot's skill points. The deal loan amount equals the sum of the Courier price, Clipper price, and Earth bay lease, and changes automatically if any of those prices change.
|
||||||
|
|
||||||
|
### Step 10J.2 — Sim: goal changes
|
||||||
|
- Goal 3 completes when the player buys any ship from the Market (ships received in the deal don't count).
|
||||||
|
- Goal 4 completes when a Priority contract resolves, flown by any pilot.
|
||||||
|
- **Test:** Accepting the deal does not complete goal 3; buying a Lighter does. Resolving a non-Priority contract does not complete goal 4; resolving a Priority contract does.
|
||||||
|
|
||||||
|
### Step 10J.3 — Server: deal creates the Clipper
|
||||||
|
- In the accept-deal transaction (CR-001 Step 10A.8, CR-007 Step 10G.4), also create an owned Clipper at Earth and assign the veteran to it. The veteran is no longer left unassigned.
|
||||||
|
- **Test:** After accepting the deal, state has exactly two owned ships at Earth (Courier crewed by the avatar, Clipper crewed by the veteran), one Earth bay, the new loan amount, and the veteran at level 2 with Expensive Cargo 1. Both ships can be dispatched immediately. A failed or repeated accept creates no extra ships.
|
||||||
|
|
||||||
|
### Step 10J.4 — Client: deal modal
|
||||||
|
- The deal modal lists both ships and the veteran, for example: "Old Halvorsen is retiring. He'll sell you his Courier, his Clipper, and his Earth bay — and Rosa Kell, who's flown that Clipper for twelve years. Pay him back out of every job." Names come from content. Show the new loan amount.
|
||||||
|
- **Test:** Component test: the modal shows both ships, the veteran's name and bio, and a loan amount matching state.
|
||||||
|
|
||||||
|
### Step 10J.5 — Plan amendments and regression
|
||||||
|
- Apply the amendments in §6.
|
||||||
|
- Run the full suite.
|
||||||
|
- **Test:** CI is green. The balance script (once it exists) meets the amended timing targets, including the loan payoff target, and runs two policies for the first Market purchase, Lighter-first and Freighter-first; both reach "own four ships" within 25% of each other's time. Manual check: accept the deal on a fresh account, dispatch the Courier and the Clipper at the same time, and complete a Priority contract with the Clipper to unlock goal 4.
|
||||||
|
|
||||||
|
## 6. Amendments
|
||||||
|
|
||||||
|
| Where | Change |
|
||||||
|
|---|---|
|
||||||
|
| Plan 0.5 | Add 0.5.64 and 0.5.65; amend 0.5.52. |
|
||||||
|
| CR-001 10A.5 | Goal 3 text and condition changed (10J.2). |
|
||||||
|
| CR-001 10A.8, 10A.13 | Deal also includes the Clipper; larger loan; modal text (10J.3, 10J.4). |
|
||||||
|
| CR-001 §2 targets | First Market purchase target 45–75 minutes; loan payoff target added. |
|
||||||
|
| CR-007 10G.1 | Veteran's starting skill is Expensive Cargo 1 (10J.1). |
|
||||||
|
| CR-007 10G.3 | Goal 4 is now "Complete a Priority contract" (10J.2). |
|
||||||
|
| CR-007 10G.4 | Veteran starts crewing the Clipper, not unassigned (10J.3). |
|
||||||
|
| CR-007 10G.7 manual check | Replace the rest-and-swap walkthrough with the 10J.5 manual check. |
|
||||||
|
| CR-009 10I.11 | The second-ship balance check (Lighter-first vs Clipper-first) is replaced by the first-purchase check in 10J.5. |
|
||||||
|
| Plan 12.1 | Re-check all timing targets with the larger loan and two starting ships. |
|
||||||
|
|
||||||
|
## 7. Out of scope
|
||||||
|
|
||||||
|
Choosing which ship comes with the deal, starting with more than two ships, changing the Courier's role, and anything else in `implementation-plan.md` §0.3.
|
||||||
|
|
@ -125,7 +125,7 @@ These answer the pre-build review. Log each one in `DECISIONS.md` as it is imple
|
||||||
67. **Models stay distinct** (CR-009). Content caps guarantee: a maxed Courier's capacity is below a base Freighter's; a maxed Bulk Hauler's speed is below a base Freighter's; a maxed Freighter's range is below a base Bulk Hauler's (so only Bulk Haulers reach Jupiter at its farthest). *(Amended by CR-012:)* also a maxed Clipper's capacity is below a base Freighter's; a maxed Courier's speed is below a base Clipper's; a maxed Lighter can't reach Mars from Earth or the Moon on any sampled date; "only Bulk Haulers reach Jupiter at its farthest" is measured from Earth.
|
67. **Models stay distinct** (CR-009). Content caps guarantee: a maxed Courier's capacity is below a base Freighter's; a maxed Bulk Hauler's speed is below a base Freighter's; a maxed Freighter's range is below a base Bulk Hauler's (so only Bulk Haulers reach Jupiter at its farthest). *(Amended by CR-012:)* also a maxed Clipper's capacity is below a base Freighter's; a maxed Courier's speed is below a base Clipper's; a maxed Lighter can't reach Mars from Earth or the Moon on any sampled date; "only Bulk Haulers reach Jupiter at its farthest" is measured from Earth.
|
||||||
68. **Courier to Mars** (CR-009). A Courier with maxed fuel tanks can reach Mars at and around closest approach, but not at Mars's farthest distance. Base and lower-level Couriers still can't reach Mars at all. *(Amended by CR-012:)* measured from Earth; from the Moon it reaches Mars more often, which is fine.
|
68. **Courier to Mars** (CR-009). A Courier with maxed fuel tanks can reach Mars at and around closest approach, but not at Mars's farthest distance. Base and lower-level Couriers still can't reach Mars at all. *(Amended by CR-012:)* measured from Earth; from the Moon it reaches Mars more often, which is fine.
|
||||||
69. **Deduction order** (CR-010). On resolution: pilot pay is taken from the payout first; loan repayment (0.5.32) is calculated on what remains.
|
69. **Deduction order** (CR-010). On resolution: pilot pay is taken from the payout first; loan repayment (0.5.32) is calculated on what remains.
|
||||||
70. **Veteran pilot** (CR-010). Accepting the deal also creates the veteran (CR-010 §2): at Earth, unassigned, level 2 with Heavy Cargo 1. The veteran is a normal hired pilot in every respect except how they were acquired.
|
70. **Veteran pilot** (CR-010). Accepting the deal also creates the veteran (CR-010 §2): at Earth, unassigned, level 2 with Heavy Cargo 1. The veteran is a normal hired pilot in every respect except how they were acquired. *(Amended by CR-013:)* the veteran starts with **Expensive Cargo 1** (was Heavy Cargo 1) and crewing the deal's Clipper (0.5.82), not unassigned.
|
||||||
71. **No accounts yet** (CR-011). Players remain guests. Account linking (email, Apple, Google) stays deferred (§0.3).
|
71. **No accounts yet** (CR-011). Players remain guests. Account linking (email, Apple, Google) stays deferred (§0.3).
|
||||||
72. **Backup code** (CR-011). Each player can have one backup code: random, at least 80 bits of entropy, shown as groups of letters and digits that avoid look-alike characters (no 0/O, 1/I/L). The server stores only a hash. Generating a new code invalidates the old one. Entering a valid code on any device signs that device into the same player. Restore attempts are rate-limited per IP and per device.
|
72. **Backup code** (CR-011). Each player can have one backup code: random, at least 80 bits of entropy, shown as groups of letters and digits that avoid look-alike characters (no 0/O, 1/I/L). The server stores only a hash. Generating a new code invalidates the old one. Entering a valid code on any device signs that device into the same player. Restore attempts are rate-limited per IP and per device.
|
||||||
73. **Several devices** (CR-011). More than one device may be signed into the same player at once; the server is authoritative, so this is safe.
|
73. **Several devices** (CR-011). More than one device may be signed into the same player at once; the server is authoritative, so this is safe.
|
||||||
|
|
@ -137,6 +137,8 @@ These answer the pre-build review. Log each one in `DECISIONS.md` as it is imple
|
||||||
79. **No-strand rule** (CR-012). A dispatch (contract or deadhead) is rejected with `would-strand` if, at arrival plus a configured margin (48 game hours), the ship could not reach any other discovered location from the destination with its effective range from there.
|
79. **No-strand rule** (CR-012). A dispatch (contract or deadhead) is rejected with `would-strand` if, at arrival plus a configured margin (48 game hours), the ship could not reach any other discovered location from the destination with its effective range from there.
|
||||||
80. **New ships** (CR-012). Lighter (short-haul heavy lifter) and Clipper (fast long-legged runner), purchasable, atmospheric.
|
80. **New ships** (CR-012). Lighter (short-haul heavy lifter) and Clipper (fast long-legged runner), purchasable, atmospheric.
|
||||||
81. **Reach targets** (CR-012). CR-012 §3's reach table is the source of truth for ship range values; ship ranges (not location factors) are adjusted so every cell holds.
|
81. **Reach targets** (CR-012). CR-012 §3's reach table is the source of truth for ship range values; ship ranges (not location factors) are adjusted so every cell holds.
|
||||||
|
82. **The veteran's Clipper** (CR-013). Accepting the deal also creates an owned Clipper at Earth with the veteran assigned to it.
|
||||||
|
83. **Deal loan** (CR-013). The deal loan amount is Courier price + Clipper price + Earth bay lease, computed from content.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -636,6 +638,12 @@ Steps 10L.1–10L.11 are specified in `memory-bank/change-requests/CR-012-lighte
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Phase 10M — The Veteran's Clipper (CR-013)
|
||||||
|
|
||||||
|
Steps 10M.1–10M.5 are specified in `memory-bank/change-requests/CR-013-veterans-clipper.md` §5 (written there as 10J.1–10J.5), with its §6 amendments. Done after Phase 10L and before Phase 11; stop for review at the end.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Phase 11 — PWA
|
## Phase 11 — PWA
|
||||||
|
|
||||||
### Step 11.1 — Installable PWA
|
### Step 11.1 — Installable PWA
|
||||||
|
|
|
||||||
|
|
@ -282,3 +282,13 @@ Spec: `memory-bank/change-requests/CR-012-lighter-clipper-range.md` (received as
|
||||||
- [x] **Step 10L.11 — Plan amendments and regression.** CR-012 §7 applied: plan 0.2 (five models), 2.1, 2.3, 3.7, 3.12, 9.8 and 12.1 (Lighter-first and Clipper-first policies, for when the balance script exists); CR-001 10A.16, CR-003 10C.1 and CR-009 10F.1 notes (decisions 0.5.67, 0.5.68 and 0.5.25 were amended in 10L.4–10L.5). Full suite 938 passing, sim lines 99.75 %. Scripted manual check (temporary server): after the deal, buy a Clipper at Earth, crew it with the veteran, wait for a first-contact Earth→Mars job in range (62–95M km), deliver it (Mars discovered), spend the veteran's points on Long Haul, then take a first-contact Mars→Ceres job (186M km, inside 198 × 1.15) and deliver it (Ceres discovered).
|
- [x] **Step 10L.11 — Plan amendments and regression.** CR-012 §7 applied: plan 0.2 (five models), 2.1, 2.3, 3.7, 3.12, 9.8 and 12.1 (Lighter-first and Clipper-first policies, for when the balance script exists); CR-001 10A.16, CR-003 10C.1 and CR-009 10F.1 notes (decisions 0.5.67, 0.5.68 and 0.5.25 were amended in 10L.4–10L.5). Full suite 938 passing, sim lines 99.75 %. Scripted manual check (temporary server): after the deal, buy a Clipper at Earth, crew it with the veteran, wait for a first-contact Earth→Mars job in range (62–95M km), deliver it (Mars discovered), spend the veteran's points on Long Haul, then take a first-contact Mars→Ceres job (186M km, inside 198 × 1.15) and deliver it (Ceres discovered).
|
||||||
|
|
||||||
**Phase 10L complete — waiting for review.**
|
**Phase 10L complete — waiting for review.**
|
||||||
|
|
||||||
|
## Phase 10M — The Veteran's Clipper (CR-013)
|
||||||
|
|
||||||
|
Spec: `memory-bank/change-requests/CR-013-veterans-clipper.md` (received as "CR-010 … Phase 10J"). New decisions recorded as plan §0.5.82–0.5.83; §0.5.70 amended.
|
||||||
|
|
||||||
|
- [ ] Step 10M.1 — Content: veteran skill and loan
|
||||||
|
- [ ] Step 10M.2 — Sim: goal changes
|
||||||
|
- [ ] Step 10M.3 — Server: deal creates the Clipper
|
||||||
|
- [ ] Step 10M.4 — Client: deal modal
|
||||||
|
- [ ] Step 10M.5 — Plan amendments and regression
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue