Run report generation without workspace state
This commit is contained in:
@@ -61,15 +61,13 @@ type ProfileInspection struct {
|
||||
}
|
||||
|
||||
// ExecuteRequest selects one exact prompt execution. DataPackage is the exact
|
||||
// YAML input; implementations must copy it before retaining it. DataPackagePath
|
||||
// is provenance for the inline input, not a provider-readable file reference.
|
||||
// YAML input; implementations must copy it before retaining it.
|
||||
type ExecuteRequest struct {
|
||||
PromptID string
|
||||
PromptVersion string
|
||||
ProfileID string
|
||||
DataPackage []byte
|
||||
DataPackagePath string
|
||||
CaptureDebug bool
|
||||
PromptID string
|
||||
PromptVersion string
|
||||
ProfileID string
|
||||
DataPackage []byte
|
||||
CaptureDebug bool
|
||||
}
|
||||
|
||||
// PreparationCallback receives safe preparation provenance before provider work.
|
||||
@@ -90,7 +88,6 @@ type Preparation struct {
|
||||
StartedAt time.Time
|
||||
EndedAt time.Time
|
||||
Duration time.Duration
|
||||
DataPackagePath string
|
||||
}
|
||||
|
||||
// PreparationDebug contains content-rich preparation details for an explicitly
|
||||
@@ -127,7 +124,6 @@ type Execution struct {
|
||||
EndedAt time.Time
|
||||
Duration time.Duration
|
||||
Validation Validation
|
||||
DataPackagePath string
|
||||
RawOutput []byte
|
||||
Debug *ExecutionDebug
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ func (executor *lifecycleExecutor) Execute(_ context.Context, request ExecuteReq
|
||||
if executor.operationalFailure != nil {
|
||||
return nil, executor.operationalFailure
|
||||
}
|
||||
preparation := Preparation{PromptID: request.PromptID, PromptVersion: request.PromptVersion, DataPackagePath: request.DataPackagePath}
|
||||
preparation := Preparation{PromptID: request.PromptID, PromptVersion: request.PromptVersion}
|
||||
var debug *PreparationDebug
|
||||
if request.CaptureDebug {
|
||||
debug = &PreparationDebug{RenderedMessages: []RenderedMessage{{Role: "user", Content: "sensitive rendered message"}}}
|
||||
@@ -57,7 +57,7 @@ func (executor *lifecycleExecutor) Execute(_ context.Context, request ExecuteReq
|
||||
if executor.validationRejected {
|
||||
status = ValidationFailed
|
||||
}
|
||||
result := Execution{PromptID: request.PromptID, PromptVersion: request.PromptVersion, DataPackagePath: request.DataPackagePath, Validation: Validation{Status: status}, RawOutput: []byte("generated content")}
|
||||
result := Execution{PromptID: request.PromptID, PromptVersion: request.PromptVersion, Validation: Validation{Status: status}, RawOutput: []byte("generated content")}
|
||||
if request.CaptureDebug {
|
||||
result.Debug = &ExecutionDebug{RawOutput: []byte("generated content")}
|
||||
}
|
||||
@@ -65,7 +65,7 @@ func (executor *lifecycleExecutor) Execute(_ context.Context, request ExecuteReq
|
||||
}
|
||||
|
||||
func TestExecutorLifecycleFixtures(t *testing.T) {
|
||||
request := ExecuteRequest{PromptID: "weather.daily_generated_text", PromptVersion: "1.0.0", DataPackagePath: "data_package.yaml"}
|
||||
request := ExecuteRequest{PromptID: "weather.daily_generated_text", PromptVersion: "1.0.0"}
|
||||
t.Run("callback failure prevents provider execution", func(t *testing.T) {
|
||||
executor := &lifecycleExecutor{}
|
||||
callbackError := errors.New("persistence failed")
|
||||
@@ -239,7 +239,6 @@ func TestSafeContractValuesExcludeSensitiveFields(t *testing.T) {
|
||||
BackendID: "local",
|
||||
ModelName: "model-name",
|
||||
Output: OutputContract{Format: "json", ValidationMode: "json_schema", SchemaPath: "daily.generated_text.schema.json"},
|
||||
DataPackagePath: "data-packages/daily/data_package.yaml",
|
||||
}
|
||||
execution := Execution{
|
||||
RunID: "run-id",
|
||||
@@ -254,7 +253,7 @@ func TestSafeContractValuesExcludeSensitiveFields(t *testing.T) {
|
||||
GeneratedHash: "generated-hash",
|
||||
RawOutput: []byte("generated content"),
|
||||
}
|
||||
text := preparation.PromptID + preparation.PromptVersion + preparation.PromptHash + preparation.RenderedPromptHash + preparation.ProfileID + preparation.BackendID + preparation.ModelName + preparation.Output.SchemaPath + preparation.DataPackagePath + execution.RunID + execution.GeneratedHash
|
||||
text := preparation.PromptID + preparation.PromptVersion + preparation.PromptHash + preparation.RenderedPromptHash + preparation.ProfileID + preparation.BackendID + preparation.ModelName + preparation.Output.SchemaPath + execution.RunID + execution.GeneratedHash
|
||||
for _, unwanted := range []string{"https://provider.example", "API_KEY_ENV", "rendered message", "schema body", "input body", "provider response body", "full parameters"} {
|
||||
if strings.Contains(text, unwanted) {
|
||||
t.Fatalf("safe values contain %q: %s", unwanted, text)
|
||||
|
||||
Reference in New Issue
Block a user