Skip to content

Convert 17-0574 (rev 2): read Designer WorkFlow exports, re-pair to Forms_17-0574 (AEM to Quad).xml, re-pin metrics - #5

Merged
sumitshatwara merged 2 commits into
mainfrom
devin/1789058790-convert-17-0574-rev2
Sep 10, 2026
Merged

sumitshatwara merged 2 commits into
mainfrom
devin/1789058790-convert-17-0574-rev2

Conversation

@devin-ai-integration

Copy link
Copy Markdown
Contributor

Summary

Second convert-form pass for 17-0574 with a new reference export, Forms_17-0574 (AEM to Quad).xml, replacing 17-0574.xml. The form is still not converted and not ready: G3 and G4 fail, G5/G6 are external, all three decisions remain proposed.

Input note: the session was again launched as form_id: 17-2574; the XDP is 170574.xdp and pairs.yaml pairs it as 17-0574, so this PR is for 17-0574. Nothing was renamed (the target file keeps its supplied name, spaces and parentheses included).

What changed and why:

  • The new export is a full Designer WorkFlow, not a bare layout. Root is <WorkFlow version="17.0.436.3"> with Property/Connect/Output/ExtWfdImpl children and one Layout module whose nested <Layout> holds the record list the inventory expects. target_inventory.inventory() iterated the root directly, so G4 saw 0 controls/variables and G5 lint produced 200 bogus IMP-003. Reusable fix (rule 8, not a per-form patch):
    def layout_root(root: ET.Element) -> ET.Element:
        Layout   -> root
        WorkFlow -> the single Layout module's single nested <Layout>; ValueError if 0 or >1
        other    -> ValueError("unsupported target export root <...>")
    inventory(...)["export_kind"] = "layout" | "workflow"   (+ "workflow_version" for WorkFlow)
    Tests: WorkFlow-wrapped records inventory identically to the bare <Layout>; multiple modules and unknown roots raise.
  • src/fixtures/pairs.yaml: 17-0574 layout_xml re-paired to the new file (sha256 7202b804…, 4,089,931 B); note records that the earlier 17-0574.xml was a different revision and is superseded.
  • src/decisions/17-0574.yaml: no new findings; D-001 rationale now cites both exports (the new one also has one *_BarcodeFlowArea_* per page and no NB6001 variable). Still 3 proposed, decided_by/decided_on null.
  • knowledge/quadient-designer.md: the "full WFD vs partial layout export" question is now answered by observation (both variants exist and are read).
  • tests/test_golden.py 17-0574 re-pins: G0 fail→pass; field match 0.5041→0.6341; exact-name 0.122→0.0894; static text 0.7707→0.9608; target controls 271→74; data variables 314→2494. 18-1026 untouched.
  • No raw artifacts committed (may_commit_artifacts: no); hashes verified.

Readiness (out/readiness.json, 17-0574)

gate verdict key metrics
G0 pass static-text coverage 0.9608 (threshold 0.95), 16 target-only tokens; hashes match pairs.yaml
G1 pass 41 containers / 123 fields / 71 statics
G2 pass all source objects accounted; one minor G2-UNKNOWNSTATIC
G3 fail 123 in-scope fields, 120 bound / 3 unbound (97.6%), name evidence 100%; findings routable 3, unrouted 0, proposed 3, accepted 0, rejected 0; 3 nodes need human touch; 6 G3-DRAFT-RULE (major)
G4 fail field match 0.6341 (floor 0.70), exact-name 0.0894, sections 0/13; target has 74 FormControls / 2494 data variables; 45 G4-UNMATCHED
G5 external offline lint clean (IMP-001..005 all 0 on the new export); no Designer import log
G6 external reference PDF inspected (9 pages, Designer 17.0.436.3); no composition run, no input payload, no AEM PDF

Routed findings by action: manual_design 3 (G3-UNBOUND x3, the footer PDF417 barcodes). No G3-STALE-DECISION. Minor, not routable: G3-DUPNAME x25.

Scripts (classified, never executed): 48 total, 100% mechanically transferable — mutual_exclusion 19, visibility 16, conditional_clear 10, uppercase 3. None manual.

Draft rules the form depends on: BND-04, FLD-01, OBJ-02, OBJ-05, OBJ-08, OBJ-12.

Why G4 is still under the floor with a matching revision: 45/123 fields find no target by name; the export carries 2,494 data variables (most under module/system groups) against 74 FormControls, and exact-name agreement is 9%, so the dictionary (BND-05) rather than fuzzy matching has to close the gap. No thresholds changed.

People / external gates

  • Decision reviewer: none supplied — nothing accepted or rejected.
  • Designer importer: none supplied — G5 stays external. Handoff package (handoff/17-0574/: plan sha256 66bc8e7c… unchanged, CimBuildPlanImport.groovy, filtered decisions, CHECKLIST.md with the migration-stack v17.0.30 deploy sequence) and out/readiness.md are attached to the session; handoff/ is gitignored.
  • G6 external: no fixed input payload or AEM PDF.

Checks

ruff check ., ruff format --check . clean; pytest -q 96 passed / 7 skipped (18-1721 artifacts absent); python -m tools.pipeline -o out/ exit 0.

Clearance note: derived metrics and SOM paths from a partner-built test form, consistent with existing records; clearance status per knowledge/customer-clearance-boundaries remains TBD.

Link to Devin session: https://partner-workshops.devinenterprise.com/sessions/060b9626e9ad430186f22f341a34278b
Open in Devin Desktop: https://partner-workshops.devinenterprise.com/desktop/session/060b9626e9ad430186f22f341a34278b?variant=devin
Requested by: @sumitshatwara

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@sumitshatwara
sumitshatwara merged commit 158b32d into main Sep 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant