Υπολογισμός ελέγχου (κοόρτες, άξονες και ντετερμινιστικά diffs)
Η καρτέλα Ανασκόπηση ενός PR είναι η ζωντανή πρόοδος του pipeline ελέγχου όσο αυτό εργάζεται και, μετά, το τεχνούργημα που δημοσίευσε, μαζί με τις ενέργειες που φέρει. Μία καρτέλα με δύο καταστάσεις, γιατί είναι το ίδιο πράγμα σε δύο χρονικές στιγμές. Δεν είναι προεπιλεγμένη καρτέλα: ένα PR δεν έχει ανασκόπηση μέχρι κάποιος να τη ζητήσει, οπότε η Ερώτηση AI είναι αυτό που την ανοίγει.
Πίσω από αυτή την καρτέλα, το cc_server χτίζει κοόρτες αρχείων, εκτελεί τους
ντετερμινιστικούς άξονες και τους σερβίρει μέσω των λειτουργιών RPC
review_studio.* (cohorts, blastRadius, cohortImpact, ciSignals,
dependencyDiffs, setContractDecision, approveVisual, compute και τα δίδυμα
watch* τους). Μια αποθηκευμένη διάταξη που εξακολουθεί να ονομάζει
pr.reviewStudio ανοίγει αυτή την ίδια καρτέλα Ανασκόπηση.
Στην καρτέλα Ανασκόπηση:
- Ο πράκτορας ενοποίησης δημοσιεύει ένα συνηθισμένο τεχνούργημα συνομιλίας με
publish_artifact, οπότε η καρτέλα το αποδίδει μέσω του ίδιου προβολέα τεχνουργημάτων που ανοίγει μια φυσαλίδα συνομιλίας — δεν υπάρχει αντίγραφο του συστήματος τεχνουργημάτων ειδικά για ανασκοπήσεις. - Τα ευρήματα βρίσκονται σε μια πλαϊνή στήλη δίπλα του, και η ετυμηγορία κάθεται σε μια λεπτή μπάρα πάνω από το τεχνούργημα αντί σε κεφαλίδα ταμπλό.
- Ένα πανό παρωχημένης ανασκόπησης εμφανίζεται όταν το head του PR έχει προχωρήσει πέρα από την ανασκόπηση.
Δείτε Χρήση ελέγχου με AI για τη ροή και Έλεγχος και συγχώνευση PR για το πώς να ενεργήσετε με βάση αυτήν.
Κοόρτες
Ενότητα με τίτλο «Κοόρτες»Οι κοόρτες ομαδοποιούν τα αλλαγμένα αρχεία του PR σε κάδους που προκύπτουν από το περιεχόμενο: αρχεία που ανήκουν μαζί κατά τη σημασία τους, καταταγμένα κατά επίπτωση ώστε η πιο ριψοκίνδυνη ομάδα να διαβάζεται πρώτη. Υπολογίζονται ξανά σε κάθε αλλαγή του head SHA και αντικαθίστανται ολόκληρες· κάθε κοόρτα έχει ένα κλειδί σταθερό μεταξύ των push, οπότε μια σύνοψη και η πρόοδος του ελέγχου επιβιώνουν από ένα rebase.
Αν το αποθετήριο δεν έχει ευρετήριο κώδικα, οι κοόρτες καταφεύγουν σε ομαδοποίηση
κατά διαδρομή. Για να ευρετηριάσετε ένα αποθετήριο, χρησιμοποιήστε Ρυθμίσεις →
Χώρος εργασίας → Αποθετήρια — κάθε γραμμή αποθετηρίου φέρει μια ενέργεια
Ευρετηρίαση κώδικα που εκτελεί το pipeline index_code και αναφέρει την
πρόοδο επί τόπου.
Το γράφημα κώδικα αναλύει μόνο γλώσσες με ενσωματωμένη γραμματική (Dart, JS/TS, PHP, Python, Rust, Zig, C/C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada). Ένα αποθετήριο σε οποιαδήποτε άλλη γλώσσα δεν μπορεί ποτέ να παράξει σημασιολογικές κοόρτες, όσο συχνά κι αν το ευρετηριάσετε.
Ένας πράκτορας μπορεί να καταγράψει μια σύνοψη markdown για μια κοόρτα με το
set_cohort_summary και να επισυνάψει ένα δομημένο διάγραμμα περιήγησης με το
add_review_diagram — ένα τυποποιημένο αντικείμενο ακολουθίας, συσχέτισης
οντοτήτων ή μηχανής καταστάσεων, ποτέ κείμενο mermaid. Κάθε ακμή διασταυρώνεται με
το πραγματικό γράφημα κώδικα, και μια ακμή που το γράφημα δεν μπορεί να
επιβεβαιώσει σημειώνεται ως ανεπιβεβαίωτη αντί να σχεδιαστεί ως γεγονός.
Ο άξονας του συμβολαίου API
Ενότητα με τίτλο «Ο άξονας του συμβολαίου API»Ο άξονας συμβολαίου συγκρίνει με diff μόνο ρητά αρχεία προδιαγραφών.
Αντιστοιχίζει τα έξι προεπιλεγμένα ονόματα — openapi.yaml, openapi.yml,
openapi.json, swagger.yaml, swagger.yml, swagger.json — καθώς και κάθε
αλλαγμένο αρχείο του οποίου το όνομα περιέχει openapi ή swagger και τελειώνει
σε .yaml, .yml ή .json. Ένα συμβόλαιο που συνάγεται από κώδικα handler είναι
εκτός πεδίου, και τα σχήματα GraphQL δεν συγκρίνονται με diff.
Κάθε αλλαγή ταξινομείται — προσθήκες, αφαιρέσεις και τροποποιήσεις endpoint, παραμέτρου, σχήματος και απόκρισης — και φέρει μια σοβαρότητα: breaking (αφαιρεμένο endpoint ή παράμετρος, αυστηρότερος τύπος, νέα υποχρεωτική παράμετρος), μη breaking (προσθετική) ή ενημερωτική. Μια απορριφθείσα αλλαγή αποτυγχάνει την πύλη συμβολαίου, όπως και μια αλλαγή breaking που μένει χωρίς απόφαση· μια breaking αλλαγή που εγκρίθηκε προειδοποιεί· αν δεν υπάρχουν breaking αλλαγές, περνά. Ένα diff με σήμανση derived (advisory) δεν λειτουργεί ποτέ ως πύλη.
Η έγκριση ή η απόρριψη μιας αλλαγής γίνεται με το review_studio.setContractDecision.
Ο οπτικός άξονας
Ενότητα με τίτλο «Ο οπτικός άξονας»Αν το PR αλλάζει στοιχεία UI σε ένα αποθετήριο Flutter με εφαρμογή Widgetbook, το
πέρασμα υπολογισμού αποδίδει τα αλλαγμένα στοιχεία πριν και μετά μέσω ενός headless
περάσματος golden με flutter test στα worktree base και head του PR και μετά
συγκρίνει τα pixel.
Τα στιγμιότυπα με σήμανση changed ή removed κρατούν την οπτική πύλη μέχρι να εγκριθούν· τα στιγμιότυπα unchanged, added και approved την αίρουν. Η μη διαθεσιμότητα έχει μία από τέσσερις αιτίες: «no Flutter SDK on host», «no Widgetbook app in repo», «no golden-testable use-cases» ή «golden harness error».
Η έγκριση μιας σκόπιμης αλλαγής γίνεται με το review_studio.approveVisual.
Οι άξονες και η ετυμηγορία
Ενότητα με τίτλο «Οι άξονες και η ετυμηγορία»| Άξονας | Καθοδηγείται από |
|---|---|
| Ορθότητα | Πράκτορες ελέγχου (token) |
| Ασφάλεια | Πράκτορες ελέγχου (token) |
| Χάσμα δοκιμών | Πράκτορες ελέγχου (token) |
| Οπτικός | Ντετερμινιστικός (golden harness) |
| Συμβόλαιο API | Ντετερμινιστικός (diff προδιαγραφών) |
Οι τρεις άξονες token καταγράφονται όταν ένας επικεφαλής πράκτορας καλεί το
finalize_review· τους δύο ντετερμινιστικούς άξονες τους καταγράφει το πέρασμα
υπολογισμού.
Κάθε άξονας αναφέρει μία από τις εξής καταστάσεις:
| Κατάσταση | Σημασία |
|---|---|
| Pass | Εκτελέστηκε, δεν βρέθηκε κάτι που να εμποδίζει |
| Warn | Εκτελέστηκε, μη εμποδιστικές επιφυλάξεις |
| Fail | Εκτελέστηκε, βρέθηκε εμποδιστικό πρόβλημα |
| Partial | Εκτελέστηκε αλλά δεν ολοκληρώθηκε· τα αποτελέσματα είναι ελλιπή |
| Unavailable | Δεν μπόρεσε να εκτελεστεί καθόλου |
Μόνο τα pass και warn αίρουν έναν άξονα με πύλη. Τα partial και unavailable διαφέρουν σκόπιμα από το fail και κανένα από τα δύο δεν αίρει πύλη.
Οι άξονες ενσωματώνονται στην ετυμηγορία Ship, Hold ή Block και μπορούν μόνο να την κάνουν πιο αυστηρή — δεν υποβιβάζεται ποτέ. Ένας άξονας με πύλη που αποτυγχάνει επιβάλλει Block· ένας που είναι partial ή unavailable επιβάλλει τουλάχιστον Hold. Έτσι, ένας εμποδιστικός άξονας που δεν μπόρεσε να εκτελεστεί κρατά την ετυμηγορία: η απουσία τεκμηρίων δεν κάνει ποτέ πράσινη μια πύλη.
Η ετυμηγορία στην καρτέλα Ανασκόπηση είναι αυτή που ανάρτησε το
finalize_review.