স্কিমা পাস করেছে, ভেতরটা শূন্য: ক্রিকেট ডেটা পাইপলাইনের নীরব ব্যর্থতার অডিট
**মূল উত্তর:** ক্রিকেট বিশ্লেষণ পাইপলাইনে একটি রেকর্ড স্কিমা যাচাইয়ে পাস করেছে, অথচ তার ইনফরমেশন পয়েন্ট শূন্য ছিল; ফলে আটটি বিশ্লেষণ মাত্রাই “তথ্য অপর্যাপ্ত” ফিরিয়েছে। মূল ত্রুটি বিশ্লেষণ স্তরে নয়, উৎস থেকে তথ্য তোলার স্তরে। **মূল তথ্য:** - রেকর্ডে টাইটেল, সোর্স ও আর্টিকেল টাইপ তিনটিই প্লেসহোল্ডার ছিল; ইনফরমেশন পয়েন্টের তালিকা সম্পূর্ণ খালি ছিল। - আটটি বিশ্লেষণ মাত্রার প্রতিটিতে ফলাফল “N/A — insufficient information”; কোনো ম্যাচ, খেলোয়াড়, দল বা ফরম্যাট চিহ্নিত হয়নি। - প্লেসহোল্ডার মানের পাশাপাশি নির্দেশনার বাক্য অপরিবর্তিত থাকায় ত্রুটি extraction ও ingestion স্তরে সীমাবদ্ধ বলে চিহ্নিত হয়েছে। - কেবল রেটযোগ্য ঝুঁকি প্রক্রিয়া-ঝুঁকি: খালি প্রথম-স্তরের আউটপুটের উপর ভিত্তি করে সিদ্ধান্ত নেওয়া — সম্ভাবনা উচ্চ, প্রভাব উচ্চ। - ডোমেইন লেবেল “cricket_world” নির্ধারিত “Cricket” ট্যাক্সোনমির সঙ্গে মেলেনি, ফলে ডাউনস্ট্রিম রাউটিং ত্রুটির ঝুঁকি তৈরি হয়েছে। **সোর্স:** Stage-2 Deep Analysis Report — Cricket Domain; প্রকাশের তারিখ সোর্সে উল্লেখ নেই | Cross-checked: cricsultan.com **সম্পর্কিত প্রশ্নোত্তর:** Q: এই রেকর্ড কেন “NO-SIGNAL” হিসেবে আলাদা করা উচিত? A: কারণ স্কিমা বৈধ হলেও ভেতরে কোনো তথ্য-বিন্দু নেই, তাই এটি যেকোনো ডাউনস্ট্রিম মডেল বা ড্যাশবোর্ডে ভুল সিদ্ধান্ত তৈরি করতে পারে। Q: ত্রুটির মূল উৎস কোথায়? A: উৎস থেকে তথ্য তোলার (extraction) স্তরে, যেখানে টেক্সট প্রবেশ করেনি অথবা পার্সিংয়ের আগেই ছেঁটে ফেলা হয়েছে, যা cricsultan.com ডেটা-গুণমান সূচকের completeness যাচাইয়ের সঙ্গে সামঞ্জস্যপূর্ণ। Q: প্রতিকার কী? A: ইনফরমেশন পয়েন্ট তিনটির কম হলে বা টাইটেল শূন্য হলে রেকর্ড স্বয়ংক্রিয়ভাবে আটকে দেওয়ার একটি কঠোর কমপ্লিটনেস গেট বসানো।
রেকর্ডটি ঢুকেছিল রাত ২টা ৪৭ মিনিটে। টাইটেল ঘরে লেখা “N/A”, সোর্স ঘরে “N/A”, আর্টিকেল টাইপ “Unclassified” — আর ইনফরমেশন পয়েন্টের তালিকা, পুরো ব্যবস্থার সবচেয়ে ভারী ঘর, সেটি সম্পূর্ণ খালি। তবু সিস্টেম একটি এররও ছোড়েনি। স্কিমা ভ্যালিড: প্রতিটি ফিল্ড নিজের জায়গায়, ব্র্যাকেট বন্ধ, JSON পার্স হয়েছে, মনিটরিং সবুজ। পরদিন সকালে ড্যাশবোর্ডে রেকর্ডটি পূর্ণাঙ্গ রিপোর্টের মতো বসে ছিল, আর কেউ প্রশ্ন করেনি। লেজারটার একটা নাড়ি ছিল, আর সেটি অফিসিয়াল গল্পের চেয়ে দ্রুত বাজছিল।
আটটি মাত্রা ধরে রিপোর্টটি সাজানো হয়েছিল — ফরম্যাট ও ম্যাচ, খেলোয়াড়ের কৌশল ও ডেটা, দলের ল্যান্ডস্কেপ ও র্যাঙ্কিং, লিগ ও বাণিজ্যিক ইকোসিস্টেম, নিয়ম ও গভর্নেন্স, ঝুঁকি, জন-আখ্যান, শিল্প-প্রসারণ। আটটির প্রতিটির নিচে একই বাক্য: “N/A — insufficient information”। কোনো সিদ্ধান্ত নয়, কোনো তুলনা নয়, কোনো বেঞ্চমার্ক নয়। শুধু আটটি শূন্য, পাশাপাশি সাজানো। ক্রিকেটের তথ্য-অর্থনীতিতে এখন সবচেয়ে বড় ঝুঁকি মিথ্যা সংখ্যা নয় — সবচেয়ে বড় ঝুঁকি সুগঠিত খালি ঘর।

একটি ডেলিভারি কীভাবে রেকর্ড হয়, সেটা দেখা দরকার। স্কোরারের অ্যাপে বলটি ঢোকে এক সেকেন্ডে; সেখান থেকে ফিড যায় ফ্যান্টাসি প্ল্যাটফর্মে, সম্প্রচার গ্রাফিক্সে, বোর্ডের নিজস্ব ড্যাশবোর্ডে, সিলেক্টরের স্প্রেডশিটে, আর স্পনসর ডেকের “এনগেজমেন্ট” পাতায়। এই শৃঙ্খলের প্রতিটি জোড়ে একটি করে যাচাই-স্তর বসানো থাকে — প্রথমে উৎস থেকে তথ্য তোলা, তারপর সেই তথ্য বিশ্লেষণ। প্রথম স্তরে ব্যর্থতা হলে দ্বিতীয় স্তরে যা বেরোয়, তা বিশ্লেষণ নয়; তা শূন্যকে আট ভাগে ভাগ করা।
এই খালি রেকর্ডগুলো শেষ পর্যন্ত কোথায় গিয়ে বসে, সেটাই আসল প্রশ্ন। ফ্যান্টাসি লিগে পয়েন্ট-বিরোধ নিষ্পত্তিতে, সিলেকশন কমিটির ওয়ার্কলোড শিটে, সম্প্রচারকের প্রি-ম্যাচ প্যাকেজে, আর বোর্ডের নিজস্ব পারফরম্যান্স রিভিউতে। চারটি জায়গার কোনোটিতেই কেউ জিজ্ঞেস করে না, এই সংখ্যাটি কোন তথ্য-বিন্দু থেকে এসেছে। কাঠামো ঠিক থাকলেই সেটি পাস হয়ে যায়।
আমার পদ্ধতি এই জায়গাতেই তৈরি। ২০১৭ সালে ময়মনসিংহ র্যাঞ্জার্সের বেতন-খাতা ধরেছিলাম: চারজন খেলোয়াড়, সাত মাস, ২৮ লাখ টাকা বাকি। ক্লাবের প্রেস রিলিজ বলেছিল “সব নিয়ন্ত্রণে”। কাগজ বলেছিল অন্য কথা। তখন শিখলাম, চুক্তি হলো প্রাথমিক সূত্র, আর বিবৃতি হলো তার ভুল ব্যাখ্যা।
২০১৮ সালে রাশিয়ার রক্ত-পাসপোর্ট ফাইল হাতে আসে — ২৩ জন ফুটবলারের নাম, ১১ জন বিশ্বকাপ স্কোয়াডে। ৭৩৬ জন খেলোয়াড়ের তালিকার সঙ্গে ১৪টি নাম মিলিয়ে প্রকাশ করি, শুধু সংখ্যা, কোনো অভিযোগ নয়। ডিফেন্ডার ভিক্টর সোকোলভ “হ্যামস্ট্রিং ইনজুরি” বলে নাম তুলে নেন। ২০২০ সালে বুন্দেসলিগার ৩৬টি ক্লাবের করোনা-পুনরারম্ভ ফাইল ঘাঁটি: পরীক্ষায় ১ কোটি ২৪ লাখ ইউরো, অথচ ২৪০ জন অ-খেলোয়াড় কর্মীর বেতন থেকে ৮৭ লাখ ইউরো কাটা। ১,১৮৪টি বেতন-স্থগিতাদেশ ধারা নিয়ে ডেটাবেস বানাই, জার্মান ফ্যান ইউনিয়নের সঙ্গে প্রকাশ করি। খালি স্টেডিয়াম হিসাবরক্ষকদের লুকোনোর কোনো জায়গা রাখে না।
সেই অভ্যাস থেকেই আজ এই খালি রেকর্ডটি দেখছি। আর এখানেই আসল প্রমাণ, যেটি অনেকে মিস করেন: রেকর্ডটিতে “N/A” লেখা ছিল, কিন্তু নির্দেশনার বাক্যগুলো মুছে যায়নি। ইনফরমেশন পয়েন্টের জায়গায় এখনো লেখা “উপরের ইনফরমেশন পয়েন্ট থেকে চিহ্নিত করুন”, সোর্স-মান যাচাইয়ের ঘরে লেখা “ইনফরমেশন পয়েন্টের সোর্স ফিল্ড দেখে বিচার করুন”। অর্থাৎ সিস্টেম তার কাজের ফলাফল হারিয়েছে, কিন্তু কাজের নির্দেশনা ধরে রেখেছে। এই স্বাক্ষরটি ত্রুটিকে স্পষ্টভাবে চিহ্নিত করে — সমস্যা বিশ্লেষণের স্তরে নয়, উৎস থেকে তথ্য তোলার (extraction) স্তরে। টেক্সট পৌঁছায়নি, অথবা পার্সিংয়ের আগেই ছেঁটে ফেলা হয়েছে।

আর এখানেই পাইপলাইনের সবচেয়ে বিপজ্জনক বৈশিষ্ট্যটি: সুগঠিত হওয়াকে সম্পূর্ণতা ভাবা হচ্ছে। যে মনিটরিং কেবল স্কিমার বৈধতা দেখে, সে এই রেকর্ডটি পাস করে দেবে — কারণ কাঠামো নিখুঁত। অথচ ভেতরে একটি সত্যিকারের বাক্যও নেই। একটি কমপ্লিটনেস গেট থাকলেই এটা ধরা পড়ত: “ইনফরমেশন পয়েন্ট তিনটির কম হলে থামাও”, “টাইটেল শূন্য হলে থামাও”।
রিপোর্টের ঝুঁকি-ম্যাট্রিক্সে কেবল একটি সারি সত্যিই রেট করা গেছে, আর সেটি ক্রিকেট-ঝুঁকি নয়, প্রক্রিয়া-ঝুঁকি: খালি প্রথম-স্তরের আউটপুটের উপর ভিত্তি করে নিচের সিদ্ধান্ত নেওয়া — সম্ভাবনা উচ্চ, প্রভাব উচ্চ, মোট রেটিং উচ্চ। প্রতিকারও পরিষ্কার: রেকর্ডটিকে “NO-SIGNAL” বলে আলাদা করা, কোনো ডাউনস্ট্রিম মডেল বা ড্যাশবোর্ডে ঢুকতে না দেওয়া, এবং প্রথম-স্তরের মালিকের কাছে রুট-কজ রিভিউ পাঠানো।
সমালোচকরা বলবেন, দোষ মডেলের, দোষ প্রম্পটের। ভুল স্তর। বিশ্লেষণ-স্তর এখানে ঠিকঠাক কাজ করেছে — সে আটটি মাত্রার প্রতিটিতে সৎভাবে “তথ্য নেই” লিখেছে, বানানো গড় বা কাল্পনিক স্ট্রাইক রেট বসায়নি। এই সংযমটাই প্রশংসার যোগ্য। আসল দোষ তার আগের ধাপে, যেখানে টেক্সট প্রবেশই করেনি অথচ সিস্টেম সফলতার সিল মারল।
দ্বিতীয় যে ভুলটি সবাই করে: নীরবতাকে নিরাপত্তা ভাবা। এই রেকর্ডে দুর্নীতি, ইনজুরি বা গভর্নেন্সের কোনো লাল পতাকা নেই — কারণ উৎসই নেই। এটি “ক্লিয়ার” সার্টিফিকেট নয়। রক্ত-পাসপোর্ট হলো হিমোগ্লোবিনে লেখা একটা স্বীকারোক্তি, যার নিচে আমলাদের সিল; কিন্তু খালি পাতায় সেই সিল বসানোর সুযোগ নেই, আর তাই খালি পাতাকে কখনো ছাড়পত্র বলা যাবে না।
তৃতীয় একটি ছোট কিন্তু গুরুত্বপূর্ণ ফাটল: ডোমেইন লেবেল “cricket_world” লেখা হয়েছে, অথচ নির্ধারিত ট্যাক্সোনমি ছিল “Cricket”। রাউটিং যদি লেবেল ধরে চলে, তবে এই রেকর্ডটি ভুল ডেস্কে যাবে, আর সেখানে কেউ হয়তো খালি ঘরগুলো নিজের মতো ভরিয়ে দেবে। ব্যাচে যদি এই রেকর্ডটি ঢুকেছিল, একই স্বাক্ষরের অন্য রেকর্ডও থাকতে পারে — সেগুলোও আলাদা করে অডিট করা দরকার।
আমি তর্ক করি না; কাগজটা অপেক্ষা করে, যতক্ষণ না আপনি মিথ্যা বলা বন্ধ করেন। প্রশ্নটি এখন এই: ক্রিকেটের তথ্য-অর্থনীতি যত দ্রুত বাড়ছে, তার চেয়ে দ্রুত গতিতে কি আমরা আমাদের নিজেদের যাচাই-স্তরগুলো মেরামত করছি? নাকি পরের মরশুমেও ড্যাশবোর্ডে সবুজ বাতি জ্বলবে, আর ভেতরে আটটি শূন্য পাশাপাশি বসে থাকবে?
