name: legacy-ibmi-flow-analyzer description: Merge multiple IBM i program-analysis artifacts into a compact SME program-set core review, especially when an SME provides a program-flow list and wants Calculation Logic, Validation Logic, Exception Handling, and Message Inventory. Default field workflow is program-evidence first with no cross-run reuse: analyze every distinct SME-provided program for the current run, reuse only artifacts produced earlier in the same run/batch, then assemble the self-contained program-set review. Supports source inventory cache reuse from outputs/repo-scan when fresh and explicit full transaction-flow analysis for seven trigger models when requested separately. Layer 1.5 (platform-specific) skill of the Legacy Spec Factory reverse chain.
IBM i Legacy Flow Analyzer
Skill Card
| Field | Notes |
|---|---|
| Problem solved | Merges a SME-provided multi-program flow/list into one compact program-set core review without losing any requested program. Full transaction-flow analysis remains available only when explicitly requested. |
| Input | Approved inventory, current-run program analyses, trigger context, runtime clues, screen/report evidence, and SME notes. |
| Output | For SME-provided program-flow/core merge requests, program-set-sme-core-review.md only. For separately requested full transaction-flow analysis, flow-<FLOW-SLUG>.md. |
| Core prompt strategy | Resolve every SME-provided program to current-run program-analysis evidence first: analyze every distinct program from source, reuse only artifacts produced earlier in the same run/batch, aggregate compact core artifacts, preserve SME order as navigation evidence, and expose missing programs/sections in a completeness ledger. |
| Upstream skill | legacy-ibmi-program-analyzer and legacy-ibmi-inventory. |
| Downstream consumer | legacy-ibmi-module-analyzer, legacy-brd-writer, and capability/spec preparation. |
| Validation standard | All called programs and files map to inventory IDs, trigger model is declared, and unresolved branches are not hidden. |
| Known risk | Over-connecting programs into a transaction flow because names or call chains look related. |
| Practical example | Analyze an order-release flow from menu option through RPGLE validation, update programs, spool output, and error handling. |
Purpose
For the current SME program-flow workflow, merge multiple analyzed programs
into one compact program-set SME core review. Where
legacy-ibmi-program-analyzer looks inside one program, this skill combines
the already-produced core logic from every program the SME named, without
re-reading full source and without producing a full engineering flow artifact.
Full transaction-flow analysis is still available when explicitly requested, but it is not the default output for SME-provided program-flow intake.
The primary orientation view is a Transaction Call Map: an RDi-style cross-program/cross-boundary call map. It is not a statement-level flowchart. It should preserve the transaction's program and external dependency structure while keeping full call details in tables.
The default field workflow is program-evidence first with no cross-run
reuse. For every program named by the SME in the program flow, use the source
inventory cache to locate and classify the source, run
legacy-ibmi-program-analyzer with the appropriate normal, complex, or large
strategy, and write the program-level artifacts to the delivery working branch
for this run. If the same program appears again in the same SME batch, reuse the
artifact already produced in this run; do not reuse remote-main, prior-run, or
other analysts' artifacts as the default evidence source. Only after every
SME-provided program has enough routine evidence should this skill assemble
program-set-sme-core-review.md.
Git remains the review and conflict-resolution mechanism. If two analysts produce different program-analysis artifacts, compare them through normal branch diff/PR review rather than silently treating older artifacts as approved input.
Before analyzing unresolved programs from source, this skill uses the source
repo inventory cache. By default it checks
<source-root>/outputs/repo-scan/program-list.csv and
<source-root>/outputs/repo-scan/scan-summary.yaml. If the cache exists and
scan-summary.yaml.source_revision_key matches the current clean Git source
HEAD, reuse the inventory to locate source path and size tier. If the cache is
missing, stale, or the source worktree has uncommitted source changes, rerun
legacy-ibmi-inventory repo-level scan first.
This skill supports these assembly modes:
core_review_only(default for SME-provided program-flow input) — user provides an ordered or partial program flow/list; the analyzer producesprogram-set-sme-core-review.mdby first resolving every SME-provided program to current-run working-branch program-analysis artifacts, then merging those compact artifacts. Do not produceflow-<FLOW-SLUG>.mdin this mode.orchestrated— start from a trigger / entry program, discover the involved programs, run or route missing per-program analysis first, then assemble a full transaction flow from the generated compact artifacts. Use only when the user explicitly asks for full flow analysis.assemble_existing— user provides existing per-program analysis directories, and the flow analyzer assembles them into one flow, filling only missing artifacts when possible. Use only when the user explicitly asks for full flow analysis.
This skill does not re-analyze individual program semantics during the
assembly step. Every program in the program set must first have program
analysis evidence from a current working-branch scan. Normal-program core artifacts are
program-analysis.md, program-analysis-summary.yaml, source-index.yaml,
routine-index.md, and message-inventory.yaml. Complex, large, or explicitly
deep-read programs must also include routine-logic-details.md and
routine-logic-details.yaml; optional sidecars such as file-io-inventory.yaml,
field-mutation-matrix.yaml, and sql-inventory.yaml are required only when
program-analyzer triggers produced them or when the flow claim needs file I/O,
persisted mutation, or SQL evidence. Complex and large programs must retain
enough deep-read evidence, such as deep-read-plan.md,
all-routine-coverage-ledger.md, and
routine-logic-details/deep-read-batch-*.md, to make handoff stable under weak
LLM constraints. If required core artifacts or claim-specific optional
artifacts are missing, route only that program back to
legacy-ibmi-program-analyzer instead of concatenating full Markdown analyses
or restarting the whole flow.
This skill also supports two analysis intents:
standalone_exploratory— default. Use for quick SME validation, partial flow scans, or assembling existing program artifacts before the chain is fully approved. Missing inventory approval, missing sidecars, or incomplete program approval become downstream-readiness gaps / TBDs, not immediate blockers, unless the trigger is ambiguous or the requested flow cannot be scoped to one business transaction.chain_ready— strict downstream mode. Requires approved inventory, approved program analyses, required compact sidecars, coverage gates, and trigger clarity before the flow can feed module/BRD/spec work.
This skill does not infer business rules. It captures the structure
of the transaction so that downstream legacy-spec-writer (via
legacy-ibmi-module-analyzer) can derive business rules with proper SME
involvement.
Inputs
Accept:
- Analysis intent —
standalone_exploratoryby default, orchain_readywhen the user explicitly asks for downstream-ready output. - SME-provided program flow — an ordered or partial list of programs,
entry/exit hints, menu/job/API context, or a rough sequence from the SME.
When the SME provides a program flow for the current core-merge workflow,
default
flow_scan_modetocore_review_only, preserve the supplied order as SME navigation evidence, and outputprogram-set-sme-core-review.md. Reconcile contradictions against upstream Call Evidence as notes/TBDs rather than silently rewriting the SME-provided list. - Multiple SME-provided program flows — one request may contain multiple
named flow blocks. Treat each block as a separate program set with its own
review name, program list, manifest, and
{review_slug}output folder underdelivery_workspace_profile.program_set_review_parent. Reuse the same source inventory cache, delivery working branch, and PR when they belong to the same SME batch. If the same program appears in more than one flow block, analyze it once in the current batch and reuse that current-run artifact for sibling reviews. Do not merge unrelated business flows into oneprogram-set-sme-core-review.md. - Delivery workspace profile — optional
delivery_workspace_profiledescribing where new scan output is written in the delivery repo. The current default isbranch_mode: use_or_create_providedwith a provideddevelop-<person>branch such asdevelop-leo; create it fromorigin/mainif it does not exist, but never write directly tomain. - Program artifact resolution profile — optional
program_artifact_resolution_profiledescribing folder patterns, artifact filenames, and program-name normalization for current-run artifact lookup under the working root. This profile does not authorize cross-run reuse. - Source inventory profile / source root — optional
source_inventory_profileplus source repo path. The default cache is<source-root>/outputs/repo-scan/withprogram-list.csvandscan-summary.yaml. Teams may change filenames or cache directory in the profile; SMEs should not edit these values every run. - Flow definition — the entry point of the chain, declared as one of
seven trigger types (see
references/trigger-models.md):- batch job (CL + SBMJOB or direct CALL)
- interactive menu (
*MENUoption selection) - subfile dispatch (option codes 1/4/5/9/etc.)
- F-key branch (DSPF function-key handling)
- DB trigger (file trigger program)
- scheduler (WRKJOBSCDE entry)
- API / remote (remote PGM call, MQ message, HTTP, IFS drop)
- Current-run program analyses for every program in the chain. Preferred
core inputs are compact artifacts from
legacy-ibmi-program-analyzer:program-analysis-summary.yaml,source-index.yaml,message-inventory.yaml, and the human reviewprogram-analysis-<OBJ-ID>.md/program-analysis.mdwhen needed.routine-logic-details.yamlis required for complex, large, or explicitly deep-read programs, and optional for lightweight normal-program output. Optional sidecars (file-io-inventory.yaml,field-mutation-matrix.yaml,sql-inventory.yaml) are required only when present/triggered by the program tier or when the flow needs native file I/O, persisted field mutation, or SQLRPGLE evidence. - Run resolution per program — record one row per requested or discovered
program with
run_resolution:analyzed_this_run,reused_same_run,pending_source, orblocked_missing_source. Do not mark a program complete from remote-main or prior-run artifacts. - Approved inventory with
relationshipspopulated for the involved objects - Optional: SME notes on trigger context, BAU rhythm, known error scenarios
- Optional: DSPF / PRTF / MENU object definitions (for UI-aware flows)
Each upstream program-analysis should expose the program-chain readiness
sections and sidecars from legacy-ibmi-program-analyzer v0.2.5 or later:
program-analysis-summary.yaml, source-index.yaml,
message-inventory.yaml, plus routine-logic-details.yaml when the tier or
deep-read trigger requires it, and triggered optional sidecars
(file-io-inventory.yaml, field-mutation-matrix.yaml,
sql-inventory.yaml),
Program Call Map with Call Evidence, Logic Decomposition Ledger,
Routine Logic Details with conditioned calculation blocks, routine-local
field lineage / carriers, and routine-local exception closure,
Key File & Field Logic with source identifiers plus business meanings,
file-io-inventory.yaml, field-mutation-matrix.yaml,
sql-inventory.yaml, External Calls with dynamic-call resolution status,
Validation Logic, Exception Closure Ledger, Routine / Window Data Flow,
Redundancy Candidate Notes, and Open Items / Limitations. If an older
approved program-analysis is used,
the flow must either route back for refresh or record a named SME waiver for
each missing v0.2.4 detail.
Stop and require clarification if:
- In
orchestratedmode, the trigger / entry point is missing or ambiguous. - In
assemble_existingmode, the user-provided program set does not describe one flow or lacks an entry / ordering hint. - In
chain_ready, a required program in the chain lacks approved program analysis artifacts → route only the missing program tolegacy-ibmi-program-analyzer. Instandalone_exploratory, recordmissing_program_artifactand continue with a quick-validation draft when enough compact evidence exists. - In
chain_ready, a required call edge, data flow, or error path depends on an upstream program routine markedblockedorindexed_onlywith business state impact → route back tolegacy-ibmi-program-analyzer. Instandalone_exploratory, mark the affected flow claim unresolved and record a downstream-readiness gap. - In
chain_ready, inventorysme_review.decisionisblockedorrelationshipsare incomplete → route tolegacy-ibmi-inventory. Instandalone_exploratory, record inventory linkage gaps and keep the artifactdraft_exploratory. - Trigger model cannot be identified from the entry point → require SME clarification (do not guess)
- Flow appears to span multiple business modules → narrow scope; one flow = one business transaction
Output Contract
For current SME-provided program-flow/core-merge requests, produce only:
program-set-sme-core-review.md
Do not produce flow-<FLOW-SLUG>.md for this current workflow. Produce a full
flow artifact only when the user explicitly asks for full transaction-flow
analysis with trigger/context, edges, data flow, persistence, replay, and
capability seeds.
program-set-sme-core-review.md must include a Core Completeness Ledger
before the four core sections. The ledger lists every program from the
SME-provided flow, inventory relationship, or discovered call evidence; its
run_resolution; required compact artifacts; missing core sections; and whether
the next action is same-run reuse, source scan, or missing-source follow-up. No
program may be omitted merely because its artifact is missing.
For multiple SME-provided program flows, produce one program-set review folder per flow:
{program_set_review_parent}/{flow_1_review_slug}/
program-set-core-input-manifest.yaml
program-set-sme-core-review.md
{program_set_review_parent}/{flow_2_review_slug}/
program-set-core-input-manifest.yaml
program-set-sme-core-review.md
The current deterministic builder runs once per flow block. A future wrapper may batch these calls, but the contract remains one manifest and one SME core review per flow.
<FLOW-SLUG> is uppercase, hyphen-separated, business-event named (e.g.,
ONUS-AUTH, BATCH-RECON, CHARGEBACK-INTAKE), and stable across the
analysis chain.
Use:
templates/flow.mdas the starting structuretemplates/sme-core-review.mdas the starting structure for the compact multi-program SME review viewreferences/output-contract.mdfor section definitions and required fieldsreferences/trigger-models.mdfor trigger-specific analysis guidancereferences/data-flow-patterns.mdfor cross-program data passingreferences/error-propagation.mdfor error-chain analysis
Follow:
../../docs/id-conventions.mdfor stable IDs (FLOW-*,NODE-*,EDGE-*,DATA-*)../../docs/evidence-and-knowledge-taxonomy.mdfor evidence strength tagging../../docs/input-readiness-rubric.mdfor input readiness scoring
Examples:
examples/batch-job-positive/— straightforward batch chain (CL → RPG1 → RPG2 → SQLRPG)examples/menu-flow-positive/— interactive flow with*MENU+ DSPF + subfile dispatchexamples/incomplete-flow-negative/— flow with a missing program-analysis (must route back)
Step Contract
This skill is one step in the Legacy Spec Factory reverse chain. It conforms
to the canonical Step Contract shape — see
../legacy-step-contract/SKILL.md and
../legacy-step-contract/references/step-contract.md for the full
field-level rules. The summary below is normative for this skill.
Input
- Required:
analysis_intentset tostandalone_exploratoryby default orchain_readywhen downstream-ready handoff is requested;flow_scan_modeset toorchestratedorassemble_existing; and enough program evidence to identify at least one entry node and one flow path. - Required for
chain_ready: approved01_inventory/inventory.yamlwithrelationshipspopulated for the involved objects; approved program analysis evidence for every program in the chain; required core compact artifacts; triggered/claim-specific optional sidecars; and coverage gates satisfied. - Required for
orchestrated: flow definition (entry point + one of seven trigger models). The analyzer may discover the program set from inventory relationships and program call summaries, but any missing per-program artifact must be routed back tolegacy-ibmi-program-analyzer. - Required for
assemble_existing: user-provided program analysis directories or artifact list, preferably includingprogram-analysis-summary.yaml,source-index.yaml,message-inventory.yamlfor each program, plusroutine-logic-details.yamlfor complex, large, or explicitly deep-read programs, plus optionalfile-io-inventory.yaml,field-mutation-matrix.yaml, andsql-inventory.yamlwhen present/triggered or needed by a flow claim. Missing required artifacts should be filled for only the affected program when source is available; otherwise recordTBD: missing_program_artifact. - Optional: DSPF / PRTF /
*MENUdefinitions (UI-aware flows);WRKJOBSCDEexport (scheduler triggers); trigger-program registration (DB triggers); SME notes on BAU rhythm and known error scenarios. - Input readiness scoring:
0-5 blocked: trigger model / entry unresolved, provided programs cannot be scoped to one business transaction, source authorization unresolved, or achain_readyrequest is missing approved inventory / required program analyses.6 minimum_pass: enough compact evidence exists to produce astandalone_exploratoryquick-validation flow draft. Missing approvals, inventory linkage, or sidecars are recorded as downstream-readiness gaps.7-8 usable: scheduler/job notes, menu/display/report definitions, and object dependencies are available for most chain edges.9-10 strong: runtime logs, screen/report samples, SME notes on triggers and manual workarounds, and known exception cases are also supplied.- Missing runtime samples does not block structural flow analysis; it leaves runtime ordering and trigger confidence lower.
- Readiness checks: trigger model identified unambiguously for
orchestrated; the flow represents one business transaction; every node has approved program-analysis evidence or an explicitmissing_program_artifactTBD. Forchain_ready, Inventory Completeness Gate must pass and no load-bearing program artifacts may be missing. - Stop conditions: trigger / entry ambiguity; user-provided program set
spans multiple business transactions; any required
chain_readynode missing approved program-analysis evidence needed for flow claims and not repairable in the current run; a required call edge, data flow, or error path depends on an upstream routine markedblockedorindexed_onlywith business state impact; inventorysme_review.decisionisblockedor relationships are incomplete; trigger model cannot be identified from the entry point; flow spans multiple business modules.
Execution
- Procedure: see the Workflow section below (12 ordered steps).
- Allowed inference: assembling cross-program call edges from upstream
Call EvidenceandExternal Callsrows; classifying call types (CALL / CALLP / CALLPRC / SBMJOB / remote); deriving branch destinations from DSPF option tables; stitching cross-program field lineage only through upstream Key File & Field Logic, Routine / Window Data Flow, field mutation matrices, visible carrier fields, or SME-confirmed handoffs; reading scheduler / trigger / API configuration exports as tier-1 evidence. - Forbidden assumptions: calls not visible in upstream
Call EvidenceorExternal Callsrows; dynamic calls whose upstream resolution isunresolvedorneeds_sme_reviewunless a named SME waiver is recorded; data flow whose parameter semantics require guessing; branch destinations not in DSPF DDS; trigger conditions without configuration export; scheduler frequency withoutWRKJOBSCDE; commit boundaries without code or SME confirmation; flow-level field lineage not backed by upstream lineage, source identifier + business meaning pairs, or a visible carrier; persisted file/field updates absent from upstream mutation matrices; exception propagation not backed by upstream Validation Logic / Exception Closure Ledger rows; business rules (these are seeds, never facts). - TBD handling: missing program-analysis or sidecar →
TBD: missing_program_artifactrouting only the affected program tolegacy-ibmi-program-analyzer; ambiguous trigger →TBD: pending_sme_judgment; unnamed business event → stop and request the name from SME (do not autogenerate from program names). Instandalone_exploratory, unresolved artifacts become downstream-readiness gaps unless they prevent identifying the flow itself. - Coverage propagation: consume each upstream program's compact artifacts
first:
program-analysis-summary.yaml,source-index.yaml,message-inventory.yaml,routine-logic-details.yamlwhen present or required by tier/deep-read,file-io-inventory.yaml,field-mutation-matrix.yaml, andsql-inventory.yaml. Use fullprogram-analysis.md/program-analysis-<OBJ-ID>.mdonly for targeted clarification, not as the primary flow aggregation input. The compact artifacts must expose Analysis Coverage & Scope, Routine Cards / routine summary, Routine Logic Details sidecar status, front-loaded Validation Logic references, Deep Read Windows, Call Evidence, Logic Decomposition Ledger, Key File & Field Logic,file-io-inventory.yaml,field-mutation-matrix.yaml,sql-inventory.yaml, Exception Closure Ledger, Routine / Window Data Flow, Redundancy Candidate Notes, and Open Items / Limitations before using program-level evidence in a flow. If the requested flow relies on a routine that was onlyindexed_onlyand that routine changes state, performs external handoff, handles commit/rollback, controls error outcome, supplies critical field lineage, or mutates persisted fields, flow analysis is blocked until the routine isdeep_reador a named SME waiver is recorded in review metadata.
Output
- Default SME program-flow artifact:
program-set-sme-core-review.md. This artifact contains the Sources table, Core Completeness Ledger, Calculation Logic, Validation Logic, Exception Handling, and Message Inventory, aggregated from the participating program analyses. - Full transaction-flow artifact:
flow-<FLOW-SLUG>.md, only when the user explicitly asks for full flow analysis. - Required sections: front-loaded Calculation Logic, Validation Logic,
Exception Handling, Message Inventory, metadata, trigger model & entry point,
transaction call map, nodes, edges, common dependencies, cross-program data
flow, flow replay path, cross-program field lineage, flow persistence matrix,
branch points, UI surfaces (or
N/A — non-interactive), error propagation & commit boundaries, exception propagation chain, capability seeds, SME review checklist. - Required IDs: mints
FLOW-*,NODE-*,EDGE-*,DATA-*,REPLAY-*,LINEAGE-*,PERSIST-*,EXCHAIN-*,SEED-*,TBD-*; reusesOBJ-*,EV-*, and program-levelBEH-*from upstream. Flow analysis does not mintBR-*; branch points are represented byNODE-*/EDGE-*entries and capability questions bySEED-*. - Handoff status:
status: draft_exploratoryfor standalone quick validation;status: draft→needs_sme_review→approvedorapproved_with_non_blocking_tbdfor chain-ready flow work.blocked_pending_sourceandblocked_pending_smehalt module-analyzer.draft_exploratoryis not eligible for module/BRD/spec handoff until rerun or promoted aschain_ready.
Validation
- Mechanical: every edge traces to evidence type 1, 2, or 3 (source
statement, config export, or integration contract); every data exchange
traces to a source line; every UI surface traces to a DSPF/PRTF/
*MENUin inventory; every trigger has evidence type 2 plus SME confirmation of business meaning; every replay step maps toNODE-*,EDGE-*,DATA-*,PERSIST-*, orEXCHAIN-*; every field lineage is backed by upstream field lineage or visible carrier fields; every persistence row is backed by upstreamfield-mutation-matrix.yamland, for SQLRPGLE,sql-inventory.yaml; every node carries upstream coverage state and any blocking coverage gaps; all required sections populated. - AI semantic: edges match upstream program-analyses (no invented
calls); branch destinations match DSPF option tables; error
propagation matches each node's program-analysis Exception Closure
Ledger; commit boundaries are evidenced, not assumed; flow evidence is
not taken from
indexed_onlyorblockedroutines when those routines have business state impact unless a named SME waiver is recorded; capability seeds are questions, not rule claims. - SME / human approval: SME confirms trigger model, business event name, node/edge correctness, branch points, UI surfaces (interactive flows), error propagation realism, commit boundaries, and that seeds are reasonable questions. Required when a cross-program rule emerges or when the flow touches money, inventory, compliance, or customer status.
- Blocking conditions: trigger model unresolved; business event name
unnamed by SME; ambiguous module boundary. For
chain_ready, also block when any node lacks approved program-analysis evidence, any edge has no evidence, required flow evidence depends onblockedcoverage orindexed_onlystate-impacting routines without a named SME waiver, or SME absence conflicts with the flow's risk class. Forstandalone_exploratory, these become downstream-readiness gaps unless they prevent identifying the flow itself.
Emit a Step Validation Report (see
../legacy-step-contract/templates/step-validation-report.md) with
status pass, pass_with_warnings, or blocked when reporting upward
to the orchestrator.
Workflow
Select Analysis Intent & Flow Scan Mode
- Default
analysis_intenttostandalone_exploratoryunless the user asks for approved/downstream-ready/chain-ready output. - Use
analysis_intent: chain_readyonly when the flow must feed module, BRD, spec, or formal downstream handoff. - If the SME provides a program flow/list and asks for core logic merge,
default to
flow_scan_mode: core_review_only, normalize the supplied program list/order, and mark it as SME navigation evidence. Do not produceflow-<FLOW-SLUG>.mdunless the user explicitly asks for full transaction flow analysis. - If the SME provides multiple named program flow blocks, split them first
and process each flow block independently. Use one
review_name,programs.txt, manifest, review skeleton, and{review_slug}output folder per flow. The blocks may share the samedevelop-<person>working branch and PR. - Load the team/project delivery profile when supplied. If no team profile is
supplied, use
templates/delivery-profile.yamlas the editable starting shape. Useprogram_artifact_resolution_profilefor current-run artifact folder/name patterns, and use the workspace profile to decide where current-run program artifacts and program-set reviews are written. - For the default SME program-flow workflow, run program-evidence first:
route every distinct SME-provided program through
legacy-ibmi-program-list-batchwhen multiple programs need source analysis in a Copilot Chat-limited runtime, or directly throughlegacy-ibmi-program-analyzerfor a single program. Reuse only artifacts already produced earlier in this same run/batch before program-set assembly. - Preserve exact program/member identity. The current lending-card default
preserves leading
@, so@CU118andCU118are distinct programs. Other departments can override folder patterns, artifact filenames, and alias rules. - For every SME-provided program, generate or verify current
tier-appropriate program-level artifacts before assembly. Normal programs
require
program-analysis.md,program-analysis-summary.yaml,source-index.yaml,routine-index.md, andmessage-inventory.yaml. Complex, large, or explicitly deep-read programs also requireroutine-logic-details.mdandroutine-logic-details.yaml. Retain deep-read batches and coverage ledgers when needed for stable handoff. - Do not check remote
main, clone a remote-main snapshot, or mark programs as found/not-found on remote main for the default program-flow workflow. Existing historical artifacts may be compared later in Git review, but they do not satisfy this run's evidence gate. - Before source scanning any unresolved program, check the source inventory
cache. Default path:
<source-root>/outputs/repo-scan/program-list.csvplus<source-root>/outputs/repo-scan/scan-summary.yaml. Reuse it only when the source revision inscan-summary.yamlmatches the current clean Git source HEAD. If missing, stale, or dirty, rerun repo-levellegacy-ibmi-inventoryfirst, then useprogram-list.csvto locate each program's source path and tier for targeted program analysis. - Write current-run program analysis output to the delivery repo
working branch named by the user/profile, normally
develop-<person>. If that branch does not exist, create it fromorigin/main; if it exists, update it before writing. This working branch is the current run's draft workspace. - Write program artifacts under
delivery_workspace_profile.program_tier_rootsby size tier. Writeprogram-set-sme-core-review.mdunderdelivery_workspace_profile.program_set_review_parent/{REVIEW_SLUG}/. - For
core_review_only, run the deterministic builder after every program analysis artifact is complete and before the LLM fills the review: Windows:py -3 scripts\build-program-set-core-review.py --review-name "<name>" --programs-file <programs.txt> --working-root <delivery-working-branch-checkout> --source-root <source-repo> --profile <delivery-profile.yaml> --output-dir <delivery-worktree-output-dir> --working-branch <develop-person> --program-first. macOS/Linux:python3 scripts/build-program-set-core-review.py --review-name "<name>" --programs-file <programs.txt> --working-root <delivery-working-branch-checkout> --source-root <source-repo> --profile <delivery-profile.yaml> --output-dir <delivery-worktree-output-dir> --working-branch <develop-person> --program-first. The builder writesprogram-set-core-input-manifest.yamlplus a fixedprogram-set-sme-core-review.mdskeleton. Treat the manifest as the control input for all subsequent summarization. In program-evidence-first mode, the manifest recordsrun_resolutionasanalyzed_this_run,reused_same_run,pending_source, orblocked_missing_source.--source-rootenables the default<source-root>/outputs/repo-scanlookup;--inventory-dirmay override that cache path for teams with a different layout.--working-rootis the only artifact lookup root for the default program-flow workflow. - Use
flow_scan_mode: orchestratedwhen the user explicitly provides a trigger / entry program and wants the skill to discover, index, and assemble the whole flow. - Use
flow_scan_mode: assemble_existingwhen the user explicitly provides several existing program analysis directories and asks to combine them into one flow. - In all modes, aggregation must prefer compact artifacts:
program-analysis-summary.yaml,source-index.yaml,message-inventory.yaml,routine-logic-details.yamlwhen present or required by tier/deep-read,file-io-inventory.yaml,field-mutation-matrix.yaml, andsql-inventory.yaml. - Do not concatenate full
program-analysis.md/program-analysis-*.mdfiles across programs. Open full Markdown only for targeted human-readable clarification when compact artifacts are insufficient. - If the user asks to merge multiple program-analysis results or provides a
SME program flow for core SME review, generate
program-set-sme-core-review.mdfromtemplates/sme-core-review.md. Include the Source table and Core Completeness Ledger, then only Calculation Logic, Validation Logic, Exception Handling, and Message Inventory. Do not include Nodes, Edges, Replay, Persistence, Lineage, UI Surfaces, Capability Seeds, or SME Checklist in that compact core-review artifact. - After the four core sections are filled, run
Windows:
py -3 scripts\validate-program-set-core-review.py --manifest <program-set-core-input-manifest.yaml> --review <program-set-sme-core-review.md>. macOS/Linux:python3 scripts/validate-program-set-core-review.py --manifest <program-set-core-input-manifest.yaml> --review <program-set-sme-core-review.md>. A failed validator means the artifact is structurally unsafe to hand to the SME; fix the review instead of hiding missing programs or changing the manifest. - For multiple flow blocks, validate each generated
program-set-sme-core-review.mdindependently. A failure in one flow blocks that flow's SME handoff but does not require regenerating sibling flows that already passed validation. - In
standalone_exploratory, continue with warning rows when approvals, inventory linkage, or sidecars are missing; inchain_ready, enforce the blocking gates.
- Default
Identify Trigger Model & Entry Point
- Determine which of the seven trigger models applies (see
references/trigger-models.md). If unsure, ask the SME — do not guess. Inassemble_existingmode, accept the user's stated entry/order hint; if it is missing or contradictory, stop for SME clarification. - Document the trigger object:
- batch job → CL program + direct CALL from another program or operator
- menu →
*MENUobject name + option number - subfile dispatch → DSPF subfile + option-code table
- F-key → DSPF + function-key handler
- DB trigger → file name + trigger program + event (insert/update/delete)
- scheduler → WRKJOBSCDE entry + frequency (may submit a batch job via SBMJOB)
- API / remote → remote-call mechanism + parameter contract
- Note: Scheduler-submitted batch jobs form a single flow: the scheduler entry is the primary trigger, SBMJOB is the submission mechanism, and the CL/RPG program(s) are the nodes. This is one trigger model, not two.
- Assign
FLOW-<SLUG>-<NNN>ID. - Capture the business event name the SME uses for this flow (e.g., "Customer authorization request", not "RPG1 call").
- Determine which of the seven trigger models applies (see
Enumerate Nodes (Programs in the Chain)
- List every program the flow touches, in call order.
- For each node:
- assign
NODE-<SLUG>-<NNN>(sequence-numbered) - reference the program's
OBJ-*(from inventory) and approved program-analysis artifact set - record artifact availability:
program-analysis-summary.yaml,source-index.yaml,message-inventory.yaml,routine-logic-details.yamlwhen present or required by tier/deep-read,file-io-inventory.yaml,field-mutation-matrix.yaml,sql-inventory.yaml, and optional human-readableprogram-analysis-<OBJ-ID>.md - record the program's role in the flow (entry / orchestrator / worker / data-access / reporter / exit)
- carry forward the program's Analysis Coverage & Scope, Routine
Cards, and Deep Read Windows; record node coverage status as
deep_read,indexed_only, orblockedplus flow readiness (approved,warning, orblocked) - record blocking coverage gaps when a required call edge, data
exchange, branch, error path, or commit boundary depends on a
routine that is
blockedor isindexed_onlywith business state impact
- assign
- If a node has no approved program-analysis evidence, create
TBD-<SLUG>-<NNN>: missing_program_artifactrouting only that program back tolegacy-ibmi-program-analyzer. Inchain_ready, stop; instandalone_exploratory, continue only with claims supported by available compact evidence. - If a node has an approved human-readable analysis but lacks compact
sidecars, fill only the missing sidecars when local source is available;
otherwise create
TBD-<SLUG>-<NNN>: missing_program_artifactand avoid using that program for flow claims that require the missing sidecar. - If a node's required state-impacting routine is only
indexed_only, stop inchain_readyuntillegacy-ibmi-program-analyzerdeep-reads it or a named SME waiver is recorded in evidence/review/sign-off metadata. Instandalone_exploratory, mark the affected flow claim unresolved and keep it out of downstream-ready conclusions.
Trace Edges (Calls Between Nodes)
- For every call between two nodes, document an edge:
EDGE-<SLUG>-<NNN>: NODE-A → NODE-B- Call type (CALL, CALLP, CALLPRC, EXSR-not-applicable-cross-program, SBMJOB, remote-call)
- Call site (source program + line number) — from the caller's
program-analysis Viaroutine/procedure — the internal node from the caller's Program Call Map where the edge exits the program, when visible- Call condition (always / conditional / loop / error path)
- Build the Transaction Call Map (see
references/output-contract.mdfor format). The map shows cross-program and cross-boundary structure; detailed call conditions remain in the edge table.
- For every call between two nodes, document an edge:
Classify Common Dependencies
- If multiple nodes call the same common program, service program, API, data queue, message queue, or wrapper, keep every inbound call in the edge table and summarize the target in Common Dependencies.
- Keep common nodes expanded as formal flow nodes when they write business files, change customer/account/inventory/money state, decide approve/decline outcomes, control commit/rollback, or call an external business system.
- Fold common nodes in the visual map only when they are technical utilities such as logging, message formatting, date/time, delay/wait, or wrapper code. Folding is visual only; evidence and edge rows remain complete.
- Do not infer a Java service boundary from shared usage alone. That is a modernization decision for module/spec stages with SME review.
Cross-Program Data Flow
- For each edge, document what data passes (see
references/data-flow-patterns.md):- parameters passed in the CALL
- shared data area (
*DTAARA) updates / reads - data queue (
*DTAQ) messages - shared file writes/reads (program A writes, program B reads)
- temporary work files / spool / IFS files
- signal flags (return codes, indicators, error fields)
- For each
DATA-*, capture carrier, producer, consumer, mechanism, payload/key fields, direction and timing, state impact, and evidence. Preserve critical fields asFIELD_NAME(business meaning) orVARIABLE_NAME(business meaning) [direction] whenever the upstream program-analysis resolved both identity and meaning. A carrier can be anEDGE-*, PF/LF, data area, data queue, message queue, spool, IFS file, DSPF field set, or manual handoff. - Track object / record / critical-field granularity. Critical fields include money, account/customer/card/inventory identifiers, approval/decline/status/posting flags, return/error codes, audit IDs, and external payload fields. Do not trace every temporary work variable.
- Add short critical trails for business-important records or
messages, such as
request -> DTAQ -> program -> log PF -> batch posting. - Assign
DATA-<SLUG>-<NNN>for each distinct data exchange. - Tag evidence; cross-reference to source line numbers via EV-*.
- For each edge, document what data passes (see
Build Flow Replay Path, Field Lineage & Persistence Matrix
- Build a Flow Replay Path from trigger to terminal outcome: trigger, entry parameters, node execution, data handoff, key decisions, persisted mutations, commit/rollback/output, and final response or operator-visible state.
- Each replay step must reference existing
NODE-*,EDGE-*,DATA-*,PERSIST-*,EXCHAIN-*, orUI-*rows. Do not invent a replay step that is not supported by an upstream program-analysis or flow evidence. - Build Cross-Program Field Lineage for critical fields that cross program boundaries. Stitch program-local lineages through CALL parameters, shared files, data areas, queues, screens, IFS, spool, or SME-confirmed manual handoffs. Do not collapse a resolved source identifier and business meaning into a plain field label. For program-analyzer v0.2.5 inputs, prefer Routine Logic Details' conditioned calculation blocks and routine-local field lineage / carrier rows when they provide the guard-scoped source carrier, intermediate variable, output/persisted carrier, or lineage/mutation reference for a cross-program value.
- Build the Flow Persistence Matrix by aggregating each
program-analysis
file-io-inventory.yaml,field-mutation-matrix.yaml, andsql-inventory.yamlsummary into transaction-level outcomes:- node and routine that performs the mutation
- file and field persisted, updated, deleted, or skipped
- upstream field / parameter / carrier that drives it
- downstream readers or consumers
- commit / rollback / retry impact
- evidence and TBDs for missing DDS, mutation source, SQL host-variable mapping, or rollback behavior
- For read-only flows, explicitly mark the persistence matrix
N/A — read-only flowand cite the upstream analyses proving no persisted mutations.
Branch Points & Decision Nodes
- Identify points where the flow forks (subfile option, F-key, conditional CALL, trigger event).
- For each branch point:
- the deciding artifact (which field / which key / which condition)
- the alternatives and which target node each leads to
- whether unhandled options/keys exist (silently dropped vs. error)
UI Surfaces (interactive flows only)
- List every DSPF / PRTF / MENU the user sees during the flow.
- For each:
- object name +
OBJ-* - which node displays it
- key fields shown / entered
- F-keys handled
- branch destination per F-key / option
- object name +
- For non-interactive flows (batch, trigger, scheduler, API), this
section may be
N/A — non-interactive flow.
Error Propagation & Exception Chain
- For each node, summarise (from its
program-analysisError Handling section) what happens when each error condition occurs. - Trace propagation: does the error abort the whole flow, roll back to a checkpoint, log-and-continue, or branch to an error handler?
- Build an Exception Propagation Chain from every upstream Error Code Inventory / Exception Closure Ledger row and Routine Logic Details' routine-local exception closure row that affects this flow. Each row must show source node, observed message ID / error code / return code, error type, output carrier, evidence status, propagation carrier, caller reaction, skipped/allowed downstream edges, persistence impact, operator/user visibility, and final flow outcome.
- Identify commit boundaries: where does the flow consider work "committed" vs "rolled back"?
- Identify unhandled error windows: nodes where an unhandled error would crash the entire flow without recovery (create TBD).
- See
references/error-propagation.md.
- Business Capability Seeds
- Extract
SEED-*candidates (business rule seeds) that this flow plausibly enforces — without inventing rules. - Each seed is a question for SME review (e.g., "Does the rule 'credit limit must not be exceeded' live in this flow?").
- Phrase the candidate and SME question in business terms first:
business event, business object, decision, outcome, control, or
exception. Put program names, node IDs, field names, and file names in
Evidence Basis, not in the candidate statement. - Evidence Basis should reference replay path, cross-program field lineage, persistence matrix, or exception chain rows when those rows are the real support for the seed.
- The spec-writer skill will resolve seeds into approved rules; the flow analyzer never approves rules itself.
- Note: flow analysis does not mint
BR-*IDs. Branch points are represented byNODE-*/EDGE-*entries; capability seeds useSEED-*IDs.
- Prepare for SME Review
- Consolidate all TBDs grouped by blocking status (
pending_source/missing_program_artifact/pending_sme_judgment/non_blocking). - If
analysis_intent: standalone_exploratory:- Mark flow as
draft_exploratory. - Complete the quick-validation artifact with all visible Calculation Logic, Validation Logic, Exception Handling, Message Inventory, Nodes, Edges, and gaps.
- Record missing approvals, inventory linkage, sidecars, and indexed-only state-impacting routines as downstream-readiness gaps.
- Do not route to module-analyzer until rerun/promoted as
chain_ready.
- Mark flow as
- If
analysis_intent: chain_readyand any blocking TBDs exist:- Mark flow as
blocked_pending_source(missing program-analysis, missing DSPF, etc.) orblocked_pending_sme(ambiguous trigger, unclear error handling, missing business context) - Do not complete the full required analysis; provide partial flow stub
- Route to
legacy-ibmi-program-analyzeror SME assignment process - Do not proceed to module-analyzer
- Mark flow as
- If
analysis_intent: chain_readyand no blocking TBDs exist:- Confirm every node's
program-analysisis approved. - Generate the flow review checklist (see
templates/trigger-checklist.md). - Mark flow as
draftand route to SME.
- Confirm every node's
- Gate: the flow is ready for module-analyzer when:
- all required sections populated
- every node has an approved
program-analysis - no blocking TBDs (or SME has explicitly waived them)
- SME has signed off on the trigger model + business event name + capability seeds
Workflow State Write-Back
At the end of a flow-analysis run, update
<project-root>/workflow-state.yaml per
docs/workflow-state-contract.md.
Template: skills/legacy-modernization-orchestrator/references/state-writeback-snippet.md.
Stage this skill produces:
3d Flow Analysis Donewhen every in-scope SME program set has a completedprogram-set-sme-core-review.md, or every explicitly requested full transaction flow has an approvedflow-*.md3c Flow Analysis In Progresswhen one or more in-scope program sets or full flows are still draft, blocked, or missing
Last artifact path pattern:
03_flows/<MODULE-SLUG>/program-set-sme-core-review.md for the current SME
program-flow core-merge workflow, or
03_flows/<MODULE-SLUG>/flow-<FLOW-SLUG>.md for explicitly requested full flow
analysis.
Writes per run:
- Overwrite
capabilities[<CAP-* from current_focus>]with stage id, the path of the program-set core review or full flow you just saved,last_skill: legacy-ibmi-flow-analyzer, and blocking IDs (tbds,sme_pendingfor missing program artifacts or, for full flow analysis, trigger context / commit boundary questions). - Append one
history[]entry withnotenaming the flow (e.g."analyzed flow-submit-order"). - Overwrite
project.last_updated_at/project.last_updated_by.
Never touch current_focus, other capabilities' entries, or past
history[] rows. A re-run on the same flow is allowed; a re-run that
would lower stage_id requires the orchestrator's Rollback Protocol.
Anti-Hallucination Rules
Code is ground truth. See ../../docs/code-as-ground-truth.md. Every
edge in this flow must trace to evidence from authoritative sources
(see references/output-contract.md Evidence Taxonomy). Authoritative
evidence includes:
- Source statements (CALL, CALLP, SBMJOB in code)
- Configuration exports (WRKJOBSCDE, DSPF DDS, trigger registration)
- Integration contracts (MQ queue configs, API gateway definitions, DDM registrations)
- SME confirmation (documented procedures, business event naming, SLA agreement)
Shop documentation, prior architecture diagrams, and SME recollection are navigation aids; they do not become evidence until tier-1 authoritative confirmation exists. If SME claims a flow path the code does not contain, both observations are recorded and a TBD blocks the flow until SME reconciles them.
Do NOT invent:
- Calls not visible in any program's
program-analysisCall Evidence or External Calls sections - Data flow that requires guessing parameter semantics (use only what source explicitly shows or SME confirms)
- Cross-program field lineage that cannot be stitched through upstream program-analysis lineage, source identifier + business meaning pairs, carrier fields, or SME-approved manual handoff
- Persistence outcomes not present in upstream
file-io-inventory.yaml,field-mutation-matrix.yaml,sql-inventory.yaml, or SME-confirmed durable-output evidence - Exception chains not present in upstream Validation Logic / Exception Closure Ledger rows, return-code checks, message IDs, or SME-confirmed operational recovery notes
- Branch destinations for F-keys / options not visible in DSPF DDS
- Trigger conditions for DB triggers without seeing trigger configuration export
- Scheduler frequency or submitted command without WRKJOBSCDE evidence
- Commit boundaries if neither code nor SME has confirmed them
- Business capabilities or rules — these are seeds (questions), not facts; spec-writer resolves them
Instead:
- If a node's
program-analysisis missing →TBD: pending_source→ route tolegacy-ibmi-program-analyzer - If configuration evidence is missing →
TBD: pending_source→ request WRKJOBSCDE export, DDS listing, or trigger configuration - If a trigger model is ambiguous →
TBD: pending_sme_judgment - If the SME cannot name the business event → stop and request a name (do not autogenerate from program names)
- If error propagation is unclear → tag
needs_sme_review; do not assume commit / rollback behavior
Evidence minimum (see Evidence Taxonomy):
- Every edge must trace to evidence type 1, 2, or 3 (source statement, config export, or integration contract)
- Every edge derived from a program call must cite upstream Call Evidence
and carry its resolution status (
confirmed_from_code,observed_in_runtime,sme_confirmed,needs_sme_review, orunresolved) - Every data exchange must trace to source (parameter, data area, queue, file, screen field, message, IFS file, or SME note)
- Every UI surface must trace to a DSPF / PRTF / MENU object in inventory
- Every trigger must have evidence type 2 (config export) + evidence type 4 (SME confirmation of business meaning)
SME Review Questions
When full transaction-flow analysis is explicitly requested, the generated
flow-<FLOW-SLUG>.md must include a review checklist covering:
- Trigger model correctly identified (batch / menu / subfile / F-key / trigger / scheduler / API)
- Business event name accurately reflects what the business calls this transaction
- All nodes (programs) in scope are correct; no missing programs and no extra programs
- All edges (calls) reflect actual production behavior
- Cross-program data flow captures carriers, producers, consumers, timing, state impacts, and no undocumented shared files or data areas
- Flow Replay Path can be followed from trigger to final outcome
- Cross-program field lineage preserves critical source, carrier, mutation, and output fields
- Flow Persistence Matrix lists transaction-level writes, updates, deletes, skipped mutations, and commit/rollback impacts
- Branch points correctly capture user-visible decision points
- UI surfaces match production screens (interactive flows only)
- Error propagation matches operational reality (what actually happens when this fails in prod)
- Exception Propagation Chain lists observed message IDs, error codes, return codes, skipped downstream edges, and final outcomes
- Commit boundaries are correct (one transaction vs. multiple)
- Capability seeds are reasonable questions backed by replay, lineage, persistence, or exception evidence; not invented rules
Runtime Portability
Canonical source: skills/legacy-ibmi-flow-analyzer/SKILL.md
Runtime adapters are synced via scripts/sync-skills.sh:
- Codex:
.codex/skills/legacy-ibmi-flow-analyzer/SKILL.md - Claude Code:
.claude/skills/legacy-ibmi-flow-analyzer/SKILL.md - OpenCode:
.opencode/skills/legacy-ibmi-flow-analyzer/SKILL.md - Agents:
.agents/skills/legacy-ibmi-flow-analyzer/SKILL.md
No runtime-specific assumptions are embedded in the canonical source.
Version History
v0.2.8 (2026-06-26): No cross-run reuse for SME program-flow core review
- Default program-flow workflow now analyzes every distinct SME-provided program for the current run before program-set assembly
- Reuses only artifacts produced earlier in the same run/batch for repeated programs
- Builder manifest records
run_resolutionandrun_profile.cross_run_reuse: false program-set-sme-core-review.mdmust be self-contained for Calculation Logic, Validation Logic, Exception Handling, and Message Inventory- Added resume guidance so a new session can continue from run state, manifest, current-run artifact folders, and validator results
v0.2.7 (2026-06-18): Multiple SME program-flow block guidance
- Clarified that one SME request may contain multiple named program-flow
blocks, but each block produces its own
{review_slug}folder,program-set-core-input-manifest.yaml, andprogram-set-sme-core-review.md - Documented that multiple flows can share the same source inventory cache, delivery working branch, and PR while still validating each review independently
- Clarified that one SME request may contain multiple named program-flow
blocks, but each block produces its own
v0.2.6 (2026-06-18): Source inventory cache gate for program-set runs
- Added
source_inventory_profilesupport with default<source-root>/outputs/repo-scan/program-list.csvand<source-root>/outputs/repo-scan/scan-summary.yaml - Builder records
source_inventoryfreshness/action inprogram-set-core-input-manifest.yamland renders a Source Inventory Cache section inprogram-set-sme-core-review.md - Inventory cache is reused only when the recorded source revision matches
the current clean Git source HEAD; missing, stale, or dirty source states
route to repo-level
legacy-ibmi-inventorybefore targeted program scan
- Added
v0.2.5 (2026-06-18): Program-set builder and validator
- Added
scripts/program_set_core_review.pyunder the canonical flow analyzer skill plus root wrappers:scripts/build-program-set-core-review.pyandscripts/validate-program-set-core-review.py - Builder creates
program-set-core-input-manifest.yamland a deterministicprogram-set-sme-core-review.mdskeleton from the current-run artifact root - Builder reads program artifacts from the delivery working branch via
--working-root - Validator checks required core sections, per-program coverage in Sources and Core Completeness Ledger, valid current-run resolution values, and blocks accidental full-flow sections in compact SME reviews
- Added
v0.2.4 (2026-06-17): SME program-flow intake and configurable profiles
- Added configurable delivery profile values for delivery repo, module roots,
program folder patterns, workspace roots, and source inventory cache instead
of assuming every department uses the same repository layout; the
lending-card default preserves leading
@as part of program identity - Earlier central-reuse experimentation is superseded by v0.2.8's no cross-run reuse default for program-flow core review
- Required compact SME core reviews to include a Core Completeness Ledger so every requested/discovered program is accounted for even when an artifact is missing
- Scoped SME-provided program-flow intake to
program-set-sme-core-review.mdby default; fullflow-<FLOW-SLUG>.mdgeneration is reserved for explicit full transaction-flow analysis - Added
templates/delivery-profile.yamlas the portable team configuration shape for program resolution,develop-*delivery working branches, tier-specific program artifact roots, and cross-tier program-set review output
- Added configurable delivery profile values for delivery repo, module roots,
program folder patterns, workspace roots, and source inventory cache instead
of assuming every department uses the same repository layout; the
lending-card default preserves leading
v0.2.3 (2026-06-06): Program-analysis dense evidence sidecar consumption alignment
- Required flow aggregation to prefer
file-io-inventory.yaml,field-mutation-matrix.yaml, andsql-inventory.yamlalongside the existing compact program artifacts - Updated node artifact availability, persistence matrix evidence, and missing-artifact routing for File I/O dense and SQLRPGLE programs
- Required flow aggregation to prefer
v0.2.1 (2026-06-02): Program-analysis v0.2.1 consumption alignment
- Required flow analysis to consume Call Evidence, File I/O Purpose, dynamic-call resolution status, Validation Logic, Routine / Window Data Flow, and Open Items / Limitations
- Required flow field, lineage, persistence, and exception tables to preserve source identifiers with business meanings where upstream program-analysis resolved them
v0.2.2 (2026-06-02): Program-analysis v0.2.4 routine-local evidence consumption alignment
- Required flow analysis to consume Routine Logic Details, routine-local field lineage / carrier rows, and routine-local exception closure rows when building Cross-Program Field Lineage and Exception Propagation Chain
- Updated older-program-analysis waiver language from v0.2.1 detail gaps to v0.2.4 detail gaps
v0.2.0 (2026-06-01): Replayable program-chain hardening
- Added Flow Replay Path, Cross-Program Field Lineage, Flow Persistence Matrix, and Exception Propagation Chain requirements
- Required flow analysis to consume program-analyzer v0.2.0 ledgers where available
- Tightened capability seeds so evidence basis can reference replay, lineage, persistence, and exception-chain rows
v0.1.2 (2026-05-26): Business-readable seed hardening
- Reframed capability seeds as business-language questions
- Kept technical node, program, field, and object references in
Evidence Basis
v0.1.1 (2026-05-14): Field-pilot hardening
- Added smoke test prompts and evidence taxonomy
- Clarified trigger model rules: Scheduler + SBMJOB is one trigger (not composite)
- Added blocked status values (blocked_pending_source, blocked_pending_sme) with routing rules
- Standardized capability seed IDs on SEED-* and clarified that flow analysis does not mint BR-* IDs
- Added evidence taxonomy: 4 types (source statement, IBM i config, integration contract, SME confirmation)
- Updated anti-hallucination rules to allow config and contract evidence, not just source code
- All 5 review blockers (FLOW-REV-001 to FLOW-REV-005) resolved
- Ready for smoke test execution in Codex CLI, Claude Code, and OpenCode
v0.1.0 (2026-05-14): Initial release
- 9-step workflow
- 7 trigger-model support (batch / menu / subfile / F-key / trigger / scheduler / API)
- Cross-program data flow analysis
- Error propagation and commit boundary detection
- UI-surface mapping for interactive flows
- Business capability seed extraction (no rule invention)
- Feedback loop to
legacy-ibmi-program-analyzerandlegacy-ibmi-inventory - Examples: batch positive, menu positive, incomplete-flow negative