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

আমি একটি স্প্রেডশিটে এই ব্যর্থতার সময়রেখা রাখছি, কারণ ২০২০ সালের পর থেকে প্রতিটি ট্যাকটিক্যাল টেমপ্লেটের পাশে আমি একটি এনভায়রনমেন্টাল ভেরিয়েবল সেকশন রাখি। সেখানে লিখে রাখলাম: প্রবাহিত সময়, পেলোডের আকার, লেবেল অসঙ্গতি। প্যাটার্নটি পরিষ্কার — এটি একবারের ঘটনা নয়, এটি একটি কাঠামোগত ফাঁক।

তাই সমাধান বিশ্লেষণ নয়, সমাধান হলো একটি গেট। স্টেজ-২-এ প্রবেশের আগে একটি অ্যাসারশন দরকার যা খালি ইনফরমেশন পয়েন্ট অ্যারে, N/A টাইটেল, বা Unclassified আর্টিকেল টাইপ দেখলেই পেলোড প্রত্যাখ্যান করবে এবং কাঁচা ফেচ বা পার্স এররটি সামনে আনবে। এখন এই গেট নেই, তাই ব্যর্থতা নীরবে নিচে চলে যায়। প্রতিটি স্তর ধরে নেয় আগের স্তর সফল, এবং শেষে একটি পরিপাটি খালি রিপোর্ট তৈরি হয় যা দেখতে সম্পূর্ণ, কিন্তু ভেতরে ফাঁপা।
আমার কাছে এই ব্যর্থতাটি আসলে একটি উপহার। কারণ এটি বিনামূল্যে একটি টেস্ট কেস দিয়েছে। পরবর্তী ব্যাচ চালানোর আগে এই নির্দিষ্ট ইনপুট দিয়ে গেটটি যাচাই করা যায়। যদি গেট কাজ করে, পেলোড প্রত্যাখ্যাত হবে এবং ইঞ্জিনিয়ার লগে এরর দেখবেন। যদি না কাজ করে, ব্যর্থতা আবার নিচে চলে যাবে, এবং পরের বার হয়তো সেটি একটি ফিক্সিং অভিযোগের নিবন্ধ হবে।
ক্রিকেটে আমি একটি নিয়ম মেনে চলি যা আমার নোটবুকের প্রথম পাতায় লেখা। টেপ মিথ্যা বলে না, সে শুধু সঠিক প্রশ্নের জন্য অপেক্ষা করে। এই পেলোডটি ছিল একটি নীরব টেপ। প্রশ্নটি এখন স্পষ্ট — মূল উৎসটি সত্যিই খালি ছিল, নাকি আমাদের সিস্টেম সেটি পড়তে ব্যর্থ হয়েছে?
পরের ম্যাচ প্রিভিউ লেখার আগে আমি এই প্রশ্নের উত্তর চাই। কারণ যে পাইপলাইন নিজের ব্যর্থতা চিনতে পারে না, সে কোনোদিন সঠিক প্রেডিকশন দিতে পারবে না — সে শুধু আত্মবিশ্বাসের সাথে ভুল বলতে পারবে।
