---
id: TST-PFM-INT-632
title: Workflow action contracts
kind: unit
product_area: platform
module: integrations
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: macroservice-libraries
files:
  - packages/workflow-actions/src/contracts.spec.ts
implements: []
environment: mock
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: 'The test process owns its inputs, fake clocks and any replaced runtime ports.'
test_cases:
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#parses the 07 §5 example and
      fills halt_batch false and enabled true
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a key it does not
      know (strict), and a camelCase spelling of one it does
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a duration that is
      not ISO 8601
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a condition the
      rules grammar refuses, at the condition’s path
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a list that uses a
      key twice
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a repeat of fewer
      than two occurrences
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#stage.entered matches its
      point and no other
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#stage.exited with outcomes
      matches only those outcomes; without, every exit
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#decision.recorded with kinds
      and outcome codes matches when both hold
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#the submission lifecycle
      points each match themselves
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#event matches the business
      event it names
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#another host’s registered
      point takes the plain shape; a shaped point may not
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#timer triggers (elapsed,
      deadline, SLA) are scheduled, never matched by a raise
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#a deadline is a local
      date-time, an anchor plus a duration, or the end of a month
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#fills the occurrence’s
      defaults: occurrence 1, no effect, no facts, no anchors, no provenance
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses an occurrence whose
      instant has no offset
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#a calendar needs both
      working hours or neither, the end after the start, and no weekday twice
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#parses a batch message and
      refuses one that is not ours
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#defineTriggerPoint declares
      a point, its host and its facts, frozen
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#defineTriggerPoint refuses a
      key that is not <noun>.<verb>
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#declareHostFacts holds the
      host’s facts and each point’s, frozen; the facts at a point add what the library supplies
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#declareHostFacts refuses
      another host’s trigger point, a point twice, and a malformed fact key or host kind
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#defineActionType declares a
      type whose manifest entry carries draft-7 JSON Schemas of its params and outputs
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#defineActionType refuses a
      durable type without a service function, before any manifest is built
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#defineOutcomeKind declares a
      durable outcome-category type on decision.recorded with its mappable paths
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#outputReferencesOf finds
      every output reference in params, at any depth
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#accepts the manifest
      buildManifest builds
  - provenance: test
    source: 'macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a key declared twice'
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses an action type
      another application declares
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a durable type with
      no executor function name
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses an inline type that
      names a network call
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a host type without
      a host
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a shipped template
      whose group holds a host action
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#refuses a shipped template
      whose group holds an action whose outputs another references
  - provenance: test
    source: >-
      macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts#reports a shape problem as
      schema, never throws
evidence:
  - 'macroservice-libraries:packages/workflow-actions/src/contracts.spec.ts'
---
# Workflow action contracts

## Verification Boundary

This unit suite exercises workflow action contracts within the shared package. It records engineering coverage at the pinned revision without claiming a deployed run.

## What This Suite Proves

The source assertions cover the package behavior under controlled inputs. No detailed capability or feature scenario binding is verified in this registration.

## What It Does Not Prove

The suite does not establish deployed authorization, database behavior, provider effects or a complete customer workflow.

## Real Dependencies and Test Doubles

Imported package functions execute against the source-defined fixtures. Runtime ports, clocks and external transport responses remain controlled wherever the suite replaces them.

## Must Not Be Doubled

The shared function under test and its result assertions must execute. Returning an expected answer from a substitute does not prove the package behavior.
