or run

npx @tessl/cli init
Log in

Version

Files

docs

index.md
tile.json

task.mdevals/scenario-7/

Release Plan Aggregator

Produces a combined rollout plan from stable and beta feature lists while handling blocked items and release windows.

Capabilities

Build unique roadmap

  • Combine stableFeatures and betaFeatures in the order they appear into a single list with duplicates removed by first appearance, then drop any entries found in blockedFeatures. Chunk the resulting list into batches of size sprintSize, leaving a shorter final batch if needed, and expose it as mergedRoadmap. @test

Identify overlaps and exclusives

  • Produce sharedFeatures containing every feature that appears in both stable and beta lists after blocked items are removed, preserving the order from stableFeatures.
  • Produce betaOnlyFeatures containing items from betaFeatures that are not present in stableFeatures and not blocked, preserving the order from betaFeatures. @test

Pair features to windows

  • Flatten mergedRoadmap and pair each feature with releaseWindows in order, producing releasePairs as [feature|null, window|null] tuples. Continue pairing until the longer of the two lists is exhausted, using null when one side is missing a value. @test

Implementation

@generates

API

/**
 * Builds a rollout plan from stable and beta feature inputs.
 * @param {Object} input
 * @param {string[]} input.stableFeatures - Prioritized stable items.
 * @param {string[]} input.betaFeatures - Experimental items to integrate.
 * @param {string[]} input.blockedFeatures - Items to exclude everywhere.
 * @param {string[]} input.releaseWindows - Time windows, ordered soonest-first.
 * @param {number} input.sprintSize - Desired chunk size for roadmap batches.
 * @returns {Object} plan
 * @property {string[][]} plan.mergedRoadmap - Chunked, de-duplicated, unblocked feature batches.
 * @property {string[]} plan.sharedFeatures - Items present in both stable and beta after blocking.
 * @property {string[]} plan.betaOnlyFeatures - Items unique to beta after blocking.
 * @property {Array<[string|null, string|null]>} plan.releasePairs - Sequential pairing between flattened roadmap and release windows.
 */
function buildReleasePlan(input);

Dependencies { .dependencies }

lodash { .dependency }

Provides array combination and set-style helpers.