@productbrain/mcp 0.0.1-beta.12125 → 0.0.1-beta.12136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -230,12 +230,14 @@ var CHECKLIST_LINES = {
230
230
  specificity: "Say what will be different, in words only this product could use",
231
231
  beneficiary: "Name who it is for: people, a community or part of the world, specific enough to say who it is not for",
232
232
  falsifiability: "Choose a direction a reasonable rival would reject",
233
- stranger_test: "Explain it so a stranger knows what will be different, and for whom"
233
+ stranger_test: "Explain it so a stranger knows what will be different, and for whom",
234
+ serves_rung_above: "Say what will be different when the purpose above it is fulfilled"
234
235
  },
235
236
  strategy: {
236
237
  coherent_narrative: "Connect the diagnosis, the policy and the first actions",
237
238
  decisiveness: "Say what you will not do",
238
- time_bounded: "Name a horizon: a date, a duration or a milestone"
239
+ time_bounded: "Name a horizon: a date, a duration or a milestone",
240
+ serves_rung_above: "Say how these choices move toward the vision above it"
239
241
  },
240
242
  objective: {
241
243
  outcome_not_activity: "State what will be true once it is met, not the work to do",
@@ -250,11 +252,23 @@ var CHECKLIST_LINES = {
250
252
  /** One line per spine rung, keyed by the rung it reaches: rungLine, in SPINE_RUNG_SEQUENCE order (TASK-1026). */
251
253
  strategy_link: Object.fromEntries(SPINE_RUNG_SEQUENCE.map((spec) => [spec.targetKey, rungLine(spec.targetKey)]))
252
254
  };
255
+ var BLOCKING_CRITERIA = {
256
+ purpose: [],
257
+ vision: ["beneficiary"],
258
+ strategy: ["coherent_narrative", "serves_rung_above"],
259
+ objective: [],
260
+ key_result: []
261
+ };
262
+ function isRequiredCriterion(kind, c) {
263
+ const blocking = BLOCKING_CRITERIA[kind];
264
+ return !blocking || blocking.includes(c.id) || !c.passed && c.failedBy !== "judge";
265
+ }
253
266
  var MARK = { met: "[x]", not_yet: "[ ]", judging: "[~]" };
254
267
  function renderChecklist(canonicalKey, criteria, judging) {
255
268
  const lines = CHECKLIST_LINES[canonicalKey];
256
269
  if (!lines) return null;
257
270
  return criteria.filter((c) => (c.line ?? lines[c.id]) !== void 0).map((c) => {
271
+ if (!c.passed && !isRequiredCriterion(canonicalKey, c)) return `? ${c.questionTemplate ?? c.line ?? lines[c.id]}`;
258
272
  const state = !c.passed ? "not_yet" : judging ? "judging" : "met";
259
273
  const still = state === "judging" ? " (still judging)" : "";
260
274
  const missing = state === "not_yet" && c.missing ? ` \u2014 missing: ${c.missing}` : "";
@@ -11896,4 +11910,4 @@ export {
11896
11910
  SERVER_VERSION,
11897
11911
  createProductBrainServer
11898
11912
  };
11899
- //# sourceMappingURL=chunk-OJL74TF6.js.map
11913
+ //# sourceMappingURL=chunk-VTHPNYNE.js.map