diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md
index cbb91bd..d3e4c1d 100644
--- a/docs/quality/uygulama-durumu.md
+++ b/docs/quality/uygulama-durumu.md
@@ -997,3 +997,10 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
- Hata listesi e-posta alanına yönlendirir; alan altında açıklama, aria-invalid ve aria-describedby bağlantısı bulunur. E-posta ve telefon alanları uygun HTML input türlerini kullanır. Geçersiz taslak yine kaydedilebilir; hazır çıktı kapısı açılmaz.
- 226 otomatik test ve derleme geçti. Hatalı adresler, baş/son boşluklar, opsiyonel sicil alanı, zorunlu alanlarda nesne/dizi/boşluk ve hazırlık özetiyle aynı hata hedefi sınandı.
- Bu biçim/tamlık kontrolüdür; vergi kaydı, yetki, telefonun ulaşılabilirliği veya e-posta sahipliği doğrulaması değildir. Gerçek firma uygunluğu ve yeni alan hata görünümünün tarayıcı kabulü açık. Canlıya yayın yapılmadı.
+
+### Takvim gündeminde saat sırası ve belirsiz tarih görünümü — 6 Eylül 2026
+- Aynı gündeki ihaleler artık bilinen son teklif saatine göre artan sırada; saati bilinmeyenler sonda gösterilir. Eşit saatlerde İKN/kimlik sırası kullanılır. Sayımlar için havuz her gün yeniden taranmak yerine tek geçişte günlere ayrılır.
+- Tarihi eksik veya geçersiz kayıtlar önceden takvimde tamamen kayboluyordu. Tarihi doğrulanacak ihaleler bölümünde kaynak detayına erişilebilir biçimde gösterilir; bunlara gün/saat uydurulmaz. Mevcut iptal/sonuç durumu ve son teklif zamanı etiketi kartta görünür.
+- Gün seçiminde aria-pressed ve tam tarihli erişilebilir ad eklendi. İhale kartları klavye davranışı elle yazılmış div yerine doğal button oldu. Mevcut ay seçicisi korunur.
+- 227 otomatik test ve derleme geçti. Karışık saat sırası, bilinmeyen saat, geçersiz/eksik tarihin kaybolmaması, geçmiş kayıt ve girdi sırasının değiştirilmemesi test edildi.
+- Yeni takvim kartlarının tarayıcı/mobil kabulü ve Google/Outlook aktarım kabulü açık. Bu değişiklik ICS aktarımını test etmiş sayılmaz. Canlıya yayın yapılmadı.
diff --git a/src/components/tools/TenderCalendar.jsx b/src/components/tools/TenderCalendar.jsx
index 81d851e..fd276b3 100644
--- a/src/components/tools/TenderCalendar.jsx
+++ b/src/components/tools/TenderCalendar.jsx
@@ -1,8 +1,8 @@
import { useDeadlineClock } from '../../hooks/useDeadlineClock';
-import { calendarMonthDays, istanbulDateKey, tenderDateKey, deadlineInfo } from '../../services/tenderCalendar';
-import React, { useState } from 'react';
+import { calendarMonthDays, istanbulDateKey, calendarAgenda } from '../../services/tenderCalendar';
+import React, { useState, useMemo } from 'react';
import { useApp } from '../../context/AppContext';
-import { CalendarDays, Clock, MapPin, AlertCircle } from 'lucide-react';
+import { CalendarDays } from 'lucide-react';
export const TenderCalendar = () => {
const now = useDeadlineClock();
@@ -10,8 +10,22 @@ export const TenderCalendar = () => {
const today = istanbulDateKey(now);
const [month,setMonth] = useState(today.slice(0,7));
const [selectedDay, setSelectedDay] = useState(today);
- const daysList = calendarMonthDays(month).map(day => ({...day,count:tenders.filter(t=>tenderDateKey(t)===day.key).length}));
- const dayTenders = tenders.filter(t => tenderDateKey(t) === selectedDay);
+ const agenda=useMemo(()=>calendarAgenda(tenders,now),[tenders,now]);
+ const daysList=calendarMonthDays(month).map(day=>({...day,count:agenda.days.get(day.key)?.length || 0}));
+ const dayTenders=agenda.days.get(selectedDay) || [];
+ const card=({tender:t,info})=>;
return (