Example

Pick the least representation whose obligations hold

See four obligations reported separately — membership, nesting, dependency closure and wording — and a brief that names a qualifier's unit but drops its words lose at the fourth.

Compression has levels, and the chapter’s claim is that the level is not a preference — it is a property of what the rendering keeps. A level is chosen only if four obligations hold, and the four are reported separately, because passing the first three says nothing about the fourth.

Run it

git clone https://github.com/ernanhughes/project-language.git
cd project-language
git checkout 329660f679a5a87831f91fe1430c20ac9360dda8
npm ci
npm run example:radar

One invented afternoon, five invented candidates, and a scripted stand-in for the model. No real model is called.

Expected outcome

A brief that names the qualifier’s unit and says only “safe” passes three of the four checks and fails the fourth:

...
The four checks behind the lossy item's resolution (its person needs at least BRIEF):
  GLANCE   skipped: below the minimum BRIEF for this need
  BRIEF    membership=ok  nesting=ok  dependency_closure=ok  semantic_preservation=FAIL
  SUMMARY  membership=ok  nesting=ok  dependency_closure=ok  semantic_preservation=ok   <- chosen
  DETAIL   membership=ok  nesting=ok  dependency_closure=ok  semantic_preservation=ok   (also passes; not needed)
Naming the qualifier's unit made three of the four checks pass. Only the fourth looks at the words.

And a rendering that names a unit the compiler did not select is refused, and the source stands instead:

...
with a budget of 30 the compiler selected [c-assume, c-qual] and refused [c-claim]
the BRIEF names the refused claim, so it fails membership: units the compiler did not select: c-claim
what would be presented: the source (source_stands), not an authored summary

Four obligations, reported separately

The module’s own header comment names them, and the distinction is the point: stable ids, nested membership and closure do not prove faithful wording.

// Resolution: the least representation whose obligations hold, and no lower than the task needs.
//
// A rendering may use ONLY units the compiler selected. A rendering that names no unit is refused:
// an unattached summary has nothing tying it to the source. An item with no unit decomposition, or
// whose selection is empty, is not summarised at all; the source stands.
//
// Four obligations, reported SEPARATELY. Passing the first three says nothing about the fourth.
//   membership            every unit a rendering names is in the stable unit set AND was selected
//   nesting               a lower rendering's units are within the next higher one's
//   dependency closure    every unit named brings the units it depends on
//   semantic preservation the rendering's WORDS keep what each named unit (and a claim's qualifier) says
// Stable ids, nested membership and closure do not prove faithful wording. A rendering can name
// the qualifier's unit and still say "safe".

The minimum is a declared policy, not a computed score:

/** Declared policy: no lower than this for the person's need. GLANCE passing its contract does not make it enough to judge a proof. */
export const MINIMUM_BY_NEED: Readonly<Record<Need, Resolution>> = {
  triage: "GLANCE", decide: "BRIEF", safety_claim: "SUMMARY", implement: "DETAIL", judge_proof: "DETAIL",
};
export const MINIMUM_POLICY_VERSION = "minimum-by-need-v1";
export const minimumFor = (need: Need): Resolution => MINIMUM_BY_NEED[need];

And a rendering is never accepted on an unvalidated check:

      const declaration = declare({ at: input.declaredAt, obligations });
      const faithful = obligations.map(o => o.anchor!.passage).join(" ");
      const validation: InstrumentValidation = validateInstrument(declaration, source.text, faithful, input.outputAt);
      const profile = assess(declaration, { id: `${level}`, source: source.text, output: r.text, output_at: input.outputAt }, validation);
      instrument = profile.instrument;
      const lost = profile.obligations.filter(o => o.outcome !== "SURVIVED");
      const ok = profile.instrument === "validated" && lost.length === 0;

Mechanism and limitations

Documented: the four obligations, the “no lower than the need” policy, and the rule that a rendering may use only selected units are in core/radar/src/attention/resolution.ts.

Observed: the run above. The lossy brief failed only the wording check and the resolution rose to SUMMARY, which passed all four. The brief naming a refused claim failed membership and the source was presented instead. GLANCE was skipped rather than evaluated, because the person’s need sets a floor.

Not shown. The wording check is anchored phrases and content words for named qualifiers, validated by mutation probes, and it is defeated by copying the right words around a different meaning. The five levels are hand-written; the program does not generate them. The minimum policy is declared, not measured, and whether these levels suit any real need is untested. Nothing here compares the result with the plain source for a reader.

Canonical source and the resolution module .

Understand this example

Copy this prompt into your AI tool. No code runs here.

Apply this example

Copy this prompt into your AI tool. No code runs here.