Skip to content

Latest commit

 

History

History
339 lines (314 loc) · 22.4 KB

File metadata and controls

339 lines (314 loc) · 22.4 KB

Changelog — datasignalslab.com

2026-07-12 — Volledige audit v1 (consistentie, SEO, huisstijl, rapport-layout)

  • Website ↔ MCP consistentie: vlaggenschip overal confluence_signals (was company_intelligence), tool-telling 15 → 17 (incl. confluence_signals + usage in openapi.json x-mcp.tools). Kapotte cover-JSON-LD (/dl/ 404) → /assets/. Dode proof-mirror-link → self-hosted proof. Vlaggenschip-guard in check_consistency.py.
  • SEO: unieke meta per fonds- en congrespagina (echte data), BreadcrumbList op alle programmatische pagina's.
  • Huisstijl: em-dashes en proza-puntkomma's uit alle zichtbare copy (homepage, rapportkaarten, FAQ, twee Form D-digests, betaalde rapporten). Getalsbereiken houden hun en-dash.
  • Betaalde rapporten: mobiel-scrollbare tabellen, zebra + hover, vloeiende cover-kop, print-robuustheid, .muted gedefinieerd, dode CSS weg. Pro-hub gereskind.
  • X-kanaal: score-display geclamped op 99 (nooit 100/100).
  • Listings: gratis laag vooraan in de MCP-README, submission-taglines flagship-first. Server-instructies tonen prijs + gratis laag voor agents.
  • Build groen (exit 0, linkcheck, consistentie). Details in AUDIT.md.

2026-07-12 — Live deploy + officieel MCP-register gepubliceerd

  • Netlify-deploy (netlify deploy --prod, deploy 6a536aca…): de proof-fix en de deelbare/citeerbare pagina's staan live. Geverifieerd HTTP 200 op /proof/days/2026-07-12.json, …/2026-07-11.json, de .json.ots Bitcoin-ankers en /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 naar registry.modelcontextprotocol.io via DNS-auth (GitHub-vrij). De registry dwingt een top-level description ≤100 tekens af → ingekort tot een flagship-first regel (de volledige pitch blijft in server.json → _meta.com.datasignalslab). PulseMCP indexeert uit het register en pakt 1.3.0 vanzelf op.
  • Smithery afgerond & behouden (via Smithery-API): dubbele lege listing (datasignals-lab-mcp) verwijderd; bestaande datasignalslab/datasignals-lab schoongemaakt — displayName "DataSignals Lab" + flagship-first beschrijving. Listing werkt (100% uptime, ~185 sessies). Cosmetisch restpunt bewust geaccepteerd: toolslijst blijft op 13 — Smithery's tools-veld is read-only via API, en een verse scan faalt omdat Apify's /.well-known/oauth-protected-resource 401 geeft i.p.v. publiek 200 (Apify Standby-wrapper, niet onze code). Volledige 17-tool-dekking loopt via register + PulseMCP + live endpoint. Glama blijft geparkeerd (GitHub-crawl, account geflagd). Enige mens-actie: de gedeelde Netlify-token + Smithery-API-sleutel roteren.

2026-07-12 — Proof GitHub-onafhankelijk + deelbare gratis laag

  • Actor-README ververst: apify push → build 0.0.13, de Actor-pagina toont nu de vlaggenschip-tool confluence_signals vooraan. Geen code gewijzigd, alleen herpubliceren.
  • Proof-link hersteld, nu GitHub-onafhankelijk (branch claude/proof-and-share-v1): de per-dag proof-link wees naar een GitHub-mirror die (al een maand) onbereikbaar is → 404. De per-dag fingerprint (days/<datum>.json) + de Bitcoin-OpenTimestamps-anker (.json.ots) én de volledige keten (chain.jsonl) worden nu self-hosted onder /proof/ gepubliceerd; de proof-pagina linkt daarheen. Onafhankelijkheid berust nu op de Bitcoin-tijdketen (OpenTimestamps), niet op een host of account. Alleen weergave: de keten, de day-hashes, de tags en de dagelijkse pipeline (scripts/proof_chain.py, maintenance/proof/) zijn onaangeroerd — bestanden worden byte-identiek gekopieerd (integriteit geverifieerd).
  • Deelbare/citeerbare gratis laag: schema.org Dataset-markup op de proof-, reasoning- en confluence-dataweergaven, plus een korte citeerregel met een vaste permalink, duidelijke naamsvermelding en een één-klik kopieerknop. Title/description/canonical/OG+Twitter-cards werden al site-breed uitgezonden (geverifieerd op home/reasoning/proof).
  • Verificatie: build_static.py groen (linkcheck + consistentiecheck), alle JSON-LD valide, day-files byte-identiek aan de bron, .bak niet gepubliceerd. Gemerged naar main + gepusht naar origin en hub. Live 200 wacht op de handmatige Netlify-deploy (CLI niet ingelogd; geen auto-deploy vanaf git-push) — zie MENSENWERK.
  • Geen wijziging aan prijzen, betaling, auth of secrets.

2026-07-12 — Vlaggenschip-MCP-tool: confluence_signals

  • Nieuwe vlaggenschip-tool (branch claude/flagship-tool-v1, datasignals-mcp/my_actor/server.py): confluence_signals beantwoordt in één aanroep de hoogste-waardevraag — "welke signalen hebben nu de sterkste cross-source confluentie, gerangschikt op conviction?". Per signaal: ticker, conviction 0-100, welke bronsoorten elkaar bevestigen, een directe filinglink per onderliggend signaal, en de trackrecord-context (per ticker + portfolio-breed). Geen nieuwe logica: de tool hergebruikt de gepubliceerde uitvoer van de redeneerlaag (scripts/reasoning.py + scripts/trackrecord.py) via het bestaande vrije endpoint /api/reasoning.json. Alle velden defensief gecoerced; externe data als onbetrouwbaar behandeld (niets uitgevoerd).
  • Lage drempel + etalage: geen verplichte velden (optioneel ticker, min_conviction, max_results); beschrijving in vraagvorm met drie voorbeeldvragen en gemarkeerd als de primaire ingang voor confluentie/conviction-vragen.
  • Geen interne concurrentie: server-instructies en company_intelligence afgebakend — company_intelligence = één benoemd bedrijf, confluence_signals = markt-brede confluentie- ranking. Geen tool verwijderd, geen functionaliteit gewijzigd.
  • Vertrouwen + prijs: tool is gratis (serveert het publieke gerangschikte antwoord, nooit gefactureerd, net als resolve_company/usage); elke claim draagt de bronlink mee. Betaalde tools blijven $0,20 per result, charge-on-success; spend-cap ongewijzigd — niets herbouwd. server.json → versie 1.3.0, vlaggenschip vooraan in de toolslijst + voorbeeldvraag.
  • Visuele uitvoer: compacte markdown-signaalkaart (card) voor hosts met UI, met altijd de tekstuele summary als fallback.
  • Geverifieerd tegen de live feed: in-memory MCP-client tegen /api/reasoning.json (200), met en zonder filter — gerangschikt, 6/6 filinglinks well-formed https, trackrecord aanwezig, billed:false. py_compile ok, server.json geldig.
  • LIVE (12 juli): datasignals-mcp main gemerged (a0fa59f) + gepusht naar origin en apify push → build 0.0.12 live; tegen het live endpoint /mcp opnieuw geverifieerd (met/zonder ticker, op conviction gerangschikt, filinglinks HTTP 200, trackrecord aanwezig, antwoord vers/niet-leeg, billed:false). landing main gemerged (95de45e) + gepusht naar origin en hub; build_static.py groen (linkcheck + consistentiecheck ok). listings/ bijgewerkt met de flagship vooraan (klaar om in te dienen — eigenaarstaak).

2026-07-11 — Agent-discovery v1 + Congress live-voorbeeld

  • Agent-vindbaarheid (branch claude/agent-discovery-v1, twee repos): elke MCP-tool-beschrijving in datasignals-mcp/my_actor/server.py opent nu met de vraag die de tool beantwoordt en bevat een concreet Example: (16 tools, geen functionaliteit gewijzigd). datasignals-mcp/server.json verrijkt tot een volledige serverbeschrijving: categorieen, tags, alle tools met hun vraag, de gratis laag (50 MCP-calls/maand), de prijs ($0,20 per billable result, charge-on-success) en de rail (Apify-platform; x402 uit) — custom velden onder _meta, kernvelden schema-conform.
  • Landing-vindbaarheidslaag: llms.txt wijst nu naar het directe MCP-endpoint en de machine-leesbare serverbeschrijving; de MCP-README kreeg per-host koppel-snippets (Claude Desktop, Cursor, ChatGPT) en 3 voorbeeldvragen van de sterkste tool. Nieuwe map listings/ met plak-klare aanmeldteksten voor het officiele MCP-register, PulseMCP, Glama en Smithery (gratis laag vooraan).
  • Prijs/betaling: bevestigd dat charge-on-success, spend-cap en het usage-tool bestaan (wp-f) en ongewijzigd blijven; prijs + rail zijn nu expliciet in de serverbeschrijving zodat een agent de kosten vooraf kent. Niets herbouwd.
  • Congress-productpagina (aparte branch claude/congress-example): de Example- sectie toont een echt vers record uit de live feed als het exacte JSON dat API en MCP-tools teruggeven, met de officiele filing-link. Alleen presentatie.

2026-07-10 — Werkpakket G: redeneerlaag en bewijs

  • Redeneerlaag (scripts/reasoning.py, pagina /reasoning.html, API /api/reasoning.json): beantwoordt de canonieke vraag "welke ticker heeft nu de sterkste confluentie?" met een op conviction (0-100) gerangschikt, onderbouwd antwoord in plaats van ruwe rijen. Elke kandidaat toont welke onafhankelijke bronsoorten binnen het venster vuurden, met een link naar de officiële filing per claim. De formule is transparant en verzint geen scores: alle input komt uit signalen die de vaste alertdrempel (config/alerts.json) al haalden, en de confluentielat blijft exact die uit config/confluence.json (ongewijzigd, alleen gelezen). Tickers onder de lat verschijnen als "building candidate" i.p.v. weggelaten, zodat de rangschikking meer zegt dan de kale confluentielijst. Elke vrije vraag valt terug op dezelfde rangschikking — nooit een foutmelding.
  • Trackrecord van uitgekomen signalen (scripts/trackrecord.py, blok op /performance.html): meet per individueel gearchiveerd signaal of het "uitkwam" zodra een meethorizon daadwerkelijk verstreken is (nooit vooruitlopend). Zelfde entry-regel, horizonnen en benchmark als config/performance_rules.json (bevroren, hergebruikt via import, nooit automatisch gewijzigd; dezelfde sha256-verzegeling weigert een gemanipuleerd regelbestand). De lijst groeit vanzelf mee naarmate horizonnen verstrijken en wordt nooit achteraf aangepast.
  • Vindbaarheid: /reasoning.html opgenomen in sitemap.xml, llms.txt, de OpenAPI-spec en met knoppen vanaf de confluentiepagina. Afgeleide dagstaat onder maintenance/reasoning/ is gitignored (net als latest.json); de getrackte output is de pagina + public/api/reasoning.json.

2026-07-11 — edge-cache voor /api/ + verificatie redeneerlaag

  • Edge-cache-header voor /api/* (build_static.py, public/_headers): de publieke /api/-bestanden krijgen Cache-Control: public, max-age=300, must-revalidate, in dezelfde stijl als de bestaande /assets/*-regel. Zo vangt het CDN herhaald of druk verkeer op de endpoints (waaronder /api/reasoning.json) uit de edge-cache op, terwijl elke deploy weer vers serveert en de dagelijkse verversing binnen 5 minuten zichtbaar wordt. Geen serverlaag, geen nieuwe runtime, geen wijziging aan toegang, auth of prijzen.
  • Redeneerlaag (Werkpakket G) geverifieerd: build groen (linkcheck + consistentiecheck), een vrije vraag aan scripts/reasoning.py geeft een onderbouwd, op conviction gerangschikt antwoord met een link naar de filing per claim, en scripts/trackrecord.py toont uitsluitend verstreken-horizon- resultaten (0 vooruitlopende horizonnen).
  • Dagelijkse verversing geïnstalleerd: de twee cron-regels uit MENSENWERK.md § 0b (reasoning.py 06:00, trackrecord.py 06:02) staan idempotent in de crontab; ze produceren de dagverse stand zodra Werkpakket G naar main is gemerged en landing-live heeft gedeployd.

2026-07-09 — X_DAGPOSTEN

  • X-dagposten (scripts/x_queue.py, spec in X_DAGPOSTEN.md): de X-module levert nu elke ochtend precies drie posts in het nieuwe formaat van drie regels (feit met cijfer, context, bron). Geen hashtags meer, hooguit een cashtag $TICKER, en maximaal een link per dag op de sterkste post die nog binnen de tekenlimiet past. De andere posts eindigen op de bron zonder link.
  • Afwisseling over stromen: de drie posts komen uit verschillende stromen (congress, insider-cluster, Form D, 13F, confluence, plus Form 144 en 8-K als aanvulling). Confluence krijgt altijd een plek als het er is. Te weinig verse stromen wordt gelogd als "mix niet gehaald". Nooit drie keer dezelfde soort.
  • Scores doseren: hooguit een topscore (95+) per dag. Elk cijfer komt uit de echte data. check_post() dwingt nu ook puntkomma's, de zes buzzwords, kromme aanhalingstekens, het hashtagverbod, het cashtag-maximum en de tekenlimiet af.
  • Telegram in plakformaat: datumkop, drie blokken met tijdstip (14:30, 18:00, 21:00) en een expliciete markering welk blok de link draagt. Maandags een apart threaddraft-blok van vijf posts. Verstuurd via de bestaande koppeling (cron 07:30). Opslag onveranderd in social/queue/JJJJ-MM-DD_postN.txt.

2026-07-08 — RONDE_FINAL

  • Kernzin overal identiek: een waardepropositie in config/pricing.json (value_prop), letterlijk getoond op homepage, compare, pricing, de agents-pagina en in alle 14 actor-READMEs; de consistentiecheck faalt de build bij elke afwijking. Geactiveerd in dezelfde deploy als /proof en /confluence. X-bio- en Smithery-tekstsuggestie op TODO (4c/4b).
  • Bewijsbaar trackrecord: scripts/proof_chain.py hasht dagelijks de volledige gepubliceerde signaalset in een append-only keten (elke daghash bevat de vorige) en verankert op twee onafhankelijke gratis plekken: publieke git-mirror github.com/datasignalslab/signal-proof (dagtag) en OpenTimestamps (Bitcoin). /proof legt uit en is door derden verifieerbaar; de ketenlogica valt onder de integriteitsgrens (charter). Eerste schakel 8 juli, tag proof-2026-07-08 staat publiek.
  • Watermerk-engine (scripts/watermark.py): koperidentiteit in drie lagen in de rapportvoettekst (zichtbaar, commentaar, verstopte vingerafdruk die strippen overleeft), getest op een echt rapport; de koppeling met kopersgegevens wacht op LEMONSQUEEZY_API_KEY (TODO 3b). Doorverkoopclausule klaar als voorstel (voorstel/doorverkoopclausule-voorwaarden).
  • Confluence: scripts/confluence_build.py berekent dagelijks tickers met signalen uit minimaal 2 onafhankelijke bronsoorten binnen 10 dagen (definitie, bronsoorten en copy in config/confluence.json), archiveert append-only met bronlinks (telt mee in de hashketen), staat als topsectie in de Pro-alertmail, actueel in de Pro-omgeving en publiek op /confluence met 7 dagen vertraging.
  • Agent-laag: /api/openapi.json (OpenAPI 3.1: publieke endpoints + MCP-endpoint + 15 tools), /api/streams.json (register met schema en changelog per stroom uit config/streams.json), /api/confluence-public.json en /api/proof.json; llms.txt en robots.txt verwijzen ernaar. Agents-pagina uitgebreid met koppelvoorbeelden (Claude, Anthropic API, LangChain, OpenAI Agents SDK) en de proof-onderbouwing. Webhookabonnementen: volledig ontwerp als laag 3-voorstel (voorstel/webhook-abonnementen-ontwerp); prijs per signaal is een eigenaarsbeslissing. Registers: MCP Registry, Smithery, Apify en PulseMCP staan; rest met exacte stappen op TODO 4d.
  • Nieuwe stromen: STOCK Act late-filing tracker (/congress/late-filings.html, dagelijks, feitelijk, bronlink per geval, disclaimer) en lobby-naar-contract beta (/lobby-to-contracts.html, wekelijks, Senate LDA x USAspending per bedrijf als gedateerde tijdslijn). Beide in het stromenregister, de bewaking en de homepage-teller (15 stromen, uit config).
  • Citeermotor: scripts/quarterly_report.py bouwt per kwartaal State of Congress Trading (pagina + PDF, methodologie, bronverwijzingen); proefrun Q2 2026 gearchiveerd (1056 trades, 60 leden, est $92,6M, 55 meldingen boven de 45 dagen); /press met persklare samenvatting en citatievoorwaarde (overname met bronvermelding en link); cron op de 1e van jan/apr/jul/okt.
  • Charter: maandelijkse concurrentie- en categoriescan, vast watchlistpunt wetgeving congreshandel, maandelijkse factcheck-steekproef, en de coördinatieregel dat zelfrondes eerst controleren wat RONDE_FINAL al afrondde.
  • Restpunten: push_all.sh aangevuld (formd + datasignals-mcp) en gedraaid: alle 14 actors gepusht. Voorwaarden: laatste twee geld-terug-vermeldingen verwijderd (nazorg RONDE_2). Beveiligingstaak rondes: gepland als verplichte eerste taak van de zelfronde van 13 juli (charter). LS-backup en testmode-ketentest: wachten op de key, TODO bevestigd. MENSENWERK.md in de root; de healthmail verwijst er vast naar.

2026-07-08 — RONDE_2

  • Deploy-hygiëne: alle cron-taken en deploys draaien nu uit een schone checkout van main (~/apify/landing-live, gesynct vanaf de hub landing-hub.git via scripts/run_live.sh); de werkkopie kan nooit meer ongecommit werk live zetten. Pauzeren: touch landing-live/PAUSE.
  • Refundbelofte ingetrokken: de 14-dagen geld-terug is overal verwijderd; het FAQ- en voorwaardenantwoord is neutraal en feitelijk (afhandeling via Lemon Squeezy). LS-productteksten controleren staat op TODO.
  • Blogwachtrij: 6 kernartikelen blijven zichtbaar, 14 bulk-artikelen van 5 juli gingen naar _queue/; blog_queue.py publiceert er dagelijks max 2 met de echte datum (2 vandaag gepubliceerd als functietest). Blogindex toont de zes nieuwste als "Newest guides".
  • Driedeling + fair use: pricingpagina legt de drie gebruiksvormen uit; "volledige MCP-toegang" is vervangen door een fair-use limiet van 2000 calls/maand in config/pricing.json, overal identiek en bewaakt door de consistentiecheck. Prijsaudit: alle 13 actors exact $0,20 per event, geen afwijkingen, geen laag-3-voorstel nodig.
  • Nazorg v4.0: producttelling verklaard en dynamisch (13 feeds + 1 MCP-server = 14 producten; 13 feedtools + bundel + resolver = 15 tools); healthmail-proefrun in juiste volgorde bevestigt de onderhoudssectie; 13F- en performancepagina vermelden de filinghistorie tot 2024; 18 fondspagina's live en in de sitemap.
  • Zelfsturend onderhoud: system/CHARTER.md + scripts/ronde_generator.py (wekelijks kort, maandelijks uitgebreid) schrijven en draaien eigen onderhoudsopdrachten binnen laag 1/2, headless via de Claude CLI; laag 3 alleen als voorstel; verslag en goedkeuringsvragen vast in de healthmail.

2026-07-08 — ronde v4.0 (PROJECTINSTRUCTIE_v4.0.md)

Vervangt v3.1 en de optimalisatieronde volledig. Per sectie gebouwd wat ontbrak; wat al draaide is blijven staan. Volledige sectiestatus in de opleverrapportage; hieronder de wijzigingen van deze ronde.

Gebouwd in deze ronde

  • 13F verbreed van 6 naar 18 fondsen (sectie 7). Fondsenlijst met gepubliceerd selectiecriterium in config/funds13f.json (single source, peildatum 2026-07-08, nooit geselecteerd op resultaten achteraf). Alle copy bijgewerkt, weging van de conviction-score (60% breedte / 40% verse aankopen) nu ook klantzichtbaar. Historische backfill in products/_13f_history/ (178 kwartaal-filings, 10 kwartalen per fonds). Bewuste begrenzing: backfill tot 2024-01-01; de bron (EDGAR-XML) reikt tot 2013, maar infotables van de grootste filers zijn tientallen MB per kwartaal. Dieper terugvullen kan door BACKFILL_SINCE te verlagen. Gearchiveerde snapshots ongewijzigd. De conviction-formule normaliseert op het aantal fondsen, dus de bevroren performancedrempel (50) blijft geldig.
  • Pro-alertstromen verbreed (sectie 9): alle beleggersrelevante stromen gebundeld in maximaal één Pro-mail per dag, drempels per stroom in config/alerts.json, uitgesloten stromen expliciet gedocumenteerd met reden (app-store-reviews: buiten de beleggersdoelgroep).
  • Juridische pagina's herschreven (sectie 12): privacybeleid en gebruiksvoorwaarden dekken nu de echte funnel (e-mail bij preview en aankoop, Lemon Squeezy, Resend, GoatCounter, bewaartermijnen, rechten, support@datasignalslab.com). Status: concept, door Keith juridisch te laten toetsen. Beide pagina's dragen de markering "Draft for legal review". Privacylink nu in elke mailfooter.
  • 14 dagen geld-terug op Pro (sectie 3): toegevoegd aan config/pricing.json, prijsblokken, FAQ, voorwaarden en mailreeks. Nog te spiegelen in de LS-productbeschrijving (TODO 1).
  • Ketentest (sectie 18): scripts/smoke_chain.py controleert wekelijks checkout-URL's (200 + checkout-markers), rapport- en Pro-URL's, outbox en robots, zonder betaling. Eerste run 8 juli: alle checks OK, LS-API-check overgeslagen (key ontbreekt). Testmode-doorloop kan pas met LEMONSQUEEZY_API_KEY; de echte proefaankoop staat als TODO 1b.
  • Vindbaarheid voorbereid (sectie 11): metatag-injectie via config/search_console.json, verificatiebestanden via config/verification/, sitemap-lastmod volgt nu de bouwdatum. Accountkoppeling = TODO 1c.
  • Meetbaarheid afgemaakt (sectie 20): data-ev-kliks (preview_submit, checkout_click_snapshot, checkout_click_pro) worden nu echt als events naar GoatCounter gestuurd zodra de sitecode actief is.
  • Blogartikelen (sectie 10): elke post sluit nu af met een CTA naar de gratis preview van het bijpassende rapport.
  • Zelfherstel aangescherpt (sectie 17): de maandelijkse onderhoudstaak markeert gevonden problemen (kapotte links, sitemap, trage pagina's, consistentie) nu als faalreden, zodat de herstelpogingen en de alertmail naar de eigenaar volgen.
  • DNS-stappenplan voor Hostnet (SPF/DKIM/DMARC) in todo/DNS_HOSTNET.md.
  • Apify-pricingcheck (sectie 14): alle 13 actors draaien al op pay-per-event, geen rental-migratie nodig vóór 1 oktober 2026. Rapport in maintenance/apify_pricing_check_2026-07-08.md.
  • report_monthly geverifieerd (sectie 19): eerste run uitgevoerd, maandedities gearchiveerd; draait voortaan op de 1e via cron.

Verificatie bestaande binnenkant (sectie 19)

  • Schedules: draaien en loggen (dagelijks performance/alerts/x-queue, wekelijks digest/apify-schedules); Apify-schedules herstelden zichzelf aantoonbaar op 7 juli.
  • Zelfherstel laag 1: 3 pogingen met oplopende wachttijd aanwezig; het outbox-fallbackpad is in productie actief; er is 1 auto:-commit (concurrent-hercontrole 6 juli).
  • Healthmail: eenmaal geproduceerd (6 juli, testrun); funnelcijfers tonen placeholders tot de GoatCounter- en LS-keys er zijn.
  • Backup: maintenance/backup/2026-07.tar.gz aanwezig (config + crontab); abonneelijst-export wacht op LEMONSQUEEZY_API_KEY.
  • Consistentiecheck: draait in elke build en faalt op elke afwijking.
  • Integriteitsgrens performanceregels: in code (sha256-slot) en README.