pub enum SurfaceMatch {
Exact,
Prefix,
}Expand description
How strictly the project surface is matched — a tunable knob.
The retry-Goodhart finding
(docs/findings/2026-06-15-retry-and-the-honest-gate.md) showed Prefix is
exploitable once the gate controls a retry loop rather than merely
measuring: newt_agent._newt_core passes via the real newt_agent prefix,
so the model, under retry pressure, drifts into that blind spot. Exact (the
default) requires the import to be a module the surface actually declares —
sound because R1’s manifest carries the full leaf+ancestor set. A coarse,
hand-written surface that lists only roots may still want Prefix.
Variants§
Exact
The module must be an exact member of the project surface.
Prefix
The module — or any dotted prefix — is in the surface (lax; legacy).
Trait Implementations§
Source§impl Clone for SurfaceMatch
impl Clone for SurfaceMatch
Source§fn clone(&self) -> SurfaceMatch
fn clone(&self) -> SurfaceMatch
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for SurfaceMatch
Source§impl Debug for SurfaceMatch
impl Debug for SurfaceMatch
Source§impl Default for SurfaceMatch
impl Default for SurfaceMatch
Source§fn default() -> SurfaceMatch
fn default() -> SurfaceMatch
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for SurfaceMatch
impl<'de> Deserialize<'de> for SurfaceMatch
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for SurfaceMatch
Source§impl PartialEq for SurfaceMatch
impl PartialEq for SurfaceMatch
Source§impl Serialize for SurfaceMatch
impl Serialize for SurfaceMatch
impl StructuralPartialEq for SurfaceMatch
Auto Trait Implementations§
impl Freeze for SurfaceMatch
impl RefUnwindSafe for SurfaceMatch
impl Send for SurfaceMatch
impl Sync for SurfaceMatch
impl Unpin for SurfaceMatch
impl UnsafeUnpin for SurfaceMatch
impl UnwindSafe for SurfaceMatch
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more