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.
- ✅ Netlify-deploy GEDAAN (
netlify deploy --prod, deploy6a53cd39…): de nieuwepublic/staat live. Geverifieerd 200: cover-JSON-LD nu/assets/(was/dl/404), homepage toont "17 tools" +confluence_signals,openapi.jsontelt 17 (incl. flagship- usage), dode GitHub-proof-mirror weg.
- ✅ Submission-docs flagship-first herschreven (
SMITHERY_SUBMISSION.mdgepusht,REGISTRY_SUBMISSIONS.mdlokaal want gitignored). Oude fout gecorrigeerd:company_intelligencewas 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.mdbevat 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 pushGEDAAN (build0.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.
- Netlify-deploy gedaan (
netlify deploy --prod, deploy6a536aca…): 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.htmltoont 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-mcpv1.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-proofpubliceren" is voor de proof-pagina niet meer nodig (self-hosted + Bitcoin-verankerd via OpenTimestamps).
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.
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-mcpkoppelen (Glama crawlt dan automatisch, ~2 min). Tekst ligt klaar inlistings/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.
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.
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).
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.
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:
- Full-access Resend-key ("DataSignals Lab") intrekken (was alleen voor het toevoegen van het domein). Send-only key blijft.
emails/README.mdstap 3-4: audiences (Free/Pro) aanmaken en deTODO_FREE_LIST/TODO_PRO_LIST-ID's inscripts/emails_build.pyinvullen.- 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.
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).
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.
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).
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.
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.
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.
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.
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.
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).
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.
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.
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:
- Smithery's
tools-veld is read-only via de API (scan-afgeleid; PATCH negeert het — geverifieerd). - 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-resourcegeeft 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.