fix(tools): nothing to propose writes no artifact and is not a failure
Measured on the K2 corpus 2026-09-03: 11 of 39 documents proposed zero segments -- overwhelmingly PDFs with no declared structure, which Topic 1b had already measured at 23 of 33. The proposer wrote an artifact for each of them and exited 0. An empty plan cannot be replayed. `process_inbox` refuses one by design, because a plan naming no entry would persist nothing for a document that was dropped, so the only thing a zero-entry file can do is fail a run later -- and it did: the first segmented corpus run stopped on `segmentation_plan_invalid` before writing a single concept. Exit 1 with no artifact, distinct from 2, so a driver can tell "this document lands as one flat concept" from "stop". The orphan check's test now observes the same property through the status. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a5e129d413
commit
bca722fa85
2 changed files with 61 additions and 2 deletions
|
|
@ -364,6 +364,21 @@ def run(source: Path, out: Path, *, okf_type: str, proposed_at: str, path_prefix
|
|||
proposed_at=proposed_at,
|
||||
path_prefix=scope,
|
||||
)
|
||||
# Nothing to propose is an OUTCOME, and it is not an artifact. An empty
|
||||
# plan cannot be replayed -- `process_inbox` refuses one, because a plan
|
||||
# naming no entry would persist nothing for a document that was dropped --
|
||||
# so the only thing a zero-entry file can do is fail a run later. Its own
|
||||
# exit status, distinct from 2, so a driver can tell "this document lands
|
||||
# as one flat concept" from "stop".
|
||||
if not payload["entries"]:
|
||||
print(
|
||||
f"{PROPOSER_ID}: nothing to propose for {source.name} — the mechanical "
|
||||
"rules found no boundary. No artifact written; this document lands as "
|
||||
"one concept unless someone segments it by hand.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 1
|
||||
|
||||
out.parent.mkdir(parents=True, exist_ok=True)
|
||||
out.write_bytes((json.dumps(payload, indent=2, ensure_ascii=False) + "\n").encode("utf-8"))
|
||||
print(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue