Skip to content

Latest commit

 

History

History
300 lines (239 loc) · 15.9 KB

File metadata and controls

300 lines (239 loc) · 15.9 KB

MENSENWERK — taken die alleen Keith kan doen

Bestuurd door GOVERNANCE.md (root, leidende bron van waarheid). Nieuwe keys en aanmeldingen die uit de werkpakketten volgen, komen bovenaan dit bestand.

Gegenereerd 8 juli 2026 (RONDE_FINAL punt 10). Gesorteerd op ontgrendelend effect: bovenaan staat wat het meeste van de machine loslaat. De machine draait door zonder deze taken (alles heeft een fallback), maar elke regel hieronder zet een gebouwd stuk om in werkende omzet of bereik. De maandelijkse healthmail verwijst naar dit bestand.


Openstaand na audit v1 (12 juli) — security + deploy

  • ✅ Netlify-deploy GEDAAN (netlify deploy --prod, deploy 6a53cd39…): de nieuwe public/ staat live. Geverifieerd 200: cover-JSON-LD nu /assets/ (was /dl/ 404), homepage toont "17 tools" + confluence_signals, openapi.json telt 17 (incl. flagship
    • usage), dode GitHub-proof-mirror weg.
  • ✅ Submission-docs flagship-first herschreven (SMITHERY_SUBMISSION.md gepusht, REGISTRY_SUBMISSIONS.md lokaal want gitignored). Oude fout gecorrigeerd: company_intelligence was als gratis vermeld maar is betaald.
  • SECURITY — roteren (urgent): de Netlify-token (nfp_…) is in de chat gebruikt voor de deploy en staat dus in de chatgeschiedenis; intrekken/vernieuwen. Idem de eerder in de chat verschenen Smithery-API-sleutel.
  • SECURITY — Ed25519 privésleutel: datasignals-mcp/PUBLISH_OFFICIAL_REGISTRY.md bevat een privésleutel in platte tekst (untracked, niet in git-historie, wel in de werkmap). Verwijder de inline sleutel (verwijs naar .mcp_registry_auth.txt), zet het runbook in .gitignore, en roteer de sleutel. Niet zelf aangeraakt (secret).
  • ✅ apify push GEDAAN (build 0.0.14, tag latest): de bijgewerkte server-instructies (prijs + gratis laag zichtbaar voor agents) en de flagship-first Apify Store-description staan live. /mcp-endpoint gezond (401 zonder token, geen 5xx). Alleen weergave, geen prijswijziging.

Verdere niet-urgente voorstellen (per-tool $0,20-tekst, cross-dag X-rotatie, self-hosted rapport-fonts, dynamisch copyright-jaar, 13F-bestandsnaam-drift) staan in AUDIT.md.


✅ KLAAR (12 juli): Netlify-deploy + proof-link live + registry gepubliceerd

  • Netlify-deploy gedaan (netlify deploy --prod, deploy 6a536aca…): proof-fix en de deelbare/citeerbare pagina's staan live. Geverifieerd 200: /proof/days/2026-07-12.json + …/2026-07-11.json + .json.ots (Bitcoin-anker) + /proof/chain.jsonl; /proof.html toont de self-hosted per-dag-links (0 GitHub-links); live day-file byte-identiek aan de bron.
  • Officieel MCP-register gepubliceerd: com.datasignalslab/datasignals-lab-mcp v1.3.0 via DNS-auth (GitHub-vrij) → registry.modelcontextprotocol.io. PulseMCP indexeert hieruit (loopt al, ~36 bezoekers/week) en pakt 1.3.0 vanzelf op.
  • Vervalt: "GitHub signal-proof publiceren" is voor de proof-pagina niet meer nodig (self-hosted + Bitcoin-verankerd via OpenTimestamps).

✅ KLAAR (12 juli): vlaggenschip confluence_signals LIVE

De vlaggenschip-MCP-tool is gemerged, gepusht en gedeployd. datasignals-mcp main (merge a0fa59f, gepusht naar origin) + apify push → build 0.0.12 live; tegen het live endpoint /mcp geverifieerd (met/zonder ticker, op conviction gerangschikt, filinglinks 200, trackrecord aanwezig, niet leeg, billed:false). landing main gemerged + gepusht naar origin en hub (95de45e). server.json staat op v1.3.0 met de tool vooraan. Volgende stap = de directory-aanmelding hieronder.


Directories: 3/4 klaar — Glama GEPARKEERD (GitHub-geblokkeerd)

Drie van de vier directories zijn klaar: officieel register (v1.3.0), PulseMCP (indexeert daaruit) en Smithery (12 juli via de Smithery-API: dubbele listing datasignals-lab-mcp verwijderd, bestaande datasignalslab/datasignals-lab kreeg een flagship-first beschrijving; Smithery's gescande toolslijst staat nog op 13 door een authorize-beperking — optioneel, zie §13).

  • Glama — GEPARKEERD. Glama's publieke directory wordt gevuld door GitHub-repo's te crawlen; er is geen betrouwbare "voeg een remote server via URL toe"-route, en ons GitHub-account is geflagd. Het Glama-workspace-product (chat/agents) is niet de listing-flow. Op 12 juli stond DataSignals niet in de Glama-directory (0 resultaten). Trigger om terug te komen: zodra het GitHub-account niet meer geflagd is → repo datasignalslab/datasignals-mcp koppelen (Glama crawlt dan automatisch, ~2 min). Tekst ligt klaar in listings/glama.md. Discovery loopt intussen via register + PulseMCP + Smithery.

Optioneel later (Smithery hosted deployment): de bestaande Smithery-listing draait op een Smithery-gehoste deployment (…run.tools) met een verouderde scan van 13 tools — de flagship-tool confluence_signals staat wél in de beschrijving maar (nog) niet in de gescande toolslijst. Wil je die lijst verversen naar de volle 16 tools, dan een re-deploy/rescan via de Smithery-UI (of de listing opnieuw koppelen aan het live Apify-endpoint). Niet dringend: agents lezen de beschrijving en krijgen bij verbinden sowieso de live tools.

Beveiliging: de gedeelde Smithery-API-sleutel én de Netlify-token stonden in de chat → intrekken/roteren.


Deploy naar Netlify — ✅ KLAAR (11 juli, via netlify deploy --prod)

Werkpakket G + edge-cache staan live; /reasoning.html en /api/reasoning.json op 200 geverifieerd. Referentie-instructie hieronder blijft staan voor volgende deploys.

Wat: de map ~/apify/landing/public naar Netlify slepen (app.netlify.com/drop, of de site openen en de map droppen). Werkpakket G en de /api/*-edge-cache staan gemerged in main en gepusht naar de hub (commit f6df819), maar Netlify serveert nog de vorige versie. Waarom het telt: tot de drop geven /reasoning.html en /api/reasoning.json een 404; daarna staan de redeneerpagina, het endpoint en de cache-header live. Controle achteraf: /reasoning.html en /api/reasoning.json geven 200 en de /api/*-cache-header komt mee. Tijd: 2 min.

0b. Twee cron-regels voor de redeneerlaag — ✅ GEÏNSTALLEERD (11 juli)

Gedaan: beide regels staan idempotent in de crontab (11 juli). Eerste echte run morgen 06:00/06:02; ze leveren de dagverse stand zodra de deploy heeft gedraaid. Ter referentie hieronder de exacte regels.

Wat: de redeneerpagina en het trackrecord bouwen al mee bij elke deploy, maar de dagelijkse verse herberekening vereist twee cron-regels, precies zoals performance_build.py en confluence_build.py die al hebben (vóór de deploy om 06:20, ná performance_build 05:45 en streams_refresh 05:10):

0 6 * * * /home/krtradingpro/apify/landing-live/scripts/run_live.sh scripts/reasoning.py   >> /home/krtradingpro/apify/landing-live/maintenance/log/cron.out 2>&1
2 6 * * * /home/krtradingpro/apify/landing-live/scripts/run_live.sh scripts/trackrecord.py >> /home/krtradingpro/apify/landing-live/maintenance/log/cron.out 2>&1

Waarom het telt: zonder deze regels blijft de pagina staan op de laatste build-stand; ze verandert dan alleen mee bij een deploy, niet dagelijks vanzelf. Beide scripts schrijven naar de gitignorede dagstaat maintenance/reasoning/ (overleeft de reset --hard in run_live.sh, net als latest.json), waarna de deploy de pagina ververst. Alleen-lezen: ze wijzigen nooit config/confluence.json, config/performance_rules.json of de proof-keten. Tijd: 2 min (crontab -e).

0. Beslissing: bescherming van /api/reasoning.json (jouw keuze)

De site is een statische Netlify-drop zonder serverlaag; een statisch /api/-bestand kent geen requests-per-IP en kan dus zelf geen harde 429 teruggeven. De gekozen, bewust simpele bescherming is een edge-cache-header op /api/* (5 min, must-revalidate): het CDN vangt herhaald/druk verkeer op uit de cache. Wil je ooit een échte per-IP-limiet, dan is er een request-laag nodig en dát is een infrastructuurkeuze die jij zelf maakt:

  • Netlify Edge Function — vereist een Git-gekoppelde of CLI-deploy (nu deploy je public/ handmatig, dus een edge function draait daar níét); of
  • een proxy vóór de CDN (bijv. Cloudflare/Fastly WAF-regel) — buiten deze repo.

Er is nu bewust géén nieuwe runtime bijgebouwd. Kies je later voor een van beide, zet dat als apart werkpakket op een claude/-branch.


1. Resend-key + DNS — ✅ KLAAR (11 juli), rest = audiences + postadres

Gedaan (11 juli): Resend-account actief, domein datasignalslab.com toegevoegd (eu-west-1) en verified (SPF, DKIM, MX bij Hostnet geplaatst; DMARC stond al op p=reject). Send-only RESEND_API_KEY staat in config/secrets.env (landing + landing-live). Mail gaat nu via Resend (codepad-test bevestigd). Bijbehorende bugfix (_post_json User-Agent) zit in claude/resend-dns-records en moet mee naar main+hub.

Nog te doen door jou:

  1. Full-access Resend-key ("DataSignals Lab") intrekken (was alleen voor het toevoegen van het domein). Send-only key blijft.
  2. emails/README.md stap 3-4: audiences (Free/Pro) aanmaken en de TODO_FREE_LIST/TODO_PRO_LIST-ID's in scripts/emails_build.py invullen.
  3. Echt postadres invullen (TODO_POSTADRES, wettelijk verplicht in lijstmail) — zie ook taak 4 hieronder. Stappenplan: emails/README.md + TODO.md sectie 2. Tijd: 20 min.

2. LEMONSQUEEZY_API_KEY — ✅ KLAAR (8 juli)

Key staat erin; watermerk-koppeling draait elk uur, backup gedraaid, MRR in de healthmail, ketentest groen. Enige restje (na taak 1): leverteksten in het LS-dashboard wijzen op de persoonlijke kopie per mail (TODO 3b).

3. LS-productteksten + twee covers bijwerken (dashboard)

Wat: de 13F-productteksten in het LS-dashboard bijwerken naar 18 fondsen (tekst ligt klaar: products/LEMONSQUEEZY_LISTING_13f_report.md), checken dat nergens een geld-terug-belofte staat, en de twee preview-covers uploaden waar de listing nog oude covers toont. Waarom het telt: de checkout is het enige commerciele moment; verouderde teksten daar kosten direct conversie. Stappenplan: TODO.md sectie 1. Tijd: 20 min.

4. Fysiek postadres — wettelijk verplicht in elke lijstmail

Wat: een postadres kiezen (bijv. het Hostnet-domicilie of een postbus) en TODO_POSTADRES in scripts/emails_build.py vervangen. Waarom het telt: zonder adres mag de mailreeks wettelijk niet verstuurd worden; dit blokkeert taak 1 half. Stappenplan: TODO.md sectie 2, punt 4. Tijd: 10 min (beslissing is het echte werk).

5. GoatCounter-code — maakt de funnel meetbaar

Wat: gratis account op goatcounter.com, sitecode in config/analytics.json, build + deploy draait vanzelf. Waarom het telt: vanaf dan meten previews, checkout-kliks en de nieuwe confluence/proof-pagina's echt; de healthmail toont bezoekers. Stappenplan: TODO.md sectie 4. Tijd: 10 min.

6. Search Console + Bing — zet de SEO-machine aan

Wat: property aanmaken voor datasignalslab.com, TXT-record of token, dan sitemap indienen. Bing kan importeren uit Search Console. Waarom het telt: 20+ blogartikelen, fondspagina's, politicuspagina's en nu de kwartaalrapporten indexeren anders op Googles eigen tempo; met Search Console zie je bovendien welke zoektermen werken. Stappenplan: TODO.md sectie 1c. Tijd: 15 min.

7. Juridische toets voorwaarden + laag 3 doorverkoopvoorstel

Wat: privacy.md en terms.md (gemarkeerd "Draft for legal review") laten toetsen, en het klaarstaande voorstel voorstel/doorverkoopclausule-voorwaarden beoordelen (nieuwe sectie "License, watermark and resale"; sluit aan op het watermerk uit punt 2). Waarom het telt: de doorverkoopclausule is de juridische kant van de kopieerbescherming; zonder goedkeuring blijft hij een branch. Stappenplan: git diff main voorstel/doorverkoopclausule-voorwaarden, daarna mergen of aanpassen; juridische toets extern. Tijd: 15 min eigen review + externe toets.

8. Proefaankoop met refundtest (zodra mail live is)

Wat: echte aankoop van het Congress-snapshot ($19) en Pro ($29), levering en alertmail controleren, refund aanvragen en verwerken. Waarom het telt: bewijst de keten end-to-end met echt geld; de wekelijkse smoke-test dekt alles behalve de betaling zelf. Stappenplan: TODO.md sectie 1b. Doe dit NA taak 1 (anders komt de alertmail niet aan). Tijd: 30 min verspreid over 2 dagen.

9. Registeraccounts agent-directories — ✅ KLAAR (12 juli)

Officieel MCP-register gepubliceerd (v1.3.0, DNS-auth), PulseMCP indexeert daaruit (~36 bezoekers/week), Smithery gelijst met flagship-first beschrijving. Glama blijft geparkeerd tot GitHub hersteld is (zie de directory-kop bovenaan). Overige losse ideeën (awesome-mcp-PR, mcp.so, Cline) zijn optioneel en niet nodig voor discovery — de canonieke register→PulseMCP-route dekt dat.

10. Persoutreach (nu /press live is)

Wat: het Q2-rapport (State of Congress Trading, 1056 trades, 55 late filings) met de persklare samenvatting van /press.html mailen aan 5-10 finance-journalisten/newsletters die over congreshandel schrijven. Waarom het telt: het kwartaalrapport is gebouwd om geciteerd te worden (citatievoorwaarde = bronvermelding + link); een citaat is een blijvende backlink en de goedkoopste distributie die er is. Stappenplan: /press.html + PDF assets/press/state-of-congress-trading-2026-q2.pdf. Tijd: 1-2 uur, elk kwartaal opnieuw (de generator levert het materiaal).

11. X-bio bijwerken

Wat: bio-suggestie staat klaar in TODO.md sectie 4c (kernzin-versie). Waarom het telt: klein, maar de bio is het eerste dat een bezoeker van het account ziet; hoort de kernzin te dragen die nu overal op de site staat. Tijd: 2 min.

12. Ratings vragen aan echte gebruikers

Wat: zodra een actor-gebruiker of Pro-abonnee positief contact opneemt via support@, vriendelijk vragen of ze een rating op de Apify Store willen achterlaten. NOOIT proactief reviews werven bij klanten die niets vroegen (staande afspraak). Waarom het telt: Store-ranking weegt ratings; een handvol echte sterren tilt alle 13 actors. Tijd: doorlopend, 2 min per keer.

13. Smithery — ✅ AFGEROND (12 juli): schoon, werkend, behouden

Beslissing: behouden. De listing datasignalslab/datasignals-lab staat live in de datasignalslab-namespace, is schoon (displayName "DataSignals Lab", flagship-first beschrijving die leidt met confluence_signals + gratis laag), werkt (100% uptime) en heeft echte tractie (~185 sessies). Een per ongeluk aangemaakte dubbele listing (datasignals-lab-mcp) is verwijderd. Discovery is rond.

Enige cosmetische restpunt — NIET door ons oplosbaar, bewust geaccepteerd: de gescande toolslijst staat op 13 (scan van 18 juni, vóór de 4 nieuwere tools incl. de flagship). Twee harde muren:

  1. Smithery's tools-veld is read-only via de API (scan-afgeleid; PATCH negeert het — geverifieerd).
  2. Een verse scan faalt omdat Smithery OAuth-discovery doet en Apify's endpoint de vereiste metadata niet publiek serveert: https://…apify.actor/.well-known/oauth-protected-resource geeft 401 i.p.v. een publieke 200 (RFC 9728 / MCP-auth-spec). Dat zit in Apify's Standby-MCP-wrapper, niet in onze code (my_actor), dus niet door ons te fixen.

De 13 getoonde tools zijn allemaal geldig; de flagship staat vooraan in naam + beschrijving. Volledige, actuele tool-dekking loopt sowieso via officieel register + PulseMCP + het live endpoint (17 tools, v1.3.0). Revisit-trigger: zodra Apify de oauth-protected-resource -metadata publiek (200) serveert, ververst een redeploy in het Smithery-dashboard de scan vanzelf naar 17. Tot dan: laten staan, geen actie nodig.

14. Mailbox support@datasignalslab.com bevestigen

Wat: in het Hostnet-paneel controleren dat support@ bestaat/doorstuurt. Waarom het telt: het adres staat op de site, in /press, in de SEC User-Agents en in de voorwaarden; een bounce daar is pijnlijk. Stappenplan: TODO.md sectie 0. Tijd: 5 min.