Warn on duplicate Ranker source traces

This commit is contained in:
OpenClaw Bot
2026-05-27 20:32:50 +02:00
parent fe07245710
commit a66788e394
2 changed files with 36 additions and 1 deletions
+26
View File
@@ -177,6 +177,32 @@ try {
assert.equal(hardRail.brief.quickGlance.topPick, 'Manual source-traced build order preview');
assert.equal(hardRail.handoff.readiness.status, 'ready');
const duplicateTraceResponse = await fetch(`${base}/api/rank-feedback`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
schema: 'prioritix-feature-set-v1',
sourceName: 'Scattermind',
artifactId: 'concept_map_duplicate_trace',
snapshotTitle: 'Duplicate source trace handoff',
originalPrompt: 'Clarify a bridge handoff while preserving source trace identity.',
idea: 'Scattermind clarified two different continuation moves from one Concept Map source block.',
mode: 'mvp',
featureSet: {
features: [
{ id: 'active-copy-slice', title: 'Active copyable build slice', description: 'Show one defended action with source trace.', evidenceNeeded: 'Can a tired builder act on the copied slice?', sourceSection: 'concept-map.nextActions', sourceItemId: 'next-actions#1', rankerHints: { value: 8, effort: 2, confidence: 7, urgency: 7, risk: 2 } },
{ id: 'manual-proof-script', title: 'Manual proof script', description: 'Turn the active slice into one script for a real proof conversation.', evidenceNeeded: 'Does the script produce a yes/no signal?', sourceSection: 'concept-map.nextActions', sourceItemId: 'next-actions#1', rankerHints: { value: 7, effort: 2, confidence: 7, urgency: 6, risk: 2 } },
{ id: 'later-dashboard', title: 'Saved result dashboard', description: 'Accounts and saved workspaces for every result.', recommendedLane: 'defer', sourceSection: 'concept-map.deferred', sourceItemId: 'deferred#1' },
],
},
}),
});
assert.equal(duplicateTraceResponse.status, 200);
const duplicateTrace = await duplicateTraceResponse.json();
assert.ok(duplicateTrace.handoff.warnings.some(item => /duplicate source id next-actions#1 used by active-copy-slice and manual-proof-script/.test(item)), 'duplicate source trace IDs should be surfaced for bridge consumers');
assert.equal(duplicateTrace.handoff.readiness.status, 'usable-with-warnings');
assert.ok(duplicateTrace.handoff.readiness.nextChecks.some(item => /duplicate IDs/i.test(item)));
const softGuardrailResponse = await fetch(`${base}/api/rank-feedback`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },