8 Commits

Author SHA1 Message Date
martbost 1b4a6d5398 A named exemption so a running match is not taken back
skycash's match on toplinzy started paying at 11:31 this morning, about 100
minutes before the origin gate went live. Marty: "it would be wrong to take it
back." So the match finishes its 30 days.

Done as a named list of member ids rather than by stamping toplinzy's joinedRef
as polhunter.com. That shortcut would have written a false origin into the
record, and the board now shows that field to members, so it would have been a
lie in two places at once.

The exemption forgives the ORIGIN CHECK AND NOTHING ELSE, and it is match-only:
it can never open a new bounty, or an exemption becomes the same hole again
wearing a config field. The new-member floor still applies. An unlisted member
is unaffected. An empty list behaves exactly as no list.

state() honours it too, so the card says "earning" for somebody who is in fact
earning, rather than telling them they earn nothing while paying them.

9 tests on the exemption, 90 across the suite.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-24 13:20:06 -05:00
martbost 9825e7a4e0 Referrals pay only for people PolHunter actually sent
The floor already blocked anyone who existed in InstantAdPay before the mission.
It did NOT ask who brought them. A member who joined off an email, a banner or
another site and only later wandered over to PolHunter still earned their
sponsor a bounty, which is the case Marty called out: "not just members that
come on board IAP and work their way over to POL Hunter."

The proof is InstantAdPay's own first-touch source, handed across signed in the
sign-in payload. A PolHunter share link stamps it polhunter.com from the URL
itself, so a stripped referrer (in-app browser, a link pasted into chat) does
not lose a genuine referral.

Fails closed, and only an explicit '0' can disable it: no origin on file pays
nobody, and a typo in the setting leaves the gate standing.

The board says the same thing the payout code does. Somebody who joined another
way now reads "joined InstantAdPay some other way, not through your link"
instead of sitting there looking like a bounty that never arrives.

Of the one hunter currently past the floor, linkmohd arrived direct, so under
the live rules they would have paid opgnetwerk a bounty PolHunter never earned.
That stops now.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-24 13:11:27 -05:00
martbost 2503b1e1a2 The board says the one condition out loud
The card read "when someone new opens PolHunter" and listed everyone a hunter
had brought as hunting or earning, including members who joined InstantAdPay
before the mission existed and can never pay a bounty. So the board promised an
earning the payout code would refuse.

It now says what actually qualifies: someone who has never had an InstantAdPay
account. People who were already members are listed as exactly that, the match
window is not claimed for them, and the counts show how many of the brought are
genuinely new.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 11:41:54 -05:00
martbost d04474fd7b Referral gate fails closed: a broken setting pays nobody
The rule is that a bounty is only ever earned by somebody who did not exist in
InstantAdPay before the mission did. The check was written so that an absent or
unparseable refNewAfter meant "no floor, pay everyone", which is the same shape
as the rolling window that paid 8.67 POL for members who already existed.

Now a blank, mistyped, zero or missing floor pays nobody at all, and so does a
member with no InstantAdPay join date on file. The gate can only ever be opened
on purpose.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 11:36:59 -05:00
martbost cca90bdd00 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>
2026-09-23 11:30:04 -05:00
martbost 4cfe851e81 Launch bonus: pay it automatically to the first referral home
Marty offered 5 POL to the first hunter who gets a referral all the way
through. It now pays itself: the bonus is written alongside the very first
bounty anyone earns, from the same faucet, and can never be written twice.

It sits outside the daily referral ceiling on purpose, because it is one
payment rather than a rate, and it announces itself to Telegram so the room
knows the race is over. While it is unclaimed the board card says so, and the
moment it is won the card stops advertising it.

Set refFirstBonusPol to 0 to retire it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 10:07:23 -05:00
martbost 48611374d6 Referral card: count someone as brought on the day they joined InstantAdPay, not the day this directory first saw them
The backfill stamped firstSeen at seeding time, so every hunter already on the
board read as brought in today.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 04:43:34 -05:00
martbost 1c9e99f91e Referral rewards: pay a hunter for bringing someone who actually hunts
PolHunter retains well and recruits badly. On 2026-09-22 it had its best day,
105 finds from 37 hunters, and had sent three people to InstantAdPay in its
whole life, all three on one member's link. Earning and sharing were separate
actions and only one of them paid.

Bringing someone is now the best-paid thing on the board, and the card sits
first in the mission list rather than on a promo page nobody opens. A flat 3
POL the first time someone they brought finds a code, then 20% on top of that
person's finds for their first 30 days, paid from the pool and never taken out
of the newcomer's drip.

Who counts as "brought by me" is the sponsor they actually joined
InstantAdPay under, handed over in the sign-in payload, so the bounty and the
commission always land on the same person. The bounty only pays for a member
who is genuinely new, once per person, and referral drips have their own daily
ceiling so a good referral day can never starve the finds.

Also: findsToday defaulted its day argument to undefined and silently returned
zero for every caller that omitted it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 04:34:22 -05:00