Release Changelog

This section contains release changelogs automatically generated from Conventional Commits by the CI/CD Finalize-Sprint pipeline.

Release History

Changelogs are organized by release version under changelog/{version}/. A new version folder is published each time a release branch is finalized.

Each release contains:

File Description

qa.adoc

Jira ticket references only (refs: commits). Use this for QA tracking and verification.

external.adoc

Customer-facing changes: Jira refs, features, bug fixes, documentation, and maintenance.

all.adoc

Complete changelog including every conventional commit type.

External Components in a Release

Beyond the generated files, every release page (changelog/{version}/index.adoc) carries a hand-maintained External components in this release section: the versions of the third-party products this release was built and verified against — the runtime images, the Claude Code CLI, Playwright MCP, the MCP sidecars, and the platform services the tests read back from.

That section is written by hand because the generated files cannot produce it: they are derived from commit messages, and a dependency that did not change in a sprint leaves no commit behind while still being part of what the release was verified against.

The current values live in Third-Party Components and are copied into the release page when the release is cut.

Once a release is published, those same third-party versions — and the versions of every other FT service shipped alongside — also appear on FT Version Control, together with the upgrade steps between releases. That page is the platform-wide record across services; the section here describes only what this branch is built against right now.

Add the section to changelog/{version}/index.adoc only. qa.adoc, external.adoc and all.adoc are regenerated in full by the Finalize-Sprint pipeline, and anything hand-written in them is lost on the next run.

Current values

What this branch is built and verified against right now, and the set that gets copied into the first release page when a release is cut. It describes the current state of the branch — not a released version.

Two kinds of entry sit in this table, and they age differently. Versions read off Dockerfile, docker-compose.yml and the requirements files are pins — change them and the build changes. The platform services at the bottom are not pinned by this repository at all: the agent talks to whatever the stand runs, so those rows record what the tests are verified against.

Component Version Notes

Runner base image

node:20-slim

Runtime image the test-runner is built from; Python 3 comes from the Debian packages installed on top of it (test_runner/Dockerfile)

Gateway base image

python:3.11-slim

Runtime image the multi-stand gateway is built from (gateway_service/Dockerfile)

Claude Code CLI

2.1.233

Pinned deliberately: an unpinned npm install -g sticks in the build cache and silently changes CLI behaviour between rebuilds. This is the version the live interact session (--input-format stream-json) was verified against (test_runner/Dockerfile)

Claude models

claude-sonnet-5, claude-opus-5, claude-haiku-4-5-20251001

Aliases sonnet / opus / haiku resolve to these IDs before the CLI is invoked (claude_config.py). Every run endpoint — POST /api/run, /api/run/batch, the XML import paths and the LLM diagnose helper — defaults to opus; CLAUDE_MODEL (default sonnet) is only the fallback for non-interactive agents that pass no alias

Playwright MCP

@playwright/mcp 0.0.82, started with --caps=testing

0.0.72 refactored the tool registry: browser_run_code became browser_run_code_unsafe. browser_click / browser_hover / browser_type already required target in 0.0.71; the interact loop sent ref, so each of those calls was rejected and the loop’s JS fallbacks did the clicking. Now that the calls land, a click is retried by name only when Playwright rejects it, the forced submit is skipped once a submit click has landed, and a field is cleared before it is typed into. browser_take_screenshot also writes a PNG next to the server, so the failure screenshot is taken with page.screenshot through run-code. The version is set once in test_runner/Dockerfile

Browser

Chromium, installed by npx playwright install --with-deps, plus chrome-for-testing

Driven headfully inside the container under Xvfb and exposed over noVNC

TR-069 emulator MCP

hub.friendly-tech.com/mcp/tr069-emulator 1.0.7

Sidecar that applies CPE parameters and triggers Inform. One instance per environment (test_runner/docker-compose.yml)

BBF tree MCP

hub.friendly-tech.com/mcp/bbf-tree-agent 1.4.0

Generates TR-181 trees for imported cases. One shared instance per pool (test_runner/docker-compose.yml)

Web framework

FastAPI >= 0.109.0 on Uvicorn >= 0.27.0

Both the runner API and the gateway (requirements-test-runner.txt, gateway_service/requirements.txt)

HTTP / WebSocket clients

httpx >= 0.27.0, requests >= 2.31.0, websockets >= 12

MCP calls, upstream proxying and the gateway’s noVNC relay

Vector store client

qdrant-client >= 1.12.0

Backend RAG context for converter enrichment

Database drivers

PyMySQL >= 1.1, oracledb >= 2.0

Platform state reads during verification. Pure-python: oracledb runs in thin mode, so no Oracle Instant Client is needed in the image

SSH client

paramiko >= 3.4

Post-test log error checks on the stand’s log server

Docker Engine / Compose

20.10+ / 2.0+

Only supported deployment method

Portainer

any release exposing API v2

Optional. Used to deploy the stacks, and by the gateway to provision workers

ClickHouse

26.2 (platform minimum), HTTP on 8123

Read back during verification of dashboard KPI values. Not deployed by this service

MySQL or Oracle

MySQL 8.4 / Oracle 21c (platform minimums)

Platform state reads. Not deployed by this service

Environment under test

FTACS, TR-069 emulator and the management / support portals of the target stand

Versions belong to the stand, not to this repository — the agent drives whatever is deployed there

Changelog Format

Entries are derived from the commit message prefix:

Prefix Section

feat

Features

fix

Bug Fixes

perf

Performance

docs

Documentation

refactor

Refactoring

chore

Maintenance

refs: DEV-XXXX

Jira References (rendered as clickable links)

Example commit messages:

feat(converter): ground the nav grammar and entity seeding
fix(runner): drive the controls these steps actually name
docs(installation): document the per-service env templates
refs: DEV-2383

Releases

No release has been published for this component yet — the Finalize-Sprint pipeline has never run for it, so there is no changelog/{version}/ folder and no generated qa.adoc / external.adoc / all.adoc trio. Released versions will be listed here once a release branch is finalized, each carrying the external-component versions from Current values.

Until then the per-build change list lives in release_notes.txt at the root of the repository, and the version and build the branch currently carries are in version.xml next to it — 1.0.0.0 build 1.0.0 as of 16.08.2026.