Continuous Disambiguation

CI for prose

Ambiguous prose reaches review, where a reviewer can only reject it and guess at what the author meant. Continuous Disambiguation is a plan to settle the meaning with the author while they write, as CI checks code on every push.

Planned. Nothing on this page runs yet. The agent and the effect it needs are open issues, listed under Status.

Read the specificationRead the QC handbook (PDF)

One entry, two readings

The introduction of the OpenFP Quality Control Handbook gives this hypothetical ChangeLog entry:

No longer silently ignores invalid signatures.

It is grammatical and reads like a security fix. It does not say what “no longer” denies. A review that checks only English form passes it under either reading, and a reviewer who sees both can only reject it and guess which one the author meant.

  1. Reading 1

    Invalid signatures are now rejected. The hole is closed.

    Rewrite: Invalid signatures are no longer accepted.

    Annotation: ASR · N · DYN · NEG

  2. Reading 2

    Invalid signatures are still accepted, with a warning. The hole is still open.

    Rewrite: Invalid signatures are still accepted, but now produce a warning.

    Annotation: ASR · N · DYN

One reading closes a hole and the other leaves it open. Each rewrite carries only one reading. The codes are the handbook's annotation of each rewrite, and its glossary defines them.

The planned loop

This is the design in agents/agents-shell#5 as its later comments set it out, replacing the issue's first description. The agent is called Chattypants, and none of it is built yet.

For disambiguation, Chattypants would have two jobs. It would watch issues, and every model call that an agent makes would pass through it. It would settle an ambiguous prompt with the agent that wrote it before the model sees it, and an ambiguous reply with the model before the agent receives it.

  1. Watch

    When an issue is posted or edited, Chattypants would read its title and body. Every prompt an agent sends to a model, and every reply, would pass through it too.

  2. Annotate

    It would pass each passage to the Annotate effect, which would find the passage's readings as Ithkuil annotations, each with an English rewrite.

  3. Stay silent

    A passage with one reading would get no comment. A reply with no reading would go back to the model to be restated.

  4. Ask

    On an issue passage with more than one reading, it would comment with the readings and a rewrite for each. On a prompt or a reply, it would ask the agent or the model which reading was meant. It would ask only where the readings differ in consequence, not merely in wording.

  5. Resolve

    The question would be settled once the author picks a reading or rewrites the passage, and Annotate finds one reading in the result.

  6. Review

    Nastypants, the reviewer, would treat a settled question as evidence of what the author meant, and would not have to guess.

The author chooses

Chattypants would never choose a meaning. Only the author knows which reading is true. It would ask, and the author's answer would settle the passage.

Status: planned

Both parts are planned and not yet built. Each links to the issue that tracks it.

Further reading