Carry Concept Map questions with build order
This commit is contained in:
@@ -936,6 +936,43 @@ try {
|
||||
assert.equal(experimentSection.ranked.find(item => item.id === 'accounted-test-library').lane.id, 'park');
|
||||
assert.deepEqual(experimentSection.handoff.warnings, []);
|
||||
|
||||
const buildOrderQuestionsResponse = await fetch(`${base}/api/rank-feedback`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
sourceName: 'Scattermind',
|
||||
artifactId: 'concept_map_build_order_questions',
|
||||
snapshotTitle: 'Build Order with decision questions',
|
||||
originalPrompt: 'Clarify a continuation engine and name what to build first.',
|
||||
idea: 'A full Scattermind Concept Map emitted a Build Order lens plus questions to sit with.',
|
||||
mode: 'mvp',
|
||||
conceptMap: {
|
||||
lenses: {
|
||||
channel: {
|
||||
title: 'Build Order',
|
||||
content: 'Build first: Manual bridge handoff preview — turn one Concept Map into a defended first move. Test manually: Show the copied handoff to 3 tired builders and ask what they would do next. Defer: Saved workspaces until the copyable handoff proves useful. Probably noise: Team dashboard and billing layer.',
|
||||
},
|
||||
question: {
|
||||
title: 'Proof Steps',
|
||||
content: 'Ask 3 tired builders to read the handoff and tell you the first move without extra explanation.',
|
||||
},
|
||||
},
|
||||
questions_to_sit_with: [
|
||||
'Can the user explain why the first move wins after reading only the handoff?',
|
||||
'What evidence would make the saved workspace worth reopening later?',
|
||||
],
|
||||
},
|
||||
}),
|
||||
});
|
||||
assert.equal(buildOrderQuestionsResponse.status, 200);
|
||||
const buildOrderQuestions = await buildOrderQuestionsResponse.json();
|
||||
assert.equal(buildOrderQuestions.input.optionCount, 7, 'Build Order lens should carry Proof Steps and questions into the candidate set');
|
||||
assert.equal(buildOrderQuestions.ranked[0].provenance.sourceSection, 'concept-map.lenses.channel');
|
||||
assert.ok(buildOrderQuestions.ranked.some(item => item.provenance.sourceSection === 'concept-map.questionsToSitWith'));
|
||||
assert.equal(buildOrderQuestions.ranked.find(item => /Can the user explain why the first move wins/i.test(item.title)).lane.id, 'test');
|
||||
assert.ok(buildOrderQuestions.buildOrder.validateNext.some(id => buildOrderQuestions.ranked.find(item => item.id === id)?.provenance.sourceSection === 'concept-map.questionsToSitWith'));
|
||||
assert.match(buildOrderQuestions.handoff.copyableText, /Can the user explain why the first move wins/);
|
||||
|
||||
const emptyWrapperResponse = await fetch(`${base}/api/rank-feedback`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -1265,10 +1302,11 @@ try {
|
||||
assert.equal(privateReadingEnvelope.input.provenance.artifactId, 'SM-PRIVATE1');
|
||||
assert.equal(privateReadingEnvelope.input.provenance.snapshotTitle, 'Local Workshop Starter');
|
||||
assert.match(privateReadingEnvelope.input.provenance.originalPrompt, /Scattermind clarified/);
|
||||
assert.equal(privateReadingEnvelope.input.optionCount, 6);
|
||||
assert.equal(privateReadingEnvelope.input.optionCount, 7);
|
||||
assert.equal(privateReadingEnvelope.ranked[0].id, 'build-order-1');
|
||||
assert.equal(privateReadingEnvelope.ranked[0].provenance.sourceSection, 'concept-map.lenses.channel');
|
||||
assert.equal(privateReadingEnvelope.ranked.find(item => item.id === 'proof-step-1').lane.id, 'test');
|
||||
assert.ok(privateReadingEnvelope.ranked.some(item => item.provenance.sourceSection === 'concept-map.questionsToSitWith'));
|
||||
assert.equal(privateReadingEnvelope.ranked.find(item => item.id === 'build-order-4').lane.id, 'park');
|
||||
assert.ok(privateReadingEnvelope.input.decisionContext.nonGoals.includes('Avoid accounts, saved calendars, and payment dashboards until one workshop has real interest'));
|
||||
assert.deepEqual(privateReadingEnvelope.handoff.warnings, []);
|
||||
@@ -2065,12 +2103,13 @@ try {
|
||||
assert.equal(storedScattermindRow.input.provenance.artifactId, 'SM-STORED-1');
|
||||
assert.equal(storedScattermindRow.input.provenance.snapshotTitle, 'Stored Row Bridge');
|
||||
assert.match(storedScattermindRow.input.provenance.originalPrompt, /actual stored row ranked/);
|
||||
assert.equal(storedScattermindRow.input.optionCount, 4);
|
||||
assert.equal(storedScattermindRow.input.optionCount, 5);
|
||||
assert.equal(storedScattermindRow.ranked[0].id, 'build-order-1');
|
||||
assert.equal(storedScattermindRow.ranked[0].provenance.sourceTitle, 'Build Order');
|
||||
assert.match(storedScattermindRow.ranked[0].provenance.sourceQuote, /Stored-row build-order preview/);
|
||||
assert.ok(storedScattermindRow.input.decisionContext.nonGoals.includes('Avoid account dashboards and saved workspaces before one user acts'));
|
||||
assert.equal(storedScattermindRow.ranked.find(item => item.id === 'build-order-4').lane.id, 'park');
|
||||
assert.ok(storedScattermindRow.ranked.some(item => item.provenance.sourceSection === 'concept-map.questionsToSitWith'));
|
||||
assert.equal(storedScattermindRow.handoff.readiness.status, 'ready');
|
||||
assert.deepEqual(storedScattermindRow.handoff.warnings, []);
|
||||
|
||||
@@ -2101,7 +2140,7 @@ try {
|
||||
assert.equal(numberedMarkdownBuildOrderResponse.status, 200);
|
||||
const numberedMarkdownBuildOrder = await numberedMarkdownBuildOrderResponse.json();
|
||||
assert.equal(numberedMarkdownBuildOrder.input.provenance.artifactId, 'SM-NUMBERED-BUILD-ORDER-1');
|
||||
assert.equal(numberedMarkdownBuildOrder.input.optionCount, 4);
|
||||
assert.equal(numberedMarkdownBuildOrder.input.optionCount, 5);
|
||||
assert.equal(numberedMarkdownBuildOrder.ranked[0].id, 'build-order-1');
|
||||
assert.equal(numberedMarkdownBuildOrder.ranked[0].title, 'Numbered source-traced preview');
|
||||
assert.equal(numberedMarkdownBuildOrder.ranked[0].lane.id, 'do');
|
||||
@@ -2109,6 +2148,7 @@ try {
|
||||
assert.equal(numberedMarkdownBuildOrder.ranked.find(item => item.id === 'build-order-2').lane.id, 'test');
|
||||
assert.equal(numberedMarkdownBuildOrder.ranked.find(item => item.id === 'build-order-3').lane.id, 'defer');
|
||||
assert.equal(numberedMarkdownBuildOrder.ranked.find(item => item.id === 'build-order-4').lane.id, 'park');
|
||||
assert.ok(numberedMarkdownBuildOrder.ranked.some(item => item.provenance.sourceSection === 'concept-map.questionsToSitWith'));
|
||||
assert.equal(numberedMarkdownBuildOrder.handoff.readiness.status, 'ready');
|
||||
assert.deepEqual(numberedMarkdownBuildOrder.handoff.warnings, []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user