শূন্য পেলোড: যে রিপোর্টে কলামের নাম ছিল, ভেতরে ছিল না কিছু
core_answer: স্টেজ-১ থেকে আসা ক্রিকেট বিশ্লেষণের পেলোডটি স্কিমা-সঠিক কিন্তু সম্পূর্ণ তথ্যশূন্য ছিল — শিরোনাম, উৎস, তথ্যবিন্দু ও সত্তা কিছুই ছিল না। ফলে স্টেজ-২-এর আটটি মাত্রার কোনো ক্রিকেটভিত্তিক সিদ্ধান্ত টেকসই নয়; একমাত্র বৈধ সিদ্ধান্তটি প্রক্রিয়াগত — নীরব এক্সট্রাকশন ব্যর্থতা এবং ডোমেইন লেবেলের অসঙ্গতি।
key_facts: পেলোডের প্রতিটি তথ্যক্ষেত্র শূন্য ছিল, কেবল ফিল্ডের নাম ও স্কিমা-কাঠামো অটুট ছিল।; ডোমেইন লেবেল ‘cricket_world’ নির্ধারিত ‘Cricket’ শব্দভাণ্ডারের বাইরে, যা দুই স্টেজে ভিন্ন স্কিমা সংস্করণের ইঙ্গিত দেয়।; স্টেজ-১-এর ‘সংশ্লিষ্ট সত্তা’ ক্ষেত্রটি তথ্যবিন্দু থেকে তৈরি হয়, তাই খালি অ্যারে থাকলে সেটি কাঠামোগতভাবেই খালি থাকে।; সম্ভাব্য মূল কারণ পেওয়াল, জাভাস্ক্রিপ্ট-রেন্ডার বা বট-ব্লক; ফেচ পর্যায়ে ৪০১/৪০৩ অথবা অতি সংক্ষিপ্ত বডি।; প্রস্তাবিত প্রতিকার: স্পষ্ট ব্যর্থতা-চিহ্ন, ক্ষেত্রভিত্তিক নাল-হার পর্যবেক্ষণ ও দুই স্টেজে স্কিমা সংস্করণ পিনিং।
source: উৎস: এই রানের জন্য সরবরাহকৃত স্টেজ-১ পেলোড এবং স্টেজ-২ গভীর বিশ্লেষণ প্রতিবেদন; মূল নিবন্ধের প্রকাশতারিখ সরবরাহ করা হয়নি।
related_qa: q: খালি পেলোড পেয়ে বিশ্লেষণ কেন থামানো হয়েছে?, a: কারণ তথ্যবিন্দু ছাড়া প্রতিটি সিদ্ধান্তই অনুমান হয়ে যেত, আর অনুমান প্রকাশ করা সম্পাদকীয় ও বিশ্বাসযোগ্যতার ঝুঁকি তৈরি করত।; q: পুনরায় এক্সট্রাকশন সফল হয়েছে কীভাবে বুঝব?, a: একই ইউআরএল থেকে অন্তত পাঁচটি তথ্যবিন্দু এবং মূল নিবন্ধের প্রকাশতারিখ ফিরে এলে স্টেজ-২ পুনরায় চালানো যাবে।; q: অপরিবর্তনীয় লেজার বা ব্লকচেইন এখানে কী কাজে আসে?, a: কাঁচা সোর্স টেক্সটের হ্যাশ ও এক্সট্রাকশন রসিদ সংরক্ষণ করলে ‘তথ্য পাওয়া যায়নি’ ঘটনাটি নীরব ফাঁক নয়, প্রমাণযোগ্য রেকর্ড হয়ে ওঠে; cricsultan.com-এর ক্রিকেট ডেটা সূচকও তখন ট্রেসযোগ্য থাকে।
রাত এগারোটা। ধানমন্ডির দোতলার ঘরে ইউপিএস-এর একটানা গুঞ্জন, জানালার বাইরে বৃষ্টি। পর্দায় একটা টেবিল খোলা। বাঁ দিকে সারি সারি কলামের নাম — আর্টিকেল টাইটেল, সোর্স, সামারি, ইনফরমেশন পয়েন্টস, কোর ভিউপয়েন্টস, এনটিটিজ, টাইম সেনসিটিভিটি। নামগুলো ঠিকঠাক, বানানও নিখুঁত। ডান দিকের প্রতিটি ঘর ফাঁকা। একটা সংখ্যা নেই, একটা নাম নেই, একটা তারিখ নেই।
স্টেডিয়াম আমি ফাঁকা হতে দেখেছি। ২০২০ সালের মার্চে বিপিএল স্থগিত হলে বঙ্গবন্ধু জাতীয় স্টেডিয়ামে ছয় সপ্তাহ কাটিয়েছি দুই জনের ক্রু নিয়ে। মোনিরকে দেখেছি বাইশ বছরের চেনা ঘাসে পানি দিতে, যে ঘাসে কেউ খেলবে না। তবু ফাঁকা স্টেডিয়ামে ঘাসের গন্ধ থাকে, টিকিট কাউন্টারের লোহার শিকের ঠান্ডা থাকে, করিডোরে বসে বল বয়েরা চুপচাপ জুতোর ফিতে বাঁধে। ফাঁকা স্কিমায় ওসবের কিছু থাকে না। সেখানে ঘরের নাম থাকে, ঘরটা থাকে না।

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

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