> Η μετάφραση παρέχεται για διευκόλυνση. Κανονιστικό είναι το αγγλικό πρωτότυπο. # Κυριαρχία δεδομένων **Προδιαγραφή του Μετα-Σύμπαντος** **Αναγνωριστικό εγγράφου:** MU-V2-ARCH-018 **Τίτλος:** Πρότυπο αρχιτεκτονικής μετα-μοντέλων - κυριαρχία δεδομένων και συστήματα καταγραφής **Κατηγορία εγγράφου:** κανονιστικό **Έκδοση:** 2.0 (προσχέδιο) **Κατάσταση:** προσχέδιο εργασίας **Κανονιστικές αναφορές:** MMAS-Core, MMAS-Package, Model-Traversal-and-Layout, Traceability **Πληροφοριακές αναφορές:** Synchronization, Extension-Model, Provenance-Graph, AI-Agent-Guide **Πνευματικά δικαιώματα:** © Orkestron.AI **Άδεια:** Apache-2.0 --- # 1. Σκοπός Ένα Μετα-Μοντέλο σπάνια ζει μόνο του. Η ίδια γνώση συχνά υπάρχει και σε ένα wiki (Confluence), σε έναν ιχνηλάτη (Jira, ClickUp), σε ένα CRM, σε μια βάση δεδομένων ή σε ένα αποθετήριο εγγράφων, και τα αντίγραφα αυτά τα επεξεργάζονται άνθρωποι που δεν ανοίγουν ποτέ το μοντέλο. Το έγγραφο αυτό απαντά στο ένα ερώτημα που κρίνει αν η συνύπαρξη αυτή θα είναι τάξη ή χάος: **για κάθε σύνολο δεδομένων, ποιος είναι ο κύριος - το Μετα-Μοντέλο ή το εξωτερικό σύστημα;** Ορίζει: - το **σύστημα καταγραφής (SoR)**: το μοναδικό μέρος όπου συντάσσεται η αλήθεια ενός συνόλου δεδομένων, - τα τρία νόμιμα **σχήματα κυριαρχίας** (κυριαρχία μοντέλου, εξωτερική κυριαρχία, κατατμημένο), - το **Μητρώο κυριαρχίας** (`sources.yaml`): τη μηχανικά αναγνώσιμη δήλωση όλων των παραπάνω, - τους κανόνες ροής, φρεσκάδας, σύγκρουσης και εγγραφής που απορρέουν από κάθε σχήμα. Χωρίς τη δήλωση αυτή, ο αναγνώστης δεν μπορεί να ξέρει αν ένα δεδομένο που βρήκε στο μοντέλο είναι έγκυρο ή πιθανώς μπαγιάτικο κάτοπτρο, και ο πράκτορας δεν μπορεί να ξέρει πού πρέπει να γραφτεί μια διόρθωση. Με αυτήν, και τα δύο ερωτήματα έχουν μηχανική απάντηση. --- # 2. Πεδίο εφαρμογής Η προδιαγραφή αυτή διέπει τη σχέση ενός Μετα-Μοντέλου με **λειτουργικά συστήματα εντός του ίδιου πεδίου διακυβέρνησης**: wikis, ιχνηλάτες, βάσεις δεδομένων, αποθετήρια αρχείων, επιχειρησιακές εφαρμογές. Δεν διέπει: - **την ομοσπονδία ανάμεσα σε κυρίαρχα σύμπαντα** - αυτό είναι το [Synchronization](../03-federation/Synchronization.md) και το MUFP (κάθε μέρος έχει τα δικά του SoR· η ομοσπονδία δεν μεταβιβάζει ποτέ κυριαρχία), - **τα εισαγόμενα εξωτερικά πρότυπα** (Schema.org, FHIR, λεξιλόγια ISO) - αυτά κυριαρχούνται πάντοτε εξωτερικά από τους φορείς τους και αντιμετωπίζονται στο [Extension-Model](Extension-Model.md). --- # 3. Αρχές σχεδίασης - **Ένας κύριος ανά σύνολο δεδομένων.** Κάθε σύνολο δεδομένων έχει ακριβώς ένα σύστημα καταγραφής. Το «και τα δύο μέρη είναι κάπως έγκυρα» δεν συμμορφώνεται εξ ορισμού. - **Η κυριαρχία δηλώνεται, δεν συνάγεται.** Κανείς αναγνώστης δεν θα έπρεπε να συμπεραίνει το κύρος από ονόματα φακέλων, συνήθειες ή προφορική παράδοση της ομάδας. - **Η ροή ακολουθεί την κυριαρχία.** Τα δεδομένα κινούνται *από* τον κύριο *προς* τα αντίγραφά του· ένα αντίγραφο δεν γράφεται ποτέ παρά μόνο από αυτή τη ροή. - **Τα αντίγραφα είναι αναλώσιμα.** Κάθε μη κύριο αντίγραφο μπορεί να διαγραφεί και να ξαναχτιστεί από τον κύριο χωρίς απώλεια. - **Η προέλευση είναι υποχρεωτική.** Κάθε κατοπτρισμένο δεδομένο γνωρίζει από πού ήρθε και πότε. --- # 4. Ορισμοί - **Σύνολο δεδομένων** - συνεκτικό σώμα δεδομένων που διέπεται ως μία μονάδα (ένα σύνολο Αντικειμένων, ένα δέντρο σελίδων, ένας πίνακας, ένα μητρώο). Την κοκκομέτρηση επιλέγει ο ιδιοκτήτης του μοντέλου· η κυριαρχία δηλώνεται ανά σύνολο δεδομένων. - **Σύστημα καταγραφής (SoR)** - το σύστημα στο οποίο *συντάσσεται* ένα σύνολο δεδομένων και του οποίου η κατάσταση υπερισχύει σε κάθε σύγκρουση. - **Κάτοπτρο** - αντίγραφο εξωτερικά κυριαρχούμενου συνόλου δεδομένων που κρατείται μέσα στο μοντέλο και παράγεται με συλλογή. - **Συλλογή** - ο αγωγός που καταγράφει ένα εξωτερικό σύνολο δεδομένων μέσα στο μοντέλο (ακατέργαστη λήψη συν σημασιολογικός μετασχηματισμός). - **Προβολή επανεγγραφής** - αντίγραφο συνόλου δεδομένων με κυριαρχία μοντέλου, δημοσιευμένο σε εξωτερικό σύστημα για ευκολία ανάγνωσης, αποθήκευσης ή επεξεργασίας. --- # 5. Τα τρία σχήματα κυριαρχίας ## 5.1 Σχήμα M: κυριαρχία μοντέλου Το σύνολο δεδομένων **γεννιέται στο Μετα-Μοντέλο**. Τα δεδομένα συντάσσονται απευθείας στο μοντέλο (επεξεργάζονται, ελέγχονται, εκδίδονται σαν κώδικας). Τα εξωτερικά συστήματα λαμβάνουν **προβολές επανεγγραφής**: αποδοσμένες σελίδες, εξαγόμενους πίνακες, συγχρονισμένες εγγραφές, δημοσιευμένες για ανθρώπους και εργαλεία που προτιμούν να διαβάζουν εκεί. Κανόνες: - Η ροή είναι **μοντέλο → εξωτερικό**, πάντοτε. - Κάθε προβαλλόμενο αντίγραφο ΟΦΕΙΛΕΙ να σημαίνεται ως παραγόμενο: δηλώνει τον κύριό του, τον χρόνο παραγωγής και ειδοποίηση «μην επεξεργάζεστε εδώ» σε όποια μορφή υποστηρίζει το σύστημα προορισμού (πλαίσιο σελίδας, πεδίο εγγραφής, κεφαλίδα αρχείου). - Οι επεξεργασίες που γίνονται στο εξωτερικό αντίγραφο **δεν έχουν κύρος**. Μια υλοποίηση ΟΦΕΙΛΕΙ είτε να κλειδώνει το εξωτερικό αντίγραφο, είτε να το επικαλύπτει στην επόμενη δημοσίευση, είτε να καταγράφει τέτοιες επεξεργασίες ως *προτάσεις αλλαγής* που δρομολογούνται στην κανονική διαδικασία αλλαγών του μοντέλου· ΔΕΝ ΠΡΕΠΕΙ να τις συγχωνεύει σιωπηλά. - Σε κάθε σύγκρουση, **νικά το μοντέλο**. *Παράδειγμα: ένα μητρώο αρχιτεκτονικών αποφάσεων που συντάσσεται στο μοντέλο· το Confluence φέρει μια παραγόμενη, μόνο για ανάγνωση απόδοσή του, επειδή ο ευρύτερος οργανισμός ζει στο Confluence.* ## 5.2 Σχήμα E: εξωτερική κυριαρχία Το σύνολο δεδομένων **ζει και αλλάζει σε εξωτερικό σύστημα** (ένας χώρος Confluence που οι ομάδες ενημερώνουν καθημερινά, ένας ιχνηλάτης, μια βάση παραγωγής). Το μοντέλο κρατά ένα **κάτοπτρο**: συλλεγμένο, σημασιολογικά δομημένο αντίγραφο που του επιτρέπει να συνδέει, να ταξινομεί και να συλλογίζεται πάνω στα δεδομένα. Κανόνες: - Η ροή είναι **εξωτερικό → μοντέλο**, πάντοτε. - Η συλλογή ΟΦΕΙΛΕΙ να αποθέτει την ανέπαφη λήψη στο `raw/<σύστημα>/<σύνολο-δεδομένων>/` με το παράπλευρο αρχείο προέλευσής της, κατά το [Model-Traversal-and-Layout](Model-Traversal-and-Layout.md) §6· ο σημασιολογικός μετασχηματισμός γεμίζει στη συνέχεια το κάτοπτρο στα στρώματα του μοντέλου. - Το κατοπτρισμένο περιεχόμενο είναι **μόνο για ανάγνωση μέσα στο μοντέλο**. Μια διόρθωση γίνεται στο εξωτερικό σύστημα και ακολουθεί νέα συλλογή· το μοντέλο μπορεί επιπλέον να καταγράψει σχολιασμένη απόκλιση («η πηγή λέει X, εμείς εκτιμούμε Y») ως δική του διατύπωση με κυριαρχία μοντέλου, σαφώς διαχωρισμένη από το κατοπτρισμένο δεδομένο. - Κάθε κατοπτρισμένο σύνολο δεδομένων ΟΦΕΙΛΕΙ να φέρει **μεταδεδομένα φρεσκάδας**: χρόνο τελευταίας επιτυχούς συλλογής, δηλωμένη συχνότητα και όριο παλαίωσης μετά το οποίο οι καταναλωτές ΟΦΕΙΛΟΥΝ να προειδοποιούνται. - Σε κάθε σύγκρουση, **νικά το εξωτερικό σύστημα**· το κάτοπτρο διορθώνεται με νέα συλλογή, ποτέ το αντίστροφο. *Παράδειγμα: πράκτορες τεχνητής νοημοσύνης συλλέγουν συνεχώς έναν ζωντανό χώρο Confluence μέσα στο μοντέλο· το μοντέλο προσθέτει δομή, συνδέσμους και ταξινόμηση, αλλά οι ίδιες οι σελίδες συντάσσονται στο Confluence.* ## 5.3 Σχήμα H: κατατμημένο Η περιοχή γνώσης είναι μοιρασμένη: κάποια σύνολα δεδομένων (ή πεδία) κυριαρχούνται από το μοντέλο, άλλα εξωτερικά. Είναι η συνηθισμένη περίπτωση στην πράξη και είναι νόμιμη **μόνο όταν η κατάτμηση είναι ρητή**: - Κάθε τμήμα ΟΦΕΙΛΕΙ να δηλώνεται ως δικό του σύνολο δεδομένων με έναν μόνο κύριο (σχήμα M ή E). - Το ίδιο πεδίο ΔΕΝ ΠΡΕΠΕΙ να είναι εγγράψιμο και από τις δύο πλευρές. Η αμφίδρομη κυριαρχία ενός δεδομένου δεν συμμορφώνεται· αν όντως χρειάζεται, χωρίστε το δεδομένο (για παράδειγμα: το εξωτερικό σύστημα κυριαρχεί στο `status`, το μοντέλο στο `assessment`). - Οι αναφορές ανάμεσα στα τμήματα επιτρέπονται και ενθαρρύνονται· είναι αναφορές, όχι αντίγραφα. --- # 6. Το Μητρώο κυριαρχίας (`sources.yaml`) Κάθε συμμορφούμενο αποθετήριο ΟΦΕΙΛΕΙ να περιέχει στη ρίζα του Μητρώο κυριαρχίας, που να καλύπτει **κάθε σύνολο δεδομένων που το μοντέλο κρατά ή κατοπτρίζει**. Σύνολο δεδομένων που απουσιάζει από το μητρώο θεωρείται ότι κυριαρχείται από το μοντέλο και συντάσσεται εξ ολοκλήρου επιτόπου· οποιαδήποτε εμπλοκή εξωτερικού συστήματος χωρίς εγγραφή στο μητρώο δεν συμμορφώνεται. Κάθε εγγραφή ΟΦΕΙΛΕΙ να δηλώνει: | Πεδίο | Σημασία | |-------|---------| | `id` | Σταθερό αναγνωριστικό συνόλου δεδομένων | | `description` | Τι είναι αυτά τα δεδομένα, σε μία γραμμή | | `master` | `model` ή `external` | | `system` | Επί εξωτερικής εμπλοκής: όνομα συστήματος, URL, εύρος (χώρος, έργο, πίνακας) | | `model_location` | Πού βρίσκεται το σύνολο δεδομένων (ή το κάτοπτρό του) στο αποθετήριο | | `flow` | `model->external`, `external->model` ή `none` | | `pipeline` | Ο συλλέκτης ή ο δημοσιευτής (εργαλείο, σενάριο, πράκτορας) που μετακινεί τα δεδομένα | | `cadence` | Πόσο συχνά εκτελείται η ροή· για κάτοπτρα, επίσης `staleness_limit` | | `conflict_rule` | Επαναδιατύπωση του ποιος νικά, συν επαφή κλιμάκωσης (`steward`) | | `status` | Κύκλος ζωής της ροής: `active` (προεπιλογή), `declared`, `suspended`, `retired` | **Δηλωμένες εγγραφές.** Τα πραγματικά μοντέλα περνούν από μια μεταβατική κατάσταση για την οποία το μητρώο πρέπει να μπορεί να λέει την αλήθεια: η κυριαρχία έχει αποφασιστεί αλλά η ροή δεν έχει ακόμη χτιστεί - υπάρχει θέση κατόπτρου που δεν έχει ποτέ συλλεχθεί, ή έχει συμφωνηθεί επανεγγραφή που κανένας αγωγός δεν δημοσιεύει. Τέτοιες εγγραφές ΟΦΕΙΛΟΥΝ να φέρουν `status: declared`. Μια δηλωμένη εγγραφή είναι νόμιμη, αλλά είναι **ανοιχτό χρέος, όχι λειτουργία**: δηλωμένο κάτοπτρο ΔΕΝ ΠΡΕΠΕΙ να παρουσιάζεται ως φρέσκο (δεν έχει καν χρόνο συλλογής) και δηλωμένη επανεγγραφή δεν δίνει καμία προστασία από απόκλιση. Η απόκρυψη της μεταβατικής κατάστασης με παράλειψη της εγγραφής ή με σήμανσή της ως `active` δεν συμμορφώνεται· το μητρώο υπάρχει ακριβώς για να καθιστά ορατή αυτή την κατάσταση. Ενδεικτικό μητρώο και με τις δύο κατευθύνσεις Confluence: ```yaml datasets: - id: adr-register description: Architecture decision records master: model system: { name: Confluence, url: https://wiki.example.com, scope: SPACE/Architecture } model_location: bundles/architecture/decisions/ flow: model->external pipeline: tools/publish-adr-to-confluence cadence: on-change conflict_rule: model wins; external edits become change proposals steward: architecture-owner - id: ops-runbooks description: Operational runbooks maintained by the ops team in Confluence master: external system: { name: Confluence, url: https://wiki.example.com, scope: SPACE/Ops } model_location: bundles/operations/runbooks-mirror/ flow: external->model pipeline: tools/harvest-ops-runbooks cadence: daily staleness_limit: 7d conflict_rule: Confluence wins; fix at source and re-harvest steward: ops-lead ``` Αυτό είναι ακριβώς το τεχνούργημα που απαντά μηχανικά, για κάθε σύνολο δεδομένων, στο «υπάρχει Confluence - τι περιέχει και ποιος είναι πιο έγκυρος, το μετα-μοντέλο ή το Confluence;». --- # 7. Σύγκρουση και απόκλιση - **Εντοπισμός.** Οι υλοποιήσεις ΟΦΕΙΛΟΥΝ να εντοπίζουν απόκλιση ανάμεσα σε κύριο και αντίγραφο (σύγκριση περιεχομένου, αποτυπώματα, χρονοσημάνσεις) τουλάχιστον σε κάθε εκτέλεση της ροής. - **Επίλυση.** Η απόκλιση επιλύεται **μόνο** προς την κατεύθυνση που δηλώνει το `conflict_rule`· η κατά περίπτωση επίλυση «κατά κρίση» δεν συμμορφώνεται. - **Κλιμάκωση.** Απόκλιση που δεν μπορεί να επιλυθεί μηχανικά (η ίδια η κατάτμηση είναι λανθασμένη, ο κύριος αμφισβητείται) πηγαίνει στον επιμελητή του συνόλου δεδομένων και, αν αλλάξει η κυριαρχία, παράγει νέα έκδοση της εγγραφής μητρώου - οι αλλαγές κυριαρχίας είναι εκδεδομένα γεγονότα, ποτέ σιωπηλές επεξεργασίες. --- # 8. Φρεσκάδα και εμπιστοσύνη Ο καταναλωτής ενός κατοπτρισμένου συνόλου δεδομένων ΟΦΕΙΛΕΙ να μπορεί να δει, χωρίς να φύγει από το μοντέλο: το σύστημα-κύριο, τον χρόνο τελευταίας συλλογής και αν έχει ξεπεραστεί το όριο παλαίωσης. Τα μπαγιάτικα κάτοπτρα ΟΦΕΙΛΟΥΝ να επισημαίνονται, όχι να κρύβονται. Μια διατύπωση που προέρχεται από μπαγιάτικο κάτοπτρο φέρει την παλαίωση αυτή στην προέλευσή της· οι επόμενες αποφάσεις εμπιστοσύνης (βλ. Trust-Model) ΜΠΟΡΟΥΝ να τη σταθμίζουν ανάλογα. --- # 9. Κανόνες για πράκτορες τεχνητής νοημοσύνης Ένας πράκτορας που εργάζεται με συμμορφούμενο μοντέλο: - **Πριν στηριχθεί σε ένα σύνολο δεδομένων**: ΟΦΕΙΛΕΙ να συμβουλευτεί το μητρώο· για κάτοπτρα, ΟΦΕΙΛΕΙ να ελέγξει τη φρεσκάδα και να προτιμήσει νέα συλλογή αντί για εικασία όταν είναι μπαγιάτικα. - **Πριν γράψει**: ΟΦΕΙΛΕΙ να γράφει μόνο στον κύριο του συνόλου δεδομένων. Η διόρθωση ενός εξωτερικά κυριαρχούμενου δεδομένου πηγαίνει στο εξωτερικό σύστημα (ή σε άνθρωπο με πρόσβαση)· η διόρθωση δεδομένου με κυριαρχία μοντέλου πηγαίνει στο μοντέλο. Η εγγραφή σε αντίγραφο δεν συμμορφώνεται, όσο βολική κι αν είναι. - **Όταν παραπέμπει**: ΟΦΕΙΛΕΙ να αναφέρει τον κύριο («κατά τον χώρο Ops του Confluence, όπως συλλέχθηκε 2026-07-30») αντί να παρουσιάζει ένα κάτοπτρο ως αφετηρία. Οι κανόνες αυτοί είναι που επιτρέπουν σε μεικτές ομάδες ανθρώπων και πρακτόρων να δουλεύουν πάνω στην ίδια γνώση χωρίς να τη διαφθείρουν από καμία πλευρά. --- # 10. Σχέση με άλλα πρότυπα - Το **[Model-Traversal-and-Layout](Model-Traversal-and-Layout.md)** δίνει στα κάτοπτρα και στις προβολές τις φυσικές τους θέσεις (`raw/`, κάτοπτρα στα στρώματα, `artifacts/`) και τις προελεύσεις τους (συλλεγμένο / παραγόμενο)· το παρόν έγγραφο τους δίνει κύρος. - Το **[Synchronization](../03-federation/Synchronization.md)** διέπει μέρη *πέρα από* τα όρια κυριαρχίας· το παρόν έγγραφο διέπει εργαλεία *εντός* ενός. Η ομοσπονδία δεν μετακινεί ποτέ κυριαρχία· ένα σύμπαν εκθέτει μόνο ό,τι κυριαρχεί ή σημαίνει καθαρά ως κατοπτρισμένο. - Το **[Extension-Model](Extension-Model.md)**: τα εισαγόμενα πρότυπα είναι σταθερή ειδική περίπτωση του σχήματος E (κύριος: ο φορέας προτύπων· ροή: εκδεδομένες κυκλοφορίες προς τα μέσα). - Τα **[Traceability](Traceability.md) / [Provenance-Graph](Provenance-Graph.md)**: οι εκτελέσεις συλλογής και δημοσίευσης είναι γεγονότα προέλευσης· το μητρώο λέει την πολιτική, ο γράφος προέλευσης λέει τι πράγματι συνέβη. --- # 11. Επικύρωση Η δομική επικύρωση (V1) ΟΦΕΙΛΕΙ να ελέγχει: ότι το μητρώο υπάρχει, αναλύεται και ότι κάθε δηλωμένο `model_location` υπάρχει. Η σημασιολογική επικύρωση (V2) ΟΦΕΙΛΕΙ να ελέγχει: ότι κάθε κάτοπτρο έχει μεταδεδομένα προέλευσης και φρεσκάδας· ότι κανένα αρχείο δεν είναι εγγράψιμο υπό δύο εγγραφές· ότι οι ροές ταιριάζουν με τους κυρίους (το `master: external` δεν έχει ποτέ `flow: model->external`)· και ότι κάθε εγγραφή με `status: declared` αναφέρεται ως ανοιχτό χρέος. Η επικύρωση χρόνου εκτέλεσης (V5) ΜΠΟΡΕΙ να ελέγχει τα όρια παλαίωσης έναντι του πραγματικού ιστορικού συλλογής και ΟΦΕΙΛΕΙ να υποβιβάζει σε `declared` εγγραφή της οποίας η δηλωμένη συχνότητα δεν εκτελέστηκε ποτέ. --- # 12. Αρχιτεκτονικά αναλλοίωτα Η κυριαρχία ΟΦΕΙΛΕΙ να διατηρεί: - ένα και μόνο σύστημα καταγραφής ανά σύνολο δεδομένων ανά πάσα στιγμή, - δηλωμένες, εκδεδομένες μεταβάσεις κυριαρχίας, - την προέλευση και τη φρεσκάδα κάθε κατόπτρου, - την αναλωσιμότητα κάθε μη κύριου αντιγράφου, - τη συνταγματική συμμόρφωση. Η κυριαρχία ΔΕΝ ΠΡΕΠΕΙ ΠΟΤΕ να υπονοείται μόνο από τη φυσική θέση: η θέση δίνει προεπιλεγμένη ανάγνωση, το μητρώο δίνει τον νόμο. --- # 13. Μελλοντικές κατευθύνσεις Δύο φυσικές επεκτάσεις: μορφή **προφίλ συνδέτη** που να περιγράφει αγωγούς συλλογής και δημοσίευσης για συνήθη συστήματα (Confluence, Jira, Notion, σχεσιακά αποθετήρια), ώστε τα μητρώα να παραπέμπουν σε τυποποιημένους συνδέτες αντί για ευκαιριακά σενάρια· και η ανάδειξη των εγγραφών μητρώου στο **Σημασιολογικό πακέτο διανομής**, ώστε ο καταναλωτής ενός συσκευασμένου μοντέλου να βλέπει αμέσως ποια μέρη είναι γραμμένη γνώση και ποια κάτοπτρα του wiki κάποιου άλλου. --- # Τελική δήλωση Κάθε σύνολο δεδομένων έχει ακριβώς ένα σπίτι για την αλήθεια του. Το Μητρώο κυριαρχίας κάνει το σπίτι αυτό ρητό, οι κανόνες ροής κρατούν τα αντίγραφα ειλικρινή και οι κανόνες φρεσκάδας κρατούν τους αναγνώστες ειλικρινείς ως προς τα αντίγραφα. Ένα μοντέλο που δηλώνει τους κυρίους του μπορεί να συνυπάρχει με ασφάλεια με wikis, ιχνηλάτες και βάσεις δεδομένων· ένα μοντέλο που δεν το κάνει απέχει μία επεξεργασία από το να έχει δύο αλήθειες.