Q++Studio AI Support Handover Version 2 | 21 October 2026 For users to give to an independent AI assistant 1 HOW TO USE THIS HANDOVER This document is for an AI assistant helping a Q++Studio user investigate a problem or make a controlled change. It carries forward lessons from support cases involving GenTokens, mini-calendars, macros, scanning, generation and SARAs. Read it alongside the files for the current case. It is not a replacement for the current product documentation. Start with the documentation Open the AI Documentation Gateway first. Follow its links to the user-facing feature topics for intended behaviour and exact UI labels. For exported-script changes, use the XML implementation references as well. Search within the XV4 documentation for the exact token, function, option or message ID; search snippets alone are not sufficient. If a link opens only the navigation framework, use the topic’s permalink or printable view. If the topic still cannot be read, say which information is missing and request that topic as text, HTML or PDF. Do not invent a page’s contents or silently substitute older XE3 documentation. Working rules for the receiving assistant - Establish the desired result, observed result, affected dates/pages and what must remain unchanged. Use the actual Q++Studio and InDesign or QuarkXPress versions. Record the Q++Studio build and check relevant later release notes as described in section 2. - Keep four things distinct: observations in supplied files, documented behaviour, an inferred cause, and a result still requiring a Q++Studio test. Report conflicts between documentation and observed behaviour. - Prefer a small documented setting or template correction. Do not introduce a macro or SARA until a simpler solution has been considered. Ask for missing evidence only when it would affect the diagnosis. - Use the user’s language for explanations, retaining English Q++Studio setting names. Give exact script line, token index, special-case number, setting path, value and units. - Use a file-capable environment. If you cannot inspect IDML internals, patch XML or run Q++Studio, state that limitation. Never imply that file inspection is an actual generation test. A short message to attach with this document Use this handover and the current Q++Studio documentation to investigate my attached case. First identify the relevant script line, template, token and date. Separate data, logic and layout causes. Give the smallest supported correction with exact settings and a focused verification plan. Versions and generation year: [fill in] Affected script line / template / page / date: [fill in] Actual result / expected result: [fill in] What must remain unchanged / tests already performed: [fill in] Documentation: AI Documentation Gateway: https://www.qppstudio.net/webhelp_xv4/ai-documentation-gateway.htm Using AI assistants with the documentation: https://www.qppstudio.net/webhelp_xv4/using-ai-assistants-to-find-answers.htm XV4 documentation home: https://www.qppstudio.net/webhelp_xv4/index.htm 2 COLLECT EVIDENCE FROM ONE MATCHING RUN Identify the files before interpreting them. Record their role, revision and relationship to the failing run. A filename ending in “(1)” is not a product version. Logs can be overwritten by a later scan or generation; a plugin compilation date is not a generation timestamp. Evidence | What it establishes or helps investigate Case description and exact messages | Versions, full/partial generation, year, script line, expected/actual result, message IDs, and a specific failing date or page. support.txt from ai.zip and screenshots | Q++Studio edition and build number, DTP version and other reported environment details. Check that they describe the affected workstation and relevant run. Script exported as XML | Settings, selected resources, overrides and repeated configurations. Referenced templates, macro source and database contents are not all embedded. Source GridTemplate IDML | The tokenized InDesign template: text, styles, effective formatting, frames and geometry. Identify the actual template used by the script line. Generated IDML plus PDF or PNG | The resulting text and structure, plus its visual appearance. Include a whole-page view and a close-up; a GOOD comparison is optional. qppscanlog.txt and scan messages | What the relevant template scan extracted, including tokens and resources. Also supply Token Analysis messages when applicable. qpplog.txt | DTP execution stages, pages, objects, p-code instructions, resource reports and completion evidence. qpp_TempHolidays.txt | Actual holiday records available to the run; especially useful for missing dates, symbols and vacation bars. qpp_TempSaints.txt and qpp_TempSaintsExceptions.txt | Regular month/day names and separate legacy date-specific exceptions. qpp_TempSaras_lstSpecsAndRanges.txt and LogGen1.CSV | Prepared SARA commands/page selections, followed by recorded hits and generation messages. Macro source and configuration | The full relevant source, compiler/debugger message, token assignment, inputs and Resulting Actions; an XML macro reference is insufficient. Check the Q++Studio build and later release notes At the start of the investigation, look for the Q++Studio edition and full build number in support.txt inside ai.zip and/or the main window's status bar in supplied screenshots. Use both when available. If they disagree, report the discrepancy and establish which applies to the failing run. Keep the Q++Studio build separate from the QuarkXPress/InDesign version, plugin build, holidays database date and diary year. If the build cannot be established, say so; request it when it could change the diagnosis, without blocking other useful checks. - Open What's New for the current year's releases and the Release Notes index for previous years. Follow the relevant yearly links, covering the user's build through the latest published entries; the archive index alone does not contain the fixes. - Match the installed build to its dated release heading and state its approximate age as of the support investigation. If the exact build is absent, use nearby published builds only to establish an approximate date or range, clearly labelled as such. Do not invent an exact release date or treat the latest documented build as proof of the latest available installer. - Review later fixes, compatibility changes and relevant changes in behaviour. Compare the actual symptom, operation, DTP version, settings and triggering conditions. Distinguish a close documented match from a possible connection or no close match found. A fix already included at or before the installed build is not a missing later fix. Distinguish an individual item's date from the release heading/build under which it is listed; do not claim an exact first fixed build unless documented. - Do not recommend updating merely because a build is old, or make updating a routine prerequisite to diagnosis. When a relevant later fix or compatibility change supports an update, cite its topic, dated entry and build where given, and explain why it may address this case. Otherwise continue the normal investigation. Finding no close match in the published notes does not prove that no later fix exists. - Current help may describe options or behaviour introduced after the installed build. Check this before prescribing a feature the user cannot yet use. Give a documented alternative where available, or explain the version requirement and remaining uncertainty. Include a brief build assessment in the diagnosis: the observed build and its source, its documented or estimated date/age, and any relevant subsequent change. Keep the version-age observation separate from evidence that an update could resolve the reported issue. Recheck the live release notes for each case; do not hard-code the current latest build into this handover. Documentation: What's New in Q++Studio (current year): https://www.qppstudio.net/webhelp_xv4/whats-new-in-qppstudio.htm Release Notes (previous years; follow the yearly links): https://www.qppstudio.net/webhelp_xv4/release-notes.htm Choose the next file for a reason For a missing holiday, inspect temporary data before adjusting shading. For a missing token, inspect the scan before discussing date logic. For correct dates with drifting bars, compare template and output geometry. For a SARA with no visible effect, compare its prepared command, hits and final output. For QuarkXPress cases, use the script, logs, settings and PDF/screenshots; request additional exports when needed. Do not promise that a native QXP document can be decoded by the assistant. For an older support package, request only the missing diagnostic exports needed to settle the current question. Documentation: Diagnostic files overview: https://www.qppstudio.net/webhelp_xv4/diary-generation-diagnostic-files.htm 3 SCANNING AND GENERATION MESSAGES Follow the scan before the generated result Confirm the template filename and scan timestamp in the Scan Log tool. Its Scanning Log, Messages and Token Analysis describe different stages. Token Analysis can identify repeated or mismatched brackets; a plugin resource warning does not necessarily mean the scan failed. - Search the exact token and nearby distinctive text in qppscanlog.txt. Locate “Scanning object”, “Box Text” and the surrounding page/object entries. Distinguish a scanned empty textbox from an object that is absent from the supplied excerpt or explicitly skipped. - If the token is present, check that the affected script line actually uses that scanned template revision. After editing the source template, save and rescan it before regenerating. - Keep source page, printed page label, output page, object ID, DTP UID, template ID and p-code number separate. Equal numbers do not prove that two records describe the same object. - Use the exact message ID and its help topic. Scope matters: the GenTokens first-line warning 176075 is documented for QuarkXPress with Formatting or Xtags line endings; a soft return alone does not satisfy its hard-return requirement. Do not apply it indiscriminately to InDesign. Read qpplog.txt as an execution trace Read the header and tail first, then locate the affected operation. Follow output creation, page copying, object lookup, token replacement/formatting, SARA passes, box fitting, final checks and save/close as relevant. A physical file line number is not the logged pcl. number. A matching instruction shows that it reached the DTP plugin; inspect what follows. Its absence is meaningful only in a complete log covering that operation. GenTokens conditions are evaluated earlier in Q++Studio, so the DTP log does not directly reveal every special-case decision. Interpret messages in context Observation | Appropriate conclusion Operation skipped because its option is false | May be normal. Check whether that operation was wanted. Resource reported missing | Investigate if it affects this symptom. Separate the user’s workstation from a support rerun with different installed fonts. Output completes successfully | Execution completed; dates, text and appearance still need checking. Text overflow | Locate the textbox and examine content, metrics, dimensions and formatting; do not immediately shrink the font. Abrupt log ending or repeated shutdown activity | Identify the last completed stage. Buffering or background work can obscure the cause; the last line alone does not prove a deadlock or failing instruction. Residual token-like text with brackets removed can mean conversion was attempted and reported an error. Consult the corresponding messages, spelling, case and language settings before calling it a scanning failure. Documentation: Scanning diagnostics: https://www.qppstudio.net/webhelp_xv4/debugging-scanning.htm Template scan log: https://www.qppstudio.net/webhelp_xv4/template-scan-log-qppscanlog.htm DTP generation log: https://www.qppstudio.net/webhelp_xv4/diary-generation-log-qpplog.htm GenTokens first-line warning: https://www.qppstudio.net/webhelp_xv4/gentokensxisplacedonthe.htm 4 ESTABLISH WHICH DATA WAS AVAILABLE Holiday records and effective selections Resolve the effective a/e/i/o/u holidays selections for the affected script line, including overrides. These letters identify script selections, not fixed school zones or countries. Country_ID in qpp_TempHolidays.txt is an internal holidays-set ID, not an ISO country code. Copying a script line can bring selections that do not fit its new purpose. Filter by the applicable site, set and exact dates, including any token date offset. Date uses integer days from 30 December 1899; preserve both the stored integer and an ISO date in detailed evidence. NoSite is text: retain leading zeroes. Exclude year-generation marker rows when checking actual holiday occurrences. - Count records by selected set and year, then inspect the exact failing period. Minimum and maximum dates do not establish continuous coverage. - A complete temporary export can establish that a date was unavailable to that run. It does not prove that the source database lacks it or that another set should be selected. - If the data is present, continue through date mapping, conditions, observance settings, formatting and later processing. A row is available input, not proof that it was printed. - Do not invent school-holiday dates to fill a gap. Identify the missing period and have the user verify or update the appropriate holidays set in Q++Studio. Read temporary exports without damaging the evidence The three temporary-table exports use UTF-8, tab-separated quoted cells and metadata lines beginning with #. Match fields by name. Parse the cells before decoding documented backslash escapes once, left to right. Preserve NULL versus empty text, zero and False; preserve accents and special spaces. Check the final End of export record count against the actual rows. Older exports could show Records: 0 in the header despite containing data. A missing footer leaves completeness uncertain. Do not apply these quoting/escape rules to every other diagnostic file. Saints and namedays are a separate route qpp_TempSaints.txt uses CountryID with Month and Day, not a complete year-specific date. Resolve the saints/namedays selection rather than assuming the holidays-letter mapping applies. Compare stored Value with token variants and options affecting prefixes, case, separators or number of names. qpp_TempSaintsExceptions.txt holds legacy exceptions keyed by a complete date. An empty exceptions file can be correct. Current scripts may instead use “Combine with Holidays Set below”, whose replacement data is in qpp_TempHolidays.txt. Identify which mechanism is active before recommending a data change. Lesson from the vacation cases One COR041 investigation involved selected data with no applicable 2028 dates. In COR513, the supplied vacation data stopped at 31 August 2028. Neither omission could be repaired by adjusting rule widths. Treat those findings as examples of the method, not as the current coverage of those sets on another installation. Documentation: Holiday data export: https://www.qppstudio.net/webhelp_xv4/diary-generation-tempholidays-txt.htm Saints and namedays export: https://www.qppstudio.net/webhelp_xv4/diary-generation-tempsaints-txt.htm Saints exceptions export: https://www.qppstudio.net/webhelp_xv4/diary-generation-tempsaintsexceptions-txt.htm 5 DIAGNOSE SARAS AND THEIR RECORDED HITS A SARA can select text by literal or regular-expression content and by formatting, then change text, formatting or both. Diagnose one command from its definition through its prepared instruction and actual execution to the final output. Trace the command in order - In qpp_TempSaras_lstSpecsAndRanges.txt, identify the complete logical command, its ordinal and page specification. A command can contain raw tabs and returns: one physical line is not necessarily one SARA. - Read find criteria separately from replacement formatting/text. A font on the find side restricts matches; the same attribute on the replacement side requests a change. Inspect page restrictions, case options, phase and other settings in the SARA definition when the export does not show them. - Use LEVEL=100 rows in LogGen1.CSV for recorded SARA hits. Match PCODELN with the logical command and confirm its text. Keep NO, message ID, page/object and command ordinal distinct. Do not deduplicate repeated hit rows merely because their fields match. - Locate the command and target in qpplog.txt. Check before-BOXFIT versus after-BOXFIT processing. A phase-mismatch skip, followed by “No Saras specified”, can be normal in one pass even though the SARA matched in the other. - Examine later SARAs and final composition. A hit establishes an action at that stage, not the final appearance. Earlier commands may also have changed the text that a later command expects to find. Preserve text and expression semantics Parse LogGen1.CSV as semicolon-separated, quoted fields. Preserve line breaks within fields. Do not split native commands at every comma or vertical bar: these characters can occur inside attribute values or expressions. Do not decode SARA instructions with the temporary-table export’s escape rules. In regular-expression replacements, $0 can retain the full match while changing its formatting; $1, $2 and so on refer to captures. Distinguish literal markers such as &c and &t from the actual return/tab characters and from log display notation. Special spaces may look identical while matching differently. If testing an expression outside Q++Studio, verify engine compatibility. A successful Python or JavaScript regex test is not proof of the same result in the DTP/SARA environment. A useful report for one disputed command Report | Include Prepared instruction | Ordinal, phase, page range, exact find criteria and replacement. Recorded result | Hit count and affected page/object pairs, including zero-hit commands where the export is complete. Possible restriction | Earlier replacements, find-font availability, special characters or scope. Remaining verification | The specific output text/format to inspect after the final pass. An unavailable find font plus zero recorded hits is a concrete lead. It does not prove that installing that font will resolve every mismatch. Keep font issues tied to the machine and run that reported them. Documentation: Prepared SARA instructions: https://www.qppstudio.net/webhelp_xv4/diary-generation-sara-instructions-txt.htm Generation messages and SARA hits: https://www.qppstudio.net/webhelp_xv4/diary-generation-messages-sara-hits-csv.htm InDesign special-character markers: https://www.qppstudio.net/webhelp_xv4/special-characters-indesign.htm 6 GENTOKENS DATES AND SPECIAL CASES Identify the configuration and date context Start at the affected script line’s Grid Options → Recursive Tokens → GenTokens. Match the token index to that line’s configuration. The same GenTokens number in a different script line is a separate configuration; repeated template occurrences can also inherit different formatting. Read the token’s DayValue and offsets, generation mode/count, Step Size where applicable, outside-day handling, blank-line rules and line contents. A mini-calendar earlier in the same textbox can determine the date context. In that situation Begin on WeekStart is ignored; consult the mini-calendar’s :ws modifier instead. The mini-calendar marker need not be on the GenTokens line. Evaluate the cases explicitly Enabled special cases are evaluated by numerical case order; the first match wins, otherwise the default applies. For each failing date, list each relevant case’s enabled state, required true/false conditions, group operators, output text override, line ending and formatting. A broad early case can make a later one unreachable. A condition required to be false is different from an irrelevant condition. Translate “Day Before” and “Day After” into explicit tested dates using the documentation; do not guess their meaning from the label. Keep “Inside month”, the first/last generated line and the first/last holiday date distinct. Use boundary dates as a diagnostic table Date to examine | Question Day before the vacation | Should it remain empty, or receive a half-day start under this design? First vacation date | Does a special half-day case apply, and does it precede the full-day case? Middle weekday and Sunday | Is this continuation formatting, and does Sunday add spacing or a rule below? Last vacation date and following date | Does the bar stop correctly without drawing into the next non-holiday row? Month end and first/last generated line | Does an otherwise correct holiday case become excluded or clipped? Lessons that should not become blanket fixes - A Saturday-only start condition will not produce a half-day for a Monday or Tuesday start. Extending it can affect summer starts and the Ascension period; confirm the intended policy before changing it. - A terminal Sunday can require different formatting from a Sunday followed by more vacation days. Inspect continuation conditions and Rule Below rather than deleting Sunday formatting everywhere. - A false Last Line requirement can suppress a legitimate month-end bar. Verify the intended final line rather than changing the condition globally. - Unexpected seasons or other text can come from copied line contents, override text or different holiday selections. Do not repair the dates of content the user never wanted to display. Documentation: GenTokens options: https://www.qppstudio.net/webhelp_xv4/gentokens-grid-options.htm Special-case conditions: https://www.qppstudio.net/webhelp_xv4/gentokens-special-cases.htm XML GenTokens examples: https://www.qppstudio.net/webhelp_xv4/xmlref_editing_gentokens.htm 7 GENTOKENS AND MINI-CALENDAR GEOMETRY Resolve the effective formatting In IDML, follow the relevant spread’s TextFrame ParentStory to its story, then resolve paragraph/character styles, BasedOn inheritance and local overrides. Reconstruct tokens split across text-style runs. MasterSpreads can retain literal template tokens intentionally; inspect the generated page objects in Spreads before reporting failed conversion. Threaded frames require additional care. A soft return stays within a paragraph. A hard return starts another paragraph and retains the original token’s paragraph attributes. With Formatting, each override switch controls whether that tab replaces the inherited settings. Empty or absent XML formatting is not evidence of “no formatting”. For InDesign, leading is a text attribute; GenTokens Formats → Leading is ignored. Inspect template text leading and any macro/SARA that changes it. When correcting it in the template, select ONLY the complete line containing the GenTokens token, including spaces on that line. Leave other lines untouched, including a mini-calendar marker on a separate line. Separate row spacing from bar dimensions Symptom or measure | Check Increasing displacement down the month | Compare effective row advances. With constant spacing, drift after k intervals is k × (bar advance − calendar advance). Approximately constant vertical displacement | Check frame position, first baseline, text inset, baseline shift and rule offset. Full-day or half-day coverage | Q++Studio Rule Width is vertical thickness, called Weight in InDesign. Compare with actual day height and verify which half the offset covers. Invisible or horizontally clipped rule | Check Text/Column reference, column width, text insets and the sum of From Left + From Right. Unexpected row spacing | Also inspect automatic leading, baseline-grid alignment and Space Before/After, especially around Sundays. For a simple single-column frame with column-relative rules and nonnegative indents: usable rule span = frame width − left text inset − right text inset − From Left − From Right. It must be positive. For multiple columns, use the relevant column’s available span; resolve gutters, rotations and scaling. Convert mm to pt with mm × 72 / 25.4. COR513 had 17 pt calendar spacing but 15.5 pt vacation spacing. Full-day rules needed 17 pt; half-day rules were already 8.5 pt. These are that template’s values, not defaults for other calendars. Correct spacing before deciding whether all vacation frames need a common positional adjustment. Mini-calendar shading uses separate measurements Day 1–7 values are the right endpoints of the shade, not necessarily the digit positions. Width of Day determines ordinary starts; Min. Left Indent handles the first weekday, and Width of Textbox with Min. Right Indent handles the last. Recalculate these absolute measurements after resizing. Check visible divider positions and layering: shading hidden under a divider is acceptable only if it does not show beyond it. Documentation: Line endings and formatting: https://www.qppstudio.net/webhelp_xv4/gentokens-line-ending-formatting.htm InDesign geometry and XML units: https://www.qppstudio.net/webhelp_xv4/xmlref_editing_gentokens.htm Mini-calendar paragraph formatting: https://www.qppstudio.net/webhelp_xv4/minicalendar-paragraph-formatting.htm 8 MACRO SYNTAX AND DIAGNOSTIC METHOD Use the Q++Studio language and actual context Read the exact function topic before writing code: argument order and types, return type, indexing, units, side effects and DTP restrictions. Similar Delphi, C++ or spreadsheet names are not evidence of the Q++Studio signature. Request the full relevant macro source and assignment rather than inferring them from a database ID. Separate compilation, macro execution, date/branch logic and later DTP formatting. Retain the exact compiler message and line. For a runtime discrepancy, use the macro editor/debugger with representative inputs where available, then generate the target page. Record the calling token, inputs and n_TokenDate, including offsets and parent mini-calendar context. Keep sResult, nResult and bResult distinct. Check how the macro is assigned and how its Resulting Actions use those values. An integer result is not automatically display text or a portable color identifier. Use a direct documented function rather than rebuilding a simple predicate unnecessarily. Formatting is often applied later FormatText returns text containing markers for subsequent formatting. RICH/TEXT markers seen during processing are not, by themselves, corruption. For a named color, use the documented COLOR attribute and -1 for the deprecated numeric color argument. Verify the swatch name in the actual template. // Fragment only: sResult already contains the intended text. if IsWeekend(n_TokenDate) sResult = FormatText(sResult, 'COLOR(Red)', -1) endif This example tests Saturday/Sunday and assumes an appropriate swatch named Red. It is not a complete macro or a definition of a country’s weekend. Choose the actual text/token and swatch required by the case. For paragraph or textbox formatting on empty text, check FormatText’s documented nil-token technique (&x); formatting an empty string can be discarded. Use native text/paragraph/textbox formatting for supported InDesign operations. XPress Tags and FormatParagraph’s Xtags route are QuarkXPress-specific. User-defined functions and return Function declarations use spaces between parameter names; calls use commas between arguments. Parameters are passed by value. Function-local names must not conflict with variables in the macro’s main declarations. Verify the complete declaration structure rather than transplanting syntax from another language. Write one final return with a value of the declared type for a non-void function, immediately before its closing end as the last executable instruction. Blank lines and comments are not executable instructions. A void function must not contain return. Do not assume C/C++ early-exit semantics or rely on older compiler acceptance of misplaced or multiple returns. Confirm the installed build when reproducing such behaviour. If punctuation beside a token should inherit its resulting formatting, examine the documented filler mechanism and its configured delimiters before formatting an entire textbox. A local text requirement should remain local. Documentation: FormatText: https://www.qppstudio.net/webhelp_xv4/formattext.htm IsWeekend: https://www.qppstudio.net/webhelp_xv4/isweekend.htm User-defined functions: https://www.qppstudio.net/webhelp_xv4/user-defined-functions.htm Native text formatting: https://www.qppstudio.net/webhelp_xv4/quarkxpress-and-indesign-native-text-formatting.htm FormatParagraph restrictions: https://www.qppstudio.net/webhelp_xv4/formatparagraph.htm 9 MAKE CONTROLLED XML CHANGES Work from a valid existing export and produce a separately named corrected copy. Use the XML Identifiers, reading conventions, shared encodings and relevant record/value tables. Do not infer storage from UI order, guess condition characters or rebuild an entire script from a small example. Scope the edit precisely - Identify the script line, containing property and indexed record. GenToken IDs 1–18 are local to that grid’s options. Default LineEndingOptions is ID 0; special cases are IDs 1–15. - Preserve unrelated IDs, resource references, script-line structure, token prefixes/suffixes, text and encoding. Copying a configuration does not copy its templates, holidays, macros, colors or styles. - Check initialization and read/write conditions. A missing element, empty element and explicit default are not interchangeable. Retain controlling flags and payloads together. - Make the smallest coherent change, then show a readable before/after comparison. Preserve original bytes outside the edited values where practical; otherwise explain serialization-only changes separately. Mappings that have caused mistakes UI or operation | XML rule to verify Nothing / Soft Return / Hard Return | EndingType is 6 / 0 / 1 respectively, not the UI position. Formatting / Xtags | EndingType is 4 / 5; the corresponding payload is also needed. Xtags is not supported in InDesign. Checked / unchecked / indeterminate condition | Required true / required false / absent from both groups. Preserve Any/All and the operator combining the groups. Moving a special case | Move its entire subtree and assign the intended case ID. Merely reordering XML siblings does not change priority. Temporarily disabling a case | Use the documented Enabled and WasOnceEnabled handling; retain the case payload. Changing generation mode | Check MaxType and whether the associated value is NumMonths or MaxDay; check StepSize applicability. In the documented TXtagsRule encoding, Width, FromLeft and FromRight are scaled by 1,000,000, but Width decodes to points and the indents to millimeters. For example, Width 17000000 means 17 pt; FromLeft 600000 means 0.6 mm. Confirm the field definition before applying any conversion to other records. Validate at three different levels First parse the edited XML and compare the intended changes. Next import it into Q++Studio, reopen the affected settings and verify values, activation and case order. Finally generate representative output. A successful parse is only a syntax check; a successful import is not a visual test. If comparing a re-export, compare settings semantically: omission of defaults or normalization of retention flags can change the XML without changing behaviour. Template edits must also be saved and rescanned; an XML patch cannot change the source template’s text leading. Documentation: XML identifiers: https://www.qppstudio.net/webhelp_xv4/xml-identifiers.htm Reading the implementation reference: https://www.qppstudio.net/webhelp_xv4/xmlref_conventions.htm Shared XML values: https://www.qppstudio.net/webhelp_xv4/xmlref_values.htm Modifying GenTokens in XML: https://www.qppstudio.net/webhelp_xv4/xmlref_editing_gentokens.htm 10 DELIVER AN ACTIONABLE ANSWER AND VERIFY IT Required answer format - Lead with the likely cause and the evidence supporting it. Cite the documentation topic and the relevant filename, set/date, script line or page/object. Mark inferences as inferences. - Give exact edits in the user’s language while retaining English UI labels. For every affected GenTokens index and special case, repeat the path, current value, new value and units. Do not leave the user to infer which cases share a change. - Separate source-template edits, Q++Studio setting changes and data corrections. Explain the generation/rescan sequence. If supplying a patched XML, list exactly what it changes and what still has to be done in the template. - State what was actually validated: file parsing/comparison, reconstructed condition logic, inspection of existing output, or a new Q++Studio generation performed by the user. Never present one as another. Choose a small but meaningful verification set Area | Representative checks GenTokens and vacation bars | All affected zones/indices; first half-day, full-day continuation, terminal Sunday, next non-holiday, month end and an ordinary unaffected period. Date mapping | A different month length, leap-day where relevant, repeated script lines and year-offset occurrences. Mini-calendar shading | First, middle and last weekdays; partial first/last weeks; visible divider boundaries. Macros | True and false branches, boundary inputs, token date context and final formatting after generation. SARAs | Expected hit and non-hit, command order, page restrictions, correct processing pass and final output. Scan/generation errors | Correct template revision; relevant message resolved; successful completion where expected; no new symptom on the changed pages. Preserve the diagnostic lessons Different faults can coexist. COR513 combined a spacing mismatch, missing later-year data and a start-day condition that did not cover every weekday. A copied configuration can likewise produce both unwanted text and incorrect date logic. Correct each demonstrated cause without treating one explanation as universal. When the user reruns a test, use the new XML, output and matching logs. Record what changed, what improved and what still fails. Do not continue diagnosing a new output from an old scan or an earlier script export. When to refer the case to Q++Studio support Escalate an unresolved documentation/behaviour discrepancy, reproducible crash, unsupported XML interaction or compiler issue with a minimal reproducible case. Include versions, exact messages, the last completed stage, matching files and a short change/test history. Do not suggest changes to proprietary application source code as a normal end-user remedy. This handover reflects support lessons and public XV4 documentation checked on 15 October 2026, with build and release-note assessment guidance added on 21 October 2026. Reopen the linked topics when applying it to a later release. Numerical examples and historical case findings are illustrations, not instructions to apply to another user's files. Documentation: AI Documentation Gateway: https://www.qppstudio.net/webhelp_xv4/ai-documentation-gateway.htm Diagnostic files overview: https://www.qppstudio.net/webhelp_xv4/diary-generation-diagnostic-files.htm