# Κυριότητα δεδομένων *Κατασκευή μετα-μοντέλου · ενότητα 4 από 6 · ~15 λεπτά* ## Τι θα μάθετε Το ερώτημα που κρίνει αν το μοντέλο σας και το wiki σας θα συνυπάρξουν με τάξη ή με χάος: για κάθε σύνολο δεδομένων, ποιος είναι ο κύριος; (ARCH-018.) ## Η αρρώστια των δύο αληθειών Το μοντέλο σας περιγράφει το προϊόν. Όμως τα runbooks ζουν στο Confluence, οι εργασίες ζούσαν σε ένα εργαλείο, ο κώδικας ζει στο GitLab, και άνθρωποι τα επεξεργάζονται όλα καθημερινά. Τη στιγμή που το ίδιο γεγονός υπάρχει σε δύο επεξεργάσιμα σημεία, έχετε δύο αλήθειες, και κάθε αναγνώστης διαλέγει σιωπηλά μία. Η θεραπεία δεν είναι η συγκέντρωση (δεν πρόκειται να μετακομίσετε τις λειτουργίες από το wiki τους)· είναι η **δηλωμένη κυριότητα**: κάθε σύνολο δεδομένων έχει ακριβώς ένα Σύστημα Εγγραφής, μηχαναγνώσιμα. ## Τα τρία νόμιμα μοτίβα **Κύριος το μοντέλο (εγγραφή προς τα πίσω).** Το σύνολο δεδομένων γεννιέται στο μοντέλο· τα εξωτερικά συστήματα λαμβάνουν παραγόμενες, σαφώς σημασμένες προβολές μόνο για ανάγνωση "για ευκολία ανάγνωσης". Ροή: μοντέλο → εξωτερικό. Σύγκρουση: κερδίζει το μοντέλο· οι εξωτερικές επεξεργασίες είναι άκυρες ή γίνονται προτάσεις αλλαγής. *Ζωντανό παράδειγμα: το μοντέλο της Orkestron.AI είναι κύριος των στοιχείων του προϊόντος της· ο δημόσιος ιστότοπος σερβίρει ένα παραγόμενο `product-facts.json` με σήμανση "μην επεξεργάζεστε εδώ" και hash περιεχομένου για ανίχνευση απόκλισης.* **Κύριος εξωτερικός (κάτοπτρο).** Το σύνολο δεδομένων ζει και αλλάζει σε εξωτερικό σύστημα· το μοντέλο κρατά ένα συλλεγμένο κάτοπτρο ώστε να μπορεί να συνδέει, να ταξινομεί και να συλλογίζεται. Ροή: εξωτερικό → μοντέλο, μέσω αγωγού που προσγειώνει ακατέργαστες αποτυπώσεις (με προέλευση) και τις μετασχηματίζει. Τα κάτοπτρα είναι μόνο για ανάγνωση μέσα στο μοντέλο και φέρουν **μεταδεδομένα φρεσκάδας**: τελευταία συλλογή, ρυθμός, όριο παλαίωσης. Σύγκρουση: κερδίζει το εξωτερικό σύστημα· ξανασυλλέγετε, ποτέ δεν μπαλώνετε το κάτοπτρο. *Ζωντανό παράδειγμα: διαρκώς ενημερωμένοι χώροι wiki, κλώνοι πηγαίου κώδικα με κύριο το GitLab.* **Κατατμημένο.** Η έντιμη μεικτή περίπτωση: κάποια σύνολα με κύριο το μοντέλο, κάποια εξωτερικά, το καθένα δηλωμένο ξεχωριστά. Ένας σιδερένιος κανόνας: το ίδιο πεδίο δεν είναι ποτέ εγγράψιμο και από τις δύο πλευρές. Αν πράγματι χρειάζεστε και τα δύο, χωρίστε το δεδομένο (το εξωτερικό σύστημα είναι κύριος του `status`, το μοντέλο του `assessment`). ## Το μητρώο: sources.yaml Ένα αρχείο στη ρίζα του αποθετηρίου δηλώνει κάθε σύνολο δεδομένων: κύριο, εξωτερικό σύστημα και εύρος, θέση στο μοντέλο, κατεύθυνση ροής, αγωγό, ρυθμό, κανόνα σύγκρουσης, υπεύθυνο και μια **κατάσταση**: `active`, `declared` (η κυριότητα αποφασίστηκε, ο αγωγός δεν χτίστηκε ακόμη: νόμιμο, ορατό χρέος), `suspended` ή `retired`. Αυτό είναι το τεκμήριο που απαντά μηχανικά στο "υπάρχει ένα Confluence: τι έχει μέσα και ποιος είναι πιο έγκυρος;", για κάθε σύνολο δεδομένων, για πάντα. ## Καταστάσεις που συνάντησαν την πραγματικότητα Το λεξιλόγιο των καταστάσεων ήρθε από την παραγωγή μέσα σε λίγες μέρες από τη συγγραφή του: - `declared`: το μοντέλο Orkestron κυκλοφόρησε με το κάτοπτρο του κανόνα δηλωμένο αλλά όχι ακόμη ενσωματωμένο: ορατό χρέος στο μητρώο, που έκλεισε μια συνεδρία αργότερα. Τα μητρώα με μηδέν εγγραφές `declared` κερδίζονται, δεν προϋποτίθενται. - `retired`: η DevTeam.Games κρατά πλήρη εξαγωγή ενός εργαλείου εργασιών του οποίου ο λογαριασμός έκλεισε. Το Σύστημα Εγγραφής δεν υπάρχει πια· το κάτοπτρο είναι ένα παγωμένο αρχείο τεκμηρίων που δεν μπορεί ποτέ να ξανασυλλεχθεί και δεν πρέπει ποτέ να "διορθωθεί". Το μητρώο λέει ακριβώς αυτό. - `suspended` συν κανόνα σύγκρουσης «ποτέ δημοσίευση»: μια ιδιόκτητη βάση κώδικα αναφοράς που χρησιμοποιήθηκε μία φορά για έμπνευση σχεδίασης: παρούσα στον δίσκο, νομικά ανέγγιχτη, και το μητρώο είναι εκεί όπου ζει αυτό το γεγονός αντί για τη μνήμη κάποιου. ## Η απόκλιση, υπό μηχανική επιτήρηση Η δηλωμένη κυριότητα επιτρέπει μηχανική εντιμότητα: το παραπάνω παράδειγμα εγγραφής προς τα πίσω τρέχει καθημερινό έλεγχο που αναπαράγει την προβολή από το μοντέλο, συγκρίνει hash περιεχομένου με το ζωντανό αντίγραφο και ειδοποιεί τον ιδιοκτήτη σε απόκλιση, σε απουσία, ή αν σπάσει ο ίδιος ο έλεγχος. Την απόκλιση την εντοπίζει ένα cron, όχι η αμηχανία σε μια σύσκεψη. ## Βασικά σημεία - Ένας κύριος ανά σύνολο δεδομένων· η ροή ακολουθεί την κυριότητα· τα αντίγραφα είναι αναλώσιμα και σημασμένα. - Τρία μοτίβα: εγγραφή προς τα πίσω, κάτοπτρο, κατατμημένο· το ίδιο πεδίο δεν γράφεται ποτέ δύο φορές. - Το `sources.yaml` και οι καταστάσεις (active/declared/suspended/retired) μετατρέπουν τη φυλετική γνώση περί αρμοδιότητας σε εκδόσιμα δεδομένα. ## Πηγαίνετε βαθύτερα - [Κυριότητα δεδομένων και Συστήματα Εγγραφής (ARCH-018)](/spec/#02-architecture/Data-Mastership.md) - [Συγχρονισμός μεταξύ συμπάντων](/spec/#03-federation/Synchronization.md) (ο αδελφός αυτής της ενότητας σε επίπεδο ομοσπονδίας) Επόμενο: [Επαναχρησιμοποίηση του κόσμου](05-reuse.md)