E7:S06:T05 – Workflow Script Integrity
Task ID: E7:S06:T05 Status: COMPLETE Priority: HIGH Last updated: 2026-03-25 Version: v0.7.6.5+1
Scope
Verify ukw_syntax_parser.py (source), task_inference.py (source), workflow_orchestrator.py (source), and workflow_executor.py (source) for correctness, coherence with canonical RW YAML, and alignment with project policy (explicit RW task ids per FR-060).
Input
Workflow scripts under packages/frameworks/workflow mgt/scripts/; canonical-rw-steps.yaml (source); .cursorrules UKW / RW sections.
Deliverable
This document (Findings, Changes implemented); code fixes where review exposed definite bugs; no separate BR filed (defects were fixed in-repo during T05).
Acceptance Criteria
- ukw_syntax_parser verified — See Findings A; module doc disambiguated vs agentic UKW;
parse_single_task_idexercised (formats, invalid input, whitespace). - task_inference verified — See Findings B; documented as unwired; FR-060 relationship noted in module docstring.
- orchestrator changes verified — See Findings C; duplicate imports removed;
test_rw_triggers.pyaligned withcanonical_stepsAPI and YAML paths (incl. step 9.5). - workflow_executor — See Findings D; spot-check only; no structural changes required.
Dependencies
None
Blocker
None
Findings
A. ukw_syntax_parser.py
| Check | Result |
|---|---|
parse_single_task_id | Accepts E7S06T05, E7:S06:T05, E7-S06-T05, e7s6t5; rejects garbage; .strip() applied before match. |
parse_story_id / parse_epic_id | Consistent with UKW -a story/epic targets. |
| Production use | validate_rw_task_intent.py imports parse_single_task_id (BR-056 / FR-060 path). |
| Doc drift | File mixed “UKW Enhanced” / old mode names with real role = parsing + legacy stubs. Remediation: module docstring updated to point at .cursorrules for -u/-p/-a. |
B. task_inference.py
| Check | Result |
|---|---|
| Callers | No other .py in the repo imports this module (inference-only experiment / future hook). |
| Policy | FR-060 / RW practice favor explicit task identifiers; inference is not part of the guarded validator path. Remediation: docstring notes unwired status and FR-060. |
C. workflow_orchestrator.py + canonical RW integration
| Check | Result |
|---|---|
test_rw_triggers.py | Was passing TriggerType into get_execution_path / should_execute_step / get_step_modifications, which expect strings → always failed. Fixed: use trigger_type.value; expected full RW path updated to match YAML (includes step 9.5). |
canonical_steps.get_step_modifications | YAML loads step_modifications keys as int; code used only str(step_number) → always {} for RW -k step 7. Fixed: lookup by float/int/str. |
| Imports | Removed duplicate Enum / Path imports in workflow_orchestrator.py. |
test_trigger_system.py | Tests 1–4 pass. Test 5 (“Agentic Task Workflow Integration”) fails in this environment: expects two FR/BR fixture files, got 0 — treated as brittle / environment-dependent, not a regression from T05. |
D. workflow_executor.py
Spot-check: WorkflowExecutor / WorkflowDefinition / WorkflowResult align with orchestrator usage; no defects found requiring change.
Optional validator
validate_kanban_governance_policy.py — passed (non-blocking signal per plan).
Changes implemented (summary)
test_rw_triggers.py— correct API usage and YAML-aligned execution paths.canonical_steps.py— robuststep_modificationskey lookup for YAML int keys.workflow_orchestrator.py— duplicate import cleanup.ukw_syntax_parser.py— clarify module purpose vs.cursorrulesUKW.task_inference.py— document unwired status and FR-060.
BR / FR
None filed — issues found were corrected in this task; no open product defect logged.
Version Anchor
Released as: v0.7.6.5+1 (internal); SemVer v0.4.626+1 (task_touch via semver_converter.py).