sequence_portfolio
Turn a scored AI portfolio into three waves with gates over a configurable horizon, so the roadmap respects the change capacity of each business function. CALL THIS after score_portfolio when the user asks what to stop, fund first, defer or fit into the next 90 days. It does not change any verdict or re-score the business case. Stops enter wave 1 to reclaim budget and attention, quicker Accelerates enter wave 2, complex Accelerates and Fixes enter wave 3 behind their re-score gates. Pass the portfolio returned by score_portfolio directly through portfolio, or pass organization plus initiatives; both score shapes are accepted and nested values are flattened. readiness sets capture rates and pacing, max_parallel_per_function caps simultaneous change in one function per wave, and horizon_days divides the plan into three equal windows. Capacity overflow is reported as a conflict or a deferral beyond the horizon, never hidden. Run recommend_improvements for a Fix before treating its wave placement as permission to proceed. Pure deterministic calculation, no network, auth, or side effects.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| portfolio | No | Alternative input: the same AI BVF v1.0 portfolio document score_portfolio accepts (organization + initiatives with nested {value} pillar scores). Pass either this OR the top-level organization + initiatives; nested score values are flattened automatically, and missing pillars are estimated honestly. | |
| readiness | Yes | Organisational readiness applied across the portfolio; sets capture rates and pacing. Measure it with infer_readiness when process numbers exist. | |
| constraints | No | Change-capacity constraints. The defaults encode the core principle: no function absorbs unlimited concurrent change. | |
| initiatives | No | The portfolio to sequence. Each initiative carries flat 0-100 pillar numbers (not the nested value objects of the portfolio wire format). | |
| organization | No | Organisation context used when initiatives are passed at the top level. Required with top-level initiatives and ignored when portfolio is supplied. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| audit | Yes | Reproducibility record: engine version, the rules that fired, and the resolved inputs. Deterministic, no timestamps. If the verdict is challenged months later, the same inputs on the same engine version reproduce it exactly. | |
| waves | Yes | Three waves with named gates: Stops first (free the budget), quick Accelerates second (buy trust), complex Accelerates plus Fixes third (spend the trust). Present this to the user as the rollout plan. | |
| totals | Yes | Counts: stopped, quick_wins, complex_or_fix, deferred. | |
| skipped | No | ||
| bvf_version | Yes | ||
| capacity_conflicts | Yes | Where more initiatives land on one function than it can absorb per wave, with the deferral applied. Surface these: an overloaded function is how good portfolios fail. | |
| sequencing_principles | Yes | ||
| deferred_beyond_horizon | No | Initiatives that did not fit the horizon under the capacity constraint; they need their own decision. | |
| aggregate_accelerate_value_eur | No | Sum of modelled net EUR for the sequenced Accelerates, low and high. |