Artifacts-D1 TUR 28 PROD · review-1.2 CANLI · PLAN-ARTF-003 BİTTİ (embed+pin+retention+fizibilite)
Claude-Artifacts eşdeğeri self-hosted servis — cx53 + Coolify ·
servis: hart v0.4.3 ·
artifacts.gonet.com.tr/a/d1/pano CANLI ·
son güncelleme: 2026-09-28
Hedef · Kapsam · Sınıri
Hedef
Ajan/insan üretimi self-contained HTML'leri kalıcı, sürümlü, public linkli 7/24 servis etmek — vendor bağımsız. Claude Artifacts'ın işlev eşdeğeri.Sınır (DEĞİLDİR)
Servis kodu bu repo'da yaşamaz (ayrı repo:Guru35/artifacts-*) · production deploy bu
planda değil (kapılı, ayrı tur) · claude.ai klonu değil.Sprint rayıi
S0 doğum+araştırma+plan+pano ✔
S1 mimari karar: hart ✔
S2 servis MVP staging'de CANLI ✔
S3 sürüm+paylaşım+sandbox ✔ (private/parola + limitler kanıtlı)
S4 ajan arabirimi: artifact-publish skill ✔
S5 işletim+prod: Coolify kaydı ✔ · PROD ilanı ✔ — plan tamam
F0 Claude-parity araştırma + PLAN-ARTF-002 ✔
F1 viewer: galeri + sürüm seçici ✔ CANLI (review-0.6)
F2 md aracı + jsx runtime ✔ CANLI
F3 window.arti köprüsü + KV store ✔ CANLI (review-0.7)
F4 sürüm bandı + kaynak/remix + olay günlüğü ✔ CANLI (review-0.8)
İş paketleri (PLAN-ARTF-001)i
| Paket | Sprint | İçerik | Kanıt testi | Durum | Bağlı |
|---|---|---|---|---|---|
| ARTF-001 | S0 | Vault doğumu, kimlik, 7 raw derlemesi, wiki katmanı, plan, pano v0 | kapı YEŞİL + remote kanıtı (44731ca) | bitti | — |
| ARTF-002 | S1 | Mimari karar → hart (operatör delegasyonu; tek-origin+CSP, token) | matris §Karar kaydı + geri-dönüş koşulu | bitti | — |
| ARTF-003 | S2 | Servis MVP staging: publish→public URL; repo Guru35/artifacts-d1-service | POST→v1, GET→200, restart→200, TLS+LE | bitti | — |
| ARTF-004 | S3 | Immutable sürümler + /v<n> + unlisted/private katmanı | private: 401 unlock · X-Hart-Read-Key 200 · yanlış 401 · geçiş kanıtlı | bitti | — |
| ARTF-005 | S3 | CSP 'none' + linter 422 + limitler | 429 (~10/dk) · 5MB kabul · owner cap 30MB · nosniff/noindex | bitti | — |
| ARTF-006 | S4 | .devin/skills/artifact-publish (kanıtlı sözleşme) + doğrulama publish'i | skill'den publish → /a/d1/skill-dogrulama 200 | bitti | — |
| ARTF-007 | S5 | Coolify service kaydı + prod ilanı + backup/restore | service uuid 5w76… · 13 artifact korundu · pano 200 · volume-rename tuzağı aşıldı | bitti | — |
| ARTF-008 | T7-T8 | Yorum/review katmanı CANLI — /review/<id> iframe+yorum paneli (ayrı SQLite, volume review-data) | healthz 200 · wrapper+iframe · POST→GET roundtrip (id=1) · 404 yabancı · hart 200'ler etkilenmedi | bitti | — |
| ARTF-008b | T10 | Parity eksikleri: resolve toggle ucu+UI · pin ekle modu (overlay %x/%y + marker katmanı) · artifact_version passthrough | test 16/16 · canlı: pin POST id=2 (anchor+sürüm) · resolve 1→0 toggle · 404 olmayan · review-0.2 deploy'lu | bitti | — |
| ARTF-009 | — | Sablon-V3-D1 şablonu (Sablon-D1 çatalı + servisli-vault katmanı) | sandbox doğum YEŞİL · Guru35/Sablon-V3-D1 push'lu | bitti | — |
| ARTF-010 | F0 | Claude-Artifacts parity derin araştırması + PLAN-ARTF-002 (F1-F5 fazları) | wiki'de: web-claude-artifacts-2026 + PLAN-ARTF-002 | bitti | — |
| ARTF-011 | F1 | Galeri: /review/galeri public liste (hart /v1 admin okuması sunucuda; private+gizli elenir) + admin gizle ucu | test T17-T19,T22-T24 · CANLI: /review/galeri 200, d1/pano listede · repo 8d77e9c | bitti | — |
| ARTF-012 | F1 | Sürüm seçici: /review/{o}/{n}/versions ucu + sayfada seçici/pin/latest linkleri | test T20-T21 · CANLI: /versions → 30 sürüm JSON, seçici render · repo 8d77e9c | bitti | — |
| ARTF-013 | F2 | .md → styled page: publish-time conversion tools/md-publish.py (markdown-it + inline-CSS şablon; frontmatter soyma, harici-ref uyarısı, --dry-run) | md-test v3 canlı 200, h1/table render doğrulandı · temizlik DELETE | bitti | — |
| ARTF-014 | F2 | JSX doğrulama: format=jsx + HART_RUNTIME_DIR=/data/runtime (envs API) + redeploy → runtime canlı | /_hart/runtime/* 3/3 → 200 · jsx-test wrapper+#root OK · regresyon 5/5 → 200 | bitti | — |
| ARTF-016 | F3 | window.arti köprüsü: artifact shim'i (postMessage arti.req/res) → review sayfası dispatch (declare-meta + origin/source kapısı) → /arti/api/complete + download parent'ta Blob | test T36-T42 · CANLI: complete → {"text":"Merhaba!"} gerçek LLM · 422 uzun prompt · 404 yok artifact · sayfada arti.req/res+declare · repo 0c9abe7 | bitti | — |
| ARTF-017 | F3 | Storage KV: artifact_store tablosu + /arti/api/store (GET/POST/DELETE) — key≤64 · value≤32KB · ≤50 key · ≤256KB/artifact · 30 yazım/dk | test T25-T35 · CANLI: store set→get→list→del→404 roundtrip /review/arti/api/* altında · repo 0c9abe7 | bitti | — |
| ARTF-022 | F6 | Metadata: hart ?title= (tek kaynak — served title + galeri + review barı) + review artifact_meta iconu (admin PUT / public GET /review/{o}/{n}/meta) + md-publish --title/--icon (emoji data: favicon) | test T56-T61+T63 · CANLI: meta roundtrip · galeri "📋 Artifacts-D1 Pano" · served <title> doğrulandı | bitti | — |
| ARTF-025 | F6 | Stale-publish guard: md-publish.py --expect N — publish öncesi /v1/artifacts okunur, güncel≠N ise kesilir (hart binary server-side guard desteklemez; araç-seviyesi eşdeğer) | CANLI: --expect 5 → "stale base" ile kesildi; --expect 1 → v3 publish 200 | bitti | — |
| ARTF-026 | F6 | Yorum→asistan köprüsü: yorum kartında "asistana sor" linki → /asistan?s=yorum#id·ad:metin (yorum LLM'e bolum bağlamı olarak girer) | test T62 marker · CANLI: sayfada link render doğrulandı | bitti | — |
| ARTF-023 | F7 | Embed + allowed-domains: /review/{o}/{n}/embed sarıcısı (frame-ancestors meta'dan, boşsa 'self') + review barında "embed kodu" butonu (PUBLIC_BASE ile https üretir) | test T70-T77 · CANLI: embed 200 + CSP doğru · sınır kayıtlı (ham /a/… bypass edilebilir) | bitti | — |
| ARTF-024 | F7 | Sahip sürüm pin'i: artifact_meta.published_version — admin PUT, varolmayan sürüm 422; review+embed iframe varsayılanı pin'li sürüme döner | test T64-T69 · CANLI: pin set→/v1 iframe→temizle roundtrip | bitti | — |
| ARTF-027 | F7 | Retention süpürgesi: tools/retention.py — dry-run varsayılan, silme --uygula --onay EVET çift kapılı (HART_ADMIN liste + HART_TOKEN silme) | test T1-T9 · CANLI dry-run: aday=0 esik=90g | bitti | — |
| ARTF-028 | F7 | Connector eşdeğeri fizibilite raporu: outputs/artf-028-connector-fizibilite.md — O1 (tam parity) hesap katmanı ister; O2 (küratörlü cap'ler) uygulanabilir yol; öneri O3-kapat | rapor yazıldı, kod yok (karar notu kayıtlı) | bitti | — |
Emsal matrisi (S1 karar tabanı)i
| Aday | cx53 | Sürüm | Paylaşım | Sandbox | Sinyal |
|---|---|---|---|---|---|
| artifact-server (plannotator) | ✔ Compact Compose | immutable + review link | WorkOS/OIDC, private/public | iki-origin (en güçlü) | 184★, conformance ledger |
| Stela (kdowding) | ✔ container+SQLite | immutable, aynı URL | header-trust; 3 katman + pinned comment | iframe + CSP 'none' | 0★, 1 commit — genç |
| hart (javimosch) | ✔ tek binary+SQLite | immutable + rollback | token + public link + custom domain | CSP skeleton + 422 linter | canlı demo hart.intrane.fr |
| open-artifacts (coda0) | ✘ CF Workers | ?v=N immutable | unguessable id + writeToken + ZK | CSP sandbox 'none' | 60★ — kalıp kaynağı |
| hushdrop (maxtechera) | ✘ Vercel Blob | update-in-place | ZK parola + expire/burn + email-gate | CSP + noindex | kalıp kaynağı |
Kaynak: raw/web-*.md derlemeleri ·
detay: wiki/concepts/oss-emsal-karsilastirmasi.md
Kararlari
| Tarih | Karar | Kim |
|---|---|---|
| 2026-09-27 | Tek turda doğum+araştırma+plan+pano | operatör |
| 2026-09-27 | Servis kodu ayrı repo + Coolify deploy | operatör |
| 2026-09-27 | Sablon-V3-D1 ertelendi — desen önce kanıtlansın | operatör |
| 2026-09-27 | Uzak repo + public domain hedefi evet | operatör |
| 2026-09-27 | Mimari: hart (operatör "sen seç" → ajan; geri-dönüş koşulu matriste) | ajan (delegasyon) |
| 2026-09-27 | "ikisini de yap, doğru sırayla" → önce review araştırması, sonra V3 inşası (erteleme kararı geçildi) | operatör |
| 2026-09-27 | Review katmanı yönü: ince companion önerildi — karar implementasyon turunda | ajan (öneri) |
Tuzaklari
- stored-XSS: untrusted HTML app origin'inde sunulursa oturum sızar → iki-origin veya CSP 'none' zorunlu.
- token kaybı = kontrol kaybı: hesapsız sahiplikte writeToken saklama yeri sözleşmede.
- public link ≠ public sunucu: publish/auth ucu ayrı korunur.
- tek-arıza cx53: backup rutini + restore tatbikatı kanıtı şart.
- genç repo: Stela 1 commit → pin+audit ya da kalıp kopyası.
- deploy kapılı: sunucuya dokunuş yalnız operatör-onaylı turda.
Kanıt kayıtlarıi
| Tur | Kanıt | Sonuç |
|---|---|---|
| T1 | dogur-vault-d1.sh çıktısı: TUR KAPISI YESIL, 48→62 sayfa, araçlar 7/7 | yeşil |
| T1 | uzak-repo-kur.sh: ls-remote HEAD a8ca00e (Guru35/Artifacts-D1) | yeşil |
| T1 | ortak-yazim.py: vault-haritasi.md sha 334de2b4→8a26dfe4 + kök commit 7b4e531 | yeşil |
| T2 | POST /v1/publish (token'lı) → {"url":"…/a/d1/pano","version":1}; tokensız → 401 | yeşil |
| T2 | GET /a/d1/pano → 200; republish → v2; /a/d1/pano/v1 → 200 (immutable) | yeşil |
| T2 | dış-script'li HTML → 422 linter "external-script"; CSP header: default-src 'none', nosniff, frame-ancestors 'self' | yeşil |
| T2 | docker restart → aynı URL 200 (SQLite volume kalıcı); http→https 302; LE cert YR2 → 2026-12-26 | yeşil |
| T3 | private publish (read_key) → keysiz 401+unlock sayfası · X-Hart-Read-Key → 200 · yanlış key → 401 | yeşil |
| T3 | visibility unlisted + clear_read_key → 200; clear'sız gate SÜRER (read-key kalıcı) | yeşil |
| T3 | rate limit: ~10 publish/dk → 429; 5MB tek dosya → 200 (owner cap 30MB) | yeşil |
| T3 | backup: stop→tar.gz+sha256→up; restore: ayrı volume'e extract + geçici instance → 13 artifact 200 | yeşil |
| T3 | artifact-publish skill sözleşmesi → /a/d1/skill-dogrulama 200 | yeşil |
| T4 | Coolify service kaydı: POST /services (compose base64) → deploy → container hart-5w76… up | yeşil |
| T4 | geçiş kanıtı: pano 200 · 13 artifact · TLS + http→https 302 · COOLIFY_RESOURCE_UUID env var | yeşil |
| T4 | tuzak yakalandı: Coolify volume rename (external yutuldu) → cp -a ile veri kopyası → 13/13 | yeşil |
| T4d | bağımsız doğrulama: service DB'de (uuid 5w76, fqdn doğru) · hart-5w76 up · kök+pano 200 · iki repo ls-remote==HEAD | yeşil |
| T4d | künye kapanışı: PLAN-ARTF-001 frontmatter bitti+kapanis+kanit (bdcffc6) — gövde "tamam" yazarken künye "suruyor" kalmıştı | yeşil |
| T4d | tools/pano-yayinla.sh: tek komut publish → pano v6 (bu sayfa) — "her tur sonunda" republish prosedüre bağlandı | yeşil |
| T5 | kök sayfa: HART_LANDING=/data/landing.html → https://artifacts.gonet.com.tr/ "Artifacts-D1" giriş sayfası (stok yerine) | yeşil |
| T5 | HART_TOKEN rotasyonu (transkript sızıntısı): eski token publish → 401 · yeni token → v7 publish yeşil | yeşil |
| T5 | tuzak: Service-level envs/bulk dockercompose container'a enjekte OLMAZ — çözüm docker_compose_raw PATCH (environment bloğu) | yeşil |
| T5 | admin token envs-API + redeploy → container'da set · DELETE /v1/artifacts → 7/7 artık silindi, yalnız d1/pano kaldı | yeşil |
| T5 | backup.sh elle koşu → tar.gz+SHA256SUMS → servis geri 200 · crontab 35 3 * * * kuruldu (14 gün retention) | yeşil |
| T5 | bulgu: envs-API değeri compose literal'ını ezer · listeleme sahibesiz sorguda publish tokenla [] döner (admin/cross-owner) · silme admin'siz de çalışır | yeşil |
| T6 | kok-neden: paralel işçi Hetzner-D1 köklü Claude oturumu (565c465e — jsonl kanıtı, "çift Devin" düzeltildi) · aktif-ajan-kilit sinyali oturum kökü ölçüyor → sınır-ötesi yazar görünmez | yeşil |
| T8 | deploy: /review/healthz 200 · /review/d1/pano 200+iframe src=/a/d1/pano · yorum POST→201 + GET listede (id=1) · /review/yok-boyle 404 · / ve /a/d1/pano 200 (hart etkilenmedi) | yeşil |
| T8 | backup.sh canli koşu: hart 36K + review 4.0K, code=200 review_code=200 (cift volume kapsamda) | yeşil |
| T8 | tuzak: compose_raw PATCH base64 ister · app PATCH alanı url (fqdn değil) · is_stripprefix_enabled:false şart (true = Traefik /review'i yer → 404) | yeşil |
| T10 | ARTF-008b: test 16/16 (resolve toggle, anchor+sürüm roundtrip, pin katmanı, 404'ler) · image artifacts-d1:review-0.2 | yeşil |
| T10 | deploy: compose_raw PATCH (image tag) → deploy → review-0.2 up · canlı: pin POST id=2 (anchor .5/.3, v11) · resolve 1→0 · olmayan 404 · /a/d1/pano 200 | yeşil |
| T10 | bulgu: /v1/artifacts?owner=d1 iç ağda bile tokensuz 401 → artifact_version opsiyonel passthrough (token review'a geçirilmedi) | yeşil |
| T6 | çözüm: aktif-ajan-kilit v1.2.0-aday (tools/) — sınır-ötesi jsonl taraması + filo satırı · test 11/11 + regresyon 47/47 · canlı prova: 565c465e SINIR-ÖTESİ yakalandı | yeşil |
| T6 | kanıtlı patch Loops/raw bildirim-20260927-1308 ile iletildi — kanonik değişim+senkron Loops'ta · ders: wiki/system/dersler/sinir-otesi-ajan-kor-noktasi.md | yeşil |
| T7 | ARTF-008 iskelet: review/ FastAPI+SQLite (iframe /a/<id> + comments API, honeypot, 30/dk) — 11/11 test · repo commit 82929eb · deploy YOK (bayrak'ta onay) | yeşil |
| T7 | review araştırması: hart'ta public yazma ucu YOK (feedback=operatör, stats=sayaç) → gerçek yorum harici servis ister; Stela 1 commit/0★ ölü; öneri ince companion | yeşil |
| T7 | Sablon-V3-D1 kuruldu: 6 V3 dosyası · sandbox doğum (--hedef-koku) kapı YEŞİL · push e8e30d5 · harita SBLNV3D1 (3825814) | yeşil |
| T7 | saha bulgusu: doğurma yer-tutucu turu yalnız *.md tarar → pano.html tutucuları ilk güncellemede dolar (SKILL §Nasıl-0, V3-NOTU) | yeşil |
| T21 | ARTF-011/012 kodu: pytest test_app.py → 24/24 OK (T17-T24 yeni: galeri/private-eleme/unverified bandı/versions ucu/seçici render/gizle 403+admin) · docker image artifacts-d1:review-0.6 build OK · repo commit 8d77e9c (yerel — push+deploy kapılı) | yeşil |
| T21 | canlı prob: /v1/artifacts/d1/pano → sürüm listesi · /a/d1/pano/v1 ≠ /v29 (farklı gövde) · ?v= sürüm SEÇMİYOR (hepsi latest) → seçici path-tabanlı /a/o/n/vN | yeşil |
| T22 | md ölçümü: format=md KABUL ediliyor ama render YOK (ham metin skeleton'da) → publish-time conversion kararı; tools/md-publish.py → md-test v3 canlı 200 (h1/table/styled), DELETE temiz | yeşil |
| T22 | jsx: HART_RUNTIME_DIR=/data/runtime envs-API ile yazıldı + redeploy → /_hart/runtime/* 3/3 → 200 · jsx-test publish wrapper+#root kanıtlı · regresyon 5/5 200 · DELETE temiz | yeşil |
| T23 | ARTF-016/017 kodu: review/arti.py + köprü JS → python test_app.py → 46/46 OK (T25-T42 yeni: store roundtrip/upsert/kota sınırları/izolasyon/404'ler · complete mock/prompt sınırları/günlük tavan 429/store rate 429/sayfa markerları) · test_asistan.py A1-A21 regresyon yeşil · repo bc16ecb | yeşil |
| T23 | DEPLOY TAMAM: compose_raw PATCH image→review-0.7 + Coolify deploy · CANLI kanıt: store roundtrip (set→get→list→del→404) · complete → {"text":"Merhaba!"} (gerçek LLM) · 422/404 sınırları · regresyon 8/8 200 · bind mount korundu. İki deploy bulgusu düzeltildi: (1) uçlar /review/arti/api/* altına taşındı — Traefik review'e yalnız /review+/asistan path'lerini yönlendirir; (2) Dockerfile COPY listesine arti.py eklendi — ilk image'da yoktu, route kayıtsızdı | yeşil |
| T24 | ARTF-018/019/020 kodu: python test_app.py → 54/54 OK (T43-T48 yeni: kaynak mock+escape+remix şablonu+404 · olay satırları yorum+store.set+complete · admin 403 fail-closed · complete detail'de prompt yok · sayfa markerları) · repo 4db8524 (yerel — push+deploy kapılı) | yeşil |
| T25 | ARTF-021 iki-origin: ARTI_HOST env → iframe+linkler a.gonet.com.tr · iframe sandbox="allow-scripts" + arti v2 hello protokolü · review-0.9→review-1.0 CANLI · repo 379347b+3a16d69 · PLAN-ARTF-002 kapandı | yeşil |
| T26 | Hasat (Mod C): Tur-2 kaynak taraması işlendi (raw bölüm + source özeti + artifact-servis-modeli güncellemesi) · PLAN-ARTF-003 doğdu (ARTF-022..028; küçük paket 022+025+026 onaylı) · kaynakça +7 kayıt · seyir kaydı · devir notu eki · TUR KAPISI yeşil | yeşil |
| T27 | F6 küçük paket CANLI: review-1.1 (ARTF-022 meta + ARTF-026 asistan-köprüsü) · test 74/74 (T56-T63c) + asistan A1-A21 · canlı: meta PUT/GET roundtrip · galeri+bar "📋 Artifacts-D1 Pano" · served title · regresyon 10/10 200 · md-publish --expect guard + --title/--icon (v3 smoke kanıtlı) · repo 6abdbb1 push'lu | yeşil |
| T28 | F7 orta paket + fizibilite CANLI: review-1.2 (ARTF-023 embed+allowed-domains · ARTF-024 sahip pin'i · ARTF-027 retention aracı) + ARTF-028 raporu · test T64-T77 + retention T1-T9 yeşil · canlı: pin/embed roundtrip + 7/7 uç 200 + retention dry-run aday=0 · repo a85af39+c4a5b4c · PLAN-ARTF-003 kapandı | yeşil |
Servis durumu (PROD)i
| Kalem | Değer |
|---|---|
| URL | artifacts.gonet.com.tr (Traefik+LE, http→https) |
| Stack | hart v0.4.3 (pin+sha256) · Coolify service (uuid container) · SQLite Coolify-volume · Traefik+LE |
| Repo | Guru35/artifacts-d1-service (private) · ~/Code/artifacts-d1 |
| Publish | POST /v1/publish + Authorization: Bearer $HART_TOKEN (env'de, yazdırılmaz) |
| Görünürlük | unlisted (varsayılan) · public · private (read-key/parola) |
| Keşif | HART_EXPLORE=0 → /explore kapalı (link-only) |
| Backup | ~/artifacts-d1-backup/2026-09-27/hart-data.tar.gz (sha256:8076f764…) — restore tatbikatı kanıtlı |
| İşletim | Coolify: proje artifacts (zlhfs6…) · service 5w76wyoipamcklcpg2snu6v5 · API localhost:8000/api/v1 · token ~/.coolify/token-artifacts-d1 |
| Backup | günlük cron 03:35 (~/srv/artifacts-d1/backup.sh, 14 gün retention) + elle kanıtlı arşiv |
| Bilinen artıklar | yok — 7 test artığı T5'te silindi (DELETE /v1/artifacts, publish token) · envanter: yalnız d1/pano · eski volume artifacts-d1_hart-data diskte ek yedek |
Tur kayıtlarıi
| Tur | Tarih | Özet |
|---|---|---|
| T1 | 2026-09-27 | Doğum (Sablon-D1→ARTFD1) · kimlik dolumu · harita satırı · uzak repo Guru35/Artifacts-D1 · 6 raw derleme (5 emsal+Claude docs+Coolify) · 2 kavram+3 entity+7 source+MOC+PLAN-ARTF-001 · pano v0 |
| T2 | 2026-09-27 | ARTF-002 karar: hart (delegasyon) · repo Guru35/artifacts-d1-service · staging container (coolify net, Traefik+LE) · DNS artifacts.gonet.com.tr · 8 kanıt yeşil (401/201/v2/422/restart/CSP/TLS/302) · servis CANLI |
| T3 | 2026-09-27 | ARTF-004 private/read-key kanıtlı (401 unlock · read-key 200 · clear_read_key geçişi) · ARTF-005 limitler (429 ~10/dk, 5MB kabul) · ARTF-006 artifact-publish skill + doğrulama 200 · backup/restore tatbikatı (tar.gz + geçici instance'ta 13 artifact) · kalan: Coolify kaydı + prod kararı |
| T4 | 2026-09-27 | ARTF-007: Coolify service kaydı (tinker token mint → POST /services base64 compose → deploy) · volume-rename tuzağı aşıldı · 13 artifact korundu · PROD ilanı — PLAN-ARTF-001'in 7 paketi tamam |
| T4d | 2026-09-27 | Paralel-oturum doğrulaması (iş tekrarı yapılmadı) · LLMWKD1'e bilgi mektubu · harita PROD satırı · bayrak: posta-kuyruk kalıntısı + çift-oturum notu · plan künyesi kapatıldı · pano-yayinla.sh → v6 |
| T5 | 2026-09-27 | Kök sayfa "çalışmıyor" ihbarı → teşhis: stok landing (kesinti yok) · HART_LANDING ile özel giriş sayfası · HART_TOKEN rotasyonu aynı restart'ta (eski 401) · landing.html repo'da · pano v7 |
| T5 | 2026-09-27 | admin token + 7/7 artık silindi (yalnız d1/pano) · günlük backup cron'u (03:35, 14 gün) · Sablon-V3 değerlendirme raporu + Sablon-D1'e tohum mektubu · envs-API>compose + DELETE bulguları |
| T6 | 2026-09-27 | derin kök-neden: paralel el = sınır-ötesi Claude (Hetzner-D1, 565c465e) · aktif-ajan-kilit v1.1.0 körlüğü (sinyal=oturum kökü) · v1.2.0-aday patch testli (11/11+47/47) · Loops'a kanıtlı bildirim · bayrak düzeltildi |
| T7 | 2026-09-27 | ARTF-008: paralel oturumun yorum araştırması iskelete döndü — review/ servisi (iframe+panel, ayrı SQLite) 11/11 test, repo 82929eb · deploy onayı bayrak'ta · kök-ötesi devin yazımı canlı kanıtlandı (luxuriant-flig) |
| T8 | 2026-09-27 | ARTF-008 CANLI ("yapılsın"): review companion Coolify'da — /review/d1/pano çalışıyor, yorum roundtrip kanıtlı · strip-false + url-alanı tuzakları çözüldü · backup.sh cift-volume · bayrak KAPALI |
| T9 | 2026-09-27 | Bakım + karar temizliği: durum.md bayatı düzeltildi · posta-kuyruk.json Sablon-D1 kalıntısı operatör onayıyla silindi (bayrak KAPALI) · servis sağlık: hart+review up, /review/healthz 200 |
| T10 | 2026-09-28 | ARTF-008b parity tamamlandı: resolve toggle + pin ekle (overlay %x/%y + marker) + sürüm passthrough · review-0.2 Coolify deploy · test 16/16 + canlı kanıt bataryası yeşil · repo e6947d3 |
| T7 | 2026-09-27 | yorum katmanı araştırması (4 seçenek matrisi, öneri: ince companion — karar operatörde) · Sablon-V3-D1 kuruldu + sandbox doğum testi YEŞİL + GitHub push · harita satırı + Sablon-D1 karşılama mektubu · V3 saha bulgusu: yer-tutucu turu *.md-only |
| T11 | 2026-09-28 | Maraton8 (gözetimsiz bakım koşusu): 6 bug kanıtlanıp düzeltildi — anchor 0..1 · esc() quote/XSS · sayfa CSP+nosniff · XFF rate-kovası · created_at offset · comments artifact-var koruması; +bozuk-JSON→400, WAL, admin-delete (fail-closed). Olay: compose_raw PATCH Coolify volume adını çift-uuid yaptı → boş volume, pano 404 → kalıcı fix: host bind mount (~/srv/artifacts-d1/*-data), backup.sh uyarlama. Bakım: watchdog */10 + aylık restore tatbikatı cron. Test: test_maraton8.py M1–M12 yeşil (suite toplam 38). review-0.4 canlı (asistan dahil — paralel tur). Repo d22815c. |
| T12 | 2026-09-28 | ARTF-009 "(i) asistan" CANLI: /asistan/d1/pano 200 — postMessage balon + chat API + statik açıklamalar (pano v17'de 9 ikon enjekte). Coolify fqdn virgül-listesiyle /asistan Traefik router'ı üretti; pigme ağı cross-connect ile LiteLLM'e ulaşıldı. Test: enjekte 13/13 + A1-A10. Repo b845f08. Eksik: chat upstream API anahtarı bekliyor (pigme env'leri boş) — statik açıklamalar çalışıyor, chat 502 zarif. |
| T13 | 2026-09-28 | Sıradakiler paketi: cross-network kalıcılaştı (pigme compose'a external artfd1 ağı — recreate'te düşmez) · landing'e asistanlı görünüm linki · watchdog'a /asistan alarm-only kontrol · 2 standard sayfaya stale_after · tek kalan: OPENAI_API_KEY operatörde |
| T14 | 2026-09-28 | ARTF-009 TAM CANLI: anahtar panodan `litellm.env`'e (transkriptsiz, 600) → /opt/pigme'nin IDE-buffer ezmesi + root izinleri yüzünden rota değişimi: direkt api.openai.com (LiteLLM yolu opsiyonel kaldı) → canlı kanıt: POST /asistan/api/chat → 200 gerçek cevap. Bayrak kapandı. |
| T15 | 2026-09-28 | /asistan/ayar CANLI: operatör self-servis key yönetimi — admin-token korumalı formdan OpenAI key kaydet/test et/sil (db'de, sayfada sk-…son4 maskeli); db-key varsa chat direkt api.openai.com, yoksa env yolu yedek. Harcama freni: ASISTAN_DAILY_TOKENS=200k/gün → aşımda 429. Canlı kanıt: 403/403/200 · save→maske · test→gerçek upstream 401 · clear→env'e dönüş → chat yine 200. Test A11–A21 (suite 49/49) · review-0.5 deploy'lu · repo f11e634. |
| T16 | 2026-09-28 | ARTF-009 tıklama sağlamlaştırma: (i) ikonları <a href="/asistan/…?s=…"> — JS'siz bile çalışır (progresif geliştirme); iframe'de postMessage→balon, standalone'da yerel balon→location.href (window.open kalktı). Kök neden bulgusu: review script'i v0.2'den beri SyntaxError'le TAMAMEN ölüydü (üç-tırnaklı Python şablonunda \' yenir → çıplak ' → script parse olamaz) — düzeltildi, node --check temiz. /review'a ai→asistan nav eklendi. Yayın: pano v23, review-0.5.2; headless E2E 4/4; canlı chat 200. Repo a2e93a0+ad887ed. |
| T17 | 2026-09-28 | Watchdog→posta köprüsü: ALARM/AKSIYON/KRITIK satırları artık vault'un kendi raw/bildirim-* kutusuna düşer (6sa dedup, --posta-test kanıt ucu; sonraki oturum posta-uyari ile görür) · yazilacaklar 2 sayfa yazıldı (tam-hucre-dogrulama, fact-prosedur-ayrimi → kuyruk boş) · pano skill'e çip-senkron notu · rutinler ölçüldü: backup 03:35 otomatik koştu (200/200, 36K+4K), watchdog 8/8 OK · repo d63a1da |
| T18 | 2026-09-28 | Bayrak+posta toplu turu: posta araçları Sablon-D1'den kuruldu (13 dosya — skill §0 ARAC-EKSIK kapandı) · kendi kutum TEMIZ (0 işlenmemiş) · iki giden mektup karşıda bekliyor (Loops kilit 1308 + LLM-Wiki servis 1211, ~1g < 3g uyku eşiği) · karar-kuyrugu.md açıldı: K1 Sablon-V3 + K2 filo posta birikimi (1246 işlenmemiş bildirim / ~110 vault — filo sağlığı bizim işimiz değil) · operatör cevapları: K1 "şimdilik hayır", K2 "CNNCT'ye bildir" → mektup push'landı (CNNCT ~11g uykuda, kuyrukta) · kuyruk boş |
| T19 | 2026-09-28 | Hasat + devir kapanışı: 2 yeni ders (bayat-yukleme-raporu · ezilen-duzeltme-sahiplik-katmani) · artifact-servis-modeli güncellendi · PLAN-ARTF-001'e ARTF-008/009 kapanışları işlendi · devir-20260928.md yazıldı · iki alici-uykuda sinyali islendi (CNNCT ~11g · Sablon ~3g, ikisi de bilgi sınıfı) |
| T20 | 2026-09-28 | Rutin işletim kontrolü — tüm yüzeyler yeşil: 4 uç 200 (/, /a/d1/pano, /review/healthz, /asistan/d1/pano) · watchdog temiz (fails=0, disk 38%, tls 88g) · backup 03:35 yeşil (36K+4K, 200/200) · kutu temiz (posta-var rc=0) · hart+review container up · pano çipi bayatı düzeltildi (TUR 17→20) |
| T21 | 2026-09-28 | Claude-parity F1 kodlandı (ARTF-011/012): /review/galeri public artifact listesi (hart /v1 admin okuması sunucuda kalır; unauth probe ile private/read_key'liler + admin gizli bayraklılar elenir) · /review/{o}/{n}/versions sürüm ucu · review sayfasında sürüm seçici (iframe /a/o/n/vN'e döner — ?v= sürüm seçmiyor, kanıtlı) + pin/latest link kopyalama + unverified bandı · admin gizle ucu fail-closed · compose review-0.6 + HART_ADMIN_TOKEN env · test 24/24 yeşil · repo 8d77e9c · DEPLOY TAMAM: compose_raw PATCH (base64) + env enjeksiyonu + Coolify deploy → review-0.6 canlı; 6 uç 200, galeri'de d1/pano, versions ucu 30 sürüm dönüyor, bind mount korundu. Olay-notu: ilk deploy bayat image'la crash-loop'a girdi (~4dk review kesintisi) — image test-fix'ten ÖNCE build edilmişti; rebuild + redeploy ile çözüldü. Ders: image kod-finalden sonra build edilir, redeploy öncesi image içeriği doğrulanır |
| T22 | 2026-09-28 | Claude-parity F2: ARTF-013 tamam — tools/md-publish.py (md→styled HTML publish-time conversion; hart format=md'nin render ETMEDİĞİ ölçüldü, ham metin dönüyor) → md-test v3 canlı kanıt · ARTF-014 kısmi — format=jsx publish+wrapper çalışıyor ama /_hart/runtime/* 404: HART_RUNTIME_DIR env'i compose'da yok → react/react-dom/babel /data/runtime'a seed'lendi (bind mount, kalıcı), env+redeploy aşıldı (T22-ek: envs API + redeploy → runtime 3/3 200) · artifact-publish skill'e formatlar bölümü · README eki · test artifact'ları DELETE'lendi |
| T23 | 2026-09-28 | Claude-parity F3 kodlandı (ARTF-016/017): window.arti köprüsü — artifact'a gömülen shim postMessage ile review wrapper'ına ulaşır (arti.req/arti.res, declare-meta + origin+source kapısı, CSP postMessage'ı engellemez); wrapper /arti/api/* uçlarını çağırır. Yeni review/arti.py: POST /arti/api/complete/{o}/{n} (serbest LLM tamamlama — asistan'la ORTAK IP rate + 200k/gün token sayacı) · GET|POST|DELETE /arti/api/store/{o}/{n} (artifact-özel KV: key≤64 regex · value≤32KB · ≤50 key · ≤256KB toplam · 30 yazım/dk) · download parent'ta Blob. Sınırlar kanıtlı: 46/46 test yeşil + asistan regresyon · non-string key/prompt → 422 (500 değil, self-review bulgusu düzeltildi). Sözleşme: artifact-publish skill'e "window.arti köprüsü" bölümü (declare meta + shim snippet) · compose review-0.7 · repo bc16ecb+0c9abe7 — DEPLOY TAMAM: uçlar /review/arti/api/* altına taşındı (Traefik yalnız /review+/asistan yönlendirir — ilk deploy 404'ledi) + Dockerfile'a arti.py eklendi; canlı: store roundtrip + complete→{"text":"Merhaba!"} + 8/8 regresyon |
| T24 | 2026-09-28 | Claude-parity F4 kodlandı (ARTF-018/019/020): yeni-sürüm bandı (15sn versions poll, latest artınca "v{N} yayında" → tıkla latest) · /review/{o}/{n}/kaynak view-source+remix sayfası (escaped pre + kopyala + curl şablonu, 200KB kesim — view-source: linki tıklanamaz) · olay günlüğü: events tablosu + log_event yorum/resolve/store/complete/gizle uçlarına bağlandı, admin GET /review/admin/olaylar (x-review-admin fail-closed) — detail'e prompt/secret asla yazılmaz. Test 54/54 + bir bulgu düzeltildi (T46: d1/pano 50-key doluydu, store testi ayrı artifact'a taşındı) · repo 4db8524 — push+deploy ayrı onayda |
| T25 | 2026-09-28 | F4 DEPLOY + ARTF-021 iki-origin CANLI: review-0.8 (F4 deploy kapanışı) → ARTF-021 fizibilite (iki-origin) → C-adımı iframe sandbox + arti v2 hello (review-0.9) → A-adımı ARTI_HOST env (review-1.0) · ikinci origin a.gonet.com.tr ayakta · repo 379347b+3a16d69 · PLAN-ARTF-002 tamamlandı (11 paket, 5 faz) |
| T26 | 2026-09-28 | Tur-2 derin kaynak taraması + PLAN-ARTF-003 + hasat: code.claude.com docs + changelog + 4 destek makalesi + Compliance API + topluluk CLI + GH #70254 → raw Tur-2 bölümü · kaynak sayfası özeti · artifact-servis-modeli güncellendi · PLAN-ARTF-003 (durum matrisi + ARTF-022..028; operatör kararı: küçük paket = ARTF-022+025+026) · F6 küçük paket mühürlendi ama kodlanmadı → sonraki oturuma · kaynakça +7, seyir +1 kayıt |
| T27 | 2026-09-28 | F6 küçük paket CANLI (review-1.1): ARTF-022 metadata (artifact_meta icon + hart ?title= tek kaynak + md-publish --title/--icon emoji favicon) · ARTF-025 stale-publish guard (md-publish --expect N → uyumsuzsa keser; hart binary server-side desteklemez) · ARTF-026 yorum→asistan köprüsü (yorum kartında "asistana sor" → /asistan?s=) · test 74/74 + asistan regresyonu · canlı doğrulama: meta roundtrip + galeri/bar icon+title + 10/10 uç 200 · md-publish private-verify bug'ı düzeltildi (read-key header eksikti) · repo 6abdbb1 push'lu · pano v41+ republish |
| T28 | 2026-09-28 | F7 orta paket CANLI (review-1.2) — PLAN-ARTF-003 KAPANDI: ARTF-023 embed sarıcısı (/review/{o}/{n}/embed, CSP frame-ancestors allowed_domains'ten) + "embed kodu" butonu · ARTF-024 sahip pin'i (artifact_meta.published_version, admin PUT, varolmayan sürüm 422; iframe pin'li sürüme döner) · ARTF-027 tools/retention.py (dry-run varsayılan, --uygula+--onay EVET çift kapı) · ARTF-028 fizibilite raporu (O3 kapat / O2 tetiklenirse) · test T64-T77 + retention T1-T9 + maraton8/asistan regresyonları yeşil · DEPLOY: compose_raw PATCH review-1.2 + restart + PUBLIC_BASE env (embed kodu https üretir — Traefik TLS tuzağı) · canlı kanıt: pin set→/v1→temizle roundtrip, embed CSP, 7/7 uç 200, retention dry-run aday=0 · repo a85af39+c4a5b4c push'lu |