Cybersecurity-Projects/PROJECTS/intermediate
CarterPerez-dev b41276004f feat(nadezhda): M1 ingestion core (fetch, parse, normalize, dedup)
Concurrent, rate-limited feed ingestion wired end to end: 'scrape' pulls
live security news into the SQLite store, idempotent across re-runs.

- internal/fetch: per-host token-bucket rate limiting, conditional GET
  (ETag/Last-Modified with 304 handling), retry+backoff that honors
  Retry-After and treats timeouts/cancellation as non-retryable, per-source
  deadline, honest User-Agent, 16MB body cap. robots.txt is enforced only via
  Client.Allowed() for the future HTML article-scrape path, not on subscribed
  feed fetches (user-directed retrieval; several publishers blanket-disallow
  generic bots yet serve a public feed).
- internal/parse: gofeed RSS/Atom to a normalized Item; RFC1123Z/RFC822Z/
  RFC3339 time fallbacks (CISA emits RFC822Z, not RFC1123Z as first researched).
- internal/normalize: canonical URL (lowercase scheme+host, drop fragment,
  strip utm_*/gclid/fbclid/ref/mc_cid/mc_eid, drop trailing slash), title
  normalization, goquery HTML strip, sha256 content+title hashes.
- internal/ingest: errgroup fan-out over sources, fail-soft per source, fetch
  -> parse -> normalize -> InsertArticle dedup via store.ErrDuplicate, plus
  fetch_state upsert for conditional GET.
- store: migration 0002 adds articles.title_hash; GetFetchState/UpsertFetchState.
- Trimmed testdata/feeds fixtures (3 items each) back golden parse tests; full
  suite is offline and passes under -race. Proven live: cold run 215 new across
  7 sources, warm run 0 new (304s + dedup).

Ctrl-C aborts scrape cleanly via signal-aware context.
2026-07-05 14:51:57 -04:00
..
api-security-scanner chore(deps): bump pydantic-settings 2026-06-20 01:35:21 +00:00
binary-analysis-tool Merge pull request #286 from CarterPerez-dev/project/ja3-ja4-tls-fingerprinting 2026-06-18 19:38:51 -04:00
credential-enumeration fix(credential-enumeration): rename .nimble to credenum.nimble 2026-04-29 01:23:40 -04:00
credential-rotation-enforcer feat(cre): one-shot curl|bash installer for credential-rotation-enforcer 2026-06-18 23:24:30 -04:00
dlp-scanner chore(deps): bump lxml in /PROJECTS/intermediate/dlp-scanner 2026-04-21 23:13:03 +00:00
docker-security-audit chore(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp 2026-04-08 20:02:55 +00:00
ja3-ja4-tls-fingerprinting feat(tlsfp): add social-share OG image and one-command tunnel redeploy 2026-06-18 23:24:30 -04:00
sbom-generator-vulnerability-matcher cracked 2026-05-23 05:01:01 -04:00
secrets-scanner chore(deps): bump golang.org/x/net 2026-07-03 17:47:33 +00:00
security-news-scraper feat(nadezhda): M1 ingestion core (fetch, parse, normalize, dedup) 2026-07-05 14:51:57 -04:00
siem-dashboard chore(deps): bump axios 2026-05-29 16:25:57 +00:00