The partner-facing release Tesztelési jegyzőkönyv (TjK) is a hand-authored .docx — one per partner per release — with one Heading2 section per shipped ticket. This note captures its reverse-engineered structure so a new one can be authored or appended-to programmatically. Reverse-engineered 2026-08-11 from the 2026-08-10 Raiffeisen … Release 1.9.11.100.docx draft (raiffeisen-1.9.11.100).
This shape is now the standard for every partner (decision 2026-08-11)
Historically each partner had its own TjK format. As of 2026-08-11 all partners standardize on the
release-docshape described here, and the newest TjK in~/Downloadsis the authoritative current format — that is where the live Google-Docs export lands, so it beats any ticket attachment. Match TjK files by name (Tesztelési jegyzőkönyv/Tesztjegyzokonyv); Downloads holds unrelated documents of near-identical size.The legacy shapes survive only as
priorShapeinpartners.json, to tell a customer their format changed:
Shape Production Tool Prior users release-doc— this note, the targetBevezetés+ aHeading2section per ticketappend_release_sections.pyRaiffeisen ( ASSRAFIPI-133/130/127/123)sablon(legacy)one dev ticket, 19 <…>placeholder substitutionrender_tjk.py(tesztjegyzokonyv-generation-flow)NÚSZ ( ASSNUSZ-116)spreadsheet(legacy).xlsxtest-case matrixnone MKB through 1.9.11.63, docx/PDF from .65
fileStemstays per partner — customers file documents by name. RaiffeisenRaiffeisen - Tesztelési jegyzőkönyv - VUER OSS CSS - Release 1.9.11.<NN>, NÚSZTesztelési jegyzőkönyv - NÚSZ - 1.9.11.<NN>.The two renderers are not two views of one thing — they build different production artifacts. Pushing a
release-docthroughrender_tjk.pyproduces nonsense, and vice versa./fk-tjkdetects the shape and routes; only bypass it if you already know the partner’s shape. A partner’spriorShapeinpartners.jsonstaysnulluntil someone verifies it against that partner’s newest attachment —nullmeans unknown, not none.
Rebasing one partner's TjK onto another leaks ticket ids
The table of contents is a static field: it keeps the previous document’s heading text until someone refreshes it. Rebase a Raiffeisen TjK into a NÚSZ one and the TOC still reads
ASSRAFIPI-124,SLARAFIPI-59— another customer’s ticket ids inside this customer’s document, invisible in the body.append_release_sections.py newdocclears the cached entries and refuses to write if anyASS…/SLA…/CR…/BUG…id from the source survives.
For Agents
- Just run
/fk-tjk <partner>— it starts from ahistoriansubagent synthesis, resolves the partner’s own release train, takes the base from~/Downloads, drafts, and writes a tester runbook. Do not carry a release number in from conversation; trains are per-partner (Raiffeisen .100 while NÚSZ was on .48).- This note is the single source for the document shape, including the verbatim Hungarian boilerplate. The former on-disk spec
docs/tjk-raiffeisen-document-structure.mdwas folded in here and retired — knowledge lives in the vault, not in the facekom working directory. Only executable config stays on disk:/Users/levander/coding/facekom/.claude/commands/fk-tjk.mdand.claude/scripts/tjk/*.py+partners.json.- Renderers:
.claude/scripts/tjk/append_release_sections.py(release-doc, JSON-driven) andrender_tjk.py(sablon). Both take--selfcheck, self-verify their output, and never mutate their input.- Hard rule: section headings use the partner-side ticket id (
ASSRAFIPI-/SLARAFIPI-/CRRAFIPI-).FKITDEV-<n>never appears in a customer document — the tool asserts this.- Hard rule: never invent evidence. Leave the block empty and flag it if the test has not run.
File naming and destination
<Partner> - Tesztelési jegyzőkönyv - VUER OSS CSS - Release 1.9.11.<NN>.docx
Attached to the partner release ticket (ASS<PARTNER>-<n>) as .pdf with the same stem. Verified present on ASSRAFIPI-133 (.99), -130 (.98), -127 (.96), -123 (.95). Download/lookup recipe: youtrack-tesztjegyzokonyv-attachment-recipe.
Document skeleton
| # | Style | Content |
|---|---|---|
| 1 | Title | Tesztelési jegyzőkönyv — fixed |
| 2 | Normal | <Partner> - VUER OSS / CSS |
| 3 | Subtitle | Release 1.9.11.<NN> |
| 4… | Normal | Auto TOC field (TOC \h \u \z \t "Heading 1,1,…,Heading 6,6,") built from Heading 1–6 |
| — | Heading2 | Bevezetés |
| — | Heading2 | one per shipped ticket, repeated |
The TOC is a static Word field — appending sections does NOT update it
Programmatic append leaves the table of contents describing the previous release’s sections. Open in Word / Google Docs and refresh the TOC before exporting the PDF. There is no way around this from the zip side.
Per-ticket section shape
Heading2 <PARTNER-TICKET-ID> - <ticket title> ← ASSRAFIPI- / SLARAFIPI- / CRRAFIPI-, never FKITDEV-
Heading3 Fejlesztés
Normal what changed and why, 1–4 paragraphs, plain Hungarian
Heading3 Teszteset
Normal how it was tested
… evidence block (see below)
Heading4 Elvárt működés ← OPTIONAL
Normal the expected behaviour, one paragraph
- Section order follows the release ticket’s changelog order, not ticket number.
Elvárt működésis included where the change has an observable behavioural contract; skipped for pure log/report tweaks.- Numbered sub-cases inside one
Tesztesetare plainNormalparagraphs starting1.,2.,3.— not a Word list.
Example mapping for 1.9.11.100: ASSRAFIPI-119 ← FKITDEV-8827, SLARAFIPI-60 ← FKITDEV-8787.
Evidence blocks — three accepted forms
1. Monospace text dump (API responses, test output, CSV/log excerpts) — strongest form. One Normal paragraph per line, with these run + paragraph-mark properties:
<w:rFonts w:ascii="Roboto Mono" w:cs="Roboto Mono" w:eastAsia="Roboto Mono" w:hAnsi="Roboto Mono"/>
<w:color w:val="37474f"/><w:sz w:val="21"/><w:szCs w:val="21"/>Introduce each dump with a short label paragraph (Document recognition V3, MRZ detection, Az exportált állomány tartalma:).
2. Inline screenshots — <w:drawing> in a Normal paragraph, embedded as word/media/imageN.png. For visual proof (admin UI, log viewer). Introduce with e.g. Csatolom a képeket a logból.
3. Narrative — a sentence asserting the case passed inside a broader flow, e.g. “Self service folyamat tesztelésnél látszik, hogy a folyamat sikeresen, hiba nélkül végig futott.” Weakest form; acceptable only when the change is observed as a side effect of an end-to-end run.
Bullets anywhere in the document use numId=1, ilvl=0, ind left=720 hanging=360.
Bevezetés block
Fixed order, all Normal unless noted:
Eme jegyzőkönyv a VUER OSS és CSS rendszerek 1.9.11.<NN> Release keretén belül történt fejlesztések teszteléséről szól. A tesztelés localhost-on történt, mock-olt adatokkal.- blank
A tesztelés az alábbi eszközökön és böngészőkben történt:Mobilt érintő részek→ bullets: iOS version, phone model, browsersBöngészőben tesztelhető részek→ bullets: OS, browser + build string- blank
A tesztelés az alábbi verzión történt:→ bulletsVUER CSS - <partner>-1.9.11.<NN>,VUER OSS - <partner>-1.9.11.<NN>- blank
A tesztelés ideje:→<YYYY.MM.DD.>- blank ×2
- Closing recommendation paragraph — the pass/fail statement (verbatim text below)
The closing recommendation paragraph — verbatim
Reproduce it exactly as below, swapping only the partner name. <Partner> appears twice and both occurrences get replaced:
A fejlesztői környezetben végrehajtott tesztesetek alapján a fejlesztői, tesztek sikeresen zárhatóak. A szállító által biztosított
<Partner>fejlesztés a jelen tesztelési jegyzőkönyv eredményei szerint telepítésre ajánlott a<Partner>PROD környezetbe. Más szállítói, fejlesztői tesztre nincs szükség és lehetőség, az elvégzett fejlesztői tesztek lefedik a megvalósítható(“Feasible and Practical Testing”) eseteket. A fejlesztői környezetben végrehajtott tesztek mind sikeresek voltak, nem volt hibás eredmény.
Keep the quirks — they are in the real document
- Double space before
A fejlesztői környezetben végrehajtott tesztek mind sikeresek voltak(aftereseteket.). Do not normalise it.- No space in
megvalósítható("Feasible and Practical Testing").- The comma in
a fejlesztői, tesztek sikeresen zárhatóak.These are the customer’s own wording. “Fixing” them makes the paragraph diverge from every previously delivered TjK.
This paragraph IS the pass/fail statement
Its last sentence asserts “A fejlesztői környezetben végrehajtott tesztek mind sikeresek voltak, nem volt hibás eredmény.”, and the paragraph declares the delivery
telepítésre ajánlott(“recommended for installation”) into the partner’s PROD.If any test case failed, this paragraph MUST be rewritten. Do not ship the “mind sikeresek voltak” wording over a red result — it is a formal statement to the bank, not boilerplate.
newdocrebases the text unchanged, so nothing in the tooling will catch a red result for you.
Programmatic append
Working script: /Users/levander/coding/facekom/.claude/scripts/tjk/append_release_sections.py (the earlier append_sections_example.py name is gone). Two modes — newdoc to rebase a base document onto a new partner+release, then plain append to add this release’s sections from JSON. Driven by [[tesztjegyzokonyv-generation-flow#phase-5—render-the-two-step-build|/fk-tjk Phase 5]].
Method:
- Build
<w:p>elements with the styles above. - Splice them in immediately before
<w:sectPr>inword/document.xml. - Rewrite the zip entry-for-entry (do not let a zip library re-compress or reorder — a
.docxis order-sensitive in practice and Word is unforgiving). - Self-check the result: valid zip, parseable
document.xml, every section heading present, no section duplicated (a ticket id already in the draft is an error, not an append), and noFKITDEV-in any heading.--selfcheckalone verifies the tooling without touching a document. The input draft is never mutated — output is always a new file.
The script is JSON-driven — you should not need to write python. Block kinds inside a section’s fejlesztes / teszteset / elvartMukodes arrays:
| Block kind | Renders as |
|---|---|
p | one Normal paragraph (\n becomes a real <w:br/>) |
bullets | list items (numId=1, ilvl=0, ind left=720 hanging=360) |
code | one monospace paragraph per line (Roboto Mono, color 37474f, sz 21) + trailing blank |
evidence | keeps the literal <képernyőképek, tesztelés eredményének bizonyítása> cue for the tester |
On error, fix the JSON and re-run — never hand-edit the .docx: a hand edit is invisible to the self-checks and is lost on the next run. Same “swap exactly one entry, verify afterwards” discipline as render_tjk.py in tesztjegyzokonyv-generation-flow. A worked JSON-to-prose example: raiffeisen-1.9.11.100-tjk-sections.
Styles / fonts present
Title, Subtitle, Heading1–Heading6, Normal, TableNormal. Embedded fonts: Roboto and Roboto Mono (regular/bold/italic/boldItalic each). The document is a Google Docs export — all w:rsid* attributes are 00000000 and w14:paraId values are sequential. Useful tell: if rsids are non-zero you are looking at a real-Word document and a different lineage.
Authoring a new one
- Copy the most recent partner TjK; bump
Release 1.9.11.<NN>in theSubtitleand inBevezetés¶1. - Update the device / browser / version / date block. Keep the closing recommendation verbatim (unless a case failed).
- Delete the previous release’s ticket sections.
- Add one section per ticket in release changelog order, using the partner-side ticket id.
- Paste evidence. Never invent it.
- Refresh the TOC, export to PDF, attach to the partner release ticket.
Gotchas observed in the 1.9.11.100 draft
Real defects found in the 2026-08-10 Raiffeisen draft — check for these
- Body paragraphs mis-styled as
Heading3/Heading2insideSLARAFIPI-59 - Girinfo feldolgozás issue→ they pollute the TOC. Set them toNormal.- Two empty
Heading2paragraphs before that section → delete.SLARAFIPI-62 - Logikai adategyezés dr issue javítása— both subsections empty.issuutypo in theSLARAFIPI-59heading (should beissue).The first two are the generalisable class: a mis-styled body paragraph is invisible in the body but loud in the TOC, so proof-read the refreshed TOC, not just the pages.
Related
- tesztjegyzokonyv-generation-flow — the
/fk-tjkprocess that builds this document: zero-context Phases 0–7, thenewdoc+ append two-step, evidence regeneration, and the tester runbook. This note is the document; that one is the process. - tesztjegyzokonyv-primer-prompt — the copy-paste primer prompt (
/fk-tjk <partner>+ the standalone Hungarian prompt for a fresh session) - raiffeisen-1.9.11.100-tjk-sections — a filled-in worked example: two finished Hungarian sections with evidence blocks
- youtrack-tesztjegyzokonyv-attachment-recipe — finding/downloading existing TjKs from YouTrack
- raiffeisen-1.9.11.100 — the release this was reverse-engineered from
- release-process · client-registry · FaceKom