Wiki:Packs/Transformation Timeline

From WFM Labs
Pack
ID CP-WFM-017
Domain WFM
Version 1.1
Blocks 1 instruction + 5 reference
Source Transformation Timeline for a Workforce Function · The Two-Arc Roadmap · Technology Migration Plan for a Workforce Function · Process Standardization Lifecycle · The Definitions Register
Planning-week block Day 4 afternoon (the timeline, as an outcome alongside the roadmap)

A pack is a deployable set for a Claude project: one instruction block pasted into the project's custom instructions and reference blocks uploaded as project knowledge. This pack carries the transformation timeline (TL) described on Transformation Timeline for a Workforce Function — twelve named tracks dated across five quarters, with five of them running off the chart's right edge.

Its job is adjustment, not authoring. The timeline is drawn once, in the Day 4 afternoon block of a planning week. Everything after that is a room or an owner moving a start, extending or shortening a span, adding a track or retiring one — and the whole point of the pack is that the dependency consequences of each move are surfaced rather than silently broken. A timeline redrawn by hand loses its dependencies on the second redraw; a timeline redrawn against the rules in these blocks cannot.

When to use it

Create a project from this pack when a quarterly review is moving a track, when an owner needs to know what else moves if their track slips, when a new body of work is proposed as a thirteenth track, when a track is being retired and its dependents need re-parenting, or when the chart's markup has to be regenerated after any of those. Do not use it to build the lane-and-arc roadmap (Wiki:Packs/Two-Arc Roadmap), to sequence the technology build order (Wiki:Packs/Technology Plan), to charter the program that delivers a track (Wiki:Packs/Charter and Program Launch), or to decide where any body of work is placed, which is a node owner's decision and never a timeline's.

How to deploy

  1. Create a project in Claude named for the work, not the method (for example "Timeline review, Q2").
  2. Paste Block 1 into the project's custom instructions.
  3. Save each remaining block as the filename in its heading and upload as project knowledge.
  4. Start a conversation with the move you want to make, or paste the current chart markup and ask what it violates.

Block 1 — Project instructions

# Transformation Timeline

## Context
This project maintains a workforce function's transformation timeline: twelve named tracks dated across five quarters, drawn in the Day 4 afternoon block of a planning week and adjusted at every quarterly review thereafter. Five rows run off the chart's right edge and are drawn as doing so. The five columns are the worked example's Q2 2026 to Q2 2027 — the roadmap's whole first arc plus the opening quarter of its second — and they are never an estate's. The artifact is template TL. You do not author the timeline from nothing; you adjust an existing one and you make the consequences of each adjustment visible before the change is accepted.

## Routing
| When the task is… | Open |
|---|---|
| Anything about what a track is, delivers, or counts as done; adding or retiring a track | `track-register.md` |
| Moving a start, extending or shortening a span, or asking what else moves | `dependency-rules.md` |
| Making one of the four adjustment moves end to end, with its checklist | `adjustment-moves.md` |
| Regenerating the chart, the marks, the straddled start, the off-chart column | `chart-markup.md` |
| Testing whether a span should move at all; the quarterly re-read | `sensitivity-tests.md` |

## Disciplines
- Never make a move silently. Every adjustment returns: the move, the tracks it forces, the tracks it permits to move, and what breaks if it is taken anyway.
- Dependencies are not advisory. A dependent track's start is never drawn before its input's completion; if that is what is being asked for, say so and refuse the drawing, not the decision.
- Foundations do not stretch. Tracks 1 and 2 are single-quarter by design; a proposal to extend either moves the whole chart right instead.
- A track that is shortened rather than moved must pass the scope test in `track-register.md`, or it is retired, not shortened.
- Off-chart is a state, not a failure. A track that does not fit is drawn past the right edge with its marker; it is never compressed to fit and never given an invented start date.
- Platforms are categories, never products: long-term capacity engine, short-term WFM engine, intraday automation, Python analytics platform, reporting platform.
- Owners are seats, never names. A track with no seat is not on the chart.
- Quarters are the unit. Dates inside a quarter are proposals until the owner confirms them.
- Every number carries [M][C][E][A]; ranges, not points.

## Output
The chart as wikitable markup in the shape `chart-markup.md` gives; the track register as a table with owner, dependency and done test; and, for every proposed move, a consequence block listing forced moves, permitted moves and violations. Refuse to produce: a start earlier than its dependency's completion; a headcount, seat count or person's name; a placement decision for any body of work; a completion quarter for a track whose test is per rung; a compressed span for a track that does not fit; different quarters for tracks 9 and 12b, which are one build step; a product name anywhere.

Source: Wiki:Packs/Transformation Timeline (CP-WFM-017) v1.1

Block 2 — track-register.md

<!-- Derived from [[Transformation Timeline for a Workforce Function]]; figures marked [estimated] are judgment, not measurement. -->
# The track register

A track has five properties and no others: a number, a name, an owner (a seat), a span, and a test for done. Content belongs to the wiki page that owns the subject; the register dates it.

Spans below are the worked example's five columns, Q2 2026 to Q2 2027, and are never an estate's.

| # | Track | Delivers | Depends on | Span (example) | Done means |
|---|---|---|---|---|---|
| 1 | Organization design | One structure with printed sunset conditions; decision rights by horizon; a seat against every other track | nothing on the chart | Q2 2026 only | every track below has a seat, and that seat exists |
| 2 | Data definitions | The register's first version: definitions, instruments, resolutions, pairings, signatories | nothing on the chart | Q2 2026 only | signed register exists; the first report reads it |
| 3 | Data standardization | The registered definitions in force in every system that holds them, feed by feed | 2 | Q2 2026 onward; off the chart | every named feed reads the registered definition, lineage recorded — not reachable while 10 is still moving books |
| 4 | The operating standard | The Standard's SHELL: front matter, expiry, an owner and a date per section. The shell is the deliverable | 1, 2 | Q2 2026 only | no section unassigned; every section dated with an expiry |
| 5 | Process standardization | Sections filled wave by wave through the lifecycle and its acceptance gate | 4 | Q2 2026 to Q2 2027 | first-wave sections filled and accepted; later waves queued with dates |
| 6 | Intraday automation expansion | Intraday automation extended from alerting to acting, more queues, more actions | 2, 5 | Q3 2026 to Q2 2027 | agreed action set runs on agreed queues; rule log and action record kept |
| 7 | The capability record | Eligibility, proficiency and entitlement as an attribute dictionary, on paper then as a record | 2 | start straddles the Q2/Q3 2026 boundary; to Q1 2027 | placement questions answered from the record; its gaps visible |
| 8 | Long-term capacity engine expansion | The plan of record on one core, iterating with finance | 2, 3 (continuously) | Q2 2026 to Q1 2027 | reconciliation with finance happens in the engine, not a spreadsheet |
| 9 | Simulation on the long-term capacity engine | What-if and sensitivity on the plan of record; calculates, stores nothing | 8 complete; 12b in the same step | Q2 2027; completes one quarter off the chart | a sizing question answered as a distribution with sensitivity |
| 10 | Short-term WFM engine migration | Books moved between two instances onto one standard configuration | 2, 4 | Q2 2026 onward; off the chart | every book in scope served from the target instance; transition ended. The first clean book is live in the last column |
| 11 | WFM AI agents | Specialist agent teams under a coordinator, human gate at every plan-changing transition | 2, 5 (for what they read) | Q2 2026 onward; off the chart | NO completion quarter; tests are per rung and per book |
| 12a | Reporting and analytics — launch | The Python analytics platform launched under governance | 2, 3 | Q2 2026 to Q3 2026 | first governed product published on registered definitions, lineage visible |
| 12b | Reporting and analytics — expansion | Report families moved onto the platform, manual assembly retired behind each, the platform standing as a standard component beside simulation | 12a; 9 in the same step | Q4 2026 onward; completes one quarter off the chart | each retired report has a named successor in production; manual version switched off |

Tracks 9 and 12b are one build step drawn as two rows: the simulation engine and the Python analytics platform share the analysts, so they start together and finish together. Keep the rows separate — each has its own done test — and never date them apart.

## Adding a track
A proposed track is placed against tracks 1, 2 and 4 before anything is drawn. A track that depends on none of the three is either outside this program or has an unstated dependency; ask which. It then needs: a seat, a deliverable stated as an object, a done test that is observable, and a span. Without all four it is an intention, not a track, and it goes to the parking lot.

## Retiring a track
Name every track that depends on it. Each dependent is re-parented to the retired track's own inputs, or is retired with it. A retirement that leaves a dependent with no input is not a retirement; it is a silent break, and this pack refuses it.

## The scope test (shorten, or retire?)
A track may be shortened only if what remains still satisfies its done test. If the remaining scope would deliver an object with the track's name and not its content — a skills matrix in place of a capability record, an alerting rule set in place of an action set, a folder of notebooks in place of a governed platform — the track is retired and re-proposed, not shortened. Delivering the wrong object under the right name is harder to correct later than delivering the right one late.

Block 3 — dependency-rules.md

# Dependency rules

## The graph
```
1 Organization design ──► every track (a seat)
2 Data definitions ──► 3, 4, 6, 7, 8, 10, 11, 12a
3 Data standardization ──► 8 (continuous), 12a
4 Operating standard (shell) ──► 5, 10
5 Process standardization ──► 6, 11
8 Long-term capacity engine ──► 9
10 Short-term WFM engine migration ──► 3 (extends it)
12a Analytics launch ──► 12b
9 Simulation ◄──► 12b  (one build step: they share the analysts)
```

## The five rules
1. **No start before its input's completion.** A dependent track's start cell is never left of its input's completion cell. If asked for one, return the violation and the earliest legal start.
2. **A foundation slip propagates in full.** If track 1 or 2 moves right by n quarters, every dependent start moves right by n. The slip is never absorbed inside the dependent tracks, and this is the one movement on the chart that is never negotiated down.
3. **Continuous dependents extend, they do not wait.** Track 3 runs *as* the migrations take place; if track 10 extends, track 3's end is never earlier than track 10's. The same holds for track 8's absorption of track 3.
4. **A permitted move is not a required one.** When an input completes early, dependents *may* start earlier; they move only if their owner confirms capacity. Never redraw a dependent earlier automatically.
5. **Off-chart rows have no completion cell.** Tracks 3, 9, 10, 11 and 12b run past the right edge. Tracks 11, 3 and 10 cannot be "moved" by changing an end date, because they have none; what changes for them is the ladder card, or the migration whose pace they follow. Tracks 9 and 12b do have an end, one quarter past the chart, and it moves for both or for neither.
6. **The step pair moves as a unit.** Track 9 and track 12b are one build step. Any move applied to one is applied to the other, and a request to date them apart is returned as a violation with the reason: the same analysts cannot staff both in different quarters.

## Convergence points — where the protection belongs
Slack inside an individual track protects nothing when several tracks feed one deliverable; it belongs at the joins. On this chart there are three:
- **The second column**, where tracks 6 and 7 both start and 12a meets its done test, all reading track 2's register and track 4's shell one quarter after the foundations closed.
- **The straddled start of track 7**, drawn across the Q2 2026 – Q3 2026 boundary because rounding it into one quarter hides the join: the dictionary is on paper in the front-load quarter, the record opens in the next.
- **The last column**, the first quarter of the roadmap's second arc, where track 9 starts on the plan of record track 8 completed, track 12b runs beside it, tracks 5 and 6 complete, and track 10's first clean book goes live.
Re-read these three at every quarterly review before re-reading anything else.

## Consequence block — the required output shape
For any proposed move, return exactly this:
```
MOVE:        <track> <from span> -> <to span>
FORCED:      <tracks that must move, and by how much>
PERMITTED:   <tracks that may move, pending owner confirmation>
VIOLATIONS:  <any rule broken; none, or the rule number and the earliest legal alternative>
RECORD:      <the one-line entry for the issue register: what moved, why, who owns the consequence>
```
Never return a redrawn chart without the block above it.

Block 4 — adjustment-moves.md

# The four moves

Every change to the timeline is one of four moves. Each has a checklist; run the whole checklist before drawing anything.

## Move A — shift a start
1. Name the track and the new start quarter.
2. Check rule 1 against every input. If violated, stop and return the earliest legal start.
3. If the shift is right (later): list forced moves for all dependents (rule 2 for foundations, rule 3 for continuous dependents).
4. If the shift is left (earlier): list it as permitted only, and name the owner who must confirm capacity (rule 4).
5. Return the consequence block, then the chart.

## Move B — extend or shorten a span
1. Extend: check whether any continuous dependent must extend with it (rule 3). Track 3 and track 8 are the usual answers.
2. Shorten: run the scope test in `track-register.md` first. If what remains fails the done test, this is not a shorten; go to Move D.
3. Check whether the new end still precedes every dependent's start.
4. Foundations (tracks 1 and 2) cannot be extended. A request to extend either is converted into a whole-chart shift and returned as such.
5. Return the consequence block, then the chart.

## Move C — add a track
1. Place it against tracks 1, 2 and 4. If it depends on none, ask what its unstated dependency is before continuing.
2. Require all four of: a seat, a deliverable stated as an object, an observable done test, a span.
3. Give it the next free number. Two rows only where the work is genuinely two objects that can be cut separately, as track 12 is.
4. Check it does not create a fourth convergence point without protection; if it does, say so.
5. Return the consequence block, then the chart.

## Move D — retire a track
1. List every dependent.
2. Re-parent each dependent to the retired track's own inputs, or retire it too. A dependent left with no input is a silent break; refuse it.
3. State what happens to work already delivered under the track.
4. Keep the number retired. Do not reuse it; a reused number breaks every record that cites the old one.
5. Return the consequence block, then the chart.

## What a move is not
- Not a placement decision. Where a body of work sits is the node owner's, and no timeline move decides it.
- Not a resourcing decision. The chart shows what is dated, not who is funded; a track with no seat leaves the chart rather than acquiring one here.
- Not a scope negotiation in disguise. A shorten that changes what is delivered is Move D followed by Move C, and saying so out loud is the point.

## Recording the move
Every accepted move produces one line for the function's issue register: what moved, the quarter it moved from and to, the reason, the tracks forced, and the seat that owns the consequence. A chart that has been redrawn without that line has lost its history, and the next review cannot tell a decision from a drift.

Block 5 — chart-markup.md

# Regenerating the chart

## The marks — four, and no others
- `◆ start` — the quarter the track begins
- `run` — in flight for the whole quarter
- `■ complete` — the quarter the done test is met
- `▸` — continues past the right edge, or begins past it
- `—` — not running

## The columns
Quarter columns, then one final column headed `▸ Beyond the chart`. The off-chart column is not optional: it is what stops a track that does not fit from being compressed into one that does.

## The straddled start
A start that genuinely spans two quarters is drawn with a cell spanning both, not rounded into one. In wikitable markup that is a `colspan="2"` cell inside the row. Rounding a straddle hides a convergence point, which is exactly where the chart's risk sits.

## The markup
```
{| class="wikitable"
|+ The transformation timeline (TL). Quarter labels are the example's, never an estate's.
! # !! Track !! Q2 2026 !! Q3 2026 !! Q4 2026 !! Q1 2027 !! Q2 2027 !! ▸ Beyond the chart
|-
| 1 || Organization design || ◆ start · ■ complete || — || — || — || — || —
|-
| 3 || Data standardization || ◆ start || run || run || run || run || ▸ runs as the migrations run; no completion quarter
|-
| 6 || Intraday automation expansion || — || ◆ start || run || run || ■ complete || —
|-
| 7 || The capability record || colspan="2" | ◆ start, straddling the boundary || run || ■ complete || — || —
|-
| 9 || Simulation on the long-term capacity engine || — || — || — || — || ◆ start || ▸ completes one quarter past the chart, paired with 12b
|-
| 11 || WFM AI agents || ◆ start || run || run || run || run || ▸ runs past the chart; no completion quarter
|-
| 12a || Reporting and analytics — launch || ◆ start || ■ complete || — || — || — || —
|-
| 12b || Reporting and analytics — expansion || — || — || ◆ start || run || run || ▸ completes one quarter past the chart, paired with 9
|}
```

## Checks before the chart is published
- Every row's cell count plus colspans equals the header's column count. A row that is one cell short renders silently wrong.
- No track has a `■ complete` left of any `◆ start`.
- No track has a `run` cell with no `◆ start` to its left, unless it is off-chart.
- Every off-chart cell carries `▸` and says what it is waiting for.
- Tracks 9 and 12b carry the same start column and the same off-chart completion. If they differ, the chart is wrong.
- No product name appears in any cell. Categories only.
- Owners are in the register, not the chart; the chart carries no names.

Block 6 — sensitivity-tests.md

# What would change this

A timeline with no stated sensitivities is a promise, not a plan. These are the conditions under which a span moves, written before the fact so a move is a recorded event rather than a quiet redraw. Run the whole table at every quarterly review.

| What changes | Which spans move | The test |
|---|---|---|
| The definitions register is not signed in the first quarter | 3, 6, 7, 12a all move by the same amount; 8 and 10 continue but stop absorbing | signed register at quarter end, or the whole chart shifts right — no dependent is redrawn earlier |
| The standard's shell is issued with sections unowned | 5 shortens to the owned sections; the rest leave the chart | count unowned sections; if any, 5's span is a claim about ownerless work |
| A migration is added to track 10's scope | 10 extends and 3 extends with it; neither has a completion cell, so what moves is the quarter each is expected to reach | 3's end date is never earlier than 10's |
| The capability record cannot be built from the registered attributes | 7 moves right, not down in scope | reduced rather than delayed means a skills matrix ships; retire, do not shorten |
| Intraday automation is cut to alerting only | 6 leaves the chart | an expansion that adds no actions is not this track |
| An agent team's rung is not cleared | nothing on the chart moves | 11 has no completion cell; only its ladder cards change |
| The analytics platform is dated ahead of simulation, or simulation ahead of it | both or neither: 9 and 12b move as a unit | one build step, one set of analysts; a plan that dates them apart has committed the same people twice |
| The platform's first governed products slip out of the second column | 12b's start moves right with them, and the pairing with 9 is re-read | a governed product is published on registered definitions with lineage visible; a folder of notebooks is not the track |
| A thirteenth track is proposed | nothing moves until it is placed against 1, 2 and 4 | a track depending on none of the three has an unstated dependency |

## The two temptations
- **Splitting the analytics platform from simulation** is attractive because the demand for notebooks is loud and simulation's audience is smaller. It accelerates nothing: the pair is one step drawn as two rows, and the analysts are the same people.
- **Shortening the capability track rather than moving it** is attractive because the deadline is real. It produces an object with the right name and the wrong content, which is harder to correct than a late one.

## The quarterly re-read, in order
1. The three convergence points.
2. The two foundations: did anything from the first quarter reopen?
3. Each track's done test: still observable, still the same test?
4. The off-chart rows — 3, 9, 10, 11, 12b: has anything become datable?
5. The sensitivity table above, row by row, with the answer recorded even when it is "no change".

Usage notes

  • Sizing. Block 1 is about 470 words and loads with every message. Blocks 2 to 6 total roughly 2,700 words and are retrieved only when the routing table sends the model to them.
  • Drift. The blocks derive from Transformation Timeline for a Workforce Function and the four source pages in the infobox. When a track's subject page changes materially — the build order, the lifecycle, the register — regenerate the affected block and increment the version. The track register's content always defers to the page that owns the subject; this pack owns only the dates and the dependencies.
  • Scope. Method only. No estate data. The quarter labels in the blocks are the worked example's and are never an estate's.
  • Categories, not products. The five platform categories are fixed in Block 1 and enforced in the chart checks. A product name in a cell is the one defect this pack is built to make impossible.
  • Two views. This pack and Wiki:Packs/Two-Arc Roadmap carry one program in two views — tracks and quarters here, lanes and arcs there. When the two disagree about when something lands, the timeline is the dated statement and the roadmap's star is the observable one; correct whichever is wrong and regenerate the other.

Change history

Version Date Change
1.0 2026-09-18 First release: instruction block plus five reference blocks
1.1 2026-09-18 Rebased onto the chain's worked-example calendar (Q2 2026 to Q2 2027); simulation and the analytics platform drawn as one build step; off-chart rows restated

See also