Skip to content

pv: a shapes gate reports Pass AND armed over ZERO focus nodes — aggregate swallows decline: NoFocus #3610

Description

@noahgift

P0 — a truth defect in the instrument. Measured on lambda-labs 2026-09-20 with pv 0.68.2.

pv lint --gate shapes reports verdict: Pass for a contract whose entity is type: jsonl, grading zero focus nodes. Nothing in the output says so, so a shape over a jsonl entity is decoration that reads as coverage.

Reproduction, exactly as planted

contracts/slk-inbound-v1.yaml declares:

- {path: slk:outcome, pattern: "^(answered:(status|findings|prs|fleet|red|ask)|refused:...)$"}

Plant a row the pattern forbids into the jsonl entity:

{"schema":"slk/inbound-v1","kind":"inbound","channel":"C0C37U9HWMP","user":"U1","ts":"1.0","text":"x","outcome":"answered:do"}
entity type verdict
type: jsonl Pass
same row, type: json Fail — ont:slk/outcome: "answered:do" does not match /^(answered:...)$/

focus_nodes_n stayed at 8 with four rows in the file; converting to type: json took it to 10.

Two arms

1. Vacuity refusal. Any contract whose target resolves to 0 focus nodes renders Unknown{NoFocusNodes} (exit 2), never Pass. A gate that cannot fail is not a gate — this is the fleet's signature defect inside the instrument that exists to catch it. Fixture: the jsonl case above.

2. jsonl extractor. One row per line = one focus node.

Until arm 2 lands, the workaround is one representative json entity under shape with the ledger enforced outside pv — and the contracts carry unmeasured: [jsonl-rows] so the limit is in the artifact rather than in someone's memory.

Arm 1 is the one that matters: with it, the workaround is unnecessary because the gate would have said so on day one.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Critical priorityont-0.70Ontology spec work that must finish in 0.70 (operator 2026-09-23)

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions