CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/confirmation-testing-workflow

Procedure for proving that a claimed defect fix actually reached the build under test and actually works. Covers the merge-base ancestry check that proves the running build contains the fix commit rather than trusting a version label, the priority order for choosing which reproduction to re-run, and the VERIFIED / NOT FIXED / BLOCKED verdict table whose governing rule is that any ambiguous, flaky, or unreproducible result resolves to BLOCKED and is never guessed. Scoped to ISTQB confirmation testing (does this specific fix work?), not regression testing (did the fix break something else?), and not triage or severity assignment. Use when a developer has marked a defect Fixed and someone must decide whether it moves to Verified or back to Reopened.

99

1.03x
Quality

94%

Does it follow best practices?

Impact

100%

1.03x

Average score across 10 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

task.mdevals/scenario-6/

BUG-4471 postal codes - the developer added a guard and a test, ticket is in Fixed

Problem Description

BUG-4471 says postal codes lose their leading zeros on import: the reporter uploaded a customer file and 01234 came back as 1234. The developer pushed 7c2ea55, which adds a coercion guard to the import normaliser and ships a test for it. The ticket moved to Fixed on Friday.

Support has three customers waiting on this and the account manager is asking whether it is safe to tell them it is done. Staging is on 9fa30b1 and the containment check for 7c2ea55 against it is in ops/checks.txt.

The fix is not mine to change - if something is still wrong, it goes back to the developer with enough detail that they do not have to ask me what I did.

Output Specification

  1. Write qa-record/BUG-4471.md: whether this defect can move to Verified, with real command output rather than a description of what you saw, and - if it cannot - the observed-versus-expected difference precise enough for the developer to act on without a follow-up question.
  2. Do not modify src/importer.js, fixtures/codes.csv, issues/BUG-4471.md or the existing test. Correcting the code is the developer's next step, not part of this task.

Input Files

Extract the following files before beginning.

=============== FILE: issues/BUG-4471.md ===============

BUG-4471 - Leading zeros stripped from postal codes on import

Status: Fixed (awaiting verification) Reported: 2026-08-01 by support (acct: Verity Logistics) Fix commit: 7c2ea55 on main, merged 2026-08-08

Reproduction steps

  1. Take fixtures/codes.csv (three rows, one postal code per row, the first beginning with a zero).
  2. Import it through the CSV upload path: importCsv(fs.readFileSync('fixtures/codes.csv', 'utf8')).
  3. Observed: the first record's postal code comes back as 1234, a number. Expected: "01234", unchanged, as a string.

Reproduced every time on staging and locally before the fix.

Comments

2026-08-08 d.iqbal: Fixed in 7c2ea55 - the normaliser was coercing the postal code to a number. Added tests/import-json.test.js covering it.

=============== FILE: package.json =============== { "name": "customer-import", "version": "1.9.2", "private": true, "scripts": { "test": "node --test" } }

=============== FILE: fixtures/codes.csv =============== id,postal_code,city c_1,01234,Springfield c_2,58221,Rivermouth c_3,90210,Beverly Hills

=============== FILE: src/importer.js =============== 'use strict';

function normaliseJsonRow(row) { return { id: String(row.id), postalCode: String(row.postal_code), city: row.city, }; }

function importJson(rows) { return rows.map(normaliseJsonRow); }

function parseCsv(text) { const [head, ...lines] = text.trim().split('\n'); const cols = head.split(','); return lines.map((line) => { const cells = line.split(','); const row = {}; cols.forEach((c, i) => { row[c] = cells[i]; }); return row; }); }

function normaliseCsvRow(row) { return { id: String(row.id), postalCode: Number(row.postal_code), city: row.city, }; }

function importCsv(text) { return parseCsv(text).map(normaliseCsvRow); }

module.exports = { importJson, importCsv };

=============== FILE: tests/import-json.test.js =============== 'use strict';

const test = require('node:test'); const assert = require('node:assert/strict'); const { importJson } = require('../src/importer');

test('BUG-4471: postal codes keep their leading zero', () => { const rows = [{ id: 'c_1', postal_code: '01234', city: 'Springfield' }]; assert.deepEqual(importJson(rows), [ { id: 'c_1', postalCode: '01234', city: 'Springfield' }, ]); });

=============== FILE: ops/checks.txt =============== $ curl -s https://import.staging.internal/internal/build-info {"service":"customer-import","commit":"9fa30b1","branch":"main","deployedAt":"2026-08-09T07:20:03Z"}

$ git merge-base --is-ancestor 7c2ea55 9fa30b1; echo $? 0

SKILL.md

tile.json