fix(p17b): close the flags multi-base mode neither carried nor refused [skip-docs]
Measured after the paid run, not before it: the across-bundle door honoured fourteen flags and refused five, which left eight accepted and then dropped. The worst of them was ``--mcp-config`` -- configured egress with nothing printed, which this repo forbids outright -- and ``PROJECT_ID``/``--docs-dir``, which would LOOK honoured while the dispatch read each base's project from that base's own IR projection and used each base as its own docs dir. The two anchoring flags are WIRED rather than refused. They are bundle concerns and this dispatch hands ``run_project`` one bundle at a time, so they compose exactly -- and ``--require-cost-baseline`` is the named remedy for the defect this session's own paid run measured (``1.10.4``, a requirement number accepted as a cost code on a base with no schedule: P19 F1, now reproduced on a second base). Wiring the free drill too, so the dry run and the paid run cannot disagree about what the run will do. The two ``requires --bundle-dir`` guards no longer answer for this mode: falling through would tell an operator to add the one flag this mode also refuses, which is the repo's own standing objection to that pattern. Mutation (v) -- the requirement reaches the dispatch and never the per-base runs -- is red on its own arm against the whole suite. Suite 1781/5, golden unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
da0ccd0489
commit
c4e88003e2
2 changed files with 123 additions and 3 deletions
|
|
@ -2360,6 +2360,13 @@ async def run_mandate_across_bundles(
|
|||
#: reconciliation, shared store, per-base project resolution, collision accounting and both
|
||||
#: budget teeth (kø-(p), over five rules that each have exactly one home).
|
||||
outbox_for: Callable[[str], tuple[str, str]] | None = None,
|
||||
#: Both anchoring flags, carried per base rather than refused. They are BUNDLE concerns and
|
||||
#: this dispatch hands ``run_project`` one bundle at a time, so they compose exactly — and
|
||||
#: ``--require-cost-baseline`` is the named remedy for the defect P17b's own paid run measured
|
||||
#: (a requirement number accepted as a cost code, P19 F1). Leaving them out would have been a
|
||||
#: silent drop on the paid path while the free drill honoured them, which is the F4 class.
|
||||
derive_cost_baseline: bool = False,
|
||||
require_cost_baseline: bool = False,
|
||||
) -> MultiBaseResult:
|
||||
"""Evaluate ONE commission across SEVERAL knowledge bases — the multi-base dispatch (§ C.7).
|
||||
|
||||
|
|
@ -2460,6 +2467,8 @@ async def run_mandate_across_bundles(
|
|||
bundle_dir=bundle_dir,
|
||||
outbox_dir=base_outbox,
|
||||
run_id=base_run_id or None,
|
||||
derive_cost_baseline=derive_cost_baseline,
|
||||
require_cost_baseline=require_cost_baseline,
|
||||
notify=lambda verdict: minted_here.append(verdict.id),
|
||||
verdict_input=verdict_input,
|
||||
verdict_dir=verdict_dir,
|
||||
|
|
@ -3200,6 +3209,23 @@ def main(argv: list[str] | None = None) -> int:
|
|||
"--explore": args.explore,
|
||||
"--prepass-payload": args.prepass_payload,
|
||||
"--proposals-from-mandate": args.proposals_from_mandate,
|
||||
# ``--docs-dir`` and a positional PROJECT_ID would both LOOK honoured and be dropped:
|
||||
# this dispatch hands each base to itself as its own docs dir, and reads each base's
|
||||
# project from THAT base's own IR projection, which is the whole reason there is no
|
||||
# ``project_id`` parameter. A caller-supplied constant could only be right for one
|
||||
# base out of N.
|
||||
"--docs-dir": args.docs_dir,
|
||||
"PROJECT_ID": args.project_id,
|
||||
# Not carried by this dispatch, so each would be accepted and then never take effect.
|
||||
# Refused BY NAME rather than left to fall through to a message naming --bundle-dir,
|
||||
# which this mode ALSO refuses — the repo's own standing objection to that pattern.
|
||||
# ``--mcp-config`` is the one that matters most: dropping it would be configured
|
||||
# egress with nothing printed, which this repo forbids outright.
|
||||
"--mcp-config": args.mcp_config,
|
||||
"--semantic-retrieval": args.semantic_retrieval,
|
||||
"--embedder-config": args.embedder_config,
|
||||
"--checkpoint-dir": args.checkpoint_dir,
|
||||
"--review-inbox": args.review_inbox,
|
||||
}
|
||||
clash = [name for name, value in conflicting.items() if value]
|
||||
if clash:
|
||||
|
|
@ -3246,7 +3272,12 @@ def main(argv: list[str] | None = None) -> int:
|
|||
# from: the road path's baseline comes from ``Project.cost_items`` and is anchored by
|
||||
# construction. Refused by NAME here rather than left to surface later as a project-lookup
|
||||
# failure, which names neither the flag nor what it needs.
|
||||
if not args.portfolio and args.derive_cost_baseline and args.bundle_dir is None:
|
||||
if (
|
||||
not args.portfolio
|
||||
and not args.across_bundle
|
||||
and args.derive_cost_baseline
|
||||
and args.bundle_dir is None
|
||||
):
|
||||
print(
|
||||
"run refused: --derive-cost-baseline requires --bundle-dir (the schedule it derives "
|
||||
"from is a concept file in the knowledge base; the road path is already anchored by "
|
||||
|
|
@ -3258,7 +3289,12 @@ def main(argv: list[str] | None = None) -> int:
|
|||
# The road path's baseline comes from ``Project.cost_items`` and is anchored by construction,
|
||||
# so without a bundle this flag could never fire — and a flag that cannot fire is a claim the
|
||||
# surface makes about itself (the Fase-3 class). Refused BY NAME, its neighbour's reason.
|
||||
if not args.portfolio and args.require_cost_baseline and args.bundle_dir is None:
|
||||
if (
|
||||
not args.portfolio
|
||||
and not args.across_bundle
|
||||
and args.require_cost_baseline
|
||||
and args.bundle_dir is None
|
||||
):
|
||||
print(
|
||||
"run refused: --require-cost-baseline requires --bundle-dir (the road path is already "
|
||||
"anchored by its own cost_items, so on it the requirement could never fire)",
|
||||
|
|
@ -4110,8 +4146,8 @@ def main(argv: list[str] | None = None) -> int:
|
|||
),
|
||||
max_rounds=args.max_rounds,
|
||||
max_tokens=args.max_tokens,
|
||||
derive_cost_baseline=args.derive_cost_baseline,
|
||||
require_cost_baseline=args.require_cost_baseline,
|
||||
mcp_servers=mcp_servers,
|
||||
live_dry_run=True,
|
||||
)
|
||||
)
|
||||
|
|
@ -4169,6 +4205,8 @@ def main(argv: list[str] | None = None) -> int:
|
|||
proposal_reviewer=(
|
||||
terminal_proposal_reviewer() if args.proposal_review else None
|
||||
),
|
||||
derive_cost_baseline=args.derive_cost_baseline,
|
||||
require_cost_baseline=args.require_cost_baseline,
|
||||
outbox_for=outbox_for,
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue