Bind trusted task approval to exact producer facts and lifetime
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a140c4-354a-7823-8f0d-8f717397f786
This commit is contained in:
parent
4f6946bbb3
commit
2b064eee51
31 changed files with 2170 additions and 30 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package policy
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
|
@ -375,7 +376,25 @@ func (p *Package) runFixtures(ctx context.Context) []FixtureResult {
|
|||
}
|
||||
|
||||
func (p *Package) evaluateDecision(ctx context.Context, request api.CheckRequest) (api.DecisionExpectation, error) {
|
||||
return p.evaluateDecisionProfile(ctx, request, false)
|
||||
}
|
||||
|
||||
// EvaluatePreservingNumbers feeds the same evaluator the task profile's exact
|
||||
// numeric values. Ordinary evaluation behavior and canonical contracts stay put.
|
||||
func (p *Package) EvaluatePreservingNumbers(ctx context.Context, request api.CheckRequest) (api.DecisionExpectation, error) {
|
||||
return p.evaluateDecisionProfile(ctx, request, true)
|
||||
}
|
||||
func (p *Package) evaluateDecisionProfile(ctx context.Context, request api.CheckRequest, preserve bool) (api.DecisionExpectation, error) {
|
||||
input, err := toRegoInput(request)
|
||||
if preserve {
|
||||
raw, e := json.Marshal(request)
|
||||
if e != nil {
|
||||
return api.DecisionExpectation{}, e
|
||||
}
|
||||
decoder := json.NewDecoder(bytes.NewReader(raw))
|
||||
decoder.UseNumber()
|
||||
err = decoder.Decode(&input)
|
||||
}
|
||||
if err != nil {
|
||||
return api.DecisionExpectation{}, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue