fix(inbox): a segment title is declared, never marked derived
A segment's title comes from the plan, so a human adjudicated it. But
structure derivation runs over the segment body, finds no title key and
no usable heading, falls back to a stem, and adds "title" to derived.
The concept then emitted a stated fact under an inferred marker, and a
consumer that distrusts derived fields would distrust exactly the thing
a human decided. An over-marked field is the same defect class as an
unmarked heuristic: the marker is only worth something if it is
accurate in both directions.
Scoped to title alone, and pinned that way by test: number stays in
derived on a segment, because nothing about segmentation makes an
inferred document number declared. Without a segment a derived title is
still marked, so only a plan makes a title declared.
The SEGMENTED_V1 golden moves, which is the intended consequence and
the only golden that may. The four existing goldens are byte-identical
to baseline 770d8d4, measured against the sha rather than inspected.
Co-Authored-By: Claude <claude-opus-5>
This commit is contained in:
parent
8f9b4c8cca
commit
f65f5fc342
8 changed files with 80 additions and 8 deletions
|
|
@ -22,7 +22,7 @@ from __future__ import annotations
|
|||
import hashlib
|
||||
import unicodedata
|
||||
from collections.abc import Callable, Mapping
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, replace
|
||||
from pathlib import Path, PurePosixPath
|
||||
|
||||
from .errors import IngestError, MaterializationError, SegmentationError, SourceError
|
||||
|
|
@ -168,6 +168,16 @@ def render_inbox_concept(
|
|||
"generated": "true",
|
||||
}
|
||||
if structure is not None and profile.index.facets is not None:
|
||||
if segmented:
|
||||
# A segment's title comes from the PLAN, so it is DECLARED by the
|
||||
# adjudicator -- but derivation runs over the segment BODY, finds
|
||||
# no title key and no usable heading, falls back, and marks it
|
||||
# derived. The concept then emits a stated fact under an inferred
|
||||
# marker, and a consumer that distrusts derived fields distrusts
|
||||
# exactly the thing a human decided. Scoped to `title` alone: every
|
||||
# other field here really was inferred from the body, and blunting
|
||||
# the marker would be the opposite defect.
|
||||
structure = replace(structure, derived=structure.derived - {"title"})
|
||||
frontmatter.update(structure_frontmatter(structure, profile.index.facets.keys))
|
||||
if segmented:
|
||||
assert segment is not None
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue