Skip to content

Document deterministic search and LLM boundary - #176

Draft
PhysShell wants to merge 2 commits into
mainfrom
agent/deterministic-search-llm-boundary
Draft

Document deterministic search and LLM boundary#176
PhysShell wants to merge 2 commits into
mainfrom
agent/deterministic-search-llm-boundary

Conversation

@PhysShell

Copy link
Copy Markdown
Owner

What changed

  • add a proposal that keeps one-best layered DP/Viterbi as the normative baseline;
  • define deterministic k-best traversal as the next search capability before considering A*;
  • separate measurable diversity policy from hard constraints and score weights;
  • describe lexicographic and Pareto ranking views without weakening admission gates;
  • define ArrangementIntentV1 as the only optional LLM-facing generation contract;
  • document the local validation boundary for closed or open model adapters;
  • specify when an implicit-state A* client is justified, including benchmark and kill criteria;
  • retain the existing Constraint Lab as an offline oracle and acknowledge the completed MiniZinc spike;
  • add provenance, validation, delivery-order, and non-goal requirements;
  • index the proposal in docs/proposals/README.md.

Why

Griff already has deterministic layered DP, explainable scoring, a hard-constraint direction, and a functioning offline oracle. The missing architectural bridge is how to produce reproducible alternatives, introduce diversity without disguising randomness as search, and permit an LLM to describe intent without giving it authority over canonical score material or validity.

This proposal records that bridge without assigning a roadmap stage or silently accepting implementation decisions.

Impact

Docs only. No production behaviour, dependencies, workspace membership, score schema, or roadmap stage changes.

Validation

  • checked against ADR-0013 and ADR-0030;
  • checked against ADR-0017 and current Scored consumers;
  • checked against the hard-constraint and Constraint Inventory proposals;
  • checked against the implemented lab/ oracle and its July 2026 audit report;
  • proposal indexed according to docs/proposals/README.md lifecycle rules.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a3fb66ab-9581-49de-bf0a-a8b4a1b659f2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

PhysShell pushed a commit that referenced this pull request Aug 17, 2026
A caller that shows three alternatives and then asks for five must not watch
the first three renumber themselves. The accepted engine already satisfies
this — neither the enumeration order nor the greedy diversity filter reads
`k` — so this is a **characterization test**, not a red→green fix: no
production code changes, and the acceptance given at `7d0c0cb` is not
reopened.

The property was specified and left unasserted. The deterministic-search
proposal (#176, still a draft) asks for it in as many words — "requesting more
results never changes the prefix already returned" — and "true by construction"
is exactly the kind of claim that quietly stops holding one refactor later
without anything failing.

Compared per rank, not merely per path list: ordinals, `total_cost` bits, and
the full `Debug` rendering, which carries every step and edge with its axes,
rationale entries, weights and provenance. `f64` renders in shortest
round-trip form, so a cost differing in one bit renders differently — "the same
path" cannot quietly become "the same indices, differently computed".

Swept over all 120 width vectors for 1–4 layers over widths 1–3, every
`min_distance`, and every `k` below the widest request, with an anti-vacuity
floor on the number of ranks actually compared.

`exhausted` is deliberately excluded from the compared prefix: it describes the
*search*, not the paths, and a request for fewer alternatives can legitimately
stop before the space runs out.

Verification: `cargo test --workspace` 1454 passed / 0 failed (1453 before, +1);
clippy `--workspace --all-targets -D warnings` clean; `cargo fmt --all --check`
clean. The diff touches one test file and no production code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TvcPGrQsgY4HqzmdDcRqvu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant