| # Implementation Issues and Resolutions |
|
|
| This document captures the major issues encountered while implementing and operationalizing the revenue-assurance agent workflow, including local execution and Azure ML submission. |
|
|
| ## 1) No initial implementation in starter repo |
| - Symptom: The workspace started as a minimal agent scaffold and had no revenue-assurance domain workflow. |
| - Root cause: Domain features were not yet built. |
| - Resolution: Added domain models, reconciliation logic, case management, skills, deterministic investigator, and model-backed agentic investigator. |
| - Prevention: Keep a milestone checklist and ship in vertical slices (data model -> rule engine -> case -> recommendation). |
|
|
| ## 2) Missing Python dependencies |
| - Symptom: Runtime/import failures while enabling model-backed workflow and AML submit path. |
| - Root cause: Required SDKs were not yet installed. |
| - Resolution: Added and used dependencies for OpenAI and Azure ML stack. |
| - Prevention: Keep dependency declarations in pyproject and verify with CI test runs. |
|
|
| ## 3) Placeholder values treated as real model settings |
| - Symptom: Model path attempted using invalid placeholder endpoint/key values. |
| - Root cause: Config accepted placeholder-like values as usable credentials. |
| - Resolution: Added placeholder detection in config loader and automatic fallback to non-agentic behavior. |
| - Prevention: Validate config at startup and fail fast or gracefully downgrade by policy. |
|
|
| ## 4) Unsupported model request parameter |
| - Symptom: Upstream model call rejected a hard-coded generation parameter. |
| - Root cause: Parameter compatibility mismatch with deployed model API. |
| - Resolution: Removed unsupported parameter and aligned request payload with deployment behavior. |
| - Prevention: Keep per-model capability checks and a compatibility matrix. |
|
|
| ## 5) Non-numeric confidence handling |
| - Symptom: Agent output parsing was brittle when confidence came as text. |
| - Root cause: Parser assumed numeric confidence. |
| - Resolution: Added tolerant parsing to accept textual confidence labels. |
| - Prevention: Normalize model outputs and validate schema before policy routing. |
|
|
| ## 6) AML submit runtime NameError |
| - Symptom: Submission crashed before Azure calls with NameError on helper usage. |
| - Root cause: Helper function order caused reference before definition during module execution path. |
| - Resolution: Reintroduced helper in valid scope before use. |
| - Prevention: Add unit tests that execute CLI code path, not only isolated functions. |
|
|
| ## 7) Azure credential chain auth failures |
| - Symptom: DefaultAzureCredential could not obtain token; expired refresh token in chain. |
| - Root cause: Local Azure auth session had expired. |
| - Resolution: Reauthenticated with azd auth login scope for ARM. |
| - Prevention: Reauth as part of deployment checklist and include token health check. |
|
|
| ## 8) Invalid subscription identifier in submit config |
| - Symptom: Azure rejected malformed subscription ID. |
| - Root cause: Placeholder/config mismatch remained in active config source. |
| - Resolution: Replaced with valid GUID subscription and verified workspace tuple. |
| - Prevention: Validate config values using UUID/resource format checks before submit. |
|
|
| ## 9) Invalid AML environment image URI |
| - Symptom: Job creation failed with Invalid dockerImageUri. |
| - Root cause: Generic image reference not accepted by AML environment validation path. |
| - Resolution: Switched to a valid AML-compatible base image. |
| - Prevention: Maintain approved base images list per workspace policy. |
|
|
| ## 10) Azure ML run failed with ModuleNotFoundError for agent_app |
| - Symptom: Job launched but failed at runtime: No module named agent_app. |
| - Root cause: Uploaded code was present but package dependencies/module not installed in remote run environment. |
| - Resolution: Updated job command bootstrap to install package before running module. |
| - Prevention: For code-first jobs, always include pip install step or curated environment image with prebuilt wheel. |
|
|
| ## 11) No component graph visible in AML run |
| - Symptom: User expected node/component graph but saw a single run tile. |
| - Root cause: Submitted workload was a Command job, not a Pipeline job. |
| - Resolution: Added optional pipeline submit mode while retaining command mode. |
| - Prevention: Use command mode for simple execution and pipeline mode for lineage/graph needs. |
|
|
| ## 12) Secret leakage risk in example configs |
| - Symptom: Example files contained real endpoint/key/workspace values. |
| - Root cause: Real runtime values were written into shareable template files. |
| - Resolution: Sanitized examples to placeholders and added local-only patterns to gitignore. |
| - Prevention: Keep sample files sanitized; use *.local.json and environment variables for real values. |
| |
| ## 13) Push readiness blocker for GitHub |
| - Symptom: Cannot push immediately from this workspace. |
| - Root cause: No git remote configured in local repository. |
| - Resolution: Repository prepared for safe push; remote setup and push command still required. |
| - Prevention: Standardize repo bootstrap with origin remote and branch protection setup. |
| |
| ## Recommended production hardening next |
| - Add CI pipeline for unit tests and lint checks. |
| - Add integration smoke test for AML submit in dry-run and optional live mode. |
| - Add structured logging and telemetry correlation IDs. |
| - Add config schema validation and explicit startup diagnostics. |
| - Add secure secret-loading path (env vars/Key Vault) and key rotation runbook. |
| - Add evaluation set with expected recommendations and approval-policy assertions. |
| |