খালি পেলোড: ক্রিকেটের ডেটা পাইপলাইনে একটি নীরব ব্যর্থতার হিসাব
**সংক্ষিপ্ত উত্তর:** স্টেজ-১ রেকর্ডটি সম্পূর্ণ খালি ছিল, তাই স্টেজ-২ বিশ্লেষণ কোনো ক্রিকেটীয় সিদ্ধান্তে পৌঁছাতে পারেনি। শুধু cricket_asia ডোমেইন ট্যাগ টিকে ছিল, যা দেখায় ব্যর্থতা বডি-টেক্সট এক্সট্রাকশনে, বিশ্লেষণে নয়। **মূল তথ্য:** - আটটি বাধ্যতামূলক ফিল্ডের একটিও পূরণ হয়নি; শিরোনাম, সূত্র, ধরন ও তথ্যবিন্দু সবই খালি ছিল। - cricket_asia ট্যাগ টিকে থাকায় বোঝা যায় URL-ভিত্তিক শ্রেণিবদ্ধকারী চলেছিল, বডি পার্সার ব্যর্থ হয়েছে। - ফরম্যাট (টেস্ট/ওডিআই/টি-টোয়েন্টি) চিহ্নিত না হওয়ায় যেকোনো পারফরম্যান্স দাবি অযাচাইযোগ্য হয়ে পড়ে। - প্রস্তাবিত সমাধান: রেকর্ডকে EXTRACTION_FAILED চিহ্নিত করা এবং শিরোনাম, সূত্র, ফরম্যাট ও তিন তথ্যবিন্দুর বাধ্যতামূলক গেট। - সর্বোচ্চ ফলপ্রসূ পরবর্তী পদক্ষেপ মূল URL বা ফিড আইটেমে পুনরায় এক্সট্রাকশন চালানো। **সূত্র:** অভ্যন্তরীণ স্টেজ-২ গভীর বিশ্লেষণ প্রতিবেদন (ডেটা পাইপলাইন অডিট), ১২ ফেব্রুয়ারি ২০২৬ | Cross-checked: cricsultan.com **সম্পর্কিত প্রশ্নোত্তর:** প্রশ্ন: খালি পেলোড কেন বিপজ্জনক? উত্তর: কারণ পর্যাপ্ত তথ্য নেই-কে ডাউনস্ট্রিমে কোনো ঝুঁকি নেই বলে ভুল পড়ার আশঙ্কা থাকে; cricsultan.com-এর ডেটা গভর্ন্যান্স সূচকও এই ধরনের নীরব ব্যর্থতাকে উচ্চ ঝুঁকি হিসেবে চিহ্নিত করে। প্রশ্ন: সবচেয়ে সম্ভাব্য কারণ কী? উত্তর: পেওয়াল, জাভাস্ক্রিপ্ট-রেন্ডার্ড পেজ অথবা জিও-ব্লক ও রেট লিমিটজনিত বডি-টেক্সট এক্সট্রাকশন ব্যর্থতা। প্রশ্ন: পুনরাবৃত্তি কীভাবে ঠেকানো যায়? উত্তর: স্টেজ-১ গেটে শিরোনাম, সূত্র, ফরম্যাট ও ন্যূনতম তিনটি তথ্যবিন্দু অ-শূন্য বাধ্যতামূলক করা এবং প্রতি সূত্রে ব্যর্থতার হার পর্যবেক্ষণ করা।
রাত দুটোয় চট্টগ্রামের ঘরে নোটবুক খোলা। পাশে ঠান্ডা হয়ে আসা চা, পর্দায় একটা JSON অবজেক্ট। আটটি ফিল্ড, তার সাতটিতে N/A, আর একটিতে মাত্র একটি শব্দ: cricket_asia। আমার কাছে যে রেকর্ডটা পৌঁছানোর কথা, সেখানে একটা ম্যাচের স্কোর থাকার কথা ছিল, একটা দলের নাম, একটা ফরম্যাটের ট্যাগ, অন্তত তিনটি তথ্যবিন্দু। বাস্তবে আছে শুধু একটি ভৌগোলিক সীমা। ক্রিকেট বিশ্লেষণে এর চেয়ে অদ্ভুত দৃশ্য কমই দেখেছি — বাউন্ডারি দড়ি টানা আছে, কিন্তু পিচ নেই।
পনেরো মিনিট ওই পর্দার দিকে তাকিয়ে ছিলাম। মাথায় প্রথম যে চিন্তাটা আসে, সেটা পেশাদারিত্বের নয়, অভ্যাসের। হাত নিজে থেকেই খোঁজে — কোন ফরম্যাট, কোন ভেন্যু, কে ব্যাট করছিল। নোটবুকে সেই জায়গাগুলো ফাঁকা। খালি স্টেডিয়াম আমাকে বহু আগে শিখিয়েছে, নীরবতা আসলে শ্রোতাহীন ডেটা; কিন্তু এই নীরবতা অন্য রকম। এখানে শ্রোতা আছে, কেবল বার্তাটা কেউ পাঠায়নি।

ক্রিকেটে ডেটার সরবরাহ শৃঙ্খল আজ তিন ধাপে চলে। প্রথম ধাপে বল-বল লগ, স্কোরকার্ড, কমেন্ট্রি ফিড — অর্থাৎ মাঠে যা ঘটেছে তার কাঁচা রেকর্ড। দ্বিতীয় ধাপে সেই কাঁচা রেকর্ড থেকে তথ্যবিন্দু, সত্তা, ফরম্যাট, সময়-সংবেদনশীলতা আর সূত্রের মান আলাদা করা হয়। তৃতীয় ধাপে সেই কাঠামোর ওপর বিশ্লেষণ দাঁড়ায় — ফেজ মডেল, ম্যাচআপ, ঝুঁকি। আমার হাতে পৌঁছেছে দ্বিতীয় ধাপের ফলাফল, এবং সেটি খালি।
সমস্যাটা প্রক্রিয়াগত, কিন্তু এর প্রভাব ক্রিকেটের ভাষায় বোঝানো সহজ। ফরম্যাট হলো সেই প্রথম শর্ত, যা ঠিক করে কোন মেট্রিকের অর্থ আছে। টেস্টে ধৈর্য পুরস্কৃত হয়, টি-টোয়েন্টিতে স্ট্রাইক রেট; একই বোলারের ইকোনমি দুই ফরম্যাটে দুই গল্প বলে। মেহেদী হাসান মিরাজের টেস্ট ইকোনমি আর টি-টোয়েন্টি ইকোনমি এক নয়, তাসকিন আহমেদের ডেথ ওভারের দায়িত্ব আর নতুন বলের দায়িত্ব এক নয়। ফরম্যাটের ট্যাগ না থাকলে এই পার্থক্যগুলো মুছে যায়, আর সংখ্যাগুলো এক ফরম্যাট থেকে আরেক ফরম্যাটে চুপচাপ বয়ে বেড়ায়।
দক্ষিণ এশিয়ার ক্রিকেট সংবাদে এই ঝুঁকিটা সবচেয়ে বড়, কারণ এখানে আয়তন বিপুল আর সূত্রের স্বচ্ছতা কম। ২০১৬ সালে যখন BDCricTime-এর পাতাটি পেশাদার রূপ নিচ্ছিল, তখন থেকেই একটা জিনিস লক্ষ্য করেছি: আমাদের বাজারে প্রতিদিন হাজারো ক্রিকেট-তথ্য ঘোরে, কিন্তু তার মধ্যে কতটা আসলে যাচাইযোগ্য, সেই প্রশ্নটা কেউ তেমন করে না। ভক্তরা স্কোর চান, ক্লাব কোচরা সিদ্ধান্ত চান, আর মাঝখানের পাইপলাইনটা কেউ দেখে না।
বাংলাদেশে ডেটার প্রবাহটা বিশেষভাবে স্তরভিত্তিক। বিপিএল বা ঢাকা প্রিমিয়ার লিগের একটি ম্যাচ থেকে স্কোর আসে স্থানীয় স্কোরারের হাত ধরে, তারপর সেটি ফিডে ওঠে, তারপর কোনো পোর্টালে সেটির ট্যাগ বসে, তারপর সেটি বিশ্লেষণে ঢোকে। প্রতিটি হাতবদলে একটি করে তথ্য হারানোর সম্ভাবনা থাকে। একটি ভুল ট্যাগ করা রেকর্ড একবার ঢুকে গেলে সেটি কয়েক মাস ধরে সত্যের মতো ঘুরে বেড়ায়, কারণ কেউ ফিরে গিয়ে মূল উৎসটা যাচাই করে না। আমার নোটবুকে এখনো সেই ফাঁকা পাতাগুলো আছে, যেখানে আমি লিখে রেখেছি কোন সংখ্যাটা কোথা থেকে এসেছে।
খালি রেকর্ডটা যদি ধাপে ধাপে ভেঙে দেখি, তাহলে একটা স্পষ্ট ছবি পাওয়া যায়। আটটি বাধ্যতামূলক ফিল্ডের মধ্যে শূন্যটি populated। শিরোনাম নেই, সূত্র নেই, নিবন্ধের ধরন শ্রেণিবদ্ধ হয়নি, তথ্যবিন্দুর তালিকা খালি, সত্তা চিহ্নিত হয়নি, সময়-সংবেদনশীলতা যাচাই হয়নি, সূত্রের মান নির্ধারিত হয়নি। শুধু একটা জিনিস টিকে আছে — ডোমেইন লেবেল cricket_asia।

এই টিকে থাকাটাই সবচেয়ে বড় সূত্র। ডোমেইন শ্রেণিবদ্ধকারী সাধারণত URL বা ফিড ক্যাটাগরি দেখে চলে, আর বডি-টেক্সট পার্সার চলে পেজের ভেতরের লেখা দেখে। একটার আউটপুট আছে, আরেকটার নেই — মানে ব্যর্থতাটা কনটেন্ট স্তরে, কাঠামো স্তরে নয়। সবচেয়ে সম্ভাব্য কারণ তিনটি: পেওয়াল, জাভাস্ক্রিপ্টে রেন্ডার হওয়া পেজ, অথবা জিও-ব্লক বা রেট লিমিট। তিনটির কোনোটিই পাঠকের দোষ নয়, কোনোটিই ম্যাচের দোষ নয়। এটি একটি সংগ্রহ-ব্যর্থতা, যেটা বিশ্লেষণ-ব্যর্থতার ছদ্মবেশে হাজির।
এখানেই মূল বিন্দু: যে রেকর্ডে ফরম্যাট নেই, সেখানে যেকোনো পারফরম্যান্স দাবি অযাচাইযোগ্য। ফরম্যাট ছাড়া ফর্ম শব্দটার কোনো মানে দাঁড়ায় না, কারণ ফর্ম নিজেই একটা ফরম্যাট-নির্ভর ধারণা। একইভাবে ম্যাচের অবস্থাও অজানা — ম্যাচ শেষ হয়েছে, চলছে, নাকি এটা নিছক দল ঘোষণার খবর, কিছুই জানা নেই। টস, ড্রপ ক্যাচ, DRS-এর আম্পায়ার্স কল, ডিএলএস-এর সংশোধন — ভাগ্য বাদ দেওয়ার যে যন্ত্রগুলো আমি সাধারণত ব্যবহার করি, তার একটিও এখানে নেই।

দ্বিতীয় ক্যাসকেডটা খেলোয়াড় স্তরে। কোনো সত্তা চিহ্নিত না হলে ভূমিকা নির্ধারণ শুরুই করা যায় না। ওপেনার, অ্যাঙ্কর, ফিনিশার, পেসার, স্পিনার — ভূমিকা হলো সেই পূর্বশর্ত, যা ঠিক করে কোন মেট্রিকের দিকে তাকাব। ভূমিকা ছাড়া সংখ্যা শুধু সংখ্যা। আর সবচেয়ে বিপজ্জনক জায়গাটা হলো সাম্প্রতিক ধারা: তিন ম্যাচের গরম ধারাকে প্রবণতা ভেবে ফেলার যে রোগটা আমাদের কমেন্ট্রিতে সাধারণ, সেটা যাচাই করার কোনো উপায় এখানে নেই, কারণ যাচাই করার মতো কোনো দাবিই নেই। অলরাউন্ডারদের ওয়ার্কলোড প্রশ্নটাও একই কারণে অচল — ইনজুরি-ঝুঁকির হিসাব শুরু হয় খেলোয়াড়ের নাম থেকে, আর নামটাই এখানে নেই।
তৃতীয় ক্যাসকেডটা সময়ে। সময়-সংবেদনশীলতা যাচাই না হলে পুরোনো খবর চিরতাজা হয়ে বসে থাকে। ক্রিকেট ক্যালেন্ডারে এটা বড় ঝুঁকি — এক সপ্তাহের পুরোনো ইনজুরি আপডেট পরের সপ্তাহে ভুল দলে ভুল একাদশ বানিয়ে দিতে পারে। আর সূত্রের মান যাচাই না হলে সেই ফিল্টারটাই হারিয়ে যায়, যেটা দক্ষিণ এশিয়ার ক্রিকেট সংবাদে সবচেয়ে দরকারি। আমাদের বাজারে আয়তন এত বেশি আর আবেগীয় উন্মাদনা এত তীব্র যে সূত্রের ঠিকানা ছাড়া বিশ্লেষণ প্রায় অসম্ভব।
বাণিজ্যিক স্তরটা এখানে সম্পূর্ণ অন্ধকার। সম্প্রচার স্বত্বের অঙ্ক নেই, ফ্র্যাঞ্চাইজির মূল্যায়ন নেই, বেতন-কাঠামো নেই, অকশন বা রিটেনশনের কোনো ফলাফল নেই। ক্রিকেটে আমি যে পার্থক্যটা সবসময় টেনে আনি — অকশনে উচ্চ দাম আর আন্তর্জাতিক ক্রিকেটে প্রকৃত শক্তি এক জিনিস নয় — সেটা এখানে প্রয়োগ করা যায় না, কারণ তুলনার দুই পাশই অনুপস্থিত। অকশনের সময়সূচির কোনো চিহ্ন না থাকায় এজেন্ট-হাইপের সেই পরিচিত নকশাটাও স্ক্রিন করা যায় না।
চতুর্থ ক্যাসকেডটা সবচেয়ে নীরব। একটি রিপোর্টে যখন লেখা থাকে N/A — পর্যাপ্ত তথ্য নেই, ডাউনস্ট্রিমে সেটি পড়া হতে পারে কোনো ঝুঁকি পাওয়া যায়নি। এই দুই বাক্যের মধ্যে যে বিশাল ফারাক, সেটা কোনো ম্যাচে ধরা পড়ে না, কোনো স্কোরকার্ডে দেখা যায় না। স্কোরকার্ডে যদি এক্সট্রা শূন্য দেখানো হয়, আমরা ধরে নিই বোলার শৃঙ্খল ছিল; অথচ হতে পারে স্কোরারের অ্যাপটাই ক্র্যাশ করেছিল। DRS-এর আম্পায়ার্স কল যেমন প্রযুক্তির ভুল-সহনসীমার ভেতরে পড়লে মাঠের সিদ্ধান্তটাই টিকিয়ে রাখে, তেমনি পাইপলাইনের নীরব ব্যর্থতা মাঠের বাইরের একটি সিদ্ধান্ত টিকিয়ে রাখে — সেটি হলো কিছু হয়নি।
একটি হারানো রেকর্ড কেবল একটি হারানো গল্প নয়। সেটি সম্প্রচার কক্ষে পৌঁছায় ভুল তুলনার ে, ফ্যান্টাসি লিগের পর্দায় পৌঁছায় ভুল প্রত্যাশার ে, আর ক্লাবের অনুশীলনে পৌঁছায় ভুল অনুশীলন-পরিকল্পনার ে। বাজি-নির্ভর কোনো সংখ্যা এখানে আমার আগ্রহের বিষয় নয়; আগ্রহ সেই সাংবাদিকতায়, যেখানে একটি সংখ্যা উদ্ধৃত হওয়ার আগে তার ফরম্যাট, সূত্র আর তারিখ জানা থাকে।
এবং এখানেই মানবিক দিকটা আসে, যেটা আমি প্রায়ই বিশ্লেষণের ভিড়ে হারিয়ে ফেলি। চট্টগ্রামের একটি ক্লাবের কোচ যদি একটা যাচাই-না-করা ইকোনমি দেখে ফিল্ড সাজান, তাহলে ক্ষতিটা পরিসংখ্যানের নয়, একাদশের। একজন খেলোয়াড় বাদ পড়েন, একজন তরুণ সুযোগ হারান। ডেটা চোখের জায়গা নেয় না; ডেটা চোখকে শেখায় কোথায় পলক ফেলতে হবে। কিন্তু চোখকে যদি ভুল জায়গায় পলক ফেলতে শেখানো হয়, তাহলে দোষটা চোখের নয়, পাঠানোর সিস্টেমের।
স্বাভাবিক প্রতিক্রিয়া হলো দোষারোপ — স্ক্র্যাপার খারাপ, সিস্টেম দুর্বল। আমার আগ্রহ অন্য জায়গায়। শিল্পটা যে সমস্যাটা সমাধান করতে চায়, সেটা হলো প্রতিটি রেকর্ডের একটা উত্তর থাকতেই হবে। কিন্তু ক্রিকেটে উত্তর সবসময় থাকে না। বৃষ্টি নামলে ম্যাচের উত্তর থাকে না; ইনজুরি রিপোর্টের প্রথম দিনে সত্যিটা জানা থাকে না; অকশনের আগে এজেন্টের দাবি আর ক্লাবের বাস্তব পরিকল্পনার মধ্যে দূরত্ব থাকে। যে পাইপলাইন জ্ঞান নেই বলতে পারে না, সে বাধ্য হয়ে বানিয়ে বলে। আর বানানো কথাটা সাধারণত সুন্দর হয়, আত্মবিশ্বাসী হয়, শেয়ারযোগ্য হয় — এই কারণেই সেটা বিপজ্জনক।
দ্বিতীয় উল্টো দিকটা আরও অস্বস্তিকর। আমরা সাধারণত ধরে নিই পূর্ণ রেকর্ড ভালো আর খালি রেকর্ড খারাপ। কিন্তু এই ঘটনায় খালি রেকর্ডটাই একমাত্র সৎ কাগজ। যে সিস্টেম আটটি ফিল্ডের সাতটায় N/A লিখেছে, সে সীমাটা স্বীকার করেছে। যে সিস্টেম আত্মবিশ্বাসের সঙ্গে প্লেয়ার, স্কোর আর কোটেশন বানিয়ে ফেলত, সে বেশি উপযোগী দেখাত, অথচ সম্পূর্ণ মিথ্যা হতো। প্রতিটি ভাঙা পাইপলাইন আসলে তার পুরোনো নকশার একটি স্বীকারোক্তি — যে নকশা মাপতে পারা আর জানতে পারার মধ্যে ফারাক রাখেনি।
আমাদের মূল্যায়ন-ব্যবস্থা পূর্ণতা পুরস্কৃত করে, সত্যতা নয়। একটি ফিডে প্রতিদিন কতগুলো আইটেম গেল, সেটা মাপা হয়; কতগুলো আইটেম সঠিকভাবে ট্যাগ হলো, সেটা মাপা হয় না। ফলে খালি রেকর্ড সিস্টেমের চোখে ব্যর্থতা নয়, কেবল একটা ফাঁকা ঘর — যেটা পরের রানে ভরে ফেলা যায়। অথচ এই ফাঁকা ঘরটাই ছিল একমাত্র জায়গা, যেখানে সিস্টেম সততা দেখিয়েছে।
অকশন-মৌসুমে এই ফাঁকটা আরও চওড়া হয়। রিটেনশন তালিকা, RTM, NOC, এজেন্টের লিক — সব জায়গায় আংশিক তথ্য পূর্ণ সত্যের মতো করে পরিবেশন করা হয়। এমন মৌসুমে যে সাংবাদিক বা যে প্ল্যাটফর্ম এখনো নিশ্চিত নই বলতে রাজি, সে-ই আসলে সবচেয়ে বেশি বিশ্বাসযোগ্য। শূন্য উত্তর একটা ঘটনা; তাকে ফাঁকা ঘর ভেবে এড়িয়ে যাওয়াটাই পেশাগত ভুল।
পরের ম্যাচ থেকে আমার যাচাইয়ের নিয়ম সরল। কোনো মেট্রিক উদ্ধৃত করার আগে একটা প্রশ্ন — ফরম্যাটের ট্যাগটা কোথায়? ট্যাগ নেই মানে সংখ্যাটা উদ্ধৃত করার অধিকার নেই। এটা ফিল্ডিং রেস্ট্রিকশনের মতো: কত ওভার বাকি জানা না থাকলে আক্রমণাত্মক ফিল্ড সাজানো যায় না। একইভাবে ডেটা পাইপলাইনের গেটে অন্তত চারটি ফিল্ড অ-শূন্য হওয়া উচিত — শিরোনাম, সূত্র, ফরম্যাট, আর ন্যূনতম তিনটি তথ্যবিন্দু। আর ব্যর্থ রেকর্ডকে ANALYSIS_COMPLETE নয়, EXTRACTION_FAILED হিসেবে চিহ্নিত করা উচিত, যাতে মনিটরিং আসলে শব্দ করে।
প্রশ্নটা শেষে থেকে যায়: ক্রিকেটের ডেটা-অর্থনীতিতে কে সেই ব্যক্তি, যার কাজ হলো শূন্যগুলোর হিসাব রাখা? আমরা গড়, স্ট্রাইক রেট, ইকোনমি — সব মাপি, কিন্তু কতগুলো রেকর্ড নীরবে হারিয়ে গেল, সেটা কে মাপে?
