Harden Ranker summary guardrails
This commit is contained in:
@@ -1010,7 +1010,40 @@ try {
|
||||
assert.equal(nextStepsAlias.ranked.find(item => item.id === 'saved-workspace').lane.id, 'park');
|
||||
assert.deepEqual(nextStepsAlias.handoff.warnings, []);
|
||||
|
||||
console.log(JSON.stringify({ ok: true, top: data.ranked[0].id, hintedTop: hinted.ranked[0].id, actionTop: actions.ranked[0].id, nestedConceptTop: nestedConcept.ranked[0].id, nonGoalTop: nonGoal.ranked[0].id, structuredContextTop: structuredContext.ranked[0].id, lensOnlyTop: lensOnly.ranked[0].id, scattermindPaidShapeTop: scattermindPaidShape.ranked[0].id, mergedContextTop: mergedContext.ranked[0].id, embeddedJsonTop: embeddedJson.ranked[0].id, fencedJsonTop: fencedJson.ranked[0].id, embeddedSnapshotTop: embeddedSnapshot.ranked[0].id, sourceExcerptTop: sourceExcerpt.ranked[0].id, snakeCaseBridgeTop: snakeCaseBridge.ranked[0].id, nextStepsAliasTop: nextStepsAlias.ranked[0].id, duplicateIds: duplicateIds.ranked.map(item => item.id), readiness: data.handoff.readiness.status, provenance: data.input.provenance, buildOrder: data.buildOrder }, null, 2));
|
||||
const summaryGuardrailResponse = await fetch(`${base}/api/rank-feedback`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
sourceName: 'Scattermind',
|
||||
artifactId: 'context_summary_guardrails',
|
||||
originalPrompt: 'Scattermind exported guardrails in context summaries rather than explicit nonGoals arrays.',
|
||||
mode: 'mvp',
|
||||
context: {
|
||||
summary: 'Solo builder. Manual proof first. No account dashboards or saved workspaces before the first useful result.',
|
||||
targetAudience: 'Tired non-AI-native solo builder',
|
||||
},
|
||||
conceptMap: {
|
||||
context: {
|
||||
summary: 'Avoid billing, auth, and collaboration until the bridge proves one defended build order.',
|
||||
},
|
||||
nextActions: [
|
||||
{ id: 'manual-summary-proof', action: 'Manual summary-context build order preview', why: 'Show one defended first move from a Concept Map.', evidenceNeeded: 'Can one tired user name the first move?', suggestedLane: 'do-first', rankerHints: { value: 9, effort: 2, confidence: 8, urgency: 8, risk: 2 } },
|
||||
{ id: 'workspace-summary', action: 'Saved workspace and account dashboard', why: 'Auth-backed saved projects and collaboration for every idea.', evidenceNeeded: 'No bridge proof yet.', rankerHints: { value: 10, effort: 1, confidence: 10, urgency: 10, risk: 1 } },
|
||||
{ id: 'billing-summary', action: 'Billing and subscription admin', why: 'Checkout, invoices, plans, and account controls.', evidenceNeeded: 'No buyer proof yet.', rankerHints: { value: 10, effort: 1, confidence: 10, urgency: 10, risk: 1 } },
|
||||
],
|
||||
},
|
||||
}),
|
||||
});
|
||||
assert.equal(summaryGuardrailResponse.status, 200);
|
||||
const summaryGuardrail = await summaryGuardrailResponse.json();
|
||||
assert.ok(summaryGuardrail.input.decisionContext.nonGoals.includes('No account dashboards or saved workspaces before the first useful result'));
|
||||
assert.ok(summaryGuardrail.input.decisionContext.nonGoals.includes('Avoid billing, auth, and collaboration until the bridge proves one defended build order'));
|
||||
assert.equal(summaryGuardrail.ranked[0].id, 'manual-summary-proof');
|
||||
assert.equal(summaryGuardrail.ranked.find(item => item.id === 'workspace-summary').lane.source, 'source-non-goal');
|
||||
assert.equal(summaryGuardrail.ranked.find(item => item.id === 'billing-summary').lane.source, 'source-non-goal');
|
||||
assert.deepEqual(summaryGuardrail.handoff.warnings, []);
|
||||
|
||||
console.log(JSON.stringify({ ok: true, top: data.ranked[0].id, hintedTop: hinted.ranked[0].id, actionTop: actions.ranked[0].id, nestedConceptTop: nestedConcept.ranked[0].id, nonGoalTop: nonGoal.ranked[0].id, structuredContextTop: structuredContext.ranked[0].id, lensOnlyTop: lensOnly.ranked[0].id, scattermindPaidShapeTop: scattermindPaidShape.ranked[0].id, mergedContextTop: mergedContext.ranked[0].id, embeddedJsonTop: embeddedJson.ranked[0].id, fencedJsonTop: fencedJson.ranked[0].id, embeddedSnapshotTop: embeddedSnapshot.ranked[0].id, sourceExcerptTop: sourceExcerpt.ranked[0].id, snakeCaseBridgeTop: snakeCaseBridge.ranked[0].id, nextStepsAliasTop: nextStepsAlias.ranked[0].id, summaryGuardrailTop: summaryGuardrail.ranked[0].id, duplicateIds: duplicateIds.ranked.map(item => item.id), readiness: data.handoff.readiness.status, provenance: data.input.provenance, buildOrder: data.buildOrder }, null, 2));
|
||||
} finally {
|
||||
server.kill('SIGTERM');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user