Clarify rank feedback source trace contract

This commit is contained in:
OpenClaw Bot
2026-05-27 00:15:17 +02:00
parent 602937d9b2
commit 771b5e7c02
3 changed files with 9 additions and 5 deletions
+6 -4
View File
@@ -1005,13 +1005,14 @@ function compactBuildItems(items = []) {
function createHandoffContract({ ranked, provenance, decisionContext }) {
const warnings = [];
if (!provenance?.artifactId) warnings.push('missing source artifact id');
if (!provenance?.originalPrompt) warnings.push('missing original prompt provenance');
const expectsSourceTrace = Boolean(provenance?.artifactId || provenance?.conceptMapId || provenance?.snapshotTitle);
if (!provenance?.artifactId && provenance?.originalPrompt) warnings.push('missing source artifact id');
if (expectsSourceTrace && !provenance?.originalPrompt) warnings.push('missing original prompt provenance');
const itemTrace = ranked.map(item => {
if (!item.provenance?.sourceSection) warnings.push(`missing source section for ${item.id}`);
if (expectsSourceTrace && !item.provenance?.sourceSection) warnings.push(`missing source section for ${item.id}`);
if (item.provenance?.idNormalized) warnings.push(`duplicate source id ${item.provenance.originalId} normalized to ${item.id}`);
if (!item.factors?.evidenceNeeded && ['do', 'test'].includes(item.lane?.id)) warnings.push(`missing evidence needed for active item ${item.id}`);
if (expectsSourceTrace && !item.factors?.evidenceNeeded && ['do', 'test'].includes(item.lane?.id)) warnings.push(`missing evidence needed for active item ${item.id}`);
if (item.metrics?.nonGoalConflicts?.length && ['do', 'test'].includes(item.lane?.id)) warnings.push(`active item ${item.id} conflicts with source non-goals: ${item.metrics.nonGoalConflicts.join('; ')}`);
return {
id: item.id,
@@ -1035,6 +1036,7 @@ function createHandoffContract({ ranked, provenance, decisionContext }) {
snapshotTitle: provenance?.snapshotTitle || '',
conceptMapId: provenance?.conceptMapId || '',
hasOriginalPrompt: Boolean(provenance?.originalPrompt),
requiresSourceTrace: expectsSourceTrace,
},
decisionContext: {
targetAudience: decisionContext?.targetAudience || '',