feat(prepass): the debate is handed the declared cut and the navigator tools are withdrawn [skip-docs]
[skip-docs]: CLI-flagget og README-blokka kommer i steg 6/7; `prepass_payload` er foreloepig bare naabar for en bibliotek-kaller. `run_project(prepass_payload=...)` forgrener bundle-armen. UTEN payload er hver linje uendret -- pekeren, de fire verktoeyene, siteringer over hele den navigerte basen. MED et payload faar debatten et DEKLARERT KUTT og verktoeyene trekkes (SS 2.2: kontekst pre-passet holdt tilbake ble holdt tilbake med vilje; en debatt som holder BEGGE er fri til aa gaa rundt kuttet den nettopp erklaerte). Nekten PROPAGERER, aldri en stille degradering tilbake til pekeren -- `load_mandate`s regel. Maalt paa NULL modellkall, ikke paa exit-koden. `delivered == 0` nektes ved NAVN foer debatten, med nevnerne, spoersmaalet og ref-en sitert: maalt er den tilstanden bare naabar naar hvert konsept feilet leksikalsk (den andre tomme saken nekter produsenten selv), altsaa bevis for FRAVAER. Uten den falt kjoeringen gjennom til `run.py`s siteringsvakt, hvis melding navngir `docs_dir` -- som er `None` paa denne stien. `bundle_excerpt_citations` (datasource) siterer de LEVERTE konseptene alene: et stempel som siterer hele korpuset for et forslag som saa fire, gjenoppfinner den uerklaerte paastanden sømmen finnes for. Kroppen tas fra den NAVIGERTE `BundleFile`, ikke fra payloadets `text` -- den leverte teksten er NFC-normalisert med strippet hale, saa en locator over den ville ikke indeksert fila den navngir. Deler dermed ogsaa `bundle_citations`' verdict-eksklusjon i stedet for aa gjenta den. MCP-appenden ligger BEVISST under forgreningen: dette trekker navigatoerverktoeyene, ikke verktoeylista. Maalt: en tom liste naar traaden som `tools: None`, saa ingen uproevd tom-array-form innfoeres. `RunResult.prepass` og `DryRunReport.prepass` DEFAULTER (`skipped_links`-halvdelen: `None` er det sanne utsagnet "ingen payload ble gitt"), bundet i BEGGE grener saa ingen `NameError` venter paa veg-stien. `ProvenanceStamp` er BEVISST urørt -- stempelet beskriver gaten som doemte EN kandidat, dette er et RUN-nivaa-faktum om hva kjoeringen i det hele tatt fikk lese. Tilbaketrekkingen asserteres paa `fresh_workflow(tools=...)`, ALDRI paa `debate_tool_calls`: maalt er det sporet allerede tomt MED alle fire verktoeyene, fordi en `ScriptedChatClient` aldri emitterer et verktoeykall. En arm skrevet paa det kan ikke skille de to implementasjonene. GATE, IKKE VEGG: en egen arm beviser at den gatede ExpeL-folden fortsatt naar hypotese-prompten (0.82) under et payload. 1440 passed / 5 skipped (fra 1425/5, +15, 0 fjernet). ruff + mypy rene. Golden `shasum -a 1` av INNHOLDET = ea8c534773acdbe41ae68f2c55724d69aaf8be4f, BYTE-UENDRET. Co-Authored-By: Claude <claude-opus-5>
This commit is contained in:
parent
651c83f9df
commit
7aa06d581f
3 changed files with 513 additions and 7 deletions
|
|
@ -13,6 +13,7 @@ byte-identical whether the agents reach it in-process or over stdio.
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Sequence
|
||||
from typing import Any
|
||||
|
||||
from agent_framework import FunctionTool, tool
|
||||
|
|
@ -52,6 +53,44 @@ def bundle_citations(bundle: Bundle) -> list[Citation]:
|
|||
]
|
||||
|
||||
|
||||
def bundle_excerpt_citations(bundle: Bundle, concept_ids: Sequence[str]) -> list[Citation]:
|
||||
"""Citations for exactly the concepts a pre-pass DELIVERED (order 20260907T080223Z).
|
||||
|
||||
``bundle_citations`` above cites the whole navigated base. Under a declared cut that would
|
||||
have the run's stamp claim every concept for a proposal that saw a handful — the same
|
||||
undeclared claim the pre-pass seam exists to remove, one artefact over.
|
||||
|
||||
The body comes from the NAVIGATED ``BundleFile``, never from the payload's ``text``: the
|
||||
delivered text is NFC-normalised with trailing whitespace stripped, so a locator over it would
|
||||
not index the file it names. Reusing ``context_files`` also means this shares
|
||||
``bundle_citations``' verdict-layer exclusion rather than restating it.
|
||||
|
||||
An id the navigation did not reach raises: ``prepass.verify_against_bundle`` has already
|
||||
resolved every one of them on disk, so a miss here means the two disagree about the base, and
|
||||
a citation list that silently drops entries would under-report the very denominator this seam
|
||||
publishes.
|
||||
"""
|
||||
by_name = {f.name: f for f in bundle.context_files}
|
||||
citations: list[Citation] = []
|
||||
for concept_id in concept_ids:
|
||||
name = concept_id + ".md"
|
||||
try:
|
||||
file = by_name[name]
|
||||
except KeyError as error:
|
||||
raise ValueError(
|
||||
f"the pre-pass delivered {concept_id!r}, which this bundle's navigation does not "
|
||||
"reach; the payload and the navigated base disagree"
|
||||
) from error
|
||||
citations.append(
|
||||
Citation(
|
||||
file=name,
|
||||
locator=TextSpan(start_index=0, end_index=len(file.body)),
|
||||
snippet=file.body,
|
||||
)
|
||||
)
|
||||
return citations
|
||||
|
||||
|
||||
def chunk_dict_to_citation(d: dict[str, Any]) -> Citation:
|
||||
"""Map a structuredContent chunk dict into a first-class ``provenance.Citation``."""
|
||||
loc = d["locator"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue