AI-SDLC
AI-SDLC
API Reference

Priority Scoring

Priority Scoring (PPA)

The Product Priority Algorithm (PPA) provides autonomous work item prioritization. It computes a composite priority score from seven dimensions that capture product alignment, market signals, execution feasibility, and human input.

Quick Start

import { computePriority, rankWorkItems } from '@ai-sdlc/orchestrator';

const score = computePriority({
  itemId: 'ISS-42',
  title: 'Add dark mode',
  description: 'Users want dark mode for night-time readability',
  soulAlignment: 0.8,
  customerRequestCount: 12,
  complexity: 3,
});

console.log(score.composite);  // e.g., 0.4821
console.log(score.confidence); // e.g., 0.1875

Configuration

Priority scoring is configured via the priorityPolicy field on a Pipeline resource:

apiVersion: ai-sdlc.io/v1alpha1
kind: Pipeline
metadata:
  name: prioritized-delivery
spec:
  priorityPolicy:
    enabled: true
    minimumScore: 0.1
    minimumConfidence: 0.3
    soulPurpose: "Empower developers to ship reliable software faster"
    dimensions:
      humanCurveWeights:
        explicit: 0.5
        consensus: 0.3
        decision: 0.2
    calibration:
      enabled: true
      lookbackPeriod: P30D
    adapters:
      supportChannel: zendesk-support
      crm: hubspot-crm
      analytics: posthog-analytics
  # ... triggers, providers, stages

Composite Formula

P(w) = Sa(w) x Dp(w) x Mf(w) x Er(w) x (1 - Et(w)) x (1 + HC(w)) x Ck(w)

Dimensions

SymbolNameRangeDescription
SaSoul Alignment[0, 1]Alignment with product mission
DpDemand Pressure[0, 1.5]Customer requests, demand signals, bug severity
MfMarket Force[0.5, 3.0]Tech inflection, competitive pressure, regulatory urgency
ErExecution Reality[0, 1]Inverse complexity, budget headroom, dependency clearance
EtEntropy Tax[0, 1]Competitive drift and market divergence
HCHuman Curve[-1, 1]Explicit priority, team consensus, meeting decisions
CkCalibration[0.7, 1.3]Auto-calibrated or operator-tuned coefficient

A zero in any multiplicative dimension (Sa, Dp, Er) vetoes the work item entirely.

API Reference

computePriority(input, config?)

Compute the PPA composite priority score for a single work item.

Parameters:

  • input: PriorityInput — Work item data and signal values
  • config?: PriorityConfig — Optional weights and calibration coefficient

Returns: PriorityScore

interface PriorityScore {
  composite: number;
  dimensions: {
    soulAlignment: number;
    demandPressure: number;
    marketForce: number;
    executionReality: number;
    entropyTax: number;
    humanCurve: number;
    calibration: number;
  };
  confidence: number;  // [0, 1] based on provided vs defaulted inputs
  timestamp: string;
  override?: { reason: string; expiry?: string };
}

rankWorkItems(items, config?)

Score and rank multiple work items by descending composite priority.

Parameters:

  • items: PriorityInput[] — Array of work items to score
  • config?: PriorityConfig — Optional weights and calibration

Returns: Array<PriorityInput & { score: PriorityScore }>

PriorityInput

FieldTypeDimensionDescription
itemIdstringWork item identifier
titlestringWork item title
descriptionstringWork item description
soulAlignmentnumber?SaPre-computed alignment score [0, 1]
customerRequestCountnumber?DpNumber of customer requests
demandSignalnumber?DpRecency-weighted demand [0, 1]
bugSeveritynumber?DpBug severity (1-5, 5=critical)
builderConvictionnumber?DpRoadmap priority [0, 1]
techInflectionnumber?MfTechnology inflection relevance [0, 1]
competitivePressurenumber?MfCompetitive pressure [0, 1]
regulatoryUrgencynumber?MfRegulatory urgency [0, 1]
complexitynumber?ErTask complexity (1-10)
budgetUtilizationnumber?ErBudget utilization percent
dependencyClearancenumber?ErDependencies clear [0, 1]
competitiveDriftnumber?EtCompetitive drift [0, 1]
marketDivergencenumber?EtMarket divergence [0, 1]
explicitPrioritynumber?HCExplicit priority [0, 1]
teamConsensusnumber?HCTeam consensus signal [0, 1]
meetingDecisionnumber?HCMeeting decision weight [0, 1]
overrideboolean?Bypass algorithm (composite = Infinity)
overrideReasonstring?Reason for override

PriorityConfig

FieldTypeDefaultDescription
humanCurveWeights.explicitnumber?0.5Weight for explicit priority
humanCurveWeights.consensusnumber?0.3Weight for team consensus
humanCurveWeights.decisionnumber?0.2Weight for meeting decisions
calibrationCoefficientnumber?1.0Manual calibration override [0.7, 1.3]

Calibration

The calibration loop records each pipeline execution outcome and uses historical data to adjust the calibration coefficient:

import { StateStore } from '@ai-sdlc/orchestrator';

const store = StateStore.open('.ai-sdlc/state.db');

// Record a sample after pipeline execution
store.savePrioritySample({
  issueId: 'ISS-42',
  priorityComposite: 0.85,
  priorityConfidence: 0.7,
  outcome: 'success',
  filesChanged: 5,
});

// Compute auto-calibrated coefficient
const coefficient = store.computeCalibrationCoefficient();
// Returns 1.0 with no data, adjusts with historical samples

Integration with Watch Loop

When priorityPolicy.enabled is true, the watch loop automatically scores items before enqueueing:

  • Items below minimumScore are silently skipped
  • Items below minimumConfidence are flagged for review
  • The composite score is passed to ReconcilerLoop.enqueue() for priority ordering