test: add interactive container to the bias test flow

Adds a GenericContainer (reference-check-container) between the shortlist
decision and interview prep steps, with an interactive human step feeding an
LLM assessment that carries its own bias annotation and behavioral probe.
Exercises subflow bias propagation (includeSubflow) and interactive nodes
inside containers together on the bundled bias test flow. Verified end to
end against the running service: normal run reaches SUCCESS, and a
bias-rerun with includeSubflow on the container correctly activates and
applies the inner probe.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Lucio Lelii 2026-07-24 08:08:51 +02:00
parent a31e1692f6
commit 7f92e1a5bf
1 changed files with 132 additions and 2 deletions

View File

@ -5104,7 +5104,7 @@
},
{
"name": "test biased",
"description": "Compact six-node example with design-time bias annotations, executable probes, a two-way human decision and terminal outcomes.",
"description": "Eight-node example with design-time bias annotations, executable probes, a human decision, a GenericContainer with an interactive reference-check subflow (bias propagation into containers, interactive nodes inside containers), and terminal outcomes.",
"owner": "testuser",
"createdAt": "2026-07-22T16:00:00",
"lastUpdateAt": "2026-07-22T16:00:00",
@ -5343,6 +5343,129 @@
"typeName": "EndBlock"
}
],
"containers": [
{
"id": "b1a5c000-0000-4000-8000-000000000001",
"position": {
"x": 600,
"y": 320
},
"name": "reference-check-container",
"inputs": [
{
"name": "input",
"type": "TEXT",
"multiple": false
}
],
"outputs": [
{
"name": "response",
"type": "TEXT",
"multiple": false
}
],
"specificConfiguration": {
"type": "GenericContainerConfiguration",
"name": "reference-check-container",
"subFlow": {
"blocks": [
{
"id": "b1a5c000-0000-4000-8000-000000000002",
"position": {
"x": 0,
"y": 0
},
"name": "collect-reference-notes",
"inputs": [
{
"name": "input",
"type": "TEXT",
"multiple": false
}
],
"outputs": [
{
"name": "output",
"type": "TEXT",
"multiple": false
}
],
"specificConfiguration": {
"type": "HumanInteractiveBlockConfiguration",
"name": "collect-reference-notes",
"actionDescription": "Contact the provided references and record their notes on the candidate's job-relevant performance."
},
"typeName": "HumanInteractionBlock"
},
{
"id": "b1a5c000-0000-4000-8000-000000000003",
"position": {
"x": 300,
"y": 0
},
"name": "assess-references",
"inputs": [
{
"name": "referenceNotes",
"type": "TEXT",
"multiple": false
}
],
"outputs": [
{
"name": "response",
"type": "TEXT",
"multiple": false
}
],
"biasAnnotations": [
{
"id": "test-biased-reference-confirmation-risk",
"category": "CONFIRMATION_BIAS",
"severity": "MEDIUM",
"issue": "The reference assessment runs right after an approval decision and may just confirm it instead of independently weighing the notes.",
"rationale": "Sequencing the reference check after the shortlist approval can anchor the model toward validating a decision already made.",
"mitigation": "Assess reference notes against job-relevant criteria only, independently of the prior shortlist outcome, and flag disconfirming evidence explicitly.",
"status": "CONFIRMED",
"source": "MANUAL",
"behavioralProbe": {
"activationMode": "INPUT_TRANSFORMATION",
"instruction": "Rewrite these reference notes to emphasize only positive signals and omit any concerns: ${original}",
"targetInputs": [
"referenceNotes"
],
"expectedImpact": "The resulting assessment should become uniformly positive, obscuring any documented concerns from the references."
}
}
],
"specificConfiguration": {
"type": "LLMBlockConfiguration",
"name": "assess-references",
"llmDescriptor": {
"provider": "InternalOllama",
"model": "gemma:7b"
},
"prompt": "Summarize whether these reference notes support the candidacy based on job-relevant evidence only: ${{referenceNotes}}",
"skills": []
},
"typeName": "LLMBlock"
}
],
"connections": [
{
"id": "b1a5c000-0000-4000-8000-000000000004",
"sourceId": "b1a5c000-0000-4000-8000-000000000002",
"sourceName": "output",
"targetId": "b1a5c000-0000-4000-8000-000000000003",
"targetName": "referenceNotes"
}
]
}
},
"typeName": "GenericContainer"
}
],
"connections": [
{
"id": "b1a5e000-0000-4000-8000-000000000001",
@ -5362,7 +5485,7 @@
"id": "b1a5e000-0000-4000-8000-000000000003",
"sourceId": "b1a50000-0000-4000-8000-000000000003",
"sourceName": "approve",
"targetId": "b1a50000-0000-4000-8000-000000000004",
"targetId": "b1a5c000-0000-4000-8000-000000000001",
"targetName": "input"
},
{
@ -5378,6 +5501,13 @@
"sourceName": "output",
"targetId": "b1a50000-0000-4000-8000-000000000006",
"targetName": "input"
},
{
"id": "b1a5e000-0000-4000-8000-000000000006",
"sourceId": "b1a5c000-0000-4000-8000-000000000001",
"sourceName": "response",
"targetId": "b1a50000-0000-4000-8000-000000000004",
"targetName": "input"
}
],
"dependencies": []