schema_version: 1
status: BASELINE_PARTIAL
canonical_database: /var/lib/sma-data/signals.db
inventory_source: architecture/writer-inventory.md
rule: every_writable_field_has_one_owner
field_groups:
signals_technical:
owner: signal_intake
examples:
- source_url
- source_type
- source_name
- created_at
- url_hash
- image_url
- image_found
known_writers:
- social-media-radar/signal_db.py
- social-media-radar/rss_intake.py
- social-media-radar/weather_intake.py
- social-media-radar/intake/meta_ads_intake.py
- social-media-radar/aa045_schema.py
- social-media-radar/aa045_enrich.py
- social-media-radar/aa045f4_enrich.py
- social-media-radar/image_backfill.py
- social-media-radar/image_backfill_p8.py
- social-media-radar/image_refresh.py
- social-media-radar/gnews_image_backfill.py
- social-media-radar/og_backfill.py
- social-media-radar/multi_cluster.py
- social-media-radar/translate_backfill.py
- social-media-radar/cleanup_summaries.py
- social-media-radar/dedup_cleanup.py
- social-media-radar/signal_decay.py
- social-media-radar/sma_content_worker.py
- social-media-agent/app.py
- social-media-agent/publish_ready.py
- social-media-radar/run_radar.sh:inline_backfill
status: FIELD_AUDIT_REQUIRED
signals_source_relationship:
table: signals
owner: signal_intake
examples:
- source_count
known_writers:
- sma_core/signal_intake.py
status: ASSIGNED
signal_sources:
table: signal_sources
owner: signal_intake
examples:
- signal_id
- source_name
- source_url
- url_hash
- added_at
known_writers:
- sma_core/signal_intake.py
status: ASSIGNED
signals_enrichment:
table: signals
owner: signal_intake
examples:
- source_platform
- external_id
- observed_at
- published_at
- content_hash
- processing_state
- ad_start_at
- last_seen_at
- active_status
known_writers:
- sma_core/signal_enrichment.py
status: ASSIGNED
signals_intelligence:
owner: signal_intelligence
examples:
- signal_category
- topic_class
- mallorca_relevance
- mas_relevant
- mas_anchor
- content_blocked
- content_block_reason
known_writers:
- social-media-radar/rescore.py
- social-media-radar/classification/signal_classifier.py
- social-media-radar/content_director.py
- social-media-radar/sma_content_worker.py
- social-media-agent/app.py
- social-media-agent/publish_ready.py
status: FIELD_AUDIT_REQUIRED
signals_cluster_intelligence:
table: signals
owner: signal_intelligence
examples:
- cluster_id
- radar_score
- score_breakdown
known_writers:
- sma_core/signal_intelligence.py
status: ASSIGNED
signals_editorial:
owner: editorial_planning
examples:
- recommended_action
- action_platform
- director_score
- director_action
- briefing_winkel
- briefing_nutzen
- briefing_zielgruppe
- briefing_post_typ
known_writers:
- social-media-radar/content_director.py
- social-media-radar/content_briefing.py
- social-media-radar/sma_content_worker.py
- social-media-agent/app.py
status: FIELD_AUDIT_REQUIRED
mixed:
table: signals
owner: UNASSIGNED
examples:
- status
- pinned
known_writers:
- social-media-agent/app.py
- social-media-agent/cases_db.py
- social-media-radar/sma_core/services.py
status: OPEN
content_drafts:
table: content_drafts
owner: content_production
examples:
- draft_id
- signal_id
- platform
- post_text
- hook
- cta
- status
- radar_score
- signal_topic
- signal_cat
- ai_model
- cost_cents
- created_at
- reviewed_at
- published_at
known_writers:
- social-media-agent/app.py
- social-media-agent/content_queue_patch.py
- social-media-radar/dedup_checker.py
- social-media-radar/sma_content_worker.py
status: FIELD_AUDIT_REQUIRED
rules:
dual_writes: FORBIDDEN
generic_dict_signal_updates: FORBIDDEN_AT_TARGET_BOUNDARY
disposable_db_tests: REQUIRED