Repository navigation
fix(seed): drop the upgrade's close horizon from the Acme description - #1748
Merged
Merged
Conversation
The "Current state" bullet asserted the platform upgrade "closes in 30 days" while the record it describes seeds `close_date` as `daysFromNow(30)`. The two agree only at the instant the seed loads: the record resolves to a fixed calendar day and stops moving, the prose keeps saying thirty for as long as that demo database lives. This is where two earlier decisions collided. #1657 wrote the sentence with a real horizon on purpose, replacing a "Renewal due in 45 days" line that named no record at all. #1660 then settled the opposite for `next_step` on the same opportunity — "a second copy is a second thing to drift" — and never swept back over the account description. #1660 generalises. Its reason is about copies and drift, not about which fields a rep may edit, so nothing in it stops at `next_step`; and the ARR bullet in this same block was already put under that rule, so leaving this one meant one three-bullet block running two opposite rules. `daysFromNow(30)` is correct and unchanged — the record owns the date. What is left in the prose stays true however the upgrade is scheduled. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YKN9TPqDSSXUaYqp2j7MZ
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
os-bill
marked this pull request as ready for review
September 7, 2026 15:02
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1713
Description
The
Acme Corporationdescription insrc/data/sales.seed.tskept its own copy of a date. The third Current state bullet asserted that the platform upgrade "closes in 30 days", while the record it describes seedsclose_dateascel`daysFromNow(30)`. The two agree only at the instant the seed loads: the record resolves to a fixed calendar day and stops moving, and the prose keeps asserting thirty for as long as that demo database lives. A demo seeded three weeks ago shows an upgrade closing in nine days beside a description that says thirty.Read this as a ruling conflict, not as someone deleting #1657's work
This card is the conflict between #1657 and #1660, and it has already been adjudicated: the ruling is that #1660 generalises. The removed clause was not an oversight. #1657 put that horizon there on purpose, and its changeset (
.changeset/acme-narrative-and-a-flagged-partner.md) says so in as many words: the line previously read "Renewal due in 45 days", which named no record at all, and it was rewritten to name the upgrade and its real horizon.next_steponAcme Platform Upgradereads: "Do not put a date back here, absolute OR relative: a second copy is a second thing to drift." That ruling never swept back over the account description one screen up.Ruling (R64 triage, comment 5559408218): reading 1 — #1660 generalises; the horizon comes out of the prose. Three reasons, heaviest first:
next_step-only reading. It says "a second copy is a second thing to drift" — that is about copies and drift, not about which fields a rep may edit. The narrow reading requires rewriting what the comment actually says.proposal, and the workshop on the calendar gates the signature. That second half is what the bullet is really about, and it does not drift.Reading 3 (derive the horizon instead of typing it) was not taken:
src/data/revenue.seed.tsalready imports fromsales.seed.ts, so the existing period-label helper cannot be reused in this direction without a circular import, and either way the30would be re-stated outside the record that owns it.Reversibility. This ruling costs one line either way. If the maintainer holds that demo narrative should carry a real horizon (reading 2), reverting is a one-line revert — but then the in-file #1660 comment must be rewritten to state that it is limited to
next_step, or the next reader walks into the same conflict.Changes Made
src/data/sales.seed.ts— the third Current state bullet of theAcme Corporationdescription drops its horizon clause and keeps everything that stays true however the upgrade is scheduled.Before:
After:
The horizon is not re-derived here, it is gone. The bullet immediately above it already states that the upgrade is open and in
proposalstage, so nothing the ruling asked to keep was lost..changeset/acme-description-drops-the-upgrade-horizon.md— new. Seed data is part of the product surface, so this PR carries a changeset rather than reaching forskip-changeset; the gate was left to decide and it wants one.Deliberately unchanged:
Acme Platform Upgrade'sclose_date(cel`daysFromNow(30)`),stage,probabilityandnext_step, plus the #1660 comment abovenext_step— the record owns that date and is correct. Only the prose's second copy is removed. No other relative horizon in this file was swept: #1712 and #1714 own their own lines.Type of Change
What I measured before editing
The heaviest leg of the ruling is a fact about the neighbouring bullet, so I re-tested it first rather than taking it on trust.
origin/main@aad29010it reads- ARR: $220K (signed renewal). Up 22% YoY.— PR fix(seed): stop dating the Acme renewal from the account description #1715's repair is in place, so the ruling's first reason stands. One correction to the grading's wording, substance unaffected: the ARR bullet is not literally adjacent to this one — the "1 open enterprise opportunity" bullet sits between them — but all three are the same Current state block, and the middle bullet carries no date either, so "one block, two opposite rules" is exactly what it was.descriptionfield already generalises The Acme AI governance workshop is scheduled three different ways across three seeded records, and the task to book it is due a day after the event #1660 in writing — "Same ruling as thenext_stepblock below (The Acme AI governance workshop is scheduled three different ways across three seeded records, and the task to book it is due a day after the event #1660): no date goes back into this prose, absolute OR relative." That note governs the whole description, not just the ARR line. fix(seed): stop dating the Acme renewal from the account description #1715's changeset says the same thing: "no date goes back into seed prose, absolute or relative, because a second copy is a second thing to drift." So the standing guard for the next reader is already in the file and needed no second copy of its own.Testing
Full
pnpm verifychain, run in order, each exit code captured before any pipe. Green on1e38ecff:pnpm validate✓ Validation passed (1715ms)pnpm typechecktsc --noEmit, no outputpnpm lint1 warning(s), 12 suggestion(s)— baseline, unchangedpnpm lint:i18n-gate✓ i18n lint gate: 0 i18n/missing-* issuespnpm hygiene✓ source hygiene clean(incl.✓ no raw control bytes in first-party files)pnpm hygiene:tokens✓ source token ratchet clean— this change is a net reductionpnpm build✓ Build complete,Artifact: dist/objectstack.jsonpnpm testTest Files 163 passed (163)·Tests 3430 passed | 1 skipped (3431)No new gate and no new test were added, per the ruling. The validate/lint warning set is byte-identical to the baseline.
验收备注
Noticed while working, filed nowhere and deliberately not swept:
.changeset/acme-narrative-and-a-flagged-partner.md(fix(seed): reconcile the Acme narrative, and flag a non-customer #1657's changeset, still pending release) says the sentence "now names the upgrade, its real horizon and the workshop that gates the signature". After this PR its middle clause describes a state that no longer exists, and both changesets will ship in the same release. I did not edit it: PR fix(seed): stop dating the Acme renewal from the account description #1715 hit the same situation — that changeset also describes lines fix(seed): stop dating the Acme renewal from the account description #1715 then changed — and left it alone, so I followed the landed precedent rather than inventing a new one. If the maintainer wants pending changesets reconciled at release time, that is a release-notes decision, not a rider on this PR.descriptionopens with "The ARR line below used to read..." before stating the general rule. Its operative sentence is already general ("no date goes back into this prose"), so it covers this bullet as it stands. A future editor may want to widen its first sentence so the general rule is not read as ARR-specific — noted only; this card's scope is the one bullet, and adding a second in-file note would itself be the second-copy defect.src/data/sales.seed.tsare inside code comments (60 days ago,80 days ago,110 days agoat lines 266, 322, 383), not in any seeded prose string. They describe the seeded rows rather than being rendered to a user, so they are not the same defect class.Acme Add-on (Lost)prose says "Revisit in Q3" — a hand-typed quarter on a deal seededdaysAgo(25), and today it names the quarter the deal was lost in #1712 ("Revisit in Q3"onAcme Add-on (Lost)) andAcme Annual Renewal 2025's description says "(40 seats)" while its own line item bills 45 — and the 45 is what makes the $220K total, the contract value and the ARR line agree #1714 ("(40 seats)"onAcme Annual Renewal 2025) both live in this file and are held serial by the PM seat. Neither was touched.Generated by Claude Code