@bongos/core 1.20.76 → 1.20.77

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.
@@ -14,6 +14,9 @@
14
14
  // 6 rewards reward_intents (all being considered — intent, never binding)
15
15
  // 7 framing framing (A–D: managed, hybrid, local, open-source) and services
16
16
  //
17
+ // plus `voice` (planet · professional), which nobody is asked: it follows the entity
18
+ // answer (spec D5) and can be switched later.
19
+ //
17
20
  // THREE KINDS OF QUESTION. `one` takes a single member of its list, `many` takes an
18
21
  // array of members (stored de-duplicated, in the list's own order, so two spellings of
19
22
  // one answer store the same bytes), and `count` takes a whole number in a range.
@@ -100,6 +103,11 @@ const PLANET_PHYSICS_QUESTIONS = Object.freeze({
100
103
  reward_intents: Object.freeze({ kind: 'many', values: Object.freeze(['non-monetary', 'cash', 'equity', 'future-payouts']) }),
101
104
  framing: Object.freeze({ kind: 'one', values: FRAMINGS }),
102
105
  services: Object.freeze({ kind: 'many', values: SERVICES }),
106
+ // Not a question: the VOICE the project's copy speaks in (spec D5, task 1004419). The
107
+ // startup flow sets it from the entity answer — the planet voice for individuals and
108
+ // groups, a plain professional one for a formed organization — and stores it here
109
+ // so the project's settings can switch it later with an ordinary PATCH …/detail.
110
+ voice: Object.freeze({ kind: 'one', values: Object.freeze(['planet', 'professional']) }),
103
111
  });
104
112
 
105
113
  // The answer as it may be STORED, or undefined when it is not one. `many` answers come
@@ -42,6 +42,15 @@ const SOFT_LIMIT_RULES = Object.freeze([
42
42
  effect: 'hide',
43
43
  reason: 'Your planet is new, so there is nothing built yet to describe.',
44
44
  }),
45
+ // Task 1004419: question 6 is hidden for a founder building alone with nobody
46
+ // expected — one builder now AND one by month three. Expecting company keeps it.
47
+ Object.freeze({
48
+ id: 'rewards-need-other-builders',
49
+ when: { builders_at_start: { in: [1] }, builders_expected: { in: [1] } },
50
+ options: ['reward_intents'],
51
+ effect: 'hide',
52
+ reason: "You're building solo, so there is nobody to reward yet. Expect builders to join and the question comes back.",
53
+ }),
45
54
  Object.freeze({
46
55
  id: 'equity-needs-a-company',
47
56
  when: { entity: { in: ['intent-company', 'intent-nonprofit', 'intent-solo', 'intent-unsure', 'university-project', 'social-group', 'private-individual'] } },