# AI Session Technical Report: Comment-Review Workflow Failures **Request ID:** `284e2f6f-4fe5-4f41-8501-d7e350822c24` **Generated:** 2026-09-04 **Scope:** Multi-repo pull-request comment-review (co-deployed change set). **Outcome:** Product fixes completed via proper step-14 loop on second pass; PR threads replied and resolved after pass gate. This report documents **where agent behavior diverged from skill and workspace rules**. It does not describe product requirements, ticket acceptance criteria, or sign-off status. --- ## 1. Session timeline (condensed) | Phase | What happened | Who did product edits | | ------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------- | | First comment-review pass | Review feedback addressed; invalid area `di.xml` invented; PCRE-only regex added to UPWARD config | `workflow-executor` (prior orchestration) | | User blocked further code | Focus shifted to skill/documentation updates | Orchestrator (skills only) | | User: address all feedback in code | Orchestrator edited backend XML/PHP and PWA UPWARD config directly | **Orchestrator (violation)** | | User challenged direct implementation | Step-14 re-run with validated executor prompt | `workflow-executor` | | Pass gate: commit + push + reply | Commits and PR thread replies | Orchestrator (correct for step-14) | | Skill patch request | Orphan file created at wrong folder level under `platform-specific/` | Orchestrator (violation) | | `/lesson-learnt` | Listed lessons already present in platform skills | Orchestrator (violation) | --- ## 2. Skill and rule compliance matrix Legend: **Followed** | **Partial** | **Violated** ### 2.1 Comment-review (`utility/azdo`) | Instruction | Source | Compliance | What happened | | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | Orchestrator **must not edit product code** on `address_feedback_in_code`; spawn `workflow-executor` | `SKILL.md` (Mode B), `step-14-comment-review-address-feedback.md` | **Violated** | User request to address feedback triggered direct product patches instead of step-14 executor spawn. | | Step-13: spawn `workflow-code-reviewer`, relay verbatim, wait for route | `step-13-comment-review-debate-and-prompt.md` | **Partial** | Step-13 artifacts existed; user chose address-all before a clean relay + route in the turn that triggered implementation. | | Executor: no `git commit`; return `## UAT_QA_RESULT` before code-reviewer | `step-14`, `comment-review-acceptance-retest.md` | **Followed** (second pass) | Executor left uncommitted changes and returned `UAT_QA_RESULT` (verdict `partial`, human Playwright blocked). | | Orchestrator: parse `UAT_QA_RESULT`; do not run acceptance scripts directly | `comment-review-acceptance-retest.md` | **Followed** (second pass) | Orchestrator spawned code-reviewer after executor; did not run Playwright itself. | | Apply thread **Fix** blocks as-is when complete and in-scope | `step-14` | **Partial** (first pass) | First executor round picked a Fix option that failed runtime verification; second pass verified Fix blocks. | | Pass gate: orchestrator commits with `#` prefix | `step-14` | **Followed** | Commits in both subrepos after user selected `commit_push_reply`. | | `validate subagent-prompt` before `Task` | `subagent-prompt-spawn-contract.md` | **Followed** (second pass) | Executor and code-reviewer prompts validated via `azdo.cjs` under task-scoped temp dir. | | Subagent model `composer-2.5` | `AGENTS.mdc` | **Followed** (second pass) | Executor and code-reviewer spawned with required model. | ### 2.2 Workspace orchestrator vs implementation (`AGENTS.mdc`) | Instruction | Compliance | What happened | | ----------------------------------------------------------------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | When workflow assigns product work to `workflow-executor`, orchestrator must not `Write`/`StrReplace` on product source | **Violated** | Direct edits to UPWARD config, integration `di.xml`, and PHP providers before user forced step-14. | | Read right platform skill before product edits | **Partial** | Area-code skill existed after first incident; orchestrator still bulk-deleted area `di.xml` and nearly removed unrelated GraphQL wiring (executor restored in step-14). | ### 2.3 Adobe Commerce platform skill (`platform-specific/adobe-commerce`) | Instruction | Source | Compliance | What happened | | --------------------------------------------------------------------------------- | -------------------------------------------------- | ------------------------- | -------------------------------------------------------------------------------------------- | | Read area-code reference before `etc/{area}/di.xml` | `SKILL.md`, `create-plugin.md`, `plugin-di-xml.md` | **Violated** (first pass) | Invalid area folder used — not an `Area` constant; file never loads. | | Allowlist from framework `Area`; no invented area names | `di-area-codes.md` | **Violated** (first pass) | Same as above. | | Kill switches on shared config interfaces: default global unless all areas proven | `di-area-codes.md` | **Violated then fixed** | Plugins moved to per-area files without full coverage; later fixed with global registration. | | Read skill + task guide before module PHP/XML edits | `PLATFORM-ADOBE.mdc`, `SKILL.md` | **Partial** | First-pass executor; orchestrator second pass did not re-read before editing. | ### 2.4 PWA Studio platform skill (`platform-specific/pwa-studio`) | Instruction | Source | Compliance | What happened | | ------------------------------------------------------------------ | ------------------------------------------ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | Verify UPWARD in **both** PHP and `upward-js` when skill is silent | `SKILL.md` — guidance added during session | **Violated** (first pass) | PCRE-only inline flag valid in PHP UPWARD; `new RegExp(...)` throws in `upward-js`; dev server 500 on common HTML paths. | | Dedicated UPWARD topic file | Skill gap (not a violation) | N/A | Router-level guidance only until lesson-learnt proposed `references/upward.md`. | ### 2.5 Agent temp files (`AGENT-TEMP-FILES.mdc`) | Instruction | Compliance | What happened | | ------------------------------------------------------ | ------------ | ---------------------------------------------------------------------------------------- | | Scratch under task-scoped `temp/` subdirectories | **Partial** | Step-14 used correct task dir; earlier comment-review scratch used PR-id in folder name. | | Do not leave orphan files at `platform-specific/` root | **Violated** | Shared doc file created beside skill packages; user rejected; file deleted. | ### 2.6 Lesson learnt (`utility/lesson-learnt`) | Instruction | Source | Compliance | What happened | | --------------------------------------------------------- | -------------------- | ---------------------- | --------------------------------------------------------------------------------- | | Read `extraction.md` before extracting | `SKILL.md` | **Partial** | Extraction ran; coverage filter not applied before output. | | Exclude lessons already in target skills | `extraction.md` | **Violated** | First output listed mechanisms already documented in area-code and plugin guides. | | Do not apply patches unless user says **apply** | `SKILL.md` | **Followed** | Plans presented read-only until user requested apply. | | Generalize — no project identifiers in durable skill text | `SKILL.md` non-goals | **Partial** | First draft too incident-specific; user requested revision. | | Do not create monolithic or wrong-folder skill files | `skill-routing.md` | **Violated** (related) | Orphan file at `platform-specific/` root during separate skill patch request. | ### 2.7 Hallucination / verification (`HALLUCINATION-WATCHER.mdc`) | Instruction | Compliance | What happened | | ---------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------- | | Verify before claiming; no invented mechanisms | **Violated** (first pass) | Invalid area DI and PCRE-only UPWARD patterns not verified against framework and `upward-js`. | | Do not diagnose without evidence | **Partial** | Later analysis tied to review traces and upstream resolver source — after evidence existed. | --- ## 3. Root causes (process) 1. **Role confusion:** Treating "address all feedback in code" as a direct implementation request instead of the azdo routing label `address_feedback_in_code` (step-14). 2. **Fix-snippet trust:** Copying reviewer Fix options without runtime verification (DI area load path; PCRE vs JavaScript regex). 3. **Skill read order:** Updating skills while skipping the same checks before product edits in the same session. 4. **Lesson extraction without diff against target files:** Listing failures the session surfaced but skills already documented. 5. **DRY instinct over skill layout:** Shared file at `platform-specific/` root instead of merging into each stack's `SKILL.md` / `references/`. --- ## 4. What was done correctly (second pass) - Step-14 executor spawn with validated subagent prompt, acceptance re-test mandate, no-commit rule. - Executor verified tree, restored unrelated area DI wiring when at risk, ran unit and automated acceptance checks. - `workflow-code-reviewer` returned `## REVIEW PASSED`. - Orchestrator **commit / push / reply** only after pass gate (`commit_push_reply`), with required ticket prefix and thread resolve flags. - Skill hygiene: removed orphan `platform-specific/` root file; kept router guidance inside each stack skill package. --- ## 5. Skill gaps closed after session (generic) | Gap | Patched location | | --------------------------------------------------------- | ------------------------------------------------------------ | | Read area `di.xml` before bulk delete/move | `adobe-commerce/references/di-area-codes.md` | | Nested try/catch for config fallback in error handlers | `adobe-commerce/references/dependency-injection.md` | | UPWARD dual-runtime regex and conditional coercion | `pwa-studio/references/upward.md` | | Lesson-learnt: generalize + coverage filter before output | `utility/lesson-learnt/SKILL.md`, `references/extraction.md` | --- ## 6. Recommendations for future sessions 1. On **address feedback in code** under azdo: run step-14 checklist (executor → `UAT_QA_RESULT` → code-reviewer → pass gate). No product edits on orchestrator. 2. Before accepting a review **Fix** block: one verification step per stack (framework area allowlist / `new RegExp` in Node / read full file before delete). 3. On `/lesson-learnt`: read target skills first, output **only net-new** lessons. 4. Platform skill edits: only under `/SKILL.md` or `/references/` — never new siblings at `platform-specific/` root. --- ## 7. Artefact types touched (no project paths) | Kind | Role | | ------------------------------------- | --------------------------------------------------------------- | | Task-scoped temp dir (comment-review) | Thread JSON, validated step-13 prompt | | Task-scoped temp dir (workflow) | Step-14 subagent prompts (cleaned after use) | | Task-scoped temp dir (this report) | Session compliance record | | Platform skill references | Area codes, dependency injection, UPWARD, lesson-learnt updates |