Accept soft Scattermind bridge lane labels
This commit is contained in:
@@ -618,6 +618,60 @@ try {
|
||||
assert.ok(scattermindPaidShape.ranked.find(item => item.id === 'build-order-4').metrics.nonGoalConflicts.length >= 1);
|
||||
assert.deepEqual(scattermindPaidShape.handoff.warnings, []);
|
||||
|
||||
const softLabelLensResponse = await fetch(`${base}/api/rank-feedback`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
reference_code: 'SM-SOFT-LABELS',
|
||||
working_name: 'Gentle Scattermind continuation labels',
|
||||
ideaText: 'Scattermind avoids verdict language but still needs to hand Ranker a continuation order.',
|
||||
context: 'Solo builder. Manual proof before machinery. Avoid accounts and saved workspaces.',
|
||||
mode: 'mvp',
|
||||
lenses: {
|
||||
risk: 'Avoid accounts and saved workspaces until one copyable result makes sense.',
|
||||
channel: 'Continue first: One source-traced build order preview - make the next move tangible without a dashboard. Try next: Copyable decision brief - ask three tired users what they would do next. Hold for later: Visual polish after the rough brief works. Set aside: Saved workspace with accounts, auth, billing, and collaboration.',
|
||||
},
|
||||
}),
|
||||
});
|
||||
assert.equal(softLabelLensResponse.status, 200);
|
||||
const softLabelLens = await softLabelLensResponse.json();
|
||||
assert.equal(softLabelLens.input.optionCount, 4);
|
||||
assert.equal(softLabelLens.ranked[0].id, 'build-order-1');
|
||||
assert.equal(softLabelLens.ranked[0].lane.id, 'do');
|
||||
assert.match(softLabelLens.ranked[0].provenance.sourceQuote, /Continue first: One source-traced build order preview/);
|
||||
assert.equal(softLabelLens.ranked.find(item => item.id === 'build-order-2').lane.id, 'test');
|
||||
assert.equal(softLabelLens.ranked.find(item => item.id === 'build-order-3').lane.id, 'defer');
|
||||
assert.equal(softLabelLens.ranked.find(item => item.id === 'build-order-4').lane.id, 'park');
|
||||
assert.equal(softLabelLens.handoff.readiness.status, 'ready');
|
||||
assert.deepEqual(softLabelLens.handoff.warnings, []);
|
||||
|
||||
const softLabelObjectResponse = await fetch(`${base}/api/rank-feedback`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
sourceName: 'Scattermind',
|
||||
artifactId: 'concept_map_soft_object_labels',
|
||||
originalPrompt: 'Scattermind exported soft continuation sections instead of verdict-named lanes.',
|
||||
idea: 'Ranker should accept softer object keys without forcing Scattermind to say build/kill.',
|
||||
mode: 'mvp',
|
||||
conceptMap: {
|
||||
buildOrder: {
|
||||
continueFirst: [{ id: 'manual-preview', move: 'Manual continuation preview', evidenceQuestion: 'Can one user explain the next move?' }],
|
||||
evidenceNext: ['Copyable brief comprehension check'],
|
||||
holdForLater: ['Visual system polish'],
|
||||
setAside: ['Account workspace dashboard'],
|
||||
},
|
||||
},
|
||||
}),
|
||||
});
|
||||
assert.equal(softLabelObjectResponse.status, 200);
|
||||
const softLabelObject = await softLabelObjectResponse.json();
|
||||
assert.equal(softLabelObject.input.optionCount, 4);
|
||||
assert.equal(softLabelObject.buildOrder.doFirst[0], 'manual-preview');
|
||||
assert.equal(softLabelObject.ranked.find(item => item.id === 'feature-1').lane.id, 'test');
|
||||
assert.equal(softLabelObject.ranked.find(item => item.title === 'Visual system polish').lane.id, 'defer');
|
||||
assert.equal(softLabelObject.ranked.find(item => item.title === 'Account workspace dashboard').lane.id, 'park');
|
||||
|
||||
const mergedContextResponse = await fetch(`${base}/api/rank-feedback`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
|
||||
Reference in New Issue
Block a user