docs(aem-cloud-service): consistent report rendering for the 5 guided code-assessment patterns#217
Open
Himanich wants to merge 3 commits into
Open
docs(aem-cloud-service): consistent report rendering for the 5 guided code-assessment patterns#217Himanich wants to merge 3 commits into
Himanich wants to merge 3 commits into
Conversation
… guided patterns The architectural patterns moved from best-practices (scheduler, resource-change-listener, replication, event-migration, asset-manager) lacked the two sections that feed the code-assessment report table — so a discover+report run rendered them as bare file lists while the mechanical patterns (outbound-call-timeouts, unbounded-query) showed File | Finding | Planned action. Each of the 5 now mirrors the mechanical-pattern skeleton: - ## Discovery — analyze.sh --pattern <slug> command + match criteria that mirror the merged detector logic exactly (Job/RCL/EventHandler/EventListener implements, OSGi-property scheduler, Replicator import → one finding per file, AssetManager calls → one finding per call site) and the emitted snippet. Drives the Finding column. - ## Resolution contract — labeled `guided`, with a disposition table mapping each site shape to `migrate (guided) → <step-set>` or a skip reason (already-compliant, test-scope, workflow-owned, wrong-pattern). Drives the Planned action column. Cross-pattern nuances captured inline: replication is analyzer-only (no BPA subtype); event-migration routes resource-topic handlers to resource-change-listener as skipped: wrong-pattern; RCL notes JCR EventListener is detected under event-migration per the BPA taxonomy. runbook.md: - Candidates: same columns for every pattern (mechanical and guided); Planned action vocabulary keyed off the catalog `fix` field (mechanical → apply/skipped; guided → migrate (guided)); never collapse a guided pattern to a file list. - Step 2: acknowledge guided patterns may carry steps inline (no recipe.md/path-*.md) and read the Discovery + Resolution contract sections. No detector/code changes. Test suite 113/113. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… contract; rename to apply (guided) Two fixes to the guided-pattern report rendering: 1. Regression: the runbook Candidates note keyed Planned action off the catalog `fix` field (`fix: guided` → one blanket label). That overrode unbounded-query — itself `fix: guided` but with a per-site triage — flattening its `apply → 1` / `skipped — needs-pagination` / `skipped — test-scope` rows into a uniform label, and (worse) turning test-scope skips into apply candidates. Planned action now comes from each pattern's own Resolution contract; the `fix` field no longer dictates a blanket action. 2. Rename `migrate (guided)` → `apply (guided)` across the runbook note and all five architectural Resolution contracts. Keeps one action vocabulary (`apply` / `apply → N` / `apply (guided)` / `skipped — <reason>`), ties to the `apply <slug>` command users type, and avoids overloading "migrate" (the name of the sibling skill); fits resource-change-listener (review/refactor) too. No detector/code changes. Test suite 103/103. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…routing in Resolution contracts
Detection is unambiguous (each interface maps to exactly one detector), but the
fix-routing across the three observation patterns relied on prose to disambiguate.
Make the Resolution-contract tables self-disambiguating:
- event-migration: reorder rows so "observes repository content" (JCR EventListener
on content, or EventHandler on a resource topic) comes first and routes to
resource-change-listener; add an explicit "first match wins" note; mark the E0
path as the rare residual fall-through ("genuinely cannot be modeled as a
ResourceChangeListener"), not a competing option.
- resource-change-listener: annotate the R0 row as redirect-only — it arrives via
event-migration redirect or migration handoff; this pattern's own detector flags
only the modern API.
- Both: note that a class implementing both ResourceChangeListener and an event
interface is flagged by both patterns (rare).
Doc-only; no detector/code changes. Test suite 103/103.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tessl Skill Lint
|
rombert
approved these changes
Jun 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Each of the 5 guided patterns gained two sections (mirroring unbounded-query / outbound-call-timeouts):
Discovery — the analyze.sh --pattern command + match criteria that mirror the merged detector logic exactly, and the emitted snippet. Drives the Finding column.
Resolution contract — labeled guided, with a per-site disposition table. Drives the Planned action column.
Related Issue
Motivation and Context
The five architectural patterns under code-assessment/ (scheduler, resource-change-listener, replication, event-migration, asset-manager) lacked the two sections that drive the code-assessment report table
How Has This Been Tested?
Screenshots (if appropriate):
Types of changes
Checklist: