JuliusBrussee/caveman · error · CatalogError

{label}: unreviewed sync proposal marker on line(s) {', '.jo

Error message

{label}: unreviewed sync proposal marker on line(s) {', '.join(str(number) for number in offending)}: the proposal bumped verified_at, so merging with the marker intact attests a price check nobody performed -- confirm each row against its sources, then delete the {REVIEW_MARKER!r} line

What it means

Raised by check_review_markers(), which scans the RAW text of catalog/current.yaml for lines starting with '# proposed-by:' (REVIEW_MARKER). scripts/catalog_sync_modelsdev.py writes that marker on every row it touched when proposing price changes; because YAML comments are invisible to the parsed rows, only a raw-text scan can enforce that a human confirmed the proposal. Merging with the marker intact would let verified_at (price provenance attested by signed receipts) advance on work nobody performed.

Source

Thrown at shared/provider-catalog/validate_catalog.py:183

    if verified_at < now - timedelta(days=120):
        raise CatalogError(f"{label}: verified_at is older than 120 days")
    return identity[0], identity[1], identity[2]


def check_review_markers(text: str, label: str) -> None:
    """Refuse a catalog that still carries an unreviewed sync proposal.

    YAML comments are invisible to the parsed rows, so this reads the raw file:
    a rubber-stamped merge must not be able to advance price provenance while
    the line saying "nobody has confirmed this yet" is still in the file.
    """
    offending = [
        index + 1
        for index, line in enumerate(text.splitlines())
        if line.lstrip().startswith(REVIEW_MARKER)
    ]
    if offending:
        raise CatalogError(
            f"{label}: unreviewed sync proposal marker on line(s) "
            f"{', '.join(str(number) for number in offending)}: the proposal bumped "
            "verified_at, so merging with the marker intact attests a price check "
            "nobody performed -- confirm each row against its sources, then delete "
            f"the {REVIEW_MARKER!r} line"
        )


def pricing_identity(row: dict[str, Any]) -> dict[str, Any]:
    """The part of a row the immutable dated snapshot pins.

    Present-with-a-value and absent are different attestations, so only the
    price-affecting capability keys the row actually carries are recorded:
    adding one to a row that had none changes that row's price and must break
    the pin exactly like editing one that was already there.
    """
    identity = {key: row.get(key) for key in PRICING_IDENTITY_KEYS}
    capabilities = row.get("capabilities") or {}

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Open catalog/current.yaml, go to the listed line numbers, and confirm each marked row's pricing against its `sources` URLs on the vendor's own pricing page.
  2. Delete the '# proposed-by: ...' comment line(s) — that deletion IS the review attestation the validator waits for.
  3. If any proposed number is wrong, correct it (and mint the correct dated snapshot) rather than just deleting the marker.
  4. Re-run validate_catalog.py; also ensure any new verified_at date has a matching catalog/<date>.yaml snapshot or you will hit the snapshot-pin error next.

Example fix

# current.yaml (before)
- provider: anthropic
  model: claude-*
  # proposed-by: catalog_sync_modelsdev.py 2026-08-14
  verified_at: "2026-08-14T00:00:00Z"

# after — reviewer confirmed prices, marker deleted
- provider: anthropic
  model: claude-*
  verified_at: "2026-08-14T00:00:00Z"
Defensive patterns

Strategy: validation

Validate before calling

REVIEW_MARKER = "# proposed-by:"

def has_unreviewed_markers(yaml_text: str) -> list[int]:
    return [i + 1 for i, line in enumerate(yaml_text.splitlines())
            if line.lstrip().startswith(REVIEW_MARKER)]

Try / catch

try:
    validate_catalog()
except CatalogError as e:
    if "unreviewed sync proposal" in str(e):
        # open the named lines, confirm rows against sources, delete markers
        request_human_review(e)
    raise

Prevention

When it happens

Trigger: validate_catalog() runs while current.yaml still contains any line whose stripped form starts with '# proposed-by:' — i.e. a sync proposal was merged (or left in the working tree) without a reviewer deleting the marker lines. Line numbers of every offending marker are included in the message.

Common situations: An automated modelsdev sync PR is rubber-stamped merged; a developer runs the sync script locally to preview changes and then commits the file; a merge conflict resolution keeps the proposed block including its comment.

Related errors


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/75bf73f354694047. Report an issue: GitHub.