Referrals only pay for people who did not exist before

The new-member gate was refNewDays: 30, a rolling window, on a site whose
oldest account is 19 days old. It therefore excluded nobody. Every referral
payment made today, 8.67 POL across nine people, went to a sponsor for an
existing member hunting. Not one was an acquisition, which is the entire
purpose of the mission.

The gate is now an absolute date, refNewAfter, set to the morning the mission
went live. Anyone whose account predates that moment was already a member by
definition and can never earn their sponsor a bounty, a match or the launch
bonus, however much they hunt. The 30-day window stays as a secondary rule so a
dormant signup cannot trigger a bounty a year later.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-09-23 11:30:04 -05:00
parent 4cfe851e81
commit cca90bdd00
+12 -2
View File
@@ -23,8 +23,14 @@ const DEFAULTS = {
refBountyPol: 3, // flat, not a draw: a referral is work someone did, not a lottery refBountyPol: 3, // flat, not a draw: a referral is work someone did, not a lottery
refMatchPct: 20, // paid ON TOP of the newcomer's find, never taken out of it refMatchPct: 20, // paid ON TOP of the newcomer's find, never taken out of it
refMatchDays: 30, // how long the match runs, from the newcomer's InstantAdPay join date refMatchDays: 30, // how long the match runs, from the newcomer's InstantAdPay join date
refNewDays: 30, // the bounty only pays for a genuinely new member, not an old one who // THE gate, and it has to be an absolute date, not a rolling window. It was refNewDays: 30 on a
// happens to start hunting years after their sponsor signed them up // site whose oldest account is 19 days old, so it excluded nobody and 8.67 POL went to sponsors
// for existing members hunting — zero acquisitions (Marty, 2026-09-23: "I need people that never
// existed before. That's why we're doing it."). Anyone whose account predates this moment was
// already a member, by definition, and can never earn their sponsor a bounty or a match.
refNewAfter: '2026-09-23T10:00:00Z',
refNewDays: 30, // secondary: a newcomer only earns their sponsor a bounty in their first
// month, so a dormant signup cannot trigger one a year later
refCapPol: 20, // referral pool per Central day, separate from the find pool refCapPol: 20, // referral pool per Central day, separate from the find pool
refMatchMinPol: 0.005,// do not write a transaction for dust refMatchMinPol: 0.005,// do not write a transaction for dust
// Marty's launch bonus (2026-09-23): an extra drip to the FIRST hunter whose referral gets all // Marty's launch bonus (2026-09-23): an extra drip to the FIRST hunter whose referral gets all
@@ -115,6 +121,10 @@ function onFind(member, find) {
const out = []; const out = [];
let room = Number(c.refCapPol) - paidRefToday(); let room = Number(c.refCapPol) - paidRefToday();
const ageDays = me.joinedAt ? (Date.now() - Number(me.joinedAt)) / 86400000 : 0; const ageDays = me.joinedAt ? (Date.now() - Number(me.joinedAt)) / 86400000 : 0;
// the floor: did this person exist before the mission did?
const floor = Date.parse(String(c.refNewAfter || '')) || 0;
const isNew = !floor || (me.joinedAt && Number(me.joinedAt) >= floor);
if (!isNew) return []; // an existing member hunting earns their sponsor nothing, ever
const who = { forMemberId: id, forName: me.username || ('#' + id) }; const who = { forMemberId: id, forName: me.username || ('#' + id) };
// the bounty, once, on their first find, and only while they are genuinely a new member // the bounty, once, on their first find, and only while they are genuinely a new member