Skip to content

docs: README and connect-ibm-service describe pipelines that no longer ship (prose, so #142's guard misses them) #143

Description

@amiddavid

Two documents describe preset pipelines in prose that no longer matches the presets map in config/config.go. Same defect class as the table drift fixed in #142, but in prose, which that PR's guard (TestDocumentedPresetPipelinesMatchTheShippedOnes) does not read — it parses markdown table rows only.

1. README.md:147-148codesmart and codesafe

Documented:

[format, toon, dedup, failed_run, cmdfilter, extract_llm, extract, cachesplit]

Actually ships:

format, textclean, searchfold, dedup, failed_run, cmdfilter, extract_llm, extract, linecap, cachesplit

So the README names toon — retired from codesmart after acting 0 of 5,752 production requests and converting 0 candidates in 11.67M measured tokens — and omits textclean, searchfold and linecap. This is the default preset, in the first document anyone reads.

2. docs/get-started/connect-ibm-service.md:22 — the hosted default

Documented as the "Default pipeline":

[format, toon, dedup, failed_run, cmdfilter, extract, cachesplit]

The hosted default is house, which ships:

format, dedup, toon, cmdfilter, searchfold, textclean, extract, cachesplit, toolfilter

Wrong in three ways: it lists failed_run, which house does not run; it omits searchfold, textclean and toolfilter; and the order differs (house's order is the operator's, deliberately not the lossless-first rule — see the note under the table in docs/reference/presets.md).

toolfilter is the omission that matters most here: this page is what a prospective hosted tenant reads to decide what the service will do to their traffic, and declaration removal is exactly the kind of thing they would want disclosed.

How it was found

While adding a row to the preset table for the cache preset (#141) — the table itself turned out to be stale in every row, which is #142. These two are the same rot in places the new guard cannot see.

Severity

Medium. Nothing misbehaves; the docs misdescribe what runs, in the direction that matters (naming a component that does not run, omitting three that do, including one that removes tool declarations). A reader who audits our claims against the code finds a contradiction, and cannot tell which side is authoritative.

Fix options

  1. Correct the prose, leave the guard as-is. Cheapest, and it rots again — this is the second time these numbers have drifted.
  2. Correct the prose and extend the guard to read fenced/inline pipeline lists too. The parsing is more speculative than a table row (prose mentions component names for other reasons), so it needs an explicit "this line is a pipeline claim" marker to avoid false positives — e.g. a comment anchor, or a generated block.
  3. Stop restating pipelines outside docs/reference/presets.md and link to it instead. Removes the class of bug rather than guarding it, at the cost of making the README less self-contained.

My suggestion is (3) for the README's prose list plus (1) for the IBM page's table cell — which is a table cell the guard could cover if the row were keyed by preset name (| \house` | ... |`) rather than by the label "Default pipeline".

Found by Claude Opus 5 while implementing #130.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions