fix: added additional constraints around parallelization bugs in verification tasks
This commit is contained in:
5 files changed
+34
-5
No files matched your search
@@ -115,8 +115,10 @@ nodes:
|
||||
the change (absolute path preferred); empty string when the caller
|
||||
named none.
|
||||
- `plan_context`: the plan / spec / acceptance-criteria text the
|
||||
implementation must satisfy, verbatim (or a file path the caller
|
||||
pointed at). Empty string when the caller supplied none.
|
||||
implementation must satisfy, copied through VERBATIM — never
|
||||
summarize it and never replace pasted text with file paths or a
|
||||
sentence saying it was included; the adversary lane fails closed on
|
||||
whatever you drop. Empty string when the caller supplied none.
|
||||
- `rigor`: poc | prototype | production. Default "production" when
|
||||
not stated.
|
||||
- `security_posture`: prototype | standard | hardened. Default
|
||||
|
||||
@@ -38,6 +38,25 @@ def git(*args):
|
||||
|
||||
|
||||
out = {"project_dir": proj}
|
||||
|
||||
# Deterministic plan_context recovery: the parse LLM proved a lossy channel
|
||||
# for verbatim spec text (observed replacing ~4 KB of pasted criteria with
|
||||
# file paths + a summary sentence). When the raw prompt carries the callers'
|
||||
# labeled plan block, cut it out verbatim and override the extraction — but
|
||||
# only when the recovered block is LONGER, so a good extraction is never
|
||||
# degraded. The adversary lane fails closed on whatever goes missing here.
|
||||
_prompt = state.get("initial_prompt")
|
||||
if isinstance(_prompt, str) and _prompt:
|
||||
_m = re.search(
|
||||
r"Plan / acceptance criteria:\s*(.+?)"
|
||||
r"(?=\n\s*(?:Local-run recipe|Forced lanes|Rigor:|Security posture:|Extra context)\b|\Z)",
|
||||
_prompt,
|
||||
re.S | re.I,
|
||||
)
|
||||
if _m:
|
||||
_block = _m.group(1).strip()
|
||||
if len(_block) > len((state.get("plan_context") or "").strip()):
|
||||
out["plan_context"] = _block
|
||||
# retry_gate measures its wall-clock budget from this stamp; it is set
|
||||
# before the git work so a failed diff still starts the clock.
|
||||
if not state.get("gauntlet_started_at"):
|
||||
|
||||
Reference in new issue
Block a user